From 2b7ecbb5c9085c6b2489c41f9414506ac1ea56e5 Mon Sep 17 00:00:00 2001 From: dtcxzyw <15650457+dtcxzyw@users.noreply.github.com> Date: Tue, 7 Jan 2025 15:13:51 +0800 Subject: [PATCH 1/2] pre-commit: PR121892 --- scripts/setup_pre_commit_patch.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c5409e09ef4..17da4ded540 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/121892 export COMPTIME_MODE=0 # Please rebase manually From 9b72f07d763ba017174831da46178c17155b9495 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 7 Jan 2025 07:33:40 +0000 Subject: [PATCH 2/2] pre-commit: Update --- bench/linux/optimized/huf_decompress.ll | 8 +- bench/pbrt-v4/optimized/aggregates.cpp.ll | 10 +- bench/pbrt-v4/optimized/lightsamplers.cpp.ll | 6 +- bench/postgres/optimized/subscriptioncmds.ll | 16 +- bench/postgres/optimized/tsvector_op.ll | 562 +++++++++--------- bench/quickjs/optimized/libbf.ll | 44 +- .../optimized/astringlist_list_model.cpp.ll | 90 +-- .../optimized/coloring_rules_model.cpp.ll | 24 +- .../optimized/column_list_model.cpp.ll | 64 +- .../display_filter_expression_dialog.cpp.ll | 484 +++++++-------- .../optimized/extcap_argument.cpp.ll | 32 +- .../optimized/io_graph_dialog.cpp.ll | 244 ++++---- bench/wireshark/optimized/packet_list.cpp.ll | 25 +- .../resolved_addresses_models.cpp.ll | 94 +-- bench/wireshark/optimized/uat_model.cpp.ll | 80 +-- 15 files changed, 913 insertions(+), 870 deletions(-) diff --git a/bench/linux/optimized/huf_decompress.ll b/bench/linux/optimized/huf_decompress.ll index 8bce240765a..ef7fcdbe6c4 100644 --- a/bench/linux/optimized/huf_decompress.ll +++ b/bench/linux/optimized/huf_decompress.ll @@ -2622,9 +2622,9 @@ define dso_local i64 @HUF_readDTableX2_wksp_bmi2(ptr noundef %0, ptr noundef %1, %191 = zext i32 %190 to i64 %192 = getelementptr %struct.HUF_DEltX2, ptr %153, i64 %191 %193 = sext i32 %183 to i64 - %194 = getelementptr %struct.sortedSymbol_t, ptr %118, i64 %193 + %194 = getelementptr i8, ptr %118, i64 %193 %195 = sext i32 %186 to i64 - %196 = getelementptr %struct.sortedSymbol_t, ptr %118, i64 %195 + %196 = getelementptr i8, ptr %118, i64 %195 %197 = sub i32 %48, %188 %198 = and i32 %197, 31 %199 = shl nuw i32 1, %198 @@ -2794,9 +2794,9 @@ HUF_fillDTableX2ForWeight.exit: ; preds = %253, %241, %231, %2 %293 = zext i32 %292 to i64 %294 = getelementptr %struct.HUF_DEltX2, ptr %14, i64 %293 %295 = sext i32 %123 to i64 - %296 = getelementptr %struct.sortedSymbol_t, ptr %118, i64 %295 + %296 = getelementptr i8, ptr %118, i64 %295 %297 = sext i32 %126 to i64 - %298 = getelementptr %struct.sortedSymbol_t, ptr %118, i64 %297 + %298 = getelementptr i8, ptr %118, i64 %297 %299 = and i32 %129, 31 %300 = shl nuw i32 1, %299 %301 = icmp eq i32 %123, %126 diff --git a/bench/pbrt-v4/optimized/aggregates.cpp.ll b/bench/pbrt-v4/optimized/aggregates.cpp.ll index caa4e0d13cd..be211fae066 100644 --- a/bench/pbrt-v4/optimized/aggregates.cpp.ll +++ b/bench/pbrt-v4/optimized/aggregates.cpp.ll @@ -6165,7 +6165,10 @@ for.body153: ; preds = %for.end148, %for.bo for.end163: ; preds = %for.body153 %conv164 = sext i32 %start to i64 %57 = load ptr, ptr %treeletRoots, align 8 - %add.ptr.i328 = getelementptr inbounds ptr, ptr %57, i64 %conv164 + %add.ptr.i328.idx = shl nsw i64 %conv164, 3 + %add.ptr.i328 = getelementptr inbounds i8, ptr %57, i64 %add.ptr.i328.idx + %58 = sext i32 %end to i64 + %.idx = shl nsw i64 %58, 3 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %agg.tmp1.i) store i32 %retval.0.i, ptr %agg.tmp1.i, align 8 %agg.tmp169330.sroa.4.0.agg.tmp1.i.sroa_idx = getelementptr inbounds nuw i8, ptr %agg.tmp1.i, i64 4 @@ -6178,12 +6181,11 @@ for.end163: ; preds = %for.body153 store float %.sroa.speculated.i10.i108, ptr %agg.tmp169330.sroa.7.0.agg.tmp1.i.sroa_idx, align 8 %agg.tmp169330.sroa.8.0.agg.tmp1.i.sroa_idx = getelementptr inbounds nuw i8, ptr %agg.tmp1.i, i64 28 store i32 %minCostSplitBucket.1, ptr %agg.tmp169330.sroa.8.0.agg.tmp1.i.sroa_idx, align 4 - %cmp1720.i.i = icmp eq i32 %start, %end + %cmp1720.i.i = icmp eq i64 %add.ptr.i328.idx, %.idx br i1 %cmp1720.i.i, label %"_ZSt9partitionIPPN4pbrt12BVHBuildNodeEZNKS0_12BVHAggregate13buildUpperSAHEN4pstd3pmr21polymorphic_allocatorISt4byteEERSt6vectorIS2_SaIS2_EEiiPSt6atomicIiEE3$_0ET_SI_SI_T0_.exit", label %if.else.lr.ph.i.i.preheader if.else.lr.ph.i.i.preheader: ; preds = %for.end163 - %58 = sext i32 %end to i64 - %59 = getelementptr ptr, ptr %57, i64 %58 + %59 = getelementptr i8, ptr %57, i64 %.idx br label %if.else.lr.ph.i.i if.else.lr.ph.i.i: ; preds = %if.else.lr.ph.i.i.preheader, %while.end18.i.i diff --git a/bench/pbrt-v4/optimized/lightsamplers.cpp.ll b/bench/pbrt-v4/optimized/lightsamplers.cpp.ll index 5f5b4b59622..047a7792c36 100644 --- a/bench/pbrt-v4/optimized/lightsamplers.cpp.ll +++ b/bench/pbrt-v4/optimized/lightsamplers.cpp.ll @@ -3345,13 +3345,15 @@ if.then113: ; preds = %for.end111 if.else: ; preds = %for.end111 %114 = load ptr, ptr %bvhLights, align 8 - %add.ptr.i497 = getelementptr inbounds %"struct.std::pair", ptr %114, i64 %.pre-phi + %add.ptr.i497.idx = mul nsw i64 %.pre-phi, 56 + %add.ptr.i497 = getelementptr inbounds i8, ptr %114, i64 %add.ptr.i497.idx %cmp7376.i.i = icmp eq i32 %start, %end br i1 %cmp7376.i.i, label %"_ZSt9partitionIPSt4pairIiN4pbrt11LightBoundsEEZNS1_15BVHLightSampler8buildBVHERSt6vectorIS3_SaIS3_EEiijiE3$_0ET_SB_SB_T0_.exit", label %if.else.lr.ph.i.preheader.i if.else.lr.ph.i.preheader.i: ; preds = %if.else %115 = sext i32 %end to i64 - %116 = getelementptr %"struct.std::pair", ptr %114, i64 %115 + %.idx = mul nsw i64 %115, 56 + %116 = getelementptr i8, ptr %114, i64 %.idx br label %if.else.lr.ph.i.i if.else.lr.ph.i.i: ; preds = %while.end18.i.i, %if.else.lr.ph.i.preheader.i diff --git a/bench/postgres/optimized/subscriptioncmds.ll b/bench/postgres/optimized/subscriptioncmds.ll index 5943961d3bb..7ef7c77d776 100644 --- a/bench/postgres/optimized/subscriptioncmds.ll +++ b/bench/postgres/optimized/subscriptioncmds.ll @@ -4246,7 +4246,8 @@ define internal fastcc void @check_duplicates_in_publist(ptr noundef readonly %0 .lr.ph.us.us59: ; preds = %.thread33.us.us58, %.lr.ph56.split.us %indvars.iv81 = phi i64 [ %indvars.iv.next82, %.thread33.us.us58 ], [ 0, %.lr.ph56.split.us ] - %8 = getelementptr %union.ListCell, ptr %7, i64 %indvars.iv81 + %.idx88 = shl i64 %indvars.iv81, 3 + %8 = getelementptr i8, ptr %7, i64 %.idx88 %9 = load ptr, ptr %8, align 8 %10 = getelementptr inbounds nuw i8, ptr %9, i64 8 %11 = load ptr, ptr %10, align 8 @@ -4259,11 +4260,12 @@ define internal fastcc void @check_duplicates_in_publist(ptr noundef readonly %0 13: ; preds = %.lr.ph.us.us59, %12 %indvars.iv76 = phi i64 [ 0, %.lr.ph.us.us59 ], [ %indvars.iv.next77, %12 ] - %14 = icmp eq i64 %indvars.iv76, %indvars.iv81 + %.idx87 = shl i64 %indvars.iv76, 3 + %14 = icmp eq i64 %.idx87, %.idx88 br i1 %14, label %.thread33.us.us58, label %15 15: ; preds = %13 - %16 = getelementptr %union.ListCell, ptr %7, i64 %indvars.iv76 + %16 = getelementptr i8, ptr %7, i64 %.idx87 %17 = load ptr, ptr %16, align 8 %18 = getelementptr inbounds nuw i8, ptr %17, i64 8 %19 = load ptr, ptr %18, align 8 @@ -4283,7 +4285,8 @@ define internal fastcc void @check_duplicates_in_publist(ptr noundef readonly %0 %22 = phi i32 [ %45, %.thread33 ], [ %5, %.lr.ph40.split.split ] %indvars.iv71 = phi i64 [ %indvars.iv.next72, %.thread33 ], [ 0, %.lr.ph40.split.split ] %23 = load ptr, ptr %4, align 8 - %24 = getelementptr %union.ListCell, ptr %23, i64 %indvars.iv71 + %.idx86 = shl i64 %indvars.iv71, 3 + %24 = getelementptr i8, ptr %23, i64 %.idx86 %25 = load ptr, ptr %24, align 8 %26 = getelementptr inbounds nuw i8, ptr %25, i64 8 %27 = load ptr, ptr %26, align 8 @@ -4301,11 +4304,12 @@ define internal fastcc void @check_duplicates_in_publist(ptr noundef readonly %0 30: ; preds = %.lr.ph, %29 %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %29 ] - %31 = icmp eq i64 %indvars.iv, %indvars.iv71 + %.idx = shl i64 %indvars.iv, 3 + %31 = icmp eq i64 %.idx, %.idx86 br i1 %31, label %.thread33, label %32 32: ; preds = %30 - %33 = getelementptr %union.ListCell, ptr %23, i64 %indvars.iv + %33 = getelementptr i8, ptr %23, i64 %.idx %34 = load ptr, ptr %33, align 8 %35 = getelementptr inbounds nuw i8, ptr %34, i64 8 %36 = load ptr, ptr %35, align 8 diff --git a/bench/postgres/optimized/tsvector_op.ll b/bench/postgres/optimized/tsvector_op.ll index 1160ee6d697..51142e217ea 100644 --- a/bench/postgres/optimized/tsvector_op.ll +++ b/bench/postgres/optimized/tsvector_op.ll @@ -2171,7 +2171,7 @@ define dso_local i64 @tsvector_filter(ptr nocapture noundef readonly %0) local_u 22: ; preds = %.lr.ph, %42 %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %42 ] - %.0101116 = phi i8 [ 0, %.lr.ph ], [ %43, %42 ] + %.0101117 = phi i8 [ 0, %.lr.ph ], [ %43, %42 ] %23 = getelementptr i8, ptr %20, i64 %indvars.iv %24 = load i8, ptr %23, align 1 %25 = trunc i8 %24 to i1 @@ -2220,7 +2220,7 @@ define dso_local i64 @tsvector_filter(ptr nocapture noundef readonly %0) local_u 42: ; preds = %30, %30, %34, %35, %36 %.sink = phi i8 [ 4, %34 ], [ 2, %35 ], [ 1, %36 ], [ 8, %30 ], [ 8, %30 ] - %43 = or i8 %.0101116, %.sink + %43 = or i8 %.0101117, %.sink %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 %._crit_edge.loopexit, label %22, !llvm.loop !24 @@ -2240,22 +2240,23 @@ define dso_local i64 @tsvector_filter(ptr nocapture noundef readonly %0) local_u store i32 %49, ptr %50, align 4 %51 = getelementptr inbounds nuw i8, ptr %48, i64 8 %52 = sext i32 %49 to i64 - %53 = getelementptr [0 x %struct.WordEntry], ptr %51, i64 0, i64 %52 + %.idx = shl nsw i64 %52, 2 + %53 = getelementptr i8, ptr %51, i64 %.idx %54 = icmp sgt i32 %49, 0 - br i1 %54, label %.lr.ph128, label %._crit_edge129 - -.lr.ph128: ; preds = %._crit_edge, %._crit_edge122.thread - %indvars.iv137 = phi i64 [ %indvars.iv.next138, %._crit_edge122.thread ], [ 0, %._crit_edge ] - %55 = phi i32 [ %139, %._crit_edge122.thread ], [ %49, %._crit_edge ] - %.097125 = phi i32 [ %.198, %._crit_edge122.thread ], [ 0, %._crit_edge ] - %.099124 = phi i32 [ %.1100, %._crit_edge122.thread ], [ 0, %._crit_edge ] - %56 = getelementptr %struct.WordEntry, ptr %13, i64 %indvars.iv137 + br i1 %54, label %.lr.ph129, label %._crit_edge130 + +.lr.ph129: ; preds = %._crit_edge, %._crit_edge123.thread + %indvars.iv138 = phi i64 [ %indvars.iv.next139, %._crit_edge123.thread ], [ 0, %._crit_edge ] + %55 = phi i32 [ %139, %._crit_edge123.thread ], [ %49, %._crit_edge ] + %.097126 = phi i32 [ %.198, %._crit_edge123.thread ], [ 0, %._crit_edge ] + %.099125 = phi i32 [ %.1100, %._crit_edge123.thread ], [ 0, %._crit_edge ] + %56 = getelementptr %struct.WordEntry, ptr %13, i64 %indvars.iv138 %57 = load i32, ptr %56, align 4 %58 = and i32 %57, 1 - %.not108 = icmp eq i32 %58, 0 - br i1 %.not108, label %._crit_edge122.thread, label %59 + %.not109 = icmp eq i32 %58, 0 + br i1 %.not109, label %._crit_edge123.thread, label %59 -59: ; preds = %.lr.ph128 +59: ; preds = %.lr.ph129 %60 = sext i32 %55 to i64 %61 = getelementptr [0 x %struct.WordEntry], ptr %13, i64 0, i64 %60 %62 = lshr i32 %57, 12 @@ -2266,36 +2267,36 @@ define dso_local i64 @tsvector_filter(ptr nocapture noundef readonly %0) local_u %66 = and i32 %narrow, 4194302 %67 = zext nneg i32 %66 to i64 %68 = getelementptr i8, ptr %61, i64 %67 - %69 = add i32 %64, %.099124 + %69 = add i32 %64, %.099125 %70 = sext i32 %69 to i64 %71 = add nsw i64 %70, 1 %72 = and i64 %71, -2 %73 = getelementptr i8, ptr %53, i64 %72 %74 = load i16, ptr %68, align 2 - %.not132 = icmp eq i16 %74, 0 - br i1 %.not132, label %._crit_edge122.thread, label %.lr.ph121 + %.not133 = icmp eq i16 %74, 0 + br i1 %.not133, label %._crit_edge123.thread, label %.lr.ph122 -.lr.ph121: ; preds = %59 +.lr.ph122: ; preds = %59 %75 = getelementptr inbounds nuw i8, ptr %68, i64 2 %76 = getelementptr inbounds nuw i8, ptr %73, i64 2 br label %77 -77: ; preds = %.lr.ph121, %89 - %78 = phi i16 [ %74, %.lr.ph121 ], [ %90, %89 ] - %indvars.iv134 = phi i64 [ 0, %.lr.ph121 ], [ %indvars.iv.next135, %89 ] - %.094118 = phi i32 [ 0, %.lr.ph121 ], [ %.1, %89 ] - %79 = getelementptr [0 x i16], ptr %75, i64 0, i64 %indvars.iv134 +77: ; preds = %.lr.ph122, %89 + %78 = phi i16 [ %74, %.lr.ph122 ], [ %90, %89 ] + %indvars.iv135 = phi i64 [ 0, %.lr.ph122 ], [ %indvars.iv.next136, %89 ] + %.094119 = phi i32 [ 0, %.lr.ph122 ], [ %.1, %89 ] + %79 = getelementptr [0 x i16], ptr %75, i64 0, i64 %indvars.iv135 %80 = load i16, ptr %79, align 2 %81 = lshr i16 %80, 14 %82 = zext nneg i16 %81 to i32 %83 = shl nuw nsw i32 1, %82 %84 = and i32 %83, %.0101.lcssa - %.not113 = icmp eq i32 %84, 0 - br i1 %.not113, label %89, label %85 + %.not114 = icmp eq i32 %84, 0 + br i1 %.not114, label %89, label %85 85: ; preds = %77 - %86 = add i32 %.094118, 1 - %87 = sext i32 %.094118 to i64 + %86 = add i32 %.094119, 1 + %87 = sext i32 %.094119 to i64 %88 = getelementptr [0 x i16], ptr %76, i64 0, i64 %87 store i16 %80, ptr %88, align 2 %.pre = load i16, ptr %68, align 2 @@ -2303,29 +2304,29 @@ define dso_local i64 @tsvector_filter(ptr nocapture noundef readonly %0) local_u 89: ; preds = %77, %85 %90 = phi i16 [ %.pre, %85 ], [ %78, %77 ] - %.1 = phi i32 [ %86, %85 ], [ %.094118, %77 ] - %indvars.iv.next135 = add nuw nsw i64 %indvars.iv134, 1 + %.1 = phi i32 [ %86, %85 ], [ %.094119, %77 ] + %indvars.iv.next136 = add nuw nsw i64 %indvars.iv135, 1 %91 = zext i16 %90 to i64 - %92 = icmp samesign ult i64 %indvars.iv.next135, %91 - br i1 %92, label %77, label %._crit_edge122, !llvm.loop !25 + %92 = icmp samesign ult i64 %indvars.iv.next136, %91 + br i1 %92, label %77, label %._crit_edge123, !llvm.loop !25 -._crit_edge122: ; preds = %89 - %.not109 = icmp eq i32 %.1, 0 - br i1 %.not109, label %._crit_edge122.thread, label %93 +._crit_edge123: ; preds = %89 + %.not110 = icmp eq i32 %.1, 0 + br i1 %.not110, label %._crit_edge123.thread, label %93 -93: ; preds = %._crit_edge122 - %94 = sext i32 %.097125 to i64 +93: ; preds = %._crit_edge123 + %94 = sext i32 %.097126 to i64 %95 = getelementptr %struct.WordEntry, ptr %51, i64 %94 %96 = load i32, ptr %95, align 4 %97 = or i32 %96, 1 store i32 %97, ptr %95, align 4 %98 = load i32, ptr %56, align 4 %99 = and i32 %98, 4094 - %100 = shl i32 %.099124, 12 + %100 = shl i32 %.099125, 12 %101 = or disjoint i32 %99, %100 %102 = or disjoint i32 %101, 1 store i32 %102, ptr %95, align 4 - %103 = sext i32 %.099124 to i64 + %103 = sext i32 %.099125 to i64 %104 = getelementptr i8, ptr %53, i64 %103 %105 = load i32, ptr %56, align 4 %106 = lshr i32 %105, 12 @@ -2340,13 +2341,13 @@ define dso_local i64 @tsvector_filter(ptr nocapture noundef readonly %0) local_u %113 = load i32, ptr %56, align 4 %114 = lshr i32 %113, 1 %115 = and i32 %114, 2047 - %narrow110 = add nuw nsw i32 %115, 1 - %116 = and i32 %narrow110, 4094 - %117 = add i32 %116, %.099124 + %narrow111 = add nuw nsw i32 %115, 1 + %116 = and i32 %narrow111, 4094 + %117 = add i32 %116, %.099125 %118 = load i32, ptr %95, align 4 %119 = and i32 %118, 1 - %.not111 = icmp eq i32 %119, 0 - br i1 %.not111, label %135, label %120 + %.not112 = icmp eq i32 %119, 0 + br i1 %.not112, label %135, label %120 120: ; preds = %93 %121 = load i32, ptr %50, align 4 @@ -2356,8 +2357,8 @@ define dso_local i64 @tsvector_filter(ptr nocapture noundef readonly %0) local_u %125 = lshr i32 %118, 1 %126 = and i32 %125, 2047 %127 = add nuw nsw i32 %124, 1 - %narrow112 = add nuw nsw i32 %127, %126 - %128 = and i32 %narrow112, 4194302 + %narrow113 = add nuw nsw i32 %127, %126 + %128 = and i32 %narrow113, 4194302 %129 = zext nneg i32 %128 to i64 %130 = getelementptr i8, ptr %123, i64 %129 %131 = load i16, ptr %130, align 2 @@ -2369,35 +2370,36 @@ define dso_local i64 @tsvector_filter(ptr nocapture noundef readonly %0) local_u 135: ; preds = %93, %120 %136 = phi i32 [ %134, %120 ], [ 2, %93 ] %137 = add i32 %117, %136 - %138 = add i32 %.097125, 1 - br label %._crit_edge122.thread + %138 = add i32 %.097126, 1 + br label %._crit_edge123.thread -._crit_edge122.thread: ; preds = %59, %._crit_edge122, %.lr.ph128, %135 - %.1100 = phi i32 [ %137, %135 ], [ %.099124, %._crit_edge122 ], [ %.099124, %.lr.ph128 ], [ %.099124, %59 ] - %.198 = phi i32 [ %138, %135 ], [ %.097125, %._crit_edge122 ], [ %.097125, %.lr.ph128 ], [ %.097125, %59 ] - %indvars.iv.next138 = add nuw nsw i64 %indvars.iv137, 1 +._crit_edge123.thread: ; preds = %59, %._crit_edge123, %.lr.ph129, %135 + %.1100 = phi i32 [ %137, %135 ], [ %.099125, %._crit_edge123 ], [ %.099125, %.lr.ph129 ], [ %.099125, %59 ] + %.198 = phi i32 [ %138, %135 ], [ %.097126, %._crit_edge123 ], [ %.097126, %.lr.ph129 ], [ %.097126, %59 ] + %indvars.iv.next139 = add nuw nsw i64 %indvars.iv138, 1 %139 = load i32, ptr %14, align 4 %140 = sext i32 %139 to i64 - %141 = icmp slt i64 %indvars.iv.next138, %140 - br i1 %141, label %.lr.ph128, label %._crit_edge129, !llvm.loop !26 + %141 = icmp slt i64 %indvars.iv.next139, %140 + br i1 %141, label %.lr.ph129, label %._crit_edge130, !llvm.loop !26 -._crit_edge129: ; preds = %._crit_edge122.thread, %._crit_edge - %.099.lcssa = phi i32 [ 0, %._crit_edge ], [ %.1100, %._crit_edge122.thread ] - %.097.lcssa = phi i32 [ 0, %._crit_edge ], [ %.198, %._crit_edge122.thread ] +._crit_edge130: ; preds = %._crit_edge123.thread, %._crit_edge + %.099.lcssa = phi i32 [ 0, %._crit_edge ], [ %.1100, %._crit_edge123.thread ] + %.097.lcssa = phi i32 [ 0, %._crit_edge ], [ %.198, %._crit_edge123.thread ] store i32 %.097.lcssa, ptr %50, align 4 - %.not = icmp eq i32 %49, %.097.lcssa - br i1 %.not, label %146, label %142 + %142 = sext i32 %.097.lcssa to i64 + %.idx107 = shl nsw i64 %142, 2 + %.not = icmp eq i64 %.idx, %.idx107 + br i1 %.not, label %146, label %143 -142: ; preds = %._crit_edge129 - %143 = sext i32 %.097.lcssa to i64 - %144 = getelementptr [0 x %struct.WordEntry], ptr %51, i64 0, i64 %143 +143: ; preds = %._crit_edge130 + %144 = getelementptr i8, ptr %51, i64 %.idx107 %145 = sext i32 %.099.lcssa to i64 call void @llvm.memmove.p0.p0.i64(ptr align 4 %144, ptr align 1 %53, i64 %145, i1 false) - %.pre140 = load i32, ptr %50, align 4 + %.pre141 = load i32, ptr %50, align 4 br label %146 -146: ; preds = %142, %._crit_edge129 - %147 = phi i32 [ %.pre140, %142 ], [ %49, %._crit_edge129 ] +146: ; preds = %143, %._crit_edge130 + %147 = phi i32 [ %.pre141, %143 ], [ %.097.lcssa, %._crit_edge130 ] %148 = shl i32 %147, 4 %149 = shl i32 %.099.lcssa, 2 %150 = add i32 %149, 32 @@ -2405,8 +2407,8 @@ define dso_local i64 @tsvector_filter(ptr nocapture noundef readonly %0) local_u store i32 %151, ptr %48, align 4 %152 = load i64, ptr %5, align 8 %153 = inttoptr i64 %152 to ptr - %.not107 = icmp eq ptr %8, %153 - br i1 %.not107, label %155, label %154 + %.not108 = icmp eq ptr %8, %153 + br i1 %.not108, label %155, label %154 154: ; preds = %146 call void @pfree(ptr noundef nonnull %8) #14 @@ -2433,8 +2435,8 @@ define dso_local noundef i64 @tsvector_concat(ptr nocapture noundef readonly %0) %10 = getelementptr inbounds nuw i8, ptr %5, i64 8 %11 = getelementptr inbounds nuw i8, ptr %5, i64 4 %12 = load i32, ptr %11, align 4 - %.not334 = icmp eq i32 %12, 0 - br i1 %.not334, label %._crit_edge, label %.lr.ph + %.not335 = icmp eq i32 %12, 0 + br i1 %.not335, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %1 %13 = sext i32 %12 to i64 @@ -2443,47 +2445,47 @@ define dso_local noundef i64 @tsvector_concat(ptr nocapture noundef readonly %0) 15: ; preds = %.lr.ph, %.thread %.in = phi i32 [ %12, %.lr.ph ], [ %16, %.thread ] - %.0336 = phi ptr [ %10, %.lr.ph ], [ %35, %.thread ] - %.0263335 = phi i32 [ 0, %.lr.ph ], [ %.1264, %.thread ] + %.0337 = phi ptr [ %10, %.lr.ph ], [ %35, %.thread ] + %.0263336 = phi i32 [ 0, %.lr.ph ], [ %.1264, %.thread ] %16 = add i32 %.in, -1 - %17 = load i32, ptr %.0336, align 4 + %17 = load i32, ptr %.0337, align 4 %18 = and i32 %17, 1 - %.not313 = icmp eq i32 %18, 0 - br i1 %.not313, label %.thread, label %19 + %.not314 = icmp eq i32 %18, 0 + br i1 %.not314, label %.thread, label %19 19: ; preds = %15 %20 = lshr i32 %17, 12 %21 = lshr i32 %17, 1 %22 = and i32 %21, 2047 %23 = add nuw nsw i32 %20, 1 - %narrow314 = add nuw nsw i32 %23, %22 - %24 = and i32 %narrow314, 4194302 + %narrow315 = add nuw nsw i32 %23, %22 + %24 = and i32 %narrow315, 4194302 %25 = zext nneg i32 %24 to i64 %26 = getelementptr i8, ptr %14, i64 %25 %27 = load i16, ptr %26, align 2 - %.not315 = icmp eq i16 %27, 0 - br i1 %.not315, label %.thread, label %28 + %.not316 = icmp eq i16 %27, 0 + br i1 %.not316, label %.thread, label %28 28: ; preds = %19 %29 = zext i16 %27 to i32 br label %30 30: ; preds = %28, %30 - %.pn333 = phi ptr [ %26, %28 ], [ %.0262, %30 ] - %.2265332 = phi i32 [ %.0263335, %28 ], [ %spec.select, %30 ] - %.0268331 = phi i32 [ %29, %28 ], [ %31, %30 ] - %31 = add nsw i32 %.0268331, -1 - %.0262 = getelementptr i8, ptr %.pn333, i64 2 + %.pn334 = phi ptr [ %26, %28 ], [ %.0262, %30 ] + %.2265333 = phi i32 [ %.0263336, %28 ], [ %spec.select, %30 ] + %.0268332 = phi i32 [ %29, %28 ], [ %31, %30 ] + %31 = add nsw i32 %.0268332, -1 + %.0262 = getelementptr i8, ptr %.pn334, i64 2 %32 = load i16, ptr %.0262, align 2 %33 = and i16 %32, 16383 %34 = zext nneg i16 %33 to i32 - %spec.select = tail call i32 @llvm.smax.i32(i32 %.2265332, i32 %34) - %.not317 = icmp eq i32 %31, 0 - br i1 %.not317, label %.thread, label %30, !llvm.loop !27 + %spec.select = tail call i32 @llvm.smax.i32(i32 %.2265333, i32 %34) + %.not318 = icmp eq i32 %31, 0 + br i1 %.not318, label %.thread, label %30, !llvm.loop !27 .thread: ; preds = %30, %15, %19 - %.1264 = phi i32 [ %.0263335, %19 ], [ %.0263335, %15 ], [ %spec.select, %30 ] - %35 = getelementptr i8, ptr %.0336, i64 4 + %.1264 = phi i32 [ %.0263336, %19 ], [ %.0263336, %15 ], [ %spec.select, %30 ] + %35 = getelementptr i8, ptr %.0337, i64 4 %.not = icmp eq i32 %16, 0 br i1 %.not, label %._crit_edge, label %15, !llvm.loop !28 @@ -2514,36 +2516,37 @@ define dso_local noundef i64 @tsvector_concat(ptr nocapture noundef readonly %0) store i32 %54, ptr %55, align 4 %56 = getelementptr inbounds nuw i8, ptr %50, i64 8 %57 = sext i32 %54 to i64 - %58 = getelementptr [0 x %struct.WordEntry], ptr %56, i64 0, i64 %57 + %.idx = shl nsw i64 %57, 2 + %58 = getelementptr i8, ptr %56, i64 %.idx %59 = icmp ne i32 %12, 0 %60 = icmp ne i32 %39, 0 %61 = and i1 %59, %60 - br i1 %61, label %.lr.ph345, label %.preheader330 + br i1 %61, label %.lr.ph346, label %.preheader331 -.preheader330: ; preds = %289, %._crit_edge +.preheader331: ; preds = %289, %._crit_edge %.0277.lcssa = phi i32 [ %39, %._crit_edge ], [ %.1278, %289 ] %.0272.lcssa = phi i32 [ 0, %._crit_edge ], [ %.2274, %289 ] %.0269.lcssa = phi i32 [ %12, %._crit_edge ], [ %.1270, %289 ] %.0259.lcssa = phi ptr [ %36, %._crit_edge ], [ %.1260, %289 ] %.0256.lcssa = phi ptr [ %10, %._crit_edge ], [ %.1257, %289 ] %.1.lcssa = phi ptr [ %56, %._crit_edge ], [ %.2, %289 ] - %.not290352 = icmp eq i32 %.0269.lcssa, 0 - br i1 %.not290352, label %.preheader, label %.lr.ph357 - -.lr.ph345: ; preds = %._crit_edge, %289 - %.1342 = phi ptr [ %.2, %289 ], [ %56, %._crit_edge ] - %.0256341 = phi ptr [ %.1257, %289 ], [ %10, %._crit_edge ] - %.0259340 = phi ptr [ %.1260, %289 ], [ %36, %._crit_edge ] - %.0269339 = phi i32 [ %.1270, %289 ], [ %12, %._crit_edge ] - %.0272338 = phi i32 [ %.2274, %289 ], [ 0, %._crit_edge ] - %.0277337 = phi i32 [ %.1278, %289 ], [ %39, %._crit_edge ] - %62 = load i32, ptr %.0256341, align 4 + %.not290353 = icmp eq i32 %.0269.lcssa, 0 + br i1 %.not290353, label %.preheader, label %.lr.ph358 + +.lr.ph346: ; preds = %._crit_edge, %289 + %.1343 = phi ptr [ %.2, %289 ], [ %56, %._crit_edge ] + %.0256342 = phi ptr [ %.1257, %289 ], [ %10, %._crit_edge ] + %.0259341 = phi ptr [ %.1260, %289 ], [ %36, %._crit_edge ] + %.0269340 = phi i32 [ %.1270, %289 ], [ %12, %._crit_edge ] + %.0272339 = phi i32 [ %.2274, %289 ], [ 0, %._crit_edge ] + %.0277338 = phi i32 [ %.1278, %289 ], [ %39, %._crit_edge ] + %62 = load i32, ptr %.0256342, align 4 %63 = lshr i32 %62, 12 %64 = zext nneg i32 %63 to i64 %65 = getelementptr i8, ptr %37, i64 %64 %66 = lshr i32 %62, 1 %67 = and i32 %66, 2047 - %68 = load i32, ptr %.0259340, align 4 + %68 = load i32, ptr %.0259341, align 4 %69 = lshr i32 %68, 12 %70 = zext nneg i32 %69 to i64 %71 = getelementptr i8, ptr %41, i64 %70 @@ -2552,12 +2555,12 @@ define dso_local noundef i64 @tsvector_concat(ptr nocapture noundef readonly %0) %74 = icmp eq i32 %67, 0 br i1 %74, label %75, label %78 -75: ; preds = %.lr.ph345 +75: ; preds = %.lr.ph346 %76 = icmp ne i32 %73, 0 %77 = sext i1 %76 to i32 br label %tsCompareString.exit -78: ; preds = %.lr.ph345 +78: ; preds = %.lr.ph346 %79 = icmp eq i32 %73, 0 br i1 %79, label %tsCompareString.exit.thread.thread, label %80 @@ -2570,31 +2573,31 @@ define dso_local noundef i64 @tsvector_concat(ptr nocapture noundef readonly %0) 85: ; preds = %80 %.not.i = icmp eq i32 %67, %73 - br i1 %.not.i, label %tsCompareString.exit.thread.thread327, label %86 + br i1 %.not.i, label %tsCompareString.exit.thread.thread328, label %86 86: ; preds = %85 %87 = icmp samesign ult i32 %67, %73 - br i1 %87, label %tsCompareString.exit.thread323, label %tsCompareString.exit.thread.thread + br i1 %87, label %tsCompareString.exit.thread324, label %tsCompareString.exit.thread.thread tsCompareString.exit: ; preds = %75, %80 %.0.i = phi i32 [ %77, %75 ], [ %83, %80 ] %88 = icmp slt i32 %.0.i, 0 - br i1 %88, label %tsCompareString.exit.thread323, label %tsCompareString.exit.thread + br i1 %88, label %tsCompareString.exit.thread324, label %tsCompareString.exit.thread -tsCompareString.exit.thread323: ; preds = %86, %tsCompareString.exit +tsCompareString.exit.thread324: ; preds = %86, %tsCompareString.exit %89 = and i32 %62, 1 - %90 = load i32, ptr %.1342, align 4 + %90 = load i32, ptr %.1343, align 4 %91 = and i32 %90, -2 %92 = or disjoint i32 %91, %89 - store i32 %92, ptr %.1342, align 4 - %93 = load i32, ptr %.0256341, align 4 + store i32 %92, ptr %.1343, align 4 + %93 = load i32, ptr %.0256342, align 4 %94 = and i32 %93, 4094 %95 = and i32 %92, -4095 %96 = or disjoint i32 %95, %94 - store i32 %96, ptr %.1342, align 4 - %97 = sext i32 %.0272338 to i64 + store i32 %96, ptr %.1343, align 4 + %97 = sext i32 %.0272339 to i64 %98 = getelementptr i8, ptr %58, i64 %97 - %99 = load i32, ptr %.0256341, align 4 + %99 = load i32, ptr %.0256342, align 4 %100 = lshr i32 %99, 12 %101 = zext nneg i32 %100 to i64 %102 = getelementptr i8, ptr %37, i64 %101 @@ -2602,20 +2605,20 @@ tsCompareString.exit.thread323: ; preds = %86, %tsCompareStrin %104 = and i32 %103, 2047 %105 = zext nneg i32 %104 to i64 tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %98, ptr align 1 %102, i64 %105, i1 false) - %106 = load i32, ptr %.1342, align 4 - %107 = shl i32 %.0272338, 12 + %106 = load i32, ptr %.1343, align 4 + %107 = shl i32 %.0272339, 12 %108 = and i32 %106, 4095 %109 = or disjoint i32 %108, %107 - store i32 %109, ptr %.1342, align 4 - %110 = load i32, ptr %.0256341, align 4 + store i32 %109, ptr %.1343, align 4 + %110 = load i32, ptr %.0256342, align 4 %111 = lshr i32 %110, 1 %112 = and i32 %111, 2047 - %113 = add i32 %112, %.0272338 + %113 = add i32 %112, %.0272339 %114 = and i32 %106, 1 - %.not308 = icmp eq i32 %114, 0 - br i1 %.not308, label %156, label %115 + %.not309 = icmp eq i32 %114, 0 + br i1 %.not309, label %156, label %115 -115: ; preds = %tsCompareString.exit.thread323 +115: ; preds = %tsCompareString.exit.thread324 %116 = add i32 %113, 1 %117 = and i32 %116, -2 %118 = sext i32 %117 to i64 @@ -2625,13 +2628,13 @@ tsCompareString.exit.thread323: ; preds = %86, %tsCompareStrin %122 = getelementptr [0 x %struct.WordEntry], ptr %10, i64 0, i64 %121 %123 = lshr i32 %110, 12 %124 = add nuw nsw i32 %123, 1 - %narrow309 = add nuw nsw i32 %124, %112 - %125 = and i32 %narrow309, 4194302 + %narrow310 = add nuw nsw i32 %124, %112 + %125 = and i32 %narrow310, 4194302 %126 = zext nneg i32 %125 to i64 %127 = getelementptr i8, ptr %122, i64 %126 %128 = and i32 %110, 1 - %.not310 = icmp eq i32 %128, 0 - br i1 %.not310, label %134, label %129 + %.not311 = icmp eq i32 %128, 0 + br i1 %.not311, label %134, label %129 129: ; preds = %115 %130 = load i16, ptr %127, align 2 @@ -2643,10 +2646,10 @@ tsCompareString.exit.thread323: ; preds = %86, %tsCompareStrin 134: ; preds = %115, %129 %135 = phi i64 [ %133, %129 ], [ 2, %115 ] tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %119, ptr noundef nonnull align 2 dereferenceable(1) %127, i64 %135, i1 false) - %136 = load i32, ptr %.0256341, align 4 + %136 = load i32, ptr %.0256342, align 4 %137 = and i32 %136, 1 - %.not311 = icmp eq i32 %137, 0 - br i1 %.not311, label %153, label %138 + %.not312 = icmp eq i32 %137, 0 + br i1 %.not312, label %153, label %138 138: ; preds = %134 %139 = load i32, ptr %11, align 4 @@ -2656,8 +2659,8 @@ tsCompareString.exit.thread323: ; preds = %86, %tsCompareStrin %143 = lshr i32 %136, 1 %144 = and i32 %143, 2047 %145 = add nuw nsw i32 %142, 1 - %narrow312 = add nuw nsw i32 %145, %144 - %146 = and i32 %narrow312, 4194302 + %narrow313 = add nuw nsw i32 %145, %144 + %146 = and i32 %narrow313, 4194302 %147 = zext nneg i32 %146 to i64 %148 = getelementptr i8, ptr %141, i64 %147 %149 = load i16, ptr %148, align 2 @@ -2671,30 +2674,30 @@ tsCompareString.exit.thread323: ; preds = %86, %tsCompareStrin %155 = add i32 %154, %117 br label %156 -156: ; preds = %153, %tsCompareString.exit.thread323 - %.1273 = phi i32 [ %155, %153 ], [ %113, %tsCompareString.exit.thread323 ] - %157 = getelementptr i8, ptr %.0256341, i64 4 - %158 = add i32 %.0269339, -1 +156: ; preds = %153, %tsCompareString.exit.thread324 + %.1273 = phi i32 [ %155, %153 ], [ %113, %tsCompareString.exit.thread324 ] + %157 = getelementptr i8, ptr %.0256342, i64 4 + %158 = add i32 %.0269340, -1 br label %289 tsCompareString.exit.thread: ; preds = %tsCompareString.exit - %.not300 = icmp eq i32 %.0.i, 0 - br i1 %.not300, label %tsCompareString.exit.thread.thread327, label %tsCompareString.exit.thread.thread + %.not301 = icmp eq i32 %.0.i, 0 + br i1 %.not301, label %tsCompareString.exit.thread.thread328, label %tsCompareString.exit.thread.thread tsCompareString.exit.thread.thread: ; preds = %86, %78, %tsCompareString.exit.thread %159 = and i32 %68, 1 - %160 = load i32, ptr %.1342, align 4 + %160 = load i32, ptr %.1343, align 4 %161 = and i32 %160, -2 %162 = or disjoint i32 %161, %159 - store i32 %162, ptr %.1342, align 4 - %163 = load i32, ptr %.0259340, align 4 + store i32 %162, ptr %.1343, align 4 + %163 = load i32, ptr %.0259341, align 4 %164 = and i32 %163, 4094 %165 = and i32 %162, -4095 %166 = or disjoint i32 %165, %164 - store i32 %166, ptr %.1342, align 4 - %167 = sext i32 %.0272338 to i64 + store i32 %166, ptr %.1343, align 4 + %167 = sext i32 %.0272339 to i64 %168 = getelementptr i8, ptr %58, i64 %167 - %169 = load i32, ptr %.0259340, align 4 + %169 = load i32, ptr %.0259341, align 4 %170 = lshr i32 %169, 12 %171 = zext nneg i32 %170 to i64 %172 = getelementptr i8, ptr %41, i64 %171 @@ -2702,28 +2705,28 @@ tsCompareString.exit.thread.thread: ; preds = %86, %78, %tsCompare %174 = and i32 %173, 2047 %175 = zext nneg i32 %174 to i64 tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %168, ptr align 1 %172, i64 %175, i1 false) - %176 = load i32, ptr %.1342, align 4 - %177 = shl i32 %.0272338, 12 + %176 = load i32, ptr %.1343, align 4 + %177 = shl i32 %.0272339, 12 %178 = and i32 %176, 4095 %179 = or disjoint i32 %178, %177 - store i32 %179, ptr %.1342, align 4 - %180 = load i32, ptr %.0259340, align 4 + store i32 %179, ptr %.1343, align 4 + %180 = load i32, ptr %.0259341, align 4 %181 = lshr i32 %180, 1 %182 = and i32 %181, 2047 - %183 = add i32 %182, %.0272338 + %183 = add i32 %182, %.0272339 %184 = and i32 %176, 1 - %.not307 = icmp eq i32 %184, 0 - br i1 %.not307, label %197, label %185 + %.not308 = icmp eq i32 %184, 0 + br i1 %.not308, label %197, label %185 185: ; preds = %tsCompareString.exit.thread.thread - %186 = tail call fastcc i32 @add_pos(ptr noundef nonnull %9, i32 %180, ptr noundef nonnull %50, ptr noundef nonnull %.1342, i32 noundef %.0263.lcssa) + %186 = tail call fastcc i32 @add_pos(ptr noundef nonnull %9, i32 %180, ptr noundef nonnull %50, ptr noundef nonnull %.1343, i32 noundef %.0263.lcssa) %187 = icmp eq i32 %186, 0 br i1 %187, label %188, label %191 188: ; preds = %185 - %189 = load i32, ptr %.1342, align 4 + %189 = load i32, ptr %.1343, align 4 %190 = and i32 %189, -2 - store i32 %190, ptr %.1342, align 4 + store i32 %190, ptr %.1343, align 4 br label %197 191: ; preds = %185 @@ -2736,25 +2739,25 @@ tsCompareString.exit.thread.thread: ; preds = %86, %78, %tsCompare 197: ; preds = %188, %191, %tsCompareString.exit.thread.thread %.3275 = phi i32 [ %183, %188 ], [ %196, %191 ], [ %183, %tsCompareString.exit.thread.thread ] - %198 = getelementptr i8, ptr %.0259340, i64 4 - %199 = add i32 %.0277337, -1 + %198 = getelementptr i8, ptr %.0259341, i64 4 + %199 = add i32 %.0277338, -1 br label %289 -tsCompareString.exit.thread.thread327: ; preds = %85, %tsCompareString.exit.thread +tsCompareString.exit.thread.thread328: ; preds = %85, %tsCompareString.exit.thread %200 = or i32 %68, %62 %201 = and i32 %200, 1 - %202 = load i32, ptr %.1342, align 4 + %202 = load i32, ptr %.1343, align 4 %203 = and i32 %202, -2 %204 = or disjoint i32 %203, %201 - store i32 %204, ptr %.1342, align 4 - %205 = load i32, ptr %.0256341, align 4 + store i32 %204, ptr %.1343, align 4 + %205 = load i32, ptr %.0256342, align 4 %206 = and i32 %205, 4094 %207 = and i32 %204, -4095 %208 = or disjoint i32 %207, %206 - store i32 %208, ptr %.1342, align 4 - %209 = sext i32 %.0272338 to i64 + store i32 %208, ptr %.1343, align 4 + %209 = sext i32 %.0272339 to i64 %210 = getelementptr i8, ptr %58, i64 %209 - %211 = load i32, ptr %.0256341, align 4 + %211 = load i32, ptr %.0256342, align 4 %212 = lshr i32 %211, 12 %213 = zext nneg i32 %212 to i64 %214 = getelementptr i8, ptr %37, i64 %213 @@ -2762,23 +2765,23 @@ tsCompareString.exit.thread.thread327: ; preds = %85, %tsCompareStrin %216 = and i32 %215, 2047 %217 = zext nneg i32 %216 to i64 tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %210, ptr align 1 %214, i64 %217, i1 false) - %218 = load i32, ptr %.1342, align 4 - %219 = shl i32 %.0272338, 12 + %218 = load i32, ptr %.1343, align 4 + %219 = shl i32 %.0272339, 12 %220 = and i32 %218, 4095 %221 = or disjoint i32 %220, %219 - store i32 %221, ptr %.1342, align 4 - %222 = load i32, ptr %.0256341, align 4 + store i32 %221, ptr %.1343, align 4 + %222 = load i32, ptr %.0256342, align 4 %223 = lshr i32 %222, 1 %224 = and i32 %223, 2047 - %225 = add i32 %224, %.0272338 + %225 = add i32 %224, %.0272339 %226 = and i32 %218, 1 - %.not301 = icmp eq i32 %226, 0 - br i1 %.not301, label %284, label %227 + %.not302 = icmp eq i32 %226, 0 + br i1 %.not302, label %284, label %227 -227: ; preds = %tsCompareString.exit.thread.thread327 +227: ; preds = %tsCompareString.exit.thread.thread328 %228 = and i32 %222, 1 - %.not302 = icmp eq i32 %228, 0 - br i1 %.not302, label %272, label %229 + %.not303 = icmp eq i32 %228, 0 + br i1 %.not303, label %272, label %229 229: ; preds = %227 %230 = add i32 %225, 1 @@ -2790,8 +2793,8 @@ tsCompareString.exit.thread.thread327: ; preds = %85, %tsCompareStrin %236 = getelementptr [0 x %struct.WordEntry], ptr %10, i64 0, i64 %235 %237 = lshr i32 %222, 12 %238 = add nuw nsw i32 %237, 1 - %narrow303 = add nuw nsw i32 %238, %224 - %239 = and i32 %narrow303, 4194302 + %narrow304 = add nuw nsw i32 %238, %224 + %239 = and i32 %narrow304, 4194302 %240 = zext nneg i32 %239 to i64 %241 = getelementptr i8, ptr %236, i64 %240 %242 = load i16, ptr %241, align 2 @@ -2799,10 +2802,10 @@ tsCompareString.exit.thread.thread327: ; preds = %85, %tsCompareStrin %244 = shl nuw nsw i64 %243, 1 %245 = add nuw nsw i64 %244, 2 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %233, ptr noundef nonnull align 2 dereferenceable(1) %241, i64 %245, i1 false) - %246 = load i32, ptr %.0256341, align 4 + %246 = load i32, ptr %.0256342, align 4 %247 = and i32 %246, 1 - %.not304 = icmp eq i32 %247, 0 - br i1 %.not304, label %263, label %248 + %.not305 = icmp eq i32 %247, 0 + br i1 %.not305, label %263, label %248 248: ; preds = %229 %249 = load i32, ptr %11, align 4 @@ -2812,8 +2815,8 @@ tsCompareString.exit.thread.thread327: ; preds = %85, %tsCompareStrin %253 = lshr i32 %246, 1 %254 = and i32 %253, 2047 %255 = add nuw nsw i32 %252, 1 - %narrow305 = add nuw nsw i32 %255, %254 - %256 = and i32 %narrow305, 4194302 + %narrow306 = add nuw nsw i32 %255, %254 + %256 = and i32 %narrow306, 4194302 %257 = zext nneg i32 %256 to i64 %258 = getelementptr i8, ptr %251, i64 %257 %259 = load i16, ptr %258, align 2 @@ -2825,27 +2828,27 @@ tsCompareString.exit.thread.thread327: ; preds = %85, %tsCompareStrin 263: ; preds = %229, %248 %264 = phi i32 [ %262, %248 ], [ 2, %229 ] %265 = add i32 %264, %231 - %266 = load i32, ptr %.0259340, align 4 + %266 = load i32, ptr %.0259341, align 4 %267 = and i32 %266, 1 - %.not306 = icmp eq i32 %267, 0 - br i1 %.not306, label %284, label %268 + %.not307 = icmp eq i32 %267, 0 + br i1 %.not307, label %284, label %268 268: ; preds = %263 - %269 = tail call fastcc i32 @add_pos(ptr noundef nonnull %9, i32 %266, ptr noundef nonnull %50, ptr noundef nonnull %.1342, i32 noundef %.0263.lcssa) + %269 = tail call fastcc i32 @add_pos(ptr noundef nonnull %9, i32 %266, ptr noundef nonnull %50, ptr noundef nonnull %.1343, i32 noundef %.0263.lcssa) %270 = shl nsw i32 %269, 1 %271 = add i32 %270, %265 br label %284 272: ; preds = %227 - %.0259.val319 = load i32, ptr %.0259340, align 4 - %273 = tail call fastcc i32 @add_pos(ptr noundef nonnull %9, i32 %.0259.val319, ptr noundef nonnull %50, ptr noundef nonnull %.1342, i32 noundef %.0263.lcssa) + %.0259.val320 = load i32, ptr %.0259341, align 4 + %273 = tail call fastcc i32 @add_pos(ptr noundef nonnull %9, i32 %.0259.val320, ptr noundef nonnull %50, ptr noundef nonnull %.1343, i32 noundef %.0263.lcssa) %274 = icmp eq i32 %273, 0 br i1 %274, label %275, label %278 275: ; preds = %272 - %276 = load i32, ptr %.1342, align 4 + %276 = load i32, ptr %.1343, align 4 %277 = and i32 %276, -2 - store i32 %277, ptr %.1342, align 4 + store i32 %277, ptr %.1343, align 4 br label %284 278: ; preds = %272 @@ -2856,51 +2859,51 @@ tsCompareString.exit.thread.thread327: ; preds = %85, %tsCompareStrin %283 = add i32 %282, %281 br label %284 -284: ; preds = %268, %263, %278, %275, %tsCompareString.exit.thread.thread327 - %.4276 = phi i32 [ %271, %268 ], [ %265, %263 ], [ %225, %275 ], [ %283, %278 ], [ %225, %tsCompareString.exit.thread.thread327 ] - %285 = getelementptr i8, ptr %.0256341, i64 4 - %286 = getelementptr i8, ptr %.0259340, i64 4 - %287 = add i32 %.0269339, -1 - %288 = add i32 %.0277337, -1 +284: ; preds = %268, %263, %278, %275, %tsCompareString.exit.thread.thread328 + %.4276 = phi i32 [ %271, %268 ], [ %265, %263 ], [ %225, %275 ], [ %283, %278 ], [ %225, %tsCompareString.exit.thread.thread328 ] + %285 = getelementptr i8, ptr %.0256342, i64 4 + %286 = getelementptr i8, ptr %.0259341, i64 4 + %287 = add i32 %.0269340, -1 + %288 = add i32 %.0277338, -1 br label %289 289: ; preds = %197, %284, %156 - %.1278 = phi i32 [ %.0277337, %156 ], [ %199, %197 ], [ %288, %284 ] + %.1278 = phi i32 [ %.0277338, %156 ], [ %199, %197 ], [ %288, %284 ] %.2274 = phi i32 [ %.1273, %156 ], [ %.3275, %197 ], [ %.4276, %284 ] - %.1270 = phi i32 [ %158, %156 ], [ %.0269339, %197 ], [ %287, %284 ] - %.1260 = phi ptr [ %.0259340, %156 ], [ %198, %197 ], [ %286, %284 ] - %.1257 = phi ptr [ %157, %156 ], [ %.0256341, %197 ], [ %285, %284 ] - %.2 = getelementptr i8, ptr %.1342, i64 4 + %.1270 = phi i32 [ %158, %156 ], [ %.0269340, %197 ], [ %287, %284 ] + %.1260 = phi ptr [ %.0259341, %156 ], [ %198, %197 ], [ %286, %284 ] + %.1257 = phi ptr [ %157, %156 ], [ %.0256342, %197 ], [ %285, %284 ] + %.2 = getelementptr i8, ptr %.1343, i64 4 %290 = icmp ne i32 %.1270, 0 %291 = icmp ne i32 %.1278, 0 %292 = select i1 %290, i1 %291, i1 false - br i1 %292, label %.lr.ph345, label %.preheader330, !llvm.loop !29 - -.preheader: ; preds = %361, %.preheader330 - %.5.lcssa = phi i32 [ %.0272.lcssa, %.preheader330 ], [ %.6, %361 ] - %.3.lcssa = phi ptr [ %.1.lcssa, %.preheader330 ], [ %362, %361 ] - %.not291360 = icmp eq i32 %.0277.lcssa, 0 - br i1 %.not291360, label %._crit_edge366, label %.lr.ph365 - -.lr.ph357: ; preds = %.preheader330, %361 - %.3356 = phi ptr [ %362, %361 ], [ %.1.lcssa, %.preheader330 ] - %.2258355 = phi ptr [ %363, %361 ], [ %.0256.lcssa, %.preheader330 ] - %.2271354 = phi i32 [ %364, %361 ], [ %.0269.lcssa, %.preheader330 ] - %.5353 = phi i32 [ %.6, %361 ], [ %.0272.lcssa, %.preheader330 ] - %293 = load i32, ptr %.2258355, align 4 + br i1 %292, label %.lr.ph346, label %.preheader331, !llvm.loop !29 + +.preheader: ; preds = %361, %.preheader331 + %.5.lcssa = phi i32 [ %.0272.lcssa, %.preheader331 ], [ %.6, %361 ] + %.3.lcssa = phi ptr [ %.1.lcssa, %.preheader331 ], [ %362, %361 ] + %.not291361 = icmp eq i32 %.0277.lcssa, 0 + br i1 %.not291361, label %._crit_edge367, label %.lr.ph366 + +.lr.ph358: ; preds = %.preheader331, %361 + %.3357 = phi ptr [ %362, %361 ], [ %.1.lcssa, %.preheader331 ] + %.2258356 = phi ptr [ %363, %361 ], [ %.0256.lcssa, %.preheader331 ] + %.2271355 = phi i32 [ %364, %361 ], [ %.0269.lcssa, %.preheader331 ] + %.5354 = phi i32 [ %.6, %361 ], [ %.0272.lcssa, %.preheader331 ] + %293 = load i32, ptr %.2258356, align 4 %294 = and i32 %293, 1 - %295 = load i32, ptr %.3356, align 4 + %295 = load i32, ptr %.3357, align 4 %296 = and i32 %295, -2 %297 = or disjoint i32 %296, %294 - store i32 %297, ptr %.3356, align 4 - %298 = load i32, ptr %.2258355, align 4 + store i32 %297, ptr %.3357, align 4 + %298 = load i32, ptr %.2258356, align 4 %299 = and i32 %298, 4094 %300 = and i32 %297, -4095 %301 = or disjoint i32 %300, %299 - store i32 %301, ptr %.3356, align 4 - %302 = sext i32 %.5353 to i64 + store i32 %301, ptr %.3357, align 4 + %302 = sext i32 %.5354 to i64 %303 = getelementptr i8, ptr %58, i64 %302 - %304 = load i32, ptr %.2258355, align 4 + %304 = load i32, ptr %.2258356, align 4 %305 = lshr i32 %304, 12 %306 = zext nneg i32 %305 to i64 %307 = getelementptr i8, ptr %37, i64 %306 @@ -2908,20 +2911,20 @@ tsCompareString.exit.thread.thread327: ; preds = %85, %tsCompareStrin %309 = and i32 %308, 2047 %310 = zext nneg i32 %309 to i64 tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %303, ptr align 1 %307, i64 %310, i1 false) - %311 = load i32, ptr %.3356, align 4 - %312 = shl i32 %.5353, 12 + %311 = load i32, ptr %.3357, align 4 + %312 = shl i32 %.5354, 12 %313 = and i32 %311, 4095 %314 = or disjoint i32 %313, %312 - store i32 %314, ptr %.3356, align 4 - %315 = load i32, ptr %.2258355, align 4 + store i32 %314, ptr %.3357, align 4 + %315 = load i32, ptr %.2258356, align 4 %316 = lshr i32 %315, 1 %317 = and i32 %316, 2047 - %318 = add i32 %317, %.5353 + %318 = add i32 %317, %.5354 %319 = and i32 %311, 1 - %.not296 = icmp eq i32 %319, 0 - br i1 %.not296, label %361, label %320 + %.not297 = icmp eq i32 %319, 0 + br i1 %.not297, label %361, label %320 -320: ; preds = %.lr.ph357 +320: ; preds = %.lr.ph358 %321 = add i32 %318, 1 %322 = and i32 %321, -2 %323 = sext i32 %322 to i64 @@ -2936,8 +2939,8 @@ tsCompareString.exit.thread.thread327: ; preds = %85, %tsCompareStrin %331 = zext nneg i32 %330 to i64 %332 = getelementptr i8, ptr %327, i64 %331 %333 = and i32 %315, 1 - %.not297 = icmp eq i32 %333, 0 - br i1 %.not297, label %339, label %334 + %.not298 = icmp eq i32 %333, 0 + br i1 %.not298, label %339, label %334 334: ; preds = %320 %335 = load i16, ptr %332, align 2 @@ -2949,10 +2952,10 @@ tsCompareString.exit.thread.thread327: ; preds = %85, %tsCompareStrin 339: ; preds = %320, %334 %340 = phi i64 [ %338, %334 ], [ 2, %320 ] tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %324, ptr noundef nonnull align 2 dereferenceable(1) %332, i64 %340, i1 false) - %341 = load i32, ptr %.2258355, align 4 + %341 = load i32, ptr %.2258356, align 4 %342 = and i32 %341, 1 - %.not298 = icmp eq i32 %342, 0 - br i1 %.not298, label %358, label %343 + %.not299 = icmp eq i32 %342, 0 + br i1 %.not299, label %358, label %343 343: ; preds = %339 %344 = load i32, ptr %11, align 4 @@ -2962,8 +2965,8 @@ tsCompareString.exit.thread.thread327: ; preds = %85, %tsCompareStrin %348 = lshr i32 %341, 1 %349 = and i32 %348, 2047 %350 = add nuw nsw i32 %347, 1 - %narrow299 = add nuw nsw i32 %350, %349 - %351 = and i32 %narrow299, 4194302 + %narrow300 = add nuw nsw i32 %350, %349 + %351 = and i32 %narrow300, 4194302 %352 = zext nneg i32 %351 to i64 %353 = getelementptr i8, ptr %346, i64 %352 %354 = load i16, ptr %353, align 2 @@ -2977,33 +2980,33 @@ tsCompareString.exit.thread.thread327: ; preds = %85, %tsCompareStrin %360 = add i32 %359, %322 br label %361 -361: ; preds = %358, %.lr.ph357 - %.6 = phi i32 [ %360, %358 ], [ %318, %.lr.ph357 ] - %362 = getelementptr i8, ptr %.3356, i64 4 - %363 = getelementptr i8, ptr %.2258355, i64 4 - %364 = add i32 %.2271354, -1 +361: ; preds = %358, %.lr.ph358 + %.6 = phi i32 [ %360, %358 ], [ %318, %.lr.ph358 ] + %362 = getelementptr i8, ptr %.3357, i64 4 + %363 = getelementptr i8, ptr %.2258356, i64 4 + %364 = add i32 %.2271355, -1 %.not290 = icmp eq i32 %364, 0 - br i1 %.not290, label %.preheader, label %.lr.ph357, !llvm.loop !30 - -.lr.ph365: ; preds = %.preheader, %404 - %.4364 = phi ptr [ %405, %404 ], [ %.3.lcssa, %.preheader ] - %.2261363 = phi ptr [ %406, %404 ], [ %.0259.lcssa, %.preheader ] - %.7362 = phi i32 [ %.8, %404 ], [ %.5.lcssa, %.preheader ] - %.2279361 = phi i32 [ %407, %404 ], [ %.0277.lcssa, %.preheader ] - %365 = load i32, ptr %.2261363, align 4 + br i1 %.not290, label %.preheader, label %.lr.ph358, !llvm.loop !30 + +.lr.ph366: ; preds = %.preheader, %404 + %.4365 = phi ptr [ %405, %404 ], [ %.3.lcssa, %.preheader ] + %.2261364 = phi ptr [ %406, %404 ], [ %.0259.lcssa, %.preheader ] + %.7363 = phi i32 [ %.8, %404 ], [ %.5.lcssa, %.preheader ] + %.2279362 = phi i32 [ %407, %404 ], [ %.0277.lcssa, %.preheader ] + %365 = load i32, ptr %.2261364, align 4 %366 = and i32 %365, 1 - %367 = load i32, ptr %.4364, align 4 + %367 = load i32, ptr %.4365, align 4 %368 = and i32 %367, -2 %369 = or disjoint i32 %368, %366 - store i32 %369, ptr %.4364, align 4 - %370 = load i32, ptr %.2261363, align 4 + store i32 %369, ptr %.4365, align 4 + %370 = load i32, ptr %.2261364, align 4 %371 = and i32 %370, 4094 %372 = and i32 %369, -4095 %373 = or disjoint i32 %372, %371 - store i32 %373, ptr %.4364, align 4 - %374 = sext i32 %.7362 to i64 + store i32 %373, ptr %.4365, align 4 + %374 = sext i32 %.7363 to i64 %375 = getelementptr i8, ptr %58, i64 %374 - %376 = load i32, ptr %.2261363, align 4 + %376 = load i32, ptr %.2261364, align 4 %377 = lshr i32 %376, 12 %378 = zext nneg i32 %377 to i64 %379 = getelementptr i8, ptr %41, i64 %378 @@ -3011,28 +3014,28 @@ tsCompareString.exit.thread.thread327: ; preds = %85, %tsCompareStrin %381 = and i32 %380, 2047 %382 = zext nneg i32 %381 to i64 tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %375, ptr align 1 %379, i64 %382, i1 false) - %383 = load i32, ptr %.4364, align 4 - %384 = shl i32 %.7362, 12 + %383 = load i32, ptr %.4365, align 4 + %384 = shl i32 %.7363, 12 %385 = and i32 %383, 4095 %386 = or disjoint i32 %385, %384 - store i32 %386, ptr %.4364, align 4 - %387 = load i32, ptr %.2261363, align 4 + store i32 %386, ptr %.4365, align 4 + %387 = load i32, ptr %.2261364, align 4 %388 = lshr i32 %387, 1 %389 = and i32 %388, 2047 - %390 = add i32 %389, %.7362 + %390 = add i32 %389, %.7363 %391 = and i32 %383, 1 - %.not295 = icmp eq i32 %391, 0 - br i1 %.not295, label %404, label %392 + %.not296 = icmp eq i32 %391, 0 + br i1 %.not296, label %404, label %392 -392: ; preds = %.lr.ph365 - %393 = tail call fastcc i32 @add_pos(ptr noundef nonnull %9, i32 %387, ptr noundef nonnull %50, ptr noundef nonnull %.4364, i32 noundef %.0263.lcssa) +392: ; preds = %.lr.ph366 + %393 = tail call fastcc i32 @add_pos(ptr noundef nonnull %9, i32 %387, ptr noundef nonnull %50, ptr noundef nonnull %.4365, i32 noundef %.0263.lcssa) %394 = icmp eq i32 %393, 0 br i1 %394, label %395, label %398 395: ; preds = %392 - %396 = load i32, ptr %.4364, align 4 + %396 = load i32, ptr %.4365, align 4 %397 = and i32 %396, -2 - store i32 %397, ptr %.4364, align 4 + store i32 %397, ptr %.4365, align 4 br label %404 398: ; preds = %392 @@ -3043,21 +3046,21 @@ tsCompareString.exit.thread.thread327: ; preds = %85, %tsCompareStrin %403 = add i32 %402, %401 br label %404 -404: ; preds = %395, %398, %.lr.ph365 - %.8 = phi i32 [ %390, %395 ], [ %403, %398 ], [ %390, %.lr.ph365 ] - %405 = getelementptr i8, ptr %.4364, i64 4 - %406 = getelementptr i8, ptr %.2261363, i64 4 - %407 = add i32 %.2279361, -1 +404: ; preds = %395, %398, %.lr.ph366 + %.8 = phi i32 [ %390, %395 ], [ %403, %398 ], [ %390, %.lr.ph366 ] + %405 = getelementptr i8, ptr %.4365, i64 4 + %406 = getelementptr i8, ptr %.2261364, i64 4 + %407 = add i32 %.2279362, -1 %.not291 = icmp eq i32 %407, 0 - br i1 %.not291, label %._crit_edge366, label %.lr.ph365, !llvm.loop !31 + br i1 %.not291, label %._crit_edge367, label %.lr.ph366, !llvm.loop !31 -._crit_edge366: ; preds = %404, %.preheader +._crit_edge367: ; preds = %404, %.preheader %.7.lcssa = phi i32 [ %.5.lcssa, %.preheader ], [ %.8, %404 ] %.4.lcssa = phi ptr [ %.3.lcssa, %.preheader ], [ %405, %404 ] %408 = icmp sgt i32 %.7.lcssa, 1048575 br i1 %408, label %409, label %413 -409: ; preds = %._crit_edge366 +409: ; preds = %._crit_edge367 %410 = tail call zeroext i1 @errstart_cold(i32 noundef 21, ptr noundef null) #16 tail call void @llvm.assume(i1 %410) %411 = tail call i32 @errcode(i32 noundef 261) #14 @@ -3065,7 +3068,7 @@ tsCompareString.exit.thread.thread327: ; preds = %85, %tsCompareStrin tail call void @errfinish(ptr noundef nonnull @.str.1, i32 noundef 1127, ptr noundef nonnull @__func__.tsvector_concat) #14 unreachable -413: ; preds = %._crit_edge366 +413: ; preds = %._crit_edge367 %414 = ptrtoint ptr %.4.lcssa to i64 %415 = ptrtoint ptr %56 to i64 %416 = sub i64 %414, %415 @@ -3073,12 +3076,13 @@ tsCompareString.exit.thread.thread327: ; preds = %85, %tsCompareStrin %418 = trunc i64 %417 to i32 store i32 %418, ptr %55, align 4 %sext = shl i64 %416, 30 - %419 = ashr i64 %sext, 32 - %.not292 = icmp eq i64 %419, %57 + %419 = ashr exact i64 %sext, 30 + %.idx293 = and i64 %419, -4 + %.not292 = icmp eq i64 %.idx, %.idx293 br i1 %.not292, label %423, label %420 420: ; preds = %413 - %421 = getelementptr [0 x %struct.WordEntry], ptr %56, i64 0, i64 %419 + %421 = getelementptr i8, ptr %56, i64 %.idx293 %422 = sext i32 %.7.lcssa to i64 tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %421, ptr align 1 %58, i64 %422, i1 false) %.pre = load i32, ptr %55, align 4 @@ -3093,8 +3097,8 @@ tsCompareString.exit.thread.thread327: ; preds = %85, %tsCompareStrin store i32 %428, ptr %50, align 4 %429 = load i64, ptr %2, align 8 %430 = inttoptr i64 %429 to ptr - %.not293 = icmp eq ptr %5, %430 - br i1 %.not293, label %432, label %431 + %.not294 = icmp eq ptr %5, %430 + br i1 %.not294, label %432, label %431 431: ; preds = %423 tail call void @pfree(ptr noundef nonnull %5) #14 @@ -3103,8 +3107,8 @@ tsCompareString.exit.thread.thread327: ; preds = %85, %tsCompareStrin 432: ; preds = %431, %423 %433 = load i64, ptr %6, align 8 %434 = inttoptr i64 %433 to ptr - %.not294 = icmp eq ptr %9, %434 - br i1 %.not294, label %436, label %435 + %.not295 = icmp eq ptr %9, %434 + br i1 %.not295, label %436, label %435 435: ; preds = %432 tail call void @pfree(ptr noundef nonnull %9) #14 diff --git a/bench/quickjs/optimized/libbf.ll b/bench/quickjs/optimized/libbf.ll index 26ffc547aa3..6146b9e864e 100644 --- a/bench/quickjs/optimized/libbf.ll +++ b/bench/quickjs/optimized/libbf.ll @@ -25637,11 +25637,11 @@ get_bits.exit98: ; preds = %85, %92 108: ; preds = %get_bits.exit98 %109 = zext i64 %6 to i128 - %.frozen155 = freeze i128 %100 - %110 = udiv i128 %.frozen155, %109 + %.frozen156 = freeze i128 %100 + %110 = udiv i128 %.frozen156, %109 %111 = mul i128 %110, %109 - %.decomposed156 = sub i128 %.frozen155, %111 - %112 = trunc nuw i128 %.decomposed156 to i64 + %.decomposed157 = sub i128 %.frozen156, %111 + %112 = trunc nuw i128 %.decomposed157 to i64 store i64 %112, ptr %1, align 8 %113 = trunc i128 %110 to i64 %114 = getelementptr i8, ptr %1, i64 8 @@ -25673,10 +25673,12 @@ get_bits.exit98: ; preds = %85, %92 %129 = sub i64 %3, %128 %130 = shl i32 %4, 1 %131 = sext i32 %130 to i64 - %132 = getelementptr %struct.bf_t, ptr %0, i64 %131 + %.idx140 = mul nsw i64 %131, 40 + %132 = getelementptr i8, ptr %0, i64 %.idx140 %133 = or disjoint i32 %130, 1 %134 = sext i32 %133 to i64 - %135 = getelementptr %struct.bf_t, ptr %0, i64 %134 + %.idx = mul nsw i64 %134, 40 + %135 = getelementptr i8, ptr %0, i64 %.idx %136 = getelementptr inbounds nuw i8, ptr %132, i64 24 %137 = load i64, ptr %136, align 8 %138 = icmp eq i64 %137, 0 @@ -25805,9 +25807,9 @@ bf_sub.exit: ; preds = %bf_rint.exit, %185 %189 = or i32 %177, %182 %190 = and i32 %189, 32 %.not = icmp eq i32 %190, 0 - br i1 %.not, label %.preheader141, label %.loopexit140 + br i1 %.not, label %.preheader142, label %.loopexit141 -.preheader141: ; preds = %bf_sub.exit +.preheader142: ; preds = %bf_sub.exit %191 = load i32, ptr %120, align 8 %192 = icmp ne i32 %191, 0 %193 = load i64, ptr %122, align 8 @@ -25815,14 +25817,14 @@ bf_sub.exit: ; preds = %bf_rint.exit, %185 %195 = select i1 %192, i1 %194, i1 false br i1 %195, label %.lr.ph, label %.preheader -.lr.ph: ; preds = %.preheader141 +.lr.ph: ; preds = %.preheader142 %196 = getelementptr inbounds nuw i8, ptr %10, i64 8 %197 = getelementptr inbounds nuw i8, ptr %10, i64 16 %198 = getelementptr inbounds nuw i8, ptr %10, i64 24 br label %204 -.preheader: ; preds = %212, %.preheader141 - %.0.lcssa = phi i32 [ 0, %.preheader141 ], [ %213, %212 ] +.preheader: ; preds = %212, %.preheader142 + %.0.lcssa = phi i32 [ 0, %.preheader142 ], [ %213, %212 ] %199 = getelementptr inbounds nuw i8, ptr %132, i64 16 %200 = getelementptr inbounds nuw i8, ptr %132, i64 32 %201 = getelementptr inbounds nuw i8, ptr %9, i64 8 @@ -25831,7 +25833,7 @@ bf_sub.exit: ; preds = %bf_rint.exit, %185 br label %219 204: ; preds = %.lr.ph, %212 - %.0145 = phi i32 [ 0, %.lr.ph ], [ %213, %212 ] + %.0146 = phi i32 [ 0, %.lr.ph ], [ %213, %212 ] call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %10) %205 = load ptr, ptr %14, align 8 store ptr %205, ptr %10, align 8 @@ -25855,10 +25857,10 @@ bf_add.exit: ; preds = %204, %208 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull readonly align 8 dereferenceable(40) %10, i64 40, i1 false) call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %10) %.not90 = icmp eq i32 %206, 0 - br i1 %.not90, label %212, label %.loopexit140 + br i1 %.not90, label %212, label %.loopexit141 212: ; preds = %bf_add.exit - %213 = add i32 %.0145, -1 + %213 = add i32 %.0146, -1 %214 = load i32, ptr %120, align 8 %215 = icmp ne i32 %214, 0 %216 = load i64, ptr %122, align 8 @@ -25947,7 +25949,7 @@ bf_sub.exit121: ; preds = %.loopexit, %247 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull readonly align 8 dereferenceable(40) %9, i64 40, i1 false) call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %9) %.not89 = icmp eq i32 %245, 0 - br i1 %.not89, label %251, label %.loopexit140 + br i1 %.not89, label %251, label %.loopexit141 251: ; preds = %bf_sub.exit121 %252 = add i32 %.1, 1 @@ -25961,25 +25963,25 @@ bf_cmpu.exit: ; preds = %242, %222 %254 = sext i32 %.1 to i64 %255 = call i32 @bf_add_si(ptr noundef nonnull %13, ptr noundef nonnull %13, i64 noundef %254, i64 noundef 4611686018427387903, i32 noundef 1) %.not86 = icmp eq i32 %255, 0 - br i1 %.not86, label %256, label %.loopexit140 + br i1 %.not86, label %256, label %.loopexit141 256: ; preds = %253, %bf_cmpu.exit %257 = getelementptr i64, ptr %1, i64 %128 %258 = call fastcc i32 @bf_integer_to_radix_rec(ptr noundef %0, ptr noundef %257, ptr noundef %13, i64 noundef %129, i32 noundef %124, i64 noundef %5, i64 noundef %6, i32 noundef %7) %.not87 = icmp eq i32 %258, 0 - br i1 %.not87, label %259, label %.loopexit140 + br i1 %.not87, label %259, label %.loopexit141 259: ; preds = %256 %260 = call fastcc i32 @bf_integer_to_radix_rec(ptr noundef %0, ptr noundef %1, ptr noundef %14, i64 noundef %128, i32 noundef %124, i64 noundef %5, i64 noundef %6, i32 noundef %7) %.not88 = icmp eq i32 %260, 0 - br i1 %.not88, label %274, label %.loopexit140 + br i1 %.not88, label %274, label %.loopexit141 -.loopexit140: ; preds = %bf_add.exit, %bf_sub.exit121, %259, %256, %253, %bf_sub.exit +.loopexit141: ; preds = %bf_add.exit, %bf_sub.exit121, %259, %256, %253, %bf_sub.exit %261 = load ptr, ptr %13, align 8 %.not.i122 = icmp eq ptr %261, null br i1 %.not.i122, label %bf_delete.exit, label %262 -262: ; preds = %.loopexit140 +262: ; preds = %.loopexit141 %263 = getelementptr inbounds nuw i8, ptr %13, i64 32 %264 = load ptr, ptr %263, align 8 %.not6.i = icmp eq ptr %264, null @@ -25992,7 +25994,7 @@ bf_cmpu.exit: ; preds = %242, %222 %267 = call ptr %.val7.i(ptr noundef %.val.i, ptr noundef nonnull %264, i64 noundef 0) #17 br label %bf_delete.exit -bf_delete.exit: ; preds = %.loopexit140, %262, %265 +bf_delete.exit: ; preds = %.loopexit141, %262, %265 %268 = load ptr, ptr %14, align 8 %.not.i123 = icmp eq ptr %268, null br i1 %.not.i123, label %bf_delete.exit127, label %269 diff --git a/bench/wireshark/optimized/astringlist_list_model.cpp.ll b/bench/wireshark/optimized/astringlist_list_model.cpp.ll index 9dd3bdf7764..2fef6d809f3 100644 --- a/bench/wireshark/optimized/astringlist_list_model.cpp.ll +++ b/bench/wireshark/optimized/astringlist_list_model.cpp.ll @@ -242,7 +242,7 @@ define linkonce_odr void @_ZN5QListIS_I7QStringEE5clearEv(ptr noundef nonnull al %4 = getelementptr inbounds nuw i8, ptr %0, i64 16 %5 = load i64, ptr %4, align 8 %.not = icmp eq i64 %5, 0 - br i1 %.not, label %40, label %6 + br i1 %.not, label %41, label %6 6: ; preds = %1 %7 = load ptr, ptr %0, align 8 @@ -252,7 +252,7 @@ define linkonce_odr void @_ZN5QListIS_I7QStringEE5clearEv(ptr noundef nonnull al _ZNK17QArrayDataPointerI5QListI7QStringEE11needsDetachEv.exit: ; preds = %6 %8 = load atomic i32, ptr %7 monotonic, align 4 %9 = icmp sgt i32 %8, 1 - br i1 %9, label %10, label %.lr.ph.i.i.i.preheader.i + br i1 %9, label %10, label %22 10: ; preds = %_ZNK17QArrayDataPointerI5QListI7QStringEE11needsDetachEv.exit %11 = getelementptr inbounds nuw i8, ptr %7, i64 8 @@ -279,71 +279,73 @@ _ZN17QArrayDataPointerI5QListI7QStringEE17allocatedCapacityEv.exit: ; preds = %6 store i64 0, ptr %4, align 8 store i64 %21, ptr %17, align 8 call void @_ZN17QArrayDataPointerI5QListI7QStringEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #20 - br label %40 - -.lr.ph.i.i.i.preheader.i: ; preds = %_ZNK17QArrayDataPointerI5QListI7QStringEE11needsDetachEv.exit - %22 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %23 = load ptr, ptr %22, align 8 - %24 = getelementptr %class.QList.0, ptr %23, i64 %5 - br label %.lr.ph.i.i.i.i + br label %41 -.lr.ph.i.i.i.i: ; preds = %_ZSt8_DestroyI5QListI7QStringEEvPT_.exit.i.i.i.i, %.lr.ph.i.i.i.preheader.i - %.05.i.i.i.i = phi ptr [ %39, %_ZSt8_DestroyI5QListI7QStringEEvPT_.exit.i.i.i.i ], [ %23, %.lr.ph.i.i.i.preheader.i ] - %25 = load ptr, ptr %.05.i.i.i.i, align 8 - %.not.i.i.i.i.i.i.i.i = icmp eq ptr %25, null +22: ; preds = %_ZNK17QArrayDataPointerI5QListI7QStringEE11needsDetachEv.exit + %23 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %24 = load ptr, ptr %23, align 8 + %.idx2.i = mul i64 %5, 24 + %25 = getelementptr i8, ptr %24, i64 %.idx2.i + %.not4.i.i.i.i = icmp eq i64 %.idx2.i, 0 + br i1 %.not4.i.i.i.i, label %_ZN9QtPrivate16QGenericArrayOpsI5QListI7QStringEE8truncateEm.exit, label %.lr.ph.i.i.i.i + +.lr.ph.i.i.i.i: ; preds = %22, %_ZSt8_DestroyI5QListI7QStringEEvPT_.exit.i.i.i.i + %.05.i.i.i.i = phi ptr [ %40, %_ZSt8_DestroyI5QListI7QStringEEvPT_.exit.i.i.i.i ], [ %24, %22 ] + %26 = load ptr, ptr %.05.i.i.i.i, align 8 + %.not.i.i.i.i.i.i.i.i = icmp eq ptr %26, null br i1 %.not.i.i.i.i.i.i.i.i, label %_ZSt8_DestroyI5QListI7QStringEEvPT_.exit.i.i.i.i, label %_ZN17QArrayDataPointerI7QStringE5derefEv.exit.i.i.i.i.i.i.i _ZN17QArrayDataPointerI7QStringE5derefEv.exit.i.i.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i - %26 = atomicrmw sub ptr %25, i32 1 seq_cst, align 4 - %.not.i.i.i.i.i.i.i = icmp eq i32 %26, 1 - br i1 %.not.i.i.i.i.i.i.i, label %27, label %_ZSt8_DestroyI5QListI7QStringEEvPT_.exit.i.i.i.i + %27 = atomicrmw sub ptr %26, i32 1 seq_cst, align 4 + %.not.i.i.i.i.i.i.i = icmp eq i32 %27, 1 + br i1 %.not.i.i.i.i.i.i.i, label %28, label %_ZSt8_DestroyI5QListI7QStringEEvPT_.exit.i.i.i.i -27: ; preds = %_ZN17QArrayDataPointerI7QStringE5derefEv.exit.i.i.i.i.i.i.i - %28 = getelementptr inbounds nuw i8, ptr %.05.i.i.i.i, i64 8 - %29 = load ptr, ptr %28, align 8 - %30 = getelementptr inbounds nuw i8, ptr %.05.i.i.i.i, i64 16 - %31 = load i64, ptr %30, align 8 - %32 = getelementptr %class.QString, ptr %29, i64 %31 - %.idx.i.i.i.i.i.i.i.i = mul i64 %31, 24 +28: ; preds = %_ZN17QArrayDataPointerI7QStringE5derefEv.exit.i.i.i.i.i.i.i + %29 = getelementptr inbounds nuw i8, ptr %.05.i.i.i.i, i64 8 + %30 = load ptr, ptr %29, align 8 + %31 = getelementptr inbounds nuw i8, ptr %.05.i.i.i.i, i64 16 + %32 = load i64, ptr %31, align 8 + %33 = getelementptr %class.QString, ptr %30, i64 %32 + %.idx.i.i.i.i.i.i.i.i = mul i64 %32, 24 %.not4.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %.idx.i.i.i.i.i.i.i.i, 0 br i1 %.not4.i.i.i.i.i.i.i.i.i.i.i, label %_ZN9QtPrivate16QGenericArrayOpsI7QStringE10destroyAllEv.exit.i.i.i.i.i.i.i, label %.lr.ph.i.i.i.i.i.i.i.i.i.i.i -.lr.ph.i.i.i.i.i.i.i.i.i.i.i: ; preds = %27, %_ZSt8_DestroyI7QStringEvPT_.exit.i.i.i.i.i.i.i.i.i.i.i - %.05.i.i.i.i.i.i.i.i.i.i.i = phi ptr [ %37, %_ZSt8_DestroyI7QStringEvPT_.exit.i.i.i.i.i.i.i.i.i.i.i ], [ %29, %27 ] - %33 = load ptr, ptr %.05.i.i.i.i.i.i.i.i.i.i.i, align 8 - %.not.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %33, null +.lr.ph.i.i.i.i.i.i.i.i.i.i.i: ; preds = %28, %_ZSt8_DestroyI7QStringEvPT_.exit.i.i.i.i.i.i.i.i.i.i.i + %.05.i.i.i.i.i.i.i.i.i.i.i = phi ptr [ %38, %_ZSt8_DestroyI7QStringEvPT_.exit.i.i.i.i.i.i.i.i.i.i.i ], [ %30, %28 ] + %34 = load ptr, ptr %.05.i.i.i.i.i.i.i.i.i.i.i, align 8 + %.not.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %34, null br i1 %.not.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, label %_ZSt8_DestroyI7QStringEvPT_.exit.i.i.i.i.i.i.i.i.i.i.i, label %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i.i.i.i.i.i.i.i.i.i.i.i _ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i.i.i.i.i.i.i.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i.i.i.i.i.i.i - %34 = atomicrmw sub ptr %33, i32 1 seq_cst, align 4 - %.not.i.i.i.i.i.i.i.i.i.i.i.i.i.i = icmp eq i32 %34, 1 - br i1 %.not.i.i.i.i.i.i.i.i.i.i.i.i.i.i, label %35, label %_ZSt8_DestroyI7QStringEvPT_.exit.i.i.i.i.i.i.i.i.i.i.i + %35 = atomicrmw sub ptr %34, i32 1 seq_cst, align 4 + %.not.i.i.i.i.i.i.i.i.i.i.i.i.i.i = icmp eq i32 %35, 1 + br i1 %.not.i.i.i.i.i.i.i.i.i.i.i.i.i.i, label %36, label %_ZSt8_DestroyI7QStringEvPT_.exit.i.i.i.i.i.i.i.i.i.i.i -35: ; preds = %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i.i.i.i.i.i.i.i.i.i.i.i - %36 = load ptr, ptr %.05.i.i.i.i.i.i.i.i.i.i.i, align 8 - tail call void @_ZN10QArrayData10deallocateEPS_xx(ptr noundef %36, i64 noundef 2, i64 noundef 8) #20 +36: ; preds = %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i.i.i.i.i.i.i.i.i.i.i.i + %37 = load ptr, ptr %.05.i.i.i.i.i.i.i.i.i.i.i, align 8 + tail call void @_ZN10QArrayData10deallocateEPS_xx(ptr noundef %37, i64 noundef 2, i64 noundef 8) #20 br label %_ZSt8_DestroyI7QStringEvPT_.exit.i.i.i.i.i.i.i.i.i.i.i -_ZSt8_DestroyI7QStringEvPT_.exit.i.i.i.i.i.i.i.i.i.i.i: ; preds = %35, %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i.i.i.i.i.i.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i.i.i.i.i.i.i - %37 = getelementptr i8, ptr %.05.i.i.i.i.i.i.i.i.i.i.i, i64 24 - %.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %37, %32 +_ZSt8_DestroyI7QStringEvPT_.exit.i.i.i.i.i.i.i.i.i.i.i: ; preds = %36, %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i.i.i.i.i.i.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i.i.i.i.i.i.i + %38 = getelementptr i8, ptr %.05.i.i.i.i.i.i.i.i.i.i.i, i64 24 + %.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %38, %33 br i1 %.not.i.i.i.i.i.i.i.i.i.i.i, label %_ZN9QtPrivate16QGenericArrayOpsI7QStringE10destroyAllEv.exit.i.i.i.i.i.i.i, label %.lr.ph.i.i.i.i.i.i.i.i.i.i.i, !llvm.loop !4 -_ZN9QtPrivate16QGenericArrayOpsI7QStringE10destroyAllEv.exit.i.i.i.i.i.i.i: ; preds = %_ZSt8_DestroyI7QStringEvPT_.exit.i.i.i.i.i.i.i.i.i.i.i, %27 - %38 = load ptr, ptr %.05.i.i.i.i, align 8 - tail call void @_ZN10QArrayData10deallocateEPS_xx(ptr noundef %38, i64 noundef 24, i64 noundef 8) #20 +_ZN9QtPrivate16QGenericArrayOpsI7QStringE10destroyAllEv.exit.i.i.i.i.i.i.i: ; preds = %_ZSt8_DestroyI7QStringEvPT_.exit.i.i.i.i.i.i.i.i.i.i.i, %28 + %39 = load ptr, ptr %.05.i.i.i.i, align 8 + tail call void @_ZN10QArrayData10deallocateEPS_xx(ptr noundef %39, i64 noundef 24, i64 noundef 8) #20 br label %_ZSt8_DestroyI5QListI7QStringEEvPT_.exit.i.i.i.i _ZSt8_DestroyI5QListI7QStringEEvPT_.exit.i.i.i.i: ; preds = %_ZN9QtPrivate16QGenericArrayOpsI7QStringE10destroyAllEv.exit.i.i.i.i.i.i.i, %_ZN17QArrayDataPointerI7QStringE5derefEv.exit.i.i.i.i.i.i.i, %.lr.ph.i.i.i.i - %39 = getelementptr i8, ptr %.05.i.i.i.i, i64 24 - %.not.i.i.i.i = icmp eq ptr %39, %24 + %40 = getelementptr i8, ptr %.05.i.i.i.i, i64 24 + %.not.i.i.i.i = icmp eq ptr %40, %25 br i1 %.not.i.i.i.i, label %_ZN9QtPrivate16QGenericArrayOpsI5QListI7QStringEE8truncateEm.exit, label %.lr.ph.i.i.i.i, !llvm.loop !6 -_ZN9QtPrivate16QGenericArrayOpsI5QListI7QStringEE8truncateEm.exit: ; preds = %_ZSt8_DestroyI5QListI7QStringEEvPT_.exit.i.i.i.i +_ZN9QtPrivate16QGenericArrayOpsI5QListI7QStringEE8truncateEm.exit: ; preds = %_ZSt8_DestroyI5QListI7QStringEEvPT_.exit.i.i.i.i, %22 store i64 0, ptr %4, align 8 - br label %40 + br label %41 -40: ; preds = %1, %_ZN9QtPrivate16QGenericArrayOpsI5QListI7QStringEE8truncateEm.exit, %_ZN17QArrayDataPointerI5QListI7QStringEE17allocatedCapacityEv.exit +41: ; preds = %1, %_ZN9QtPrivate16QGenericArrayOpsI5QListI7QStringEE8truncateEm.exit, %_ZN17QArrayDataPointerI5QListI7QStringEE17allocatedCapacityEv.exit ret void } diff --git a/bench/wireshark/optimized/coloring_rules_model.cpp.ll b/bench/wireshark/optimized/coloring_rules_model.cpp.ll index b048f3e667e..2f6b5b1ffe7 100644 --- a/bench/wireshark/optimized/coloring_rules_model.cpp.ll +++ b/bench/wireshark/optimized/coloring_rules_model.cpp.ll @@ -5704,7 +5704,7 @@ define linkonce_odr void @_ZN5QListI8QVariantE5clearEv(ptr noundef nonnull align _ZNK17QArrayDataPointerI8QVariantE11needsDetachEv.exit: ; preds = %5 %7 = load atomic i32, ptr %6 monotonic, align 4 %8 = icmp sgt i32 %7, 1 - br i1 %8, label %9, label %.lr.ph.i.i.i.preheader.i + br i1 %8, label %9, label %23 9: ; preds = %_ZNK17QArrayDataPointerI8QVariantE11needsDetachEv.exit %10 = getelementptr inbounds nuw i8, ptr %6, i64 8 @@ -5750,20 +5750,22 @@ _ZN9QtPrivate16QGenericArrayOpsI8QVariantE10destroyAllEv.exit.i: ; preds = %.lr. call void @_ZN10QArrayData10deallocateEPS_xx(ptr noundef nonnull %15, i64 noundef 32, i64 noundef 8) #19 br label %_ZN17QArrayDataPointerI8QVariantED2Ev.exit -.lr.ph.i.i.i.preheader.i: ; preds = %_ZNK17QArrayDataPointerI8QVariantE11needsDetachEv.exit - %23 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %24 = load ptr, ptr %23, align 8 - %25 = getelementptr %class.QVariant, ptr %24, i64 %4 - br label %.lr.ph.i.i.i.i +23: ; preds = %_ZNK17QArrayDataPointerI8QVariantE11needsDetachEv.exit + %24 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %25 = load ptr, ptr %24, align 8 + %.idx2.i = shl i64 %4, 5 + %26 = getelementptr i8, ptr %25, i64 %.idx2.i + %.not4.i.i.i.i = icmp eq i64 %.idx2.i, 0 + br i1 %.not4.i.i.i.i, label %_ZN9QtPrivate16QGenericArrayOpsI8QVariantE8truncateEm.exit, label %.lr.ph.i.i.i.i -.lr.ph.i.i.i.i: ; preds = %.lr.ph.i.i.i.i, %.lr.ph.i.i.i.preheader.i - %.05.i.i.i.i = phi ptr [ %26, %.lr.ph.i.i.i.i ], [ %24, %.lr.ph.i.i.i.preheader.i ] +.lr.ph.i.i.i.i: ; preds = %23, %.lr.ph.i.i.i.i + %.05.i.i.i.i = phi ptr [ %27, %.lr.ph.i.i.i.i ], [ %25, %23 ] tail call void @_ZN8QVariantD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %.05.i.i.i.i) #19 - %26 = getelementptr i8, ptr %.05.i.i.i.i, i64 32 - %.not.i.i.i.i = icmp eq ptr %26, %25 + %27 = getelementptr i8, ptr %.05.i.i.i.i, i64 32 + %.not.i.i.i.i = icmp eq ptr %27, %26 br i1 %.not.i.i.i.i, label %_ZN9QtPrivate16QGenericArrayOpsI8QVariantE8truncateEm.exit, label %.lr.ph.i.i.i.i, !llvm.loop !66 -_ZN9QtPrivate16QGenericArrayOpsI8QVariantE8truncateEm.exit: ; preds = %.lr.ph.i.i.i.i +_ZN9QtPrivate16QGenericArrayOpsI8QVariantE8truncateEm.exit: ; preds = %.lr.ph.i.i.i.i, %23 store i64 0, ptr %3, align 8 br label %_ZN17QArrayDataPointerI8QVariantED2Ev.exit diff --git a/bench/wireshark/optimized/column_list_model.cpp.ll b/bench/wireshark/optimized/column_list_model.cpp.ll index a9dc1c604c2..8e3468d7810 100644 --- a/bench/wireshark/optimized/column_list_model.cpp.ll +++ b/bench/wireshark/optimized/column_list_model.cpp.ll @@ -2797,7 +2797,7 @@ define linkonce_odr void @_ZN5QListI11ListElementE5clearEv(ptr noundef nonnull a _ZNK17QArrayDataPointerI11ListElementE11needsDetachEv.exit: ; preds = %5 %7 = load atomic i32, ptr %6 monotonic, align 4 %8 = icmp sgt i32 %7, 1 - br i1 %8, label %9, label %.lr.ph.i.i.i.preheader.i + br i1 %8, label %9, label %32 9: ; preds = %_ZNK17QArrayDataPointerI11ListElementE11needsDetachEv.exit %10 = getelementptr inbounds nuw i8, ptr %6, i64 8 @@ -2873,50 +2873,52 @@ _ZN9QtPrivate16QGenericArrayOpsI11ListElementE10destroyAllEv.exit.i: ; preds = % call void @_ZN10QArrayData10deallocateEPS_xx(ptr noundef nonnull %15, i64 noundef 72, i64 noundef 8) #21 br label %_ZN17QArrayDataPointerI11ListElementED2Ev.exit -.lr.ph.i.i.i.preheader.i: ; preds = %_ZNK17QArrayDataPointerI11ListElementE11needsDetachEv.exit - %32 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %33 = load ptr, ptr %32, align 8 - %34 = getelementptr %struct.ListElement, ptr %33, i64 %4 - br label %.lr.ph.i.i.i.i - -.lr.ph.i.i.i.i: ; preds = %_ZSt8_DestroyI11ListElementEvPT_.exit.i.i.i.i, %.lr.ph.i.i.i.preheader.i - %.05.i.i.i.i = phi ptr [ %44, %_ZSt8_DestroyI11ListElementEvPT_.exit.i.i.i.i ], [ %33, %.lr.ph.i.i.i.preheader.i ] - %35 = getelementptr inbounds nuw i8, ptr %.05.i.i.i.i, i64 24 - %36 = load ptr, ptr %35, align 8 - %.not.i.i.i.i.i.i.i.i.i3 = icmp eq ptr %36, null +32: ; preds = %_ZNK17QArrayDataPointerI11ListElementE11needsDetachEv.exit + %33 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %34 = load ptr, ptr %33, align 8 + %.idx2.i = mul i64 %4, 72 + %35 = getelementptr i8, ptr %34, i64 %.idx2.i + %.not4.i.i.i.i = icmp eq i64 %.idx2.i, 0 + br i1 %.not4.i.i.i.i, label %_ZN9QtPrivate16QGenericArrayOpsI11ListElementE8truncateEm.exit, label %.lr.ph.i.i.i.i + +.lr.ph.i.i.i.i: ; preds = %32, %_ZSt8_DestroyI11ListElementEvPT_.exit.i.i.i.i + %.05.i.i.i.i = phi ptr [ %45, %_ZSt8_DestroyI11ListElementEvPT_.exit.i.i.i.i ], [ %34, %32 ] + %36 = getelementptr inbounds nuw i8, ptr %.05.i.i.i.i, i64 24 + %37 = load ptr, ptr %36, align 8 + %.not.i.i.i.i.i.i.i.i.i3 = icmp eq ptr %37, null br i1 %.not.i.i.i.i.i.i.i.i.i3, label %_ZN7QStringD2Ev.exit.i.i.i.i.i.i, label %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i.i.i.i.i.i _ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i - %37 = atomicrmw sub ptr %36, i32 1 seq_cst, align 4 - %.not.i.i.i.i.i.i.i.i = icmp eq i32 %37, 1 - br i1 %.not.i.i.i.i.i.i.i.i, label %38, label %_ZN7QStringD2Ev.exit.i.i.i.i.i.i + %38 = atomicrmw sub ptr %37, i32 1 seq_cst, align 4 + %.not.i.i.i.i.i.i.i.i = icmp eq i32 %38, 1 + br i1 %.not.i.i.i.i.i.i.i.i, label %39, label %_ZN7QStringD2Ev.exit.i.i.i.i.i.i -38: ; preds = %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i.i.i.i.i.i - %39 = load ptr, ptr %35, align 8 - tail call void @_ZN10QArrayData10deallocateEPS_xx(ptr noundef %39, i64 noundef 2, i64 noundef 8) #21 +39: ; preds = %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i.i.i.i.i.i + %40 = load ptr, ptr %36, align 8 + tail call void @_ZN10QArrayData10deallocateEPS_xx(ptr noundef %40, i64 noundef 2, i64 noundef 8) #21 br label %_ZN7QStringD2Ev.exit.i.i.i.i.i.i -_ZN7QStringD2Ev.exit.i.i.i.i.i.i: ; preds = %38, %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i.i.i.i.i.i, %.lr.ph.i.i.i.i - %40 = load ptr, ptr %.05.i.i.i.i, align 8 - %.not.i.i.i1.i.i.i.i.i.i = icmp eq ptr %40, null +_ZN7QStringD2Ev.exit.i.i.i.i.i.i: ; preds = %39, %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i.i.i.i.i.i, %.lr.ph.i.i.i.i + %41 = load ptr, ptr %.05.i.i.i.i, align 8 + %.not.i.i.i1.i.i.i.i.i.i = icmp eq ptr %41, null br i1 %.not.i.i.i1.i.i.i.i.i.i, label %_ZSt8_DestroyI11ListElementEvPT_.exit.i.i.i.i, label %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i2.i.i.i.i.i.i _ZN17QArrayDataPointerIDsE5derefEv.exit.i.i2.i.i.i.i.i.i: ; preds = %_ZN7QStringD2Ev.exit.i.i.i.i.i.i - %41 = atomicrmw sub ptr %40, i32 1 seq_cst, align 4 - %.not.i.i3.i.i.i.i.i.i = icmp eq i32 %41, 1 - br i1 %.not.i.i3.i.i.i.i.i.i, label %42, label %_ZSt8_DestroyI11ListElementEvPT_.exit.i.i.i.i + %42 = atomicrmw sub ptr %41, i32 1 seq_cst, align 4 + %.not.i.i3.i.i.i.i.i.i = icmp eq i32 %42, 1 + br i1 %.not.i.i3.i.i.i.i.i.i, label %43, label %_ZSt8_DestroyI11ListElementEvPT_.exit.i.i.i.i -42: ; preds = %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i2.i.i.i.i.i.i - %43 = load ptr, ptr %.05.i.i.i.i, align 8 - tail call void @_ZN10QArrayData10deallocateEPS_xx(ptr noundef %43, i64 noundef 2, i64 noundef 8) #21 +43: ; preds = %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i2.i.i.i.i.i.i + %44 = load ptr, ptr %.05.i.i.i.i, align 8 + tail call void @_ZN10QArrayData10deallocateEPS_xx(ptr noundef %44, i64 noundef 2, i64 noundef 8) #21 br label %_ZSt8_DestroyI11ListElementEvPT_.exit.i.i.i.i -_ZSt8_DestroyI11ListElementEvPT_.exit.i.i.i.i: ; preds = %42, %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i2.i.i.i.i.i.i, %_ZN7QStringD2Ev.exit.i.i.i.i.i.i - %44 = getelementptr i8, ptr %.05.i.i.i.i, i64 72 - %.not.i.i.i.i = icmp eq ptr %44, %34 +_ZSt8_DestroyI11ListElementEvPT_.exit.i.i.i.i: ; preds = %43, %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i2.i.i.i.i.i.i, %_ZN7QStringD2Ev.exit.i.i.i.i.i.i + %45 = getelementptr i8, ptr %.05.i.i.i.i, i64 72 + %.not.i.i.i.i = icmp eq ptr %45, %35 br i1 %.not.i.i.i.i, label %_ZN9QtPrivate16QGenericArrayOpsI11ListElementE8truncateEm.exit, label %.lr.ph.i.i.i.i, !llvm.loop !4 -_ZN9QtPrivate16QGenericArrayOpsI11ListElementE8truncateEm.exit: ; preds = %_ZSt8_DestroyI11ListElementEvPT_.exit.i.i.i.i +_ZN9QtPrivate16QGenericArrayOpsI11ListElementE8truncateEm.exit: ; preds = %_ZSt8_DestroyI11ListElementEvPT_.exit.i.i.i.i, %32 store i64 0, ptr %3, align 8 br label %_ZN17QArrayDataPointerI11ListElementED2Ev.exit diff --git a/bench/wireshark/optimized/display_filter_expression_dialog.cpp.ll b/bench/wireshark/optimized/display_filter_expression_dialog.cpp.ll index e38132a1c23..613011ebe16 100644 --- a/bench/wireshark/optimized/display_filter_expression_dialog.cpp.ll +++ b/bench/wireshark/optimized/display_filter_expression_dialog.cpp.ll @@ -13209,162 +13209,166 @@ define linkonce_odr void @_ZSt17__merge_sort_loopIN5QListIP15QTreeWidgetItemE8it br i1 %.not66, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %5 + %.idx = shl i64 %3, 3 + %.idx58 = shl i64 %3, 4 %.idx.mask = and i64 %3, 2305843009213693951 - %.not58 = icmp eq i64 %.idx.mask, 0 - br label %11 + %11 = icmp ne i64 %.idx.mask, 0 + %12 = icmp ne i64 %.idx, %.idx58 + %or.cond26.i = and i1 %11, %12 + br label %13 -11: ; preds = %.lr.ph, %_ZSt12__move_mergeIN5QListIP15QTreeWidgetItemE8iteratorEPS2_N9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS1_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit +13: ; preds = %.lr.ph, %_ZSt12__move_mergeIN5QListIP15QTreeWidgetItemE8iteratorEPS2_N9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS1_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit %.068 = phi ptr [ %2, %.lr.ph ], [ %.0.lcssa.i.i.i.i.i13.i, %_ZSt12__move_mergeIN5QListIP15QTreeWidgetItemE8iteratorEPS2_N9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS1_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit ] - %.sroa.052.067 = phi ptr [ %0, %.lr.ph ], [ %13, %_ZSt12__move_mergeIN5QListIP15QTreeWidgetItemE8iteratorEPS2_N9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS1_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit ] - %12 = getelementptr ptr, ptr %.sroa.052.067, i64 %3 - %13 = getelementptr ptr, ptr %.sroa.052.067, i64 %6 - br i1 %.not58, label %.critedge.i, label %.lr.ph.i - -.lr.ph.i: ; preds = %11, %.lr.ph.i - %.029.i = phi ptr [ %17, %.lr.ph.i ], [ %.068, %11 ] - %.sroa.022.028.i = phi ptr [ %.sroa.022.1.i, %.lr.ph.i ], [ %.sroa.052.067, %11 ] - %.sroa.019.027.i = phi ptr [ %.sroa.019.1.i, %.lr.ph.i ], [ %12, %11 ] - %14 = load ptr, ptr %.sroa.019.027.i, align 8 - %15 = load ptr, ptr %.sroa.022.028.i, align 8 - %16 = tail call noundef zeroext i1 %4(ptr noundef %14, ptr noundef %15) - %.sink.in.i = select i1 %16, ptr %.sroa.019.027.i, ptr %.sroa.022.028.i - %.sroa.019.1.idx.i = select i1 %16, i64 8, i64 0 + %.sroa.052.067 = phi ptr [ %0, %.lr.ph ], [ %15, %_ZSt12__move_mergeIN5QListIP15QTreeWidgetItemE8iteratorEPS2_N9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS1_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit ] + %14 = getelementptr i8, ptr %.sroa.052.067, i64 %.idx + %15 = getelementptr i8, ptr %.sroa.052.067, i64 %.idx58 + br i1 %or.cond26.i, label %.lr.ph.i, label %.critedge.i + +.lr.ph.i: ; preds = %13, %.lr.ph.i + %.029.i = phi ptr [ %19, %.lr.ph.i ], [ %.068, %13 ] + %.sroa.022.028.i = phi ptr [ %.sroa.022.1.i, %.lr.ph.i ], [ %.sroa.052.067, %13 ] + %.sroa.019.027.i = phi ptr [ %.sroa.019.1.i, %.lr.ph.i ], [ %14, %13 ] + %16 = load ptr, ptr %.sroa.019.027.i, align 8 + %17 = load ptr, ptr %.sroa.022.028.i, align 8 + %18 = tail call noundef zeroext i1 %4(ptr noundef %16, ptr noundef %17) + %.sink.in.i = select i1 %18, ptr %.sroa.019.027.i, ptr %.sroa.022.028.i + %.sroa.019.1.idx.i = select i1 %18, i64 8, i64 0 %.sroa.019.1.i = getelementptr i8, ptr %.sroa.019.027.i, i64 %.sroa.019.1.idx.i - %.sroa.022.1.idx.i = select i1 %16, i64 0, i64 8 + %.sroa.022.1.idx.i = select i1 %18, i64 0, i64 8 %.sroa.022.1.i = getelementptr i8, ptr %.sroa.022.028.i, i64 %.sroa.022.1.idx.i %.sink.i = load ptr, ptr %.sink.in.i, align 8 store ptr %.sink.i, ptr %.029.i, align 8 - %17 = getelementptr i8, ptr %.029.i, i64 8 - %18 = icmp ne ptr %.sroa.022.1.i, %12 - %19 = icmp ne ptr %.sroa.019.1.i, %13 - %or.cond.i = and i1 %18, %19 + %19 = getelementptr i8, ptr %.029.i, i64 8 + %20 = icmp ne ptr %.sroa.022.1.i, %14 + %21 = icmp ne ptr %.sroa.019.1.i, %15 + %or.cond.i = and i1 %20, %21 br i1 %or.cond.i, label %.lr.ph.i, label %.critedge.i, !llvm.loop !98 -.critedge.i: ; preds = %.lr.ph.i, %11 - %.sroa.019.0.lcssa.i = phi ptr [ %12, %11 ], [ %.sroa.019.1.i, %.lr.ph.i ] - %.sroa.022.0.lcssa.i = phi ptr [ %.sroa.052.067, %11 ], [ %.sroa.022.1.i, %.lr.ph.i ] - %.0.lcssa.i = phi ptr [ %.068, %11 ], [ %17, %.lr.ph.i ] - %20 = ptrtoint ptr %12 to i64 - %21 = ptrtoint ptr %.sroa.022.0.lcssa.i to i64 - %22 = sub i64 %20, %21 - %23 = ashr exact i64 %22, 3 - %24 = icmp sgt i64 %23, 0 - br i1 %24, label %.lr.ph.i.i.i.i.i.i, label %_ZSt4moveIN5QListIP15QTreeWidgetItemE8iteratorEPS2_ET0_T_S7_S6_.exit.i +.critedge.i: ; preds = %.lr.ph.i, %13 + %.sroa.019.0.lcssa.i = phi ptr [ %14, %13 ], [ %.sroa.019.1.i, %.lr.ph.i ] + %.sroa.022.0.lcssa.i = phi ptr [ %.sroa.052.067, %13 ], [ %.sroa.022.1.i, %.lr.ph.i ] + %.0.lcssa.i = phi ptr [ %.068, %13 ], [ %19, %.lr.ph.i ] + %22 = ptrtoint ptr %14 to i64 + %23 = ptrtoint ptr %.sroa.022.0.lcssa.i to i64 + %24 = sub i64 %22, %23 + %25 = ashr exact i64 %24, 3 + %26 = icmp sgt i64 %25, 0 + br i1 %26, label %.lr.ph.i.i.i.i.i.i, label %_ZSt4moveIN5QListIP15QTreeWidgetItemE8iteratorEPS2_ET0_T_S7_S6_.exit.i .lr.ph.i.i.i.i.i.i: ; preds = %.critedge.i, %.lr.ph.i.i.i.i.i.i - %.09.i.i.i.i.i.i = phi ptr [ %27, %.lr.ph.i.i.i.i.i.i ], [ %.0.lcssa.i, %.critedge.i ] - %.048.i.i.i.i.i.i = phi i64 [ %28, %.lr.ph.i.i.i.i.i.i ], [ %23, %.critedge.i ] - %.sroa.05.07.i.i.i.i.i.i = phi ptr [ %26, %.lr.ph.i.i.i.i.i.i ], [ %.sroa.022.0.lcssa.i, %.critedge.i ] - %25 = load ptr, ptr %.sroa.05.07.i.i.i.i.i.i, align 8 - store ptr %25, ptr %.09.i.i.i.i.i.i, align 8 - %26 = getelementptr i8, ptr %.sroa.05.07.i.i.i.i.i.i, i64 8 - %27 = getelementptr i8, ptr %.09.i.i.i.i.i.i, i64 8 - %28 = add nsw i64 %.048.i.i.i.i.i.i, -1 - %29 = icmp samesign ugt i64 %.048.i.i.i.i.i.i, 1 - br i1 %29, label %.lr.ph.i.i.i.i.i.i, label %_ZSt4moveIN5QListIP15QTreeWidgetItemE8iteratorEPS2_ET0_T_S7_S6_.exit.i, !llvm.loop !92 + %.09.i.i.i.i.i.i = phi ptr [ %29, %.lr.ph.i.i.i.i.i.i ], [ %.0.lcssa.i, %.critedge.i ] + %.048.i.i.i.i.i.i = phi i64 [ %30, %.lr.ph.i.i.i.i.i.i ], [ %25, %.critedge.i ] + %.sroa.05.07.i.i.i.i.i.i = phi ptr [ %28, %.lr.ph.i.i.i.i.i.i ], [ %.sroa.022.0.lcssa.i, %.critedge.i ] + %27 = load ptr, ptr %.sroa.05.07.i.i.i.i.i.i, align 8 + store ptr %27, ptr %.09.i.i.i.i.i.i, align 8 + %28 = getelementptr i8, ptr %.sroa.05.07.i.i.i.i.i.i, i64 8 + %29 = getelementptr i8, ptr %.09.i.i.i.i.i.i, i64 8 + %30 = add nsw i64 %.048.i.i.i.i.i.i, -1 + %31 = icmp samesign ugt i64 %.048.i.i.i.i.i.i, 1 + br i1 %31, label %.lr.ph.i.i.i.i.i.i, label %_ZSt4moveIN5QListIP15QTreeWidgetItemE8iteratorEPS2_ET0_T_S7_S6_.exit.i, !llvm.loop !92 _ZSt4moveIN5QListIP15QTreeWidgetItemE8iteratorEPS2_ET0_T_S7_S6_.exit.i: ; preds = %.lr.ph.i.i.i.i.i.i, %.critedge.i - %.0.lcssa.i.i.i.i.i.i = phi ptr [ %.0.lcssa.i, %.critedge.i ], [ %27, %.lr.ph.i.i.i.i.i.i ] - %30 = ptrtoint ptr %13 to i64 - %31 = ptrtoint ptr %.sroa.019.0.lcssa.i to i64 - %32 = sub i64 %30, %31 - %33 = ashr exact i64 %32, 3 - %34 = icmp sgt i64 %33, 0 - br i1 %34, label %.lr.ph.i.i.i.i.i14.i, label %_ZSt12__move_mergeIN5QListIP15QTreeWidgetItemE8iteratorEPS2_N9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS1_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit + %.0.lcssa.i.i.i.i.i.i = phi ptr [ %.0.lcssa.i, %.critedge.i ], [ %29, %.lr.ph.i.i.i.i.i.i ] + %32 = ptrtoint ptr %15 to i64 + %33 = ptrtoint ptr %.sroa.019.0.lcssa.i to i64 + %34 = sub i64 %32, %33 + %35 = ashr exact i64 %34, 3 + %36 = icmp sgt i64 %35, 0 + br i1 %36, label %.lr.ph.i.i.i.i.i14.i, label %_ZSt12__move_mergeIN5QListIP15QTreeWidgetItemE8iteratorEPS2_N9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS1_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit .lr.ph.i.i.i.i.i14.i: ; preds = %_ZSt4moveIN5QListIP15QTreeWidgetItemE8iteratorEPS2_ET0_T_S7_S6_.exit.i, %.lr.ph.i.i.i.i.i14.i - %.09.i.i.i.i.i15.i = phi ptr [ %37, %.lr.ph.i.i.i.i.i14.i ], [ %.0.lcssa.i.i.i.i.i.i, %_ZSt4moveIN5QListIP15QTreeWidgetItemE8iteratorEPS2_ET0_T_S7_S6_.exit.i ] - %.048.i.i.i.i.i16.i = phi i64 [ %38, %.lr.ph.i.i.i.i.i14.i ], [ %33, %_ZSt4moveIN5QListIP15QTreeWidgetItemE8iteratorEPS2_ET0_T_S7_S6_.exit.i ] - %.sroa.05.07.i.i.i.i.i17.i = phi ptr [ %36, %.lr.ph.i.i.i.i.i14.i ], [ %.sroa.019.0.lcssa.i, %_ZSt4moveIN5QListIP15QTreeWidgetItemE8iteratorEPS2_ET0_T_S7_S6_.exit.i ] - %35 = load ptr, ptr %.sroa.05.07.i.i.i.i.i17.i, align 8 - store ptr %35, ptr %.09.i.i.i.i.i15.i, align 8 - %36 = getelementptr i8, ptr %.sroa.05.07.i.i.i.i.i17.i, i64 8 - %37 = getelementptr i8, ptr %.09.i.i.i.i.i15.i, i64 8 - %38 = add nsw i64 %.048.i.i.i.i.i16.i, -1 - %39 = icmp samesign ugt i64 %.048.i.i.i.i.i16.i, 1 - br i1 %39, label %.lr.ph.i.i.i.i.i14.i, label %_ZSt12__move_mergeIN5QListIP15QTreeWidgetItemE8iteratorEPS2_N9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS1_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit, !llvm.loop !92 + %.09.i.i.i.i.i15.i = phi ptr [ %39, %.lr.ph.i.i.i.i.i14.i ], [ %.0.lcssa.i.i.i.i.i.i, %_ZSt4moveIN5QListIP15QTreeWidgetItemE8iteratorEPS2_ET0_T_S7_S6_.exit.i ] + %.048.i.i.i.i.i16.i = phi i64 [ %40, %.lr.ph.i.i.i.i.i14.i ], [ %35, %_ZSt4moveIN5QListIP15QTreeWidgetItemE8iteratorEPS2_ET0_T_S7_S6_.exit.i ] + %.sroa.05.07.i.i.i.i.i17.i = phi ptr [ %38, %.lr.ph.i.i.i.i.i14.i ], [ %.sroa.019.0.lcssa.i, %_ZSt4moveIN5QListIP15QTreeWidgetItemE8iteratorEPS2_ET0_T_S7_S6_.exit.i ] + %37 = load ptr, ptr %.sroa.05.07.i.i.i.i.i17.i, align 8 + store ptr %37, ptr %.09.i.i.i.i.i15.i, align 8 + %38 = getelementptr i8, ptr %.sroa.05.07.i.i.i.i.i17.i, i64 8 + %39 = getelementptr i8, ptr %.09.i.i.i.i.i15.i, i64 8 + %40 = add nsw i64 %.048.i.i.i.i.i16.i, -1 + %41 = icmp samesign ugt i64 %.048.i.i.i.i.i16.i, 1 + br i1 %41, label %.lr.ph.i.i.i.i.i14.i, label %_ZSt12__move_mergeIN5QListIP15QTreeWidgetItemE8iteratorEPS2_N9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS1_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit, !llvm.loop !92 _ZSt12__move_mergeIN5QListIP15QTreeWidgetItemE8iteratorEPS2_N9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS1_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit: ; preds = %.lr.ph.i.i.i.i.i14.i, %_ZSt4moveIN5QListIP15QTreeWidgetItemE8iteratorEPS2_ET0_T_S7_S6_.exit.i - %.0.lcssa.i.i.i.i.i13.i = phi ptr [ %.0.lcssa.i.i.i.i.i.i, %_ZSt4moveIN5QListIP15QTreeWidgetItemE8iteratorEPS2_ET0_T_S7_S6_.exit.i ], [ %37, %.lr.ph.i.i.i.i.i14.i ] - %40 = sub i64 %7, %30 - %41 = ashr exact i64 %40, 3 - %.not = icmp slt i64 %41, %6 - br i1 %.not, label %._crit_edge, label %11, !llvm.loop !99 + %.0.lcssa.i.i.i.i.i13.i = phi ptr [ %.0.lcssa.i.i.i.i.i.i, %_ZSt4moveIN5QListIP15QTreeWidgetItemE8iteratorEPS2_ET0_T_S7_S6_.exit.i ], [ %39, %.lr.ph.i.i.i.i.i14.i ] + %42 = sub i64 %7, %32 + %43 = ashr exact i64 %42, 3 + %.not = icmp slt i64 %43, %6 + br i1 %.not, label %._crit_edge, label %13, !llvm.loop !99 ._crit_edge: ; preds = %_ZSt12__move_mergeIN5QListIP15QTreeWidgetItemE8iteratorEPS2_N9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS1_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit, %5 - %.sroa.052.0.lcssa = phi ptr [ %0, %5 ], [ %13, %_ZSt12__move_mergeIN5QListIP15QTreeWidgetItemE8iteratorEPS2_N9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS1_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit ] + %.sroa.052.0.lcssa = phi ptr [ %0, %5 ], [ %15, %_ZSt12__move_mergeIN5QListIP15QTreeWidgetItemE8iteratorEPS2_N9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS1_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit ] %.0.lcssa = phi ptr [ %2, %5 ], [ %.0.lcssa.i.i.i.i.i13.i, %_ZSt12__move_mergeIN5QListIP15QTreeWidgetItemE8iteratorEPS2_N9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS1_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit ] - %.lcssa64 = phi i64 [ %10, %5 ], [ %41, %_ZSt12__move_mergeIN5QListIP15QTreeWidgetItemE8iteratorEPS2_N9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS1_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit ] + %.lcssa64 = phi i64 [ %10, %5 ], [ %43, %_ZSt12__move_mergeIN5QListIP15QTreeWidgetItemE8iteratorEPS2_N9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS1_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit ] %.sroa.speculated = tail call i64 @llvm.smin.i64(i64 %3, i64 %.lcssa64) - %42 = getelementptr ptr, ptr %.sroa.052.0.lcssa, i64 %.sroa.speculated - %.idx.mask59 = and i64 %.sroa.speculated, 2305843009213693951 - %43 = icmp ne i64 %.idx.mask59, 0 - %44 = icmp ne ptr %42, %1 - %or.cond26.i17 = and i1 %43, %44 + %44 = getelementptr ptr, ptr %.sroa.052.0.lcssa, i64 %.sroa.speculated + %.idx59.mask = and i64 %.sroa.speculated, 2305843009213693951 + %45 = icmp ne i64 %.idx59.mask, 0 + %46 = icmp ne ptr %44, %1 + %or.cond26.i17 = and i1 %45, %46 br i1 %or.cond26.i17, label %.lr.ph.i33, label %.critedge.i18 .lr.ph.i33: ; preds = %._crit_edge, %.lr.ph.i33 - %.029.i34 = phi ptr [ %48, %.lr.ph.i33 ], [ %.0.lcssa, %._crit_edge ] + %.029.i34 = phi ptr [ %50, %.lr.ph.i33 ], [ %.0.lcssa, %._crit_edge ] %.sroa.022.028.i35 = phi ptr [ %.sroa.022.1.i41, %.lr.ph.i33 ], [ %.sroa.052.0.lcssa, %._crit_edge ] - %.sroa.019.027.i36 = phi ptr [ %.sroa.019.1.i39, %.lr.ph.i33 ], [ %42, %._crit_edge ] - %45 = load ptr, ptr %.sroa.019.027.i36, align 8 - %46 = load ptr, ptr %.sroa.022.028.i35, align 8 - %47 = tail call noundef zeroext i1 %4(ptr noundef %45, ptr noundef %46) - %.sink.in.i37 = select i1 %47, ptr %.sroa.019.027.i36, ptr %.sroa.022.028.i35 - %.sroa.019.1.idx.i38 = select i1 %47, i64 8, i64 0 + %.sroa.019.027.i36 = phi ptr [ %.sroa.019.1.i39, %.lr.ph.i33 ], [ %44, %._crit_edge ] + %47 = load ptr, ptr %.sroa.019.027.i36, align 8 + %48 = load ptr, ptr %.sroa.022.028.i35, align 8 + %49 = tail call noundef zeroext i1 %4(ptr noundef %47, ptr noundef %48) + %.sink.in.i37 = select i1 %49, ptr %.sroa.019.027.i36, ptr %.sroa.022.028.i35 + %.sroa.019.1.idx.i38 = select i1 %49, i64 8, i64 0 %.sroa.019.1.i39 = getelementptr i8, ptr %.sroa.019.027.i36, i64 %.sroa.019.1.idx.i38 - %.sroa.022.1.idx.i40 = select i1 %47, i64 0, i64 8 + %.sroa.022.1.idx.i40 = select i1 %49, i64 0, i64 8 %.sroa.022.1.i41 = getelementptr i8, ptr %.sroa.022.028.i35, i64 %.sroa.022.1.idx.i40 %.sink.i42 = load ptr, ptr %.sink.in.i37, align 8 store ptr %.sink.i42, ptr %.029.i34, align 8 - %48 = getelementptr i8, ptr %.029.i34, i64 8 - %49 = icmp ne ptr %.sroa.022.1.i41, %42 - %50 = icmp ne ptr %.sroa.019.1.i39, %1 - %or.cond.i43 = and i1 %49, %50 + %50 = getelementptr i8, ptr %.029.i34, i64 8 + %51 = icmp ne ptr %.sroa.022.1.i41, %44 + %52 = icmp ne ptr %.sroa.019.1.i39, %1 + %or.cond.i43 = and i1 %51, %52 br i1 %or.cond.i43, label %.lr.ph.i33, label %.critedge.i18, !llvm.loop !98 .critedge.i18: ; preds = %.lr.ph.i33, %._crit_edge - %.sroa.019.0.lcssa.i19 = phi ptr [ %42, %._crit_edge ], [ %.sroa.019.1.i39, %.lr.ph.i33 ] + %.sroa.019.0.lcssa.i19 = phi ptr [ %44, %._crit_edge ], [ %.sroa.019.1.i39, %.lr.ph.i33 ] %.sroa.022.0.lcssa.i20 = phi ptr [ %.sroa.052.0.lcssa, %._crit_edge ], [ %.sroa.022.1.i41, %.lr.ph.i33 ] - %.0.lcssa.i21 = phi ptr [ %.0.lcssa, %._crit_edge ], [ %48, %.lr.ph.i33 ] - %51 = ptrtoint ptr %42 to i64 - %52 = ptrtoint ptr %.sroa.022.0.lcssa.i20 to i64 - %53 = sub i64 %51, %52 - %54 = ashr exact i64 %53, 3 - %55 = icmp sgt i64 %54, 0 - br i1 %55, label %.lr.ph.i.i.i.i.i.i29, label %_ZSt4moveIN5QListIP15QTreeWidgetItemE8iteratorEPS2_ET0_T_S7_S6_.exit.i22 + %.0.lcssa.i21 = phi ptr [ %.0.lcssa, %._crit_edge ], [ %50, %.lr.ph.i33 ] + %53 = ptrtoint ptr %44 to i64 + %54 = ptrtoint ptr %.sroa.022.0.lcssa.i20 to i64 + %55 = sub i64 %53, %54 + %56 = ashr exact i64 %55, 3 + %57 = icmp sgt i64 %56, 0 + br i1 %57, label %.lr.ph.i.i.i.i.i.i29, label %_ZSt4moveIN5QListIP15QTreeWidgetItemE8iteratorEPS2_ET0_T_S7_S6_.exit.i22 .lr.ph.i.i.i.i.i.i29: ; preds = %.critedge.i18, %.lr.ph.i.i.i.i.i.i29 - %.09.i.i.i.i.i.i30 = phi ptr [ %58, %.lr.ph.i.i.i.i.i.i29 ], [ %.0.lcssa.i21, %.critedge.i18 ] - %.048.i.i.i.i.i.i31 = phi i64 [ %59, %.lr.ph.i.i.i.i.i.i29 ], [ %54, %.critedge.i18 ] - %.sroa.05.07.i.i.i.i.i.i32 = phi ptr [ %57, %.lr.ph.i.i.i.i.i.i29 ], [ %.sroa.022.0.lcssa.i20, %.critedge.i18 ] - %56 = load ptr, ptr %.sroa.05.07.i.i.i.i.i.i32, align 8 - store ptr %56, ptr %.09.i.i.i.i.i.i30, align 8 - %57 = getelementptr i8, ptr %.sroa.05.07.i.i.i.i.i.i32, i64 8 - %58 = getelementptr i8, ptr %.09.i.i.i.i.i.i30, i64 8 - %59 = add nsw i64 %.048.i.i.i.i.i.i31, -1 - %60 = icmp samesign ugt i64 %.048.i.i.i.i.i.i31, 1 - br i1 %60, label %.lr.ph.i.i.i.i.i.i29, label %_ZSt4moveIN5QListIP15QTreeWidgetItemE8iteratorEPS2_ET0_T_S7_S6_.exit.i22, !llvm.loop !92 + %.09.i.i.i.i.i.i30 = phi ptr [ %60, %.lr.ph.i.i.i.i.i.i29 ], [ %.0.lcssa.i21, %.critedge.i18 ] + %.048.i.i.i.i.i.i31 = phi i64 [ %61, %.lr.ph.i.i.i.i.i.i29 ], [ %56, %.critedge.i18 ] + %.sroa.05.07.i.i.i.i.i.i32 = phi ptr [ %59, %.lr.ph.i.i.i.i.i.i29 ], [ %.sroa.022.0.lcssa.i20, %.critedge.i18 ] + %58 = load ptr, ptr %.sroa.05.07.i.i.i.i.i.i32, align 8 + store ptr %58, ptr %.09.i.i.i.i.i.i30, align 8 + %59 = getelementptr i8, ptr %.sroa.05.07.i.i.i.i.i.i32, i64 8 + %60 = getelementptr i8, ptr %.09.i.i.i.i.i.i30, i64 8 + %61 = add nsw i64 %.048.i.i.i.i.i.i31, -1 + %62 = icmp samesign ugt i64 %.048.i.i.i.i.i.i31, 1 + br i1 %62, label %.lr.ph.i.i.i.i.i.i29, label %_ZSt4moveIN5QListIP15QTreeWidgetItemE8iteratorEPS2_ET0_T_S7_S6_.exit.i22, !llvm.loop !92 _ZSt4moveIN5QListIP15QTreeWidgetItemE8iteratorEPS2_ET0_T_S7_S6_.exit.i22: ; preds = %.lr.ph.i.i.i.i.i.i29, %.critedge.i18 - %.0.lcssa.i.i.i.i.i.i23 = phi ptr [ %.0.lcssa.i21, %.critedge.i18 ], [ %58, %.lr.ph.i.i.i.i.i.i29 ] - %61 = ptrtoint ptr %.sroa.019.0.lcssa.i19 to i64 - %62 = sub i64 %7, %61 - %63 = ashr exact i64 %62, 3 - %64 = icmp sgt i64 %63, 0 - br i1 %64, label %.lr.ph.i.i.i.i.i14.i25, label %_ZSt12__move_mergeIN5QListIP15QTreeWidgetItemE8iteratorEPS2_N9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS1_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit44 + %.0.lcssa.i.i.i.i.i.i23 = phi ptr [ %.0.lcssa.i21, %.critedge.i18 ], [ %60, %.lr.ph.i.i.i.i.i.i29 ] + %63 = ptrtoint ptr %.sroa.019.0.lcssa.i19 to i64 + %64 = sub i64 %7, %63 + %65 = ashr exact i64 %64, 3 + %66 = icmp sgt i64 %65, 0 + br i1 %66, label %.lr.ph.i.i.i.i.i14.i25, label %_ZSt12__move_mergeIN5QListIP15QTreeWidgetItemE8iteratorEPS2_N9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS1_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit44 .lr.ph.i.i.i.i.i14.i25: ; preds = %_ZSt4moveIN5QListIP15QTreeWidgetItemE8iteratorEPS2_ET0_T_S7_S6_.exit.i22, %.lr.ph.i.i.i.i.i14.i25 - %.09.i.i.i.i.i15.i26 = phi ptr [ %67, %.lr.ph.i.i.i.i.i14.i25 ], [ %.0.lcssa.i.i.i.i.i.i23, %_ZSt4moveIN5QListIP15QTreeWidgetItemE8iteratorEPS2_ET0_T_S7_S6_.exit.i22 ] - %.048.i.i.i.i.i16.i27 = phi i64 [ %68, %.lr.ph.i.i.i.i.i14.i25 ], [ %63, %_ZSt4moveIN5QListIP15QTreeWidgetItemE8iteratorEPS2_ET0_T_S7_S6_.exit.i22 ] - %.sroa.05.07.i.i.i.i.i17.i28 = phi ptr [ %66, %.lr.ph.i.i.i.i.i14.i25 ], [ %.sroa.019.0.lcssa.i19, %_ZSt4moveIN5QListIP15QTreeWidgetItemE8iteratorEPS2_ET0_T_S7_S6_.exit.i22 ] - %65 = load ptr, ptr %.sroa.05.07.i.i.i.i.i17.i28, align 8 - store ptr %65, ptr %.09.i.i.i.i.i15.i26, align 8 - %66 = getelementptr i8, ptr %.sroa.05.07.i.i.i.i.i17.i28, i64 8 - %67 = getelementptr i8, ptr %.09.i.i.i.i.i15.i26, i64 8 - %68 = add nsw i64 %.048.i.i.i.i.i16.i27, -1 - %69 = icmp samesign ugt i64 %.048.i.i.i.i.i16.i27, 1 - br i1 %69, label %.lr.ph.i.i.i.i.i14.i25, label %_ZSt12__move_mergeIN5QListIP15QTreeWidgetItemE8iteratorEPS2_N9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS1_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit44, !llvm.loop !92 + %.09.i.i.i.i.i15.i26 = phi ptr [ %69, %.lr.ph.i.i.i.i.i14.i25 ], [ %.0.lcssa.i.i.i.i.i.i23, %_ZSt4moveIN5QListIP15QTreeWidgetItemE8iteratorEPS2_ET0_T_S7_S6_.exit.i22 ] + %.048.i.i.i.i.i16.i27 = phi i64 [ %70, %.lr.ph.i.i.i.i.i14.i25 ], [ %65, %_ZSt4moveIN5QListIP15QTreeWidgetItemE8iteratorEPS2_ET0_T_S7_S6_.exit.i22 ] + %.sroa.05.07.i.i.i.i.i17.i28 = phi ptr [ %68, %.lr.ph.i.i.i.i.i14.i25 ], [ %.sroa.019.0.lcssa.i19, %_ZSt4moveIN5QListIP15QTreeWidgetItemE8iteratorEPS2_ET0_T_S7_S6_.exit.i22 ] + %67 = load ptr, ptr %.sroa.05.07.i.i.i.i.i17.i28, align 8 + store ptr %67, ptr %.09.i.i.i.i.i15.i26, align 8 + %68 = getelementptr i8, ptr %.sroa.05.07.i.i.i.i.i17.i28, i64 8 + %69 = getelementptr i8, ptr %.09.i.i.i.i.i15.i26, i64 8 + %70 = add nsw i64 %.048.i.i.i.i.i16.i27, -1 + %71 = icmp samesign ugt i64 %.048.i.i.i.i.i16.i27, 1 + br i1 %71, label %.lr.ph.i.i.i.i.i14.i25, label %_ZSt12__move_mergeIN5QListIP15QTreeWidgetItemE8iteratorEPS2_N9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS1_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit44, !llvm.loop !92 _ZSt12__move_mergeIN5QListIP15QTreeWidgetItemE8iteratorEPS2_N9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS1_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit44: ; preds = %.lr.ph.i.i.i.i.i14.i25, %_ZSt4moveIN5QListIP15QTreeWidgetItemE8iteratorEPS2_ET0_T_S7_S6_.exit.i22 ret void @@ -13381,162 +13385,166 @@ define linkonce_odr void @_ZSt17__merge_sort_loopIPP15QTreeWidgetItemN5QListIS1_ br i1 %.not62, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %5 + %.idx = shl i64 %3, 3 + %.idx54 = shl i64 %3, 4 %.idx.mask = and i64 %3, 2305843009213693951 - %.not54 = icmp eq i64 %.idx.mask, 0 - br label %11 + %11 = icmp ne i64 %.idx.mask, 0 + %12 = icmp ne i64 %.idx, %.idx54 + %13 = and i1 %11, %12 + br label %14 -11: ; preds = %.lr.ph, %_ZSt12__move_mergeIPP15QTreeWidgetItemN5QListIS1_E8iteratorEN9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS0_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit +14: ; preds = %.lr.ph, %_ZSt12__move_mergeIPP15QTreeWidgetItemN5QListIS1_E8iteratorEN9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS0_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit %.sroa.021.064 = phi ptr [ %2, %.lr.ph ], [ %.sroa.0.0.lcssa.i.i.i.i.i18.i, %_ZSt12__move_mergeIPP15QTreeWidgetItemN5QListIS1_E8iteratorEN9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS0_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit ] - %.063 = phi ptr [ %0, %.lr.ph ], [ %13, %_ZSt12__move_mergeIPP15QTreeWidgetItemN5QListIS1_E8iteratorEN9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS0_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit ] - %12 = getelementptr ptr, ptr %.063, i64 %3 - %13 = getelementptr ptr, ptr %.063, i64 %6 - br i1 %.not54, label %._crit_edge.i, label %.lr.ph.i - -.lr.ph.i: ; preds = %11, %.lr.ph.i - %.030.i = phi ptr [ %.1.i, %.lr.ph.i ], [ %.063, %11 ] - %.01629.i = phi ptr [ %.117.i, %.lr.ph.i ], [ %12, %11 ] - %.sroa.024.028.i = phi ptr [ %17, %.lr.ph.i ], [ %.sroa.021.064, %11 ] - %14 = load ptr, ptr %.01629.i, align 8 - %15 = load ptr, ptr %.030.i, align 8 - %16 = tail call noundef zeroext i1 %4(ptr noundef %14, ptr noundef %15) - %.sink.in.i = select i1 %16, ptr %.01629.i, ptr %.030.i - %.117.idx.i = select i1 %16, i64 8, i64 0 + %.063 = phi ptr [ %0, %.lr.ph ], [ %16, %_ZSt12__move_mergeIPP15QTreeWidgetItemN5QListIS1_E8iteratorEN9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS0_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit ] + %15 = getelementptr i8, ptr %.063, i64 %.idx + %16 = getelementptr i8, ptr %.063, i64 %.idx54 + br i1 %13, label %.lr.ph.i, label %._crit_edge.i + +.lr.ph.i: ; preds = %14, %.lr.ph.i + %.030.i = phi ptr [ %.1.i, %.lr.ph.i ], [ %.063, %14 ] + %.01629.i = phi ptr [ %.117.i, %.lr.ph.i ], [ %15, %14 ] + %.sroa.024.028.i = phi ptr [ %20, %.lr.ph.i ], [ %.sroa.021.064, %14 ] + %17 = load ptr, ptr %.01629.i, align 8 + %18 = load ptr, ptr %.030.i, align 8 + %19 = tail call noundef zeroext i1 %4(ptr noundef %17, ptr noundef %18) + %.sink.in.i = select i1 %19, ptr %.01629.i, ptr %.030.i + %.117.idx.i = select i1 %19, i64 8, i64 0 %.117.i = getelementptr i8, ptr %.01629.i, i64 %.117.idx.i - %.1.idx.i = select i1 %16, i64 0, i64 8 + %.1.idx.i = select i1 %19, i64 0, i64 8 %.1.i = getelementptr i8, ptr %.030.i, i64 %.1.idx.i %.sink.i = load ptr, ptr %.sink.in.i, align 8 store ptr %.sink.i, ptr %.sroa.024.028.i, align 8 - %17 = getelementptr i8, ptr %.sroa.024.028.i, i64 8 - %18 = icmp ne ptr %.1.i, %12 - %19 = icmp ne ptr %.117.i, %13 - %20 = and i1 %18, %19 - br i1 %20, label %.lr.ph.i, label %._crit_edge.i, !llvm.loop !100 - -._crit_edge.i: ; preds = %.lr.ph.i, %11 - %.sroa.024.0.lcssa.i = phi ptr [ %.sroa.021.064, %11 ], [ %17, %.lr.ph.i ] - %.016.lcssa.i = phi ptr [ %12, %11 ], [ %.117.i, %.lr.ph.i ] - %.0.lcssa.i = phi ptr [ %.063, %11 ], [ %.1.i, %.lr.ph.i ] - %21 = ptrtoint ptr %12 to i64 - %22 = ptrtoint ptr %.0.lcssa.i to i64 - %23 = sub i64 %21, %22 - %24 = ashr exact i64 %23, 3 - %25 = icmp sgt i64 %24, 0 - br i1 %25, label %.lr.ph.i.i.i.i.i.i, label %_ZSt4moveIPP15QTreeWidgetItemN5QListIS1_E8iteratorEET0_T_S7_S6_.exit.i + %20 = getelementptr i8, ptr %.sroa.024.028.i, i64 8 + %21 = icmp ne ptr %.1.i, %15 + %22 = icmp ne ptr %.117.i, %16 + %23 = and i1 %21, %22 + br i1 %23, label %.lr.ph.i, label %._crit_edge.i, !llvm.loop !100 + +._crit_edge.i: ; preds = %.lr.ph.i, %14 + %.sroa.024.0.lcssa.i = phi ptr [ %.sroa.021.064, %14 ], [ %20, %.lr.ph.i ] + %.016.lcssa.i = phi ptr [ %15, %14 ], [ %.117.i, %.lr.ph.i ] + %.0.lcssa.i = phi ptr [ %.063, %14 ], [ %.1.i, %.lr.ph.i ] + %24 = ptrtoint ptr %15 to i64 + %25 = ptrtoint ptr %.0.lcssa.i to i64 + %26 = sub i64 %24, %25 + %27 = ashr exact i64 %26, 3 + %28 = icmp sgt i64 %27, 0 + br i1 %28, label %.lr.ph.i.i.i.i.i.i, label %_ZSt4moveIPP15QTreeWidgetItemN5QListIS1_E8iteratorEET0_T_S7_S6_.exit.i .lr.ph.i.i.i.i.i.i: ; preds = %._crit_edge.i, %.lr.ph.i.i.i.i.i.i - %.09.i.i.i.i.i.i = phi i64 [ %29, %.lr.ph.i.i.i.i.i.i ], [ %24, %._crit_edge.i ] - %.058.i.i.i.i.i.i = phi ptr [ %27, %.lr.ph.i.i.i.i.i.i ], [ %.0.lcssa.i, %._crit_edge.i ] - %.sroa.0.07.i.i.i.i.i.i = phi ptr [ %28, %.lr.ph.i.i.i.i.i.i ], [ %.sroa.024.0.lcssa.i, %._crit_edge.i ] - %26 = load ptr, ptr %.058.i.i.i.i.i.i, align 8 - store ptr %26, ptr %.sroa.0.07.i.i.i.i.i.i, align 8 - %27 = getelementptr i8, ptr %.058.i.i.i.i.i.i, i64 8 - %28 = getelementptr i8, ptr %.sroa.0.07.i.i.i.i.i.i, i64 8 - %29 = add nsw i64 %.09.i.i.i.i.i.i, -1 - %30 = icmp samesign ugt i64 %.09.i.i.i.i.i.i, 1 - br i1 %30, label %.lr.ph.i.i.i.i.i.i, label %_ZSt4moveIPP15QTreeWidgetItemN5QListIS1_E8iteratorEET0_T_S7_S6_.exit.i, !llvm.loop !94 + %.09.i.i.i.i.i.i = phi i64 [ %32, %.lr.ph.i.i.i.i.i.i ], [ %27, %._crit_edge.i ] + %.058.i.i.i.i.i.i = phi ptr [ %30, %.lr.ph.i.i.i.i.i.i ], [ %.0.lcssa.i, %._crit_edge.i ] + %.sroa.0.07.i.i.i.i.i.i = phi ptr [ %31, %.lr.ph.i.i.i.i.i.i ], [ %.sroa.024.0.lcssa.i, %._crit_edge.i ] + %29 = load ptr, ptr %.058.i.i.i.i.i.i, align 8 + store ptr %29, ptr %.sroa.0.07.i.i.i.i.i.i, align 8 + %30 = getelementptr i8, ptr %.058.i.i.i.i.i.i, i64 8 + %31 = getelementptr i8, ptr %.sroa.0.07.i.i.i.i.i.i, i64 8 + %32 = add nsw i64 %.09.i.i.i.i.i.i, -1 + %33 = icmp samesign ugt i64 %.09.i.i.i.i.i.i, 1 + br i1 %33, label %.lr.ph.i.i.i.i.i.i, label %_ZSt4moveIPP15QTreeWidgetItemN5QListIS1_E8iteratorEET0_T_S7_S6_.exit.i, !llvm.loop !94 _ZSt4moveIPP15QTreeWidgetItemN5QListIS1_E8iteratorEET0_T_S7_S6_.exit.i: ; preds = %.lr.ph.i.i.i.i.i.i, %._crit_edge.i - %.sroa.0.0.lcssa.i.i.i.i.i.i = phi ptr [ %.sroa.024.0.lcssa.i, %._crit_edge.i ], [ %28, %.lr.ph.i.i.i.i.i.i ] - %31 = ptrtoint ptr %13 to i64 - %32 = ptrtoint ptr %.016.lcssa.i to i64 - %33 = sub i64 %31, %32 - %34 = ashr exact i64 %33, 3 - %35 = icmp sgt i64 %34, 0 - br i1 %35, label %.lr.ph.i.i.i.i.i19.i, label %_ZSt12__move_mergeIPP15QTreeWidgetItemN5QListIS1_E8iteratorEN9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS0_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit + %.sroa.0.0.lcssa.i.i.i.i.i.i = phi ptr [ %.sroa.024.0.lcssa.i, %._crit_edge.i ], [ %31, %.lr.ph.i.i.i.i.i.i ] + %34 = ptrtoint ptr %16 to i64 + %35 = ptrtoint ptr %.016.lcssa.i to i64 + %36 = sub i64 %34, %35 + %37 = ashr exact i64 %36, 3 + %38 = icmp sgt i64 %37, 0 + br i1 %38, label %.lr.ph.i.i.i.i.i19.i, label %_ZSt12__move_mergeIPP15QTreeWidgetItemN5QListIS1_E8iteratorEN9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS0_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit .lr.ph.i.i.i.i.i19.i: ; preds = %_ZSt4moveIPP15QTreeWidgetItemN5QListIS1_E8iteratorEET0_T_S7_S6_.exit.i, %.lr.ph.i.i.i.i.i19.i - %.09.i.i.i.i.i20.i = phi i64 [ %39, %.lr.ph.i.i.i.i.i19.i ], [ %34, %_ZSt4moveIPP15QTreeWidgetItemN5QListIS1_E8iteratorEET0_T_S7_S6_.exit.i ] - %.058.i.i.i.i.i21.i = phi ptr [ %37, %.lr.ph.i.i.i.i.i19.i ], [ %.016.lcssa.i, %_ZSt4moveIPP15QTreeWidgetItemN5QListIS1_E8iteratorEET0_T_S7_S6_.exit.i ] - %.sroa.0.07.i.i.i.i.i22.i = phi ptr [ %38, %.lr.ph.i.i.i.i.i19.i ], [ %.sroa.0.0.lcssa.i.i.i.i.i.i, %_ZSt4moveIPP15QTreeWidgetItemN5QListIS1_E8iteratorEET0_T_S7_S6_.exit.i ] - %36 = load ptr, ptr %.058.i.i.i.i.i21.i, align 8 - store ptr %36, ptr %.sroa.0.07.i.i.i.i.i22.i, align 8 - %37 = getelementptr i8, ptr %.058.i.i.i.i.i21.i, i64 8 - %38 = getelementptr i8, ptr %.sroa.0.07.i.i.i.i.i22.i, i64 8 - %39 = add nsw i64 %.09.i.i.i.i.i20.i, -1 - %40 = icmp samesign ugt i64 %.09.i.i.i.i.i20.i, 1 - br i1 %40, label %.lr.ph.i.i.i.i.i19.i, label %_ZSt12__move_mergeIPP15QTreeWidgetItemN5QListIS1_E8iteratorEN9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS0_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit, !llvm.loop !94 + %.09.i.i.i.i.i20.i = phi i64 [ %42, %.lr.ph.i.i.i.i.i19.i ], [ %37, %_ZSt4moveIPP15QTreeWidgetItemN5QListIS1_E8iteratorEET0_T_S7_S6_.exit.i ] + %.058.i.i.i.i.i21.i = phi ptr [ %40, %.lr.ph.i.i.i.i.i19.i ], [ %.016.lcssa.i, %_ZSt4moveIPP15QTreeWidgetItemN5QListIS1_E8iteratorEET0_T_S7_S6_.exit.i ] + %.sroa.0.07.i.i.i.i.i22.i = phi ptr [ %41, %.lr.ph.i.i.i.i.i19.i ], [ %.sroa.0.0.lcssa.i.i.i.i.i.i, %_ZSt4moveIPP15QTreeWidgetItemN5QListIS1_E8iteratorEET0_T_S7_S6_.exit.i ] + %39 = load ptr, ptr %.058.i.i.i.i.i21.i, align 8 + store ptr %39, ptr %.sroa.0.07.i.i.i.i.i22.i, align 8 + %40 = getelementptr i8, ptr %.058.i.i.i.i.i21.i, i64 8 + %41 = getelementptr i8, ptr %.sroa.0.07.i.i.i.i.i22.i, i64 8 + %42 = add nsw i64 %.09.i.i.i.i.i20.i, -1 + %43 = icmp samesign ugt i64 %.09.i.i.i.i.i20.i, 1 + br i1 %43, label %.lr.ph.i.i.i.i.i19.i, label %_ZSt12__move_mergeIPP15QTreeWidgetItemN5QListIS1_E8iteratorEN9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS0_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit, !llvm.loop !94 _ZSt12__move_mergeIPP15QTreeWidgetItemN5QListIS1_E8iteratorEN9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS0_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit: ; preds = %.lr.ph.i.i.i.i.i19.i, %_ZSt4moveIPP15QTreeWidgetItemN5QListIS1_E8iteratorEET0_T_S7_S6_.exit.i - %.sroa.0.0.lcssa.i.i.i.i.i18.i = phi ptr [ %.sroa.0.0.lcssa.i.i.i.i.i.i, %_ZSt4moveIPP15QTreeWidgetItemN5QListIS1_E8iteratorEET0_T_S7_S6_.exit.i ], [ %38, %.lr.ph.i.i.i.i.i19.i ] - %41 = sub i64 %7, %31 - %42 = ashr exact i64 %41, 3 - %.not = icmp slt i64 %42, %6 - br i1 %.not, label %._crit_edge, label %11, !llvm.loop !101 + %.sroa.0.0.lcssa.i.i.i.i.i18.i = phi ptr [ %.sroa.0.0.lcssa.i.i.i.i.i.i, %_ZSt4moveIPP15QTreeWidgetItemN5QListIS1_E8iteratorEET0_T_S7_S6_.exit.i ], [ %41, %.lr.ph.i.i.i.i.i19.i ] + %44 = sub i64 %7, %34 + %45 = ashr exact i64 %44, 3 + %.not = icmp slt i64 %45, %6 + br i1 %.not, label %._crit_edge, label %14, !llvm.loop !101 ._crit_edge: ; preds = %_ZSt12__move_mergeIPP15QTreeWidgetItemN5QListIS1_E8iteratorEN9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS0_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit, %5 - %.0.lcssa = phi ptr [ %0, %5 ], [ %13, %_ZSt12__move_mergeIPP15QTreeWidgetItemN5QListIS1_E8iteratorEN9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS0_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit ] + %.0.lcssa = phi ptr [ %0, %5 ], [ %16, %_ZSt12__move_mergeIPP15QTreeWidgetItemN5QListIS1_E8iteratorEN9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS0_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit ] %.sroa.021.0.lcssa = phi ptr [ %2, %5 ], [ %.sroa.0.0.lcssa.i.i.i.i.i18.i, %_ZSt12__move_mergeIPP15QTreeWidgetItemN5QListIS1_E8iteratorEN9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS0_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit ] - %.lcssa60 = phi i64 [ %10, %5 ], [ %42, %_ZSt12__move_mergeIPP15QTreeWidgetItemN5QListIS1_E8iteratorEN9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS0_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit ] + %.lcssa60 = phi i64 [ %10, %5 ], [ %45, %_ZSt12__move_mergeIPP15QTreeWidgetItemN5QListIS1_E8iteratorEN9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS0_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit ] %.sroa.speculated = tail call i64 @llvm.smin.i64(i64 %3, i64 %.lcssa60) - %43 = getelementptr ptr, ptr %.0.lcssa, i64 %.sroa.speculated - %.idx.mask55 = and i64 %.sroa.speculated, 2305843009213693951 - %44 = icmp ne i64 %.idx.mask55, 0 - %45 = icmp ne ptr %43, %1 - %46 = and i1 %44, %45 - br i1 %46, label %.lr.ph.i39, label %._crit_edge.i24 + %46 = getelementptr ptr, ptr %.0.lcssa, i64 %.sroa.speculated + %.idx55.mask = and i64 %.sroa.speculated, 2305843009213693951 + %47 = icmp ne i64 %.idx55.mask, 0 + %48 = icmp ne ptr %46, %1 + %49 = and i1 %47, %48 + br i1 %49, label %.lr.ph.i39, label %._crit_edge.i24 .lr.ph.i39: ; preds = %._crit_edge, %.lr.ph.i39 %.030.i40 = phi ptr [ %.1.i47, %.lr.ph.i39 ], [ %.0.lcssa, %._crit_edge ] - %.01629.i41 = phi ptr [ %.117.i45, %.lr.ph.i39 ], [ %43, %._crit_edge ] - %.sroa.024.028.i42 = phi ptr [ %50, %.lr.ph.i39 ], [ %.sroa.021.0.lcssa, %._crit_edge ] - %47 = load ptr, ptr %.01629.i41, align 8 - %48 = load ptr, ptr %.030.i40, align 8 - %49 = tail call noundef zeroext i1 %4(ptr noundef %47, ptr noundef %48) - %.sink.in.i43 = select i1 %49, ptr %.01629.i41, ptr %.030.i40 - %.117.idx.i44 = select i1 %49, i64 8, i64 0 + %.01629.i41 = phi ptr [ %.117.i45, %.lr.ph.i39 ], [ %46, %._crit_edge ] + %.sroa.024.028.i42 = phi ptr [ %53, %.lr.ph.i39 ], [ %.sroa.021.0.lcssa, %._crit_edge ] + %50 = load ptr, ptr %.01629.i41, align 8 + %51 = load ptr, ptr %.030.i40, align 8 + %52 = tail call noundef zeroext i1 %4(ptr noundef %50, ptr noundef %51) + %.sink.in.i43 = select i1 %52, ptr %.01629.i41, ptr %.030.i40 + %.117.idx.i44 = select i1 %52, i64 8, i64 0 %.117.i45 = getelementptr i8, ptr %.01629.i41, i64 %.117.idx.i44 - %.1.idx.i46 = select i1 %49, i64 0, i64 8 + %.1.idx.i46 = select i1 %52, i64 0, i64 8 %.1.i47 = getelementptr i8, ptr %.030.i40, i64 %.1.idx.i46 %.sink.i48 = load ptr, ptr %.sink.in.i43, align 8 store ptr %.sink.i48, ptr %.sroa.024.028.i42, align 8 - %50 = getelementptr i8, ptr %.sroa.024.028.i42, i64 8 - %51 = icmp ne ptr %.1.i47, %43 - %52 = icmp ne ptr %.117.i45, %1 - %53 = and i1 %51, %52 - br i1 %53, label %.lr.ph.i39, label %._crit_edge.i24, !llvm.loop !100 + %53 = getelementptr i8, ptr %.sroa.024.028.i42, i64 8 + %54 = icmp ne ptr %.1.i47, %46 + %55 = icmp ne ptr %.117.i45, %1 + %56 = and i1 %54, %55 + br i1 %56, label %.lr.ph.i39, label %._crit_edge.i24, !llvm.loop !100 ._crit_edge.i24: ; preds = %.lr.ph.i39, %._crit_edge - %.sroa.024.0.lcssa.i25 = phi ptr [ %.sroa.021.0.lcssa, %._crit_edge ], [ %50, %.lr.ph.i39 ] - %.016.lcssa.i26 = phi ptr [ %43, %._crit_edge ], [ %.117.i45, %.lr.ph.i39 ] + %.sroa.024.0.lcssa.i25 = phi ptr [ %.sroa.021.0.lcssa, %._crit_edge ], [ %53, %.lr.ph.i39 ] + %.016.lcssa.i26 = phi ptr [ %46, %._crit_edge ], [ %.117.i45, %.lr.ph.i39 ] %.0.lcssa.i27 = phi ptr [ %.0.lcssa, %._crit_edge ], [ %.1.i47, %.lr.ph.i39 ] - %54 = ptrtoint ptr %43 to i64 - %55 = ptrtoint ptr %.0.lcssa.i27 to i64 - %56 = sub i64 %54, %55 - %57 = ashr exact i64 %56, 3 - %58 = icmp sgt i64 %57, 0 - br i1 %58, label %.lr.ph.i.i.i.i.i.i35, label %_ZSt4moveIPP15QTreeWidgetItemN5QListIS1_E8iteratorEET0_T_S7_S6_.exit.i28 + %57 = ptrtoint ptr %46 to i64 + %58 = ptrtoint ptr %.0.lcssa.i27 to i64 + %59 = sub i64 %57, %58 + %60 = ashr exact i64 %59, 3 + %61 = icmp sgt i64 %60, 0 + br i1 %61, label %.lr.ph.i.i.i.i.i.i35, label %_ZSt4moveIPP15QTreeWidgetItemN5QListIS1_E8iteratorEET0_T_S7_S6_.exit.i28 .lr.ph.i.i.i.i.i.i35: ; preds = %._crit_edge.i24, %.lr.ph.i.i.i.i.i.i35 - %.09.i.i.i.i.i.i36 = phi i64 [ %62, %.lr.ph.i.i.i.i.i.i35 ], [ %57, %._crit_edge.i24 ] - %.058.i.i.i.i.i.i37 = phi ptr [ %60, %.lr.ph.i.i.i.i.i.i35 ], [ %.0.lcssa.i27, %._crit_edge.i24 ] - %.sroa.0.07.i.i.i.i.i.i38 = phi ptr [ %61, %.lr.ph.i.i.i.i.i.i35 ], [ %.sroa.024.0.lcssa.i25, %._crit_edge.i24 ] - %59 = load ptr, ptr %.058.i.i.i.i.i.i37, align 8 - store ptr %59, ptr %.sroa.0.07.i.i.i.i.i.i38, align 8 - %60 = getelementptr i8, ptr %.058.i.i.i.i.i.i37, i64 8 - %61 = getelementptr i8, ptr %.sroa.0.07.i.i.i.i.i.i38, i64 8 - %62 = add nsw i64 %.09.i.i.i.i.i.i36, -1 - %63 = icmp samesign ugt i64 %.09.i.i.i.i.i.i36, 1 - br i1 %63, label %.lr.ph.i.i.i.i.i.i35, label %_ZSt4moveIPP15QTreeWidgetItemN5QListIS1_E8iteratorEET0_T_S7_S6_.exit.i28, !llvm.loop !94 + %.09.i.i.i.i.i.i36 = phi i64 [ %65, %.lr.ph.i.i.i.i.i.i35 ], [ %60, %._crit_edge.i24 ] + %.058.i.i.i.i.i.i37 = phi ptr [ %63, %.lr.ph.i.i.i.i.i.i35 ], [ %.0.lcssa.i27, %._crit_edge.i24 ] + %.sroa.0.07.i.i.i.i.i.i38 = phi ptr [ %64, %.lr.ph.i.i.i.i.i.i35 ], [ %.sroa.024.0.lcssa.i25, %._crit_edge.i24 ] + %62 = load ptr, ptr %.058.i.i.i.i.i.i37, align 8 + store ptr %62, ptr %.sroa.0.07.i.i.i.i.i.i38, align 8 + %63 = getelementptr i8, ptr %.058.i.i.i.i.i.i37, i64 8 + %64 = getelementptr i8, ptr %.sroa.0.07.i.i.i.i.i.i38, i64 8 + %65 = add nsw i64 %.09.i.i.i.i.i.i36, -1 + %66 = icmp samesign ugt i64 %.09.i.i.i.i.i.i36, 1 + br i1 %66, label %.lr.ph.i.i.i.i.i.i35, label %_ZSt4moveIPP15QTreeWidgetItemN5QListIS1_E8iteratorEET0_T_S7_S6_.exit.i28, !llvm.loop !94 _ZSt4moveIPP15QTreeWidgetItemN5QListIS1_E8iteratorEET0_T_S7_S6_.exit.i28: ; preds = %.lr.ph.i.i.i.i.i.i35, %._crit_edge.i24 - %.sroa.0.0.lcssa.i.i.i.i.i.i29 = phi ptr [ %.sroa.024.0.lcssa.i25, %._crit_edge.i24 ], [ %61, %.lr.ph.i.i.i.i.i.i35 ] - %64 = ptrtoint ptr %.016.lcssa.i26 to i64 - %65 = sub i64 %7, %64 - %66 = ashr exact i64 %65, 3 - %67 = icmp sgt i64 %66, 0 - br i1 %67, label %.lr.ph.i.i.i.i.i19.i31, label %_ZSt12__move_mergeIPP15QTreeWidgetItemN5QListIS1_E8iteratorEN9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS0_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit49 + %.sroa.0.0.lcssa.i.i.i.i.i.i29 = phi ptr [ %.sroa.024.0.lcssa.i25, %._crit_edge.i24 ], [ %64, %.lr.ph.i.i.i.i.i.i35 ] + %67 = ptrtoint ptr %.016.lcssa.i26 to i64 + %68 = sub i64 %7, %67 + %69 = ashr exact i64 %68, 3 + %70 = icmp sgt i64 %69, 0 + br i1 %70, label %.lr.ph.i.i.i.i.i19.i31, label %_ZSt12__move_mergeIPP15QTreeWidgetItemN5QListIS1_E8iteratorEN9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS0_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit49 .lr.ph.i.i.i.i.i19.i31: ; preds = %_ZSt4moveIPP15QTreeWidgetItemN5QListIS1_E8iteratorEET0_T_S7_S6_.exit.i28, %.lr.ph.i.i.i.i.i19.i31 - %.09.i.i.i.i.i20.i32 = phi i64 [ %71, %.lr.ph.i.i.i.i.i19.i31 ], [ %66, %_ZSt4moveIPP15QTreeWidgetItemN5QListIS1_E8iteratorEET0_T_S7_S6_.exit.i28 ] - %.058.i.i.i.i.i21.i33 = phi ptr [ %69, %.lr.ph.i.i.i.i.i19.i31 ], [ %.016.lcssa.i26, %_ZSt4moveIPP15QTreeWidgetItemN5QListIS1_E8iteratorEET0_T_S7_S6_.exit.i28 ] - %.sroa.0.07.i.i.i.i.i22.i34 = phi ptr [ %70, %.lr.ph.i.i.i.i.i19.i31 ], [ %.sroa.0.0.lcssa.i.i.i.i.i.i29, %_ZSt4moveIPP15QTreeWidgetItemN5QListIS1_E8iteratorEET0_T_S7_S6_.exit.i28 ] - %68 = load ptr, ptr %.058.i.i.i.i.i21.i33, align 8 - store ptr %68, ptr %.sroa.0.07.i.i.i.i.i22.i34, align 8 - %69 = getelementptr i8, ptr %.058.i.i.i.i.i21.i33, i64 8 - %70 = getelementptr i8, ptr %.sroa.0.07.i.i.i.i.i22.i34, i64 8 - %71 = add nsw i64 %.09.i.i.i.i.i20.i32, -1 - %72 = icmp samesign ugt i64 %.09.i.i.i.i.i20.i32, 1 - br i1 %72, label %.lr.ph.i.i.i.i.i19.i31, label %_ZSt12__move_mergeIPP15QTreeWidgetItemN5QListIS1_E8iteratorEN9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS0_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit49, !llvm.loop !94 + %.09.i.i.i.i.i20.i32 = phi i64 [ %74, %.lr.ph.i.i.i.i.i19.i31 ], [ %69, %_ZSt4moveIPP15QTreeWidgetItemN5QListIS1_E8iteratorEET0_T_S7_S6_.exit.i28 ] + %.058.i.i.i.i.i21.i33 = phi ptr [ %72, %.lr.ph.i.i.i.i.i19.i31 ], [ %.016.lcssa.i26, %_ZSt4moveIPP15QTreeWidgetItemN5QListIS1_E8iteratorEET0_T_S7_S6_.exit.i28 ] + %.sroa.0.07.i.i.i.i.i22.i34 = phi ptr [ %73, %.lr.ph.i.i.i.i.i19.i31 ], [ %.sroa.0.0.lcssa.i.i.i.i.i.i29, %_ZSt4moveIPP15QTreeWidgetItemN5QListIS1_E8iteratorEET0_T_S7_S6_.exit.i28 ] + %71 = load ptr, ptr %.058.i.i.i.i.i21.i33, align 8 + store ptr %71, ptr %.sroa.0.07.i.i.i.i.i22.i34, align 8 + %72 = getelementptr i8, ptr %.058.i.i.i.i.i21.i33, i64 8 + %73 = getelementptr i8, ptr %.sroa.0.07.i.i.i.i.i22.i34, i64 8 + %74 = add nsw i64 %.09.i.i.i.i.i20.i32, -1 + %75 = icmp samesign ugt i64 %.09.i.i.i.i.i20.i32, 1 + br i1 %75, label %.lr.ph.i.i.i.i.i19.i31, label %_ZSt12__move_mergeIPP15QTreeWidgetItemN5QListIS1_E8iteratorEN9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS0_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit49, !llvm.loop !94 _ZSt12__move_mergeIPP15QTreeWidgetItemN5QListIS1_E8iteratorEN9__gnu_cxx5__ops15_Iter_comp_iterIPFbPKS0_SA_EEEET0_T_SF_SF_SF_SE_T1_.exit49: ; preds = %.lr.ph.i.i.i.i.i19.i31, %_ZSt4moveIPP15QTreeWidgetItemN5QListIS1_E8iteratorEET0_T_S7_S6_.exit.i28 ret void diff --git a/bench/wireshark/optimized/extcap_argument.cpp.ll b/bench/wireshark/optimized/extcap_argument.cpp.ll index 0941b19d8d5..b3b7223e132 100644 --- a/bench/wireshark/optimized/extcap_argument.cpp.ll +++ b/bench/wireshark/optimized/extcap_argument.cpp.ll @@ -6709,7 +6709,7 @@ define linkonce_odr void @_ZN5QListI11ExtcapValueE5clearEv(ptr noundef nonnull a _ZNK17QArrayDataPointerI11ExtcapValueE11needsDetachEv.exit: ; preds = %5 %7 = load atomic i32, ptr %6 monotonic, align 4 %8 = icmp sgt i32 %7, 1 - br i1 %8, label %9, label %.lr.ph.i.i.i.preheader.i + br i1 %8, label %9, label %25 9: ; preds = %_ZNK17QArrayDataPointerI11ExtcapValueE11needsDetachEv.exit %10 = getelementptr inbounds nuw i8, ptr %6, i64 8 @@ -6757,22 +6757,24 @@ _ZN9QtPrivate16QGenericArrayOpsI11ExtcapValueE10destroyAllEv.exit.i: ; preds = % call void @_ZN10QArrayData10deallocateEPS_xx(ptr noundef nonnull %15, i64 noundef 88, i64 noundef 8) #21 br label %_ZN17QArrayDataPointerI11ExtcapValueED2Ev.exit -.lr.ph.i.i.i.preheader.i: ; preds = %_ZNK17QArrayDataPointerI11ExtcapValueE11needsDetachEv.exit - %25 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %26 = load ptr, ptr %25, align 8 - %27 = getelementptr %class.ExtcapValue, ptr %26, i64 %4 - br label %.lr.ph.i.i.i.i - -.lr.ph.i.i.i.i: ; preds = %.lr.ph.i.i.i.i, %.lr.ph.i.i.i.preheader.i - %.05.i.i.i.i = phi ptr [ %30, %.lr.ph.i.i.i.i ], [ %26, %.lr.ph.i.i.i.preheader.i ] - %28 = load ptr, ptr %.05.i.i.i.i, align 8 - %29 = load ptr, ptr %28, align 8 - tail call void %29(ptr noundef nonnull align 8 dereferenceable(88) %.05.i.i.i.i) #21 - %30 = getelementptr i8, ptr %.05.i.i.i.i, i64 88 - %.not.i.i.i.i = icmp eq ptr %30, %27 +25: ; preds = %_ZNK17QArrayDataPointerI11ExtcapValueE11needsDetachEv.exit + %26 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %27 = load ptr, ptr %26, align 8 + %.idx2.i = mul i64 %4, 88 + %28 = getelementptr i8, ptr %27, i64 %.idx2.i + %.not4.i.i.i.i = icmp eq i64 %.idx2.i, 0 + br i1 %.not4.i.i.i.i, label %_ZN9QtPrivate16QGenericArrayOpsI11ExtcapValueE8truncateEm.exit, label %.lr.ph.i.i.i.i + +.lr.ph.i.i.i.i: ; preds = %25, %.lr.ph.i.i.i.i + %.05.i.i.i.i = phi ptr [ %31, %.lr.ph.i.i.i.i ], [ %27, %25 ] + %29 = load ptr, ptr %.05.i.i.i.i, align 8 + %30 = load ptr, ptr %29, align 8 + tail call void %30(ptr noundef nonnull align 8 dereferenceable(88) %.05.i.i.i.i) #21 + %31 = getelementptr i8, ptr %.05.i.i.i.i, i64 88 + %.not.i.i.i.i = icmp eq ptr %31, %28 br i1 %.not.i.i.i.i, label %_ZN9QtPrivate16QGenericArrayOpsI11ExtcapValueE8truncateEm.exit, label %.lr.ph.i.i.i.i, !llvm.loop !4 -_ZN9QtPrivate16QGenericArrayOpsI11ExtcapValueE8truncateEm.exit: ; preds = %.lr.ph.i.i.i.i +_ZN9QtPrivate16QGenericArrayOpsI11ExtcapValueE8truncateEm.exit: ; preds = %.lr.ph.i.i.i.i, %25 store i64 0, ptr %3, align 8 br label %_ZN17QArrayDataPointerI11ExtcapValueED2Ev.exit diff --git a/bench/wireshark/optimized/io_graph_dialog.cpp.ll b/bench/wireshark/optimized/io_graph_dialog.cpp.ll index e965d197849..55164a71f66 100644 --- a/bench/wireshark/optimized/io_graph_dialog.cpp.ll +++ b/bench/wireshark/optimized/io_graph_dialog.cpp.ll @@ -21733,12 +21733,12 @@ _ZN7QString5clearEv.exit: ; preds = %1, %10, %_ZN17QArra %14 = getelementptr inbounds nuw i8, ptr %0, i64 168 %15 = load i32, ptr %14, align 8 %16 = icmp slt i32 %15, 0 - br i1 %16, label %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit51, label %17 + br i1 %16, label %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit53, label %17 17: ; preds = %_ZN7QString5clearEv.exit %18 = getelementptr inbounds nuw i8, ptr %0, i64 136 %19 = load i32, ptr %18, align 8 - switch i32 %19, label %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit51 [ + switch i32 %19, label %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit53 [ i32 3, label %20 i32 6, label %20 i32 7, label %20 @@ -21748,7 +21748,7 @@ _ZN7QString5clearEv.exit: ; preds = %1, %10, %_ZN17QArra 20: ; preds = %17, %17, %17, %17 %21 = tail call i32 @proto_registrar_get_ftype(i32 noundef %15) %22 = icmp eq i32 %21, 25 - br i1 %22, label %23, label %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit51 + br i1 %22, label %23, label %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit53 23: ; preds = %20 %24 = getelementptr inbounds nuw i8, ptr %0, i64 88 @@ -21776,14 +21776,16 @@ _ZNK8QCPGraph4dataEv.exit: ; preds = %26, %31 %37 = getelementptr inbounds nuw i8, ptr %28, i64 32 %38 = load i32, ptr %37, align 8 %39 = sext i32 %38 to i64 + %.idx.i = shl nsw i64 %39, 4 %40 = getelementptr inbounds nuw i8, ptr %28, i64 24 %41 = load i64, ptr %40, align 8 - %42 = getelementptr %class.QCPGraphData, ptr %36, i64 %41 - %.not8.i = icmp eq i64 %41, %39 + %.idx11.i = shl i64 %41, 4 + %42 = getelementptr i8, ptr %36, i64 %.idx11.i + %.not8.i = icmp eq i64 %.idx.i, %.idx11.i br i1 %.not8.i, label %_ZN7IOGraph21maxValueFromGraphDataI16QCPDataContainerI12QCPGraphDataEEEdRKT_.exit, label %.lr.ph.preheader.i .lr.ph.preheader.i: ; preds = %_ZNK8QCPGraph4dataEv.exit - %43 = getelementptr %class.QCPGraphData, ptr %36, i64 %39 + %43 = getelementptr i8, ptr %36, i64 %.idx.i br label %.lr.ph.i .lr.ph.i: ; preds = %.lr.ph.i, %.lr.ph.preheader.i @@ -21830,7 +21832,7 @@ _ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i: ; preds = %53, %61 = getelementptr inbounds nuw i8, ptr %0, i64 96 %62 = load ptr, ptr %61, align 8 %.not14 = icmp eq ptr %62, null - br i1 %.not14, label %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit51, label %63 + br i1 %.not14, label %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit53, label %63 63: ; preds = %60 %64 = getelementptr inbounds nuw i8, ptr %62, i64 192 @@ -21852,48 +21854,50 @@ _ZNK7QCPBars4dataEv.exit: ; preds = %63, %68 %74 = getelementptr inbounds nuw i8, ptr %65, i64 32 %75 = load i32, ptr %74, align 8 %76 = sext i32 %75 to i64 + %.idx.i20 = shl nsw i64 %76, 4 %77 = getelementptr inbounds nuw i8, ptr %65, i64 24 %78 = load i64, ptr %77, align 8 - %79 = getelementptr %class.QCPBarsData, ptr %73, i64 %78 - %.not8.i20 = icmp eq i64 %78, %76 - br i1 %.not8.i20, label %_ZN7IOGraph21maxValueFromGraphDataI16QCPDataContainerI11QCPBarsDataEEEdRKT_.exit, label %.lr.ph.preheader.i21 - -.lr.ph.preheader.i21: ; preds = %_ZNK7QCPBars4dataEv.exit - %80 = getelementptr %class.QCPBarsData, ptr %73, i64 %76 - br label %.lr.ph.i22 - -.lr.ph.i22: ; preds = %.lr.ph.i22, %.lr.ph.preheader.i21 - %.010.i23 = phi double [ %85, %.lr.ph.i22 ], [ 0.000000e+00, %.lr.ph.preheader.i21 ] - %.sroa.0.09.i24 = phi ptr [ %86, %.lr.ph.i22 ], [ %80, %.lr.ph.preheader.i21 ] - %81 = getelementptr inbounds nuw i8, ptr %.sroa.0.09.i24, i64 8 + %.idx11.i21 = shl i64 %78, 4 + %79 = getelementptr i8, ptr %73, i64 %.idx11.i21 + %.not8.i22 = icmp eq i64 %.idx.i20, %.idx11.i21 + br i1 %.not8.i22, label %_ZN7IOGraph21maxValueFromGraphDataI16QCPDataContainerI11QCPBarsDataEEEdRKT_.exit, label %.lr.ph.preheader.i23 + +.lr.ph.preheader.i23: ; preds = %_ZNK7QCPBars4dataEv.exit + %80 = getelementptr i8, ptr %73, i64 %.idx.i20 + br label %.lr.ph.i24 + +.lr.ph.i24: ; preds = %.lr.ph.i24, %.lr.ph.preheader.i23 + %.010.i25 = phi double [ %85, %.lr.ph.i24 ], [ 0.000000e+00, %.lr.ph.preheader.i23 ] + %.sroa.0.09.i26 = phi ptr [ %86, %.lr.ph.i24 ], [ %80, %.lr.ph.preheader.i23 ] + %81 = getelementptr inbounds nuw i8, ptr %.sroa.0.09.i26, i64 8 %82 = load double, ptr %81, align 8 %83 = tail call double @llvm.fabs.f64(double %82) - %84 = fcmp ogt double %83, %.010.i23 - %85 = select i1 %84, double %83, double %.010.i23 - %86 = getelementptr i8, ptr %.sroa.0.09.i24, i64 16 - %.not.i25 = icmp eq ptr %86, %79 - br i1 %.not.i25, label %_ZN7IOGraph21maxValueFromGraphDataI16QCPDataContainerI11QCPBarsDataEEEdRKT_.exit, label %.lr.ph.i22, !llvm.loop !144 - -_ZN7IOGraph21maxValueFromGraphDataI16QCPDataContainerI11QCPBarsDataEEEdRKT_.exit: ; preds = %.lr.ph.i22, %_ZNK7QCPBars4dataEv.exit - %.0.lcssa.i26 = phi double [ 0.000000e+00, %_ZNK7QCPBars4dataEv.exit ], [ %85, %.lr.ph.i22 ] + %84 = fcmp ogt double %83, %.010.i25 + %85 = select i1 %84, double %83, double %.010.i25 + %86 = getelementptr i8, ptr %.sroa.0.09.i26, i64 16 + %.not.i27 = icmp eq ptr %86, %79 + br i1 %.not.i27, label %_ZN7IOGraph21maxValueFromGraphDataI16QCPDataContainerI11QCPBarsDataEEEdRKT_.exit, label %.lr.ph.i24, !llvm.loop !144 + +_ZN7IOGraph21maxValueFromGraphDataI16QCPDataContainerI11QCPBarsDataEEEdRKT_.exit: ; preds = %.lr.ph.i24, %_ZNK7QCPBars4dataEv.exit + %.0.lcssa.i28 = phi double [ 0.000000e+00, %_ZNK7QCPBars4dataEv.exit ], [ %85, %.lr.ph.i24 ] br i1 %.not.i.i19, label %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit, label %87 87: ; preds = %_ZN7IOGraph21maxValueFromGraphDataI16QCPDataContainerI11QCPBarsDataEEEdRKT_.exit %88 = getelementptr inbounds nuw i8, ptr %67, i64 4 %89 = atomicrmw sub ptr %88, i32 1 seq_cst, align 4 - %.not5.i.i.i28 = icmp eq i32 %89, 1 - br i1 %.not5.i.i.i28, label %90, label %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i29 + %.not5.i.i.i30 = icmp eq i32 %89, 1 + br i1 %.not5.i.i.i30, label %90, label %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i31 90: ; preds = %87 %91 = getelementptr inbounds nuw i8, ptr %67, i64 8 %92 = load ptr, ptr %91, align 8 invoke void %92(ptr noundef nonnull align 8 dereferenceable(16) %67) - to label %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i29 unwind label %94 + to label %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i31 unwind label %94 -_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i29: ; preds = %90, %87 +_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i31: ; preds = %90, %87 %93 = atomicrmw sub ptr %67, i32 1 seq_cst, align 4 - %.not6.i.i.i30 = icmp eq i32 %93, 1 - br i1 %.not6.i.i.i30, label %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit.sink.split, label %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit + %.not6.i.i.i32 = icmp eq i32 %93, 1 + br i1 %.not6.i.i.i32, label %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit.sink.split, label %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit 94: ; preds = %90 %95 = landingpad { ptr, i32 } @@ -21902,16 +21906,16 @@ _ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i29: ; preds = %90 tail call void @__clang_call_terminate(ptr %96) #29 unreachable -_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit.sink.split: ; preds = %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i29, %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i - %.sink = phi ptr [ %30, %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i ], [ %67, %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i29 ] - %.09.ph = phi double [ %.0.lcssa.i, %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i ], [ %.0.lcssa.i26, %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i29 ] +_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit.sink.split: ; preds = %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i31, %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i + %.sink = phi ptr [ %30, %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i ], [ %67, %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i31 ] + %.09.ph = phi double [ %.0.lcssa.i, %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i ], [ %.0.lcssa.i28, %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i31 ] tail call void @_ZdlPv(ptr noundef nonnull %.sink) #27 br label %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit -_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit: ; preds = %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit.sink.split, %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i29, %_ZN7IOGraph21maxValueFromGraphDataI16QCPDataContainerI11QCPBarsDataEEEdRKT_.exit, %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i, %_ZN7IOGraph21maxValueFromGraphDataI16QCPDataContainerI12QCPGraphDataEEEdRKT_.exit - %.09 = phi double [ %.0.lcssa.i, %_ZN7IOGraph21maxValueFromGraphDataI16QCPDataContainerI12QCPGraphDataEEEdRKT_.exit ], [ %.0.lcssa.i, %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i ], [ %.0.lcssa.i26, %_ZN7IOGraph21maxValueFromGraphDataI16QCPDataContainerI11QCPBarsDataEEEdRKT_.exit ], [ %.0.lcssa.i26, %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i29 ], [ %.09.ph, %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit.sink.split ] +_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit: ; preds = %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit.sink.split, %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i31, %_ZN7IOGraph21maxValueFromGraphDataI16QCPDataContainerI11QCPBarsDataEEEdRKT_.exit, %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i, %_ZN7IOGraph21maxValueFromGraphDataI16QCPDataContainerI12QCPGraphDataEEEdRKT_.exit + %.09 = phi double [ %.0.lcssa.i, %_ZN7IOGraph21maxValueFromGraphDataI16QCPDataContainerI12QCPGraphDataEEEdRKT_.exit ], [ %.0.lcssa.i, %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i ], [ %.0.lcssa.i28, %_ZN7IOGraph21maxValueFromGraphDataI16QCPDataContainerI11QCPBarsDataEEEdRKT_.exit ], [ %.0.lcssa.i28, %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i31 ], [ %.09.ph, %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit.sink.split ] %97 = fcmp oeq double %.09, 0.000000e+00 - br i1 %97, label %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit51, label %98 + br i1 %97, label %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit53, label %98 98: ; preds = %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit %99 = fcmp oge double %.09, 1.000000e+00 @@ -21935,20 +21939,20 @@ _ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit: ; preds = %_ZN %109 = load i64, ptr %107, align 8 store i64 %109, ptr %106, align 8 store i64 %108, ptr %107, align 8 - %.not.i.i.i.i31 = icmp eq ptr %101, null - br i1 %.not.i.i.i.i31, label %_ZN7QStringaSEPKc.exit, label %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i32 + %.not.i.i.i.i33 = icmp eq ptr %101, null + br i1 %.not.i.i.i.i33, label %_ZN7QStringaSEPKc.exit, label %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i34 -_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i32: ; preds = %100 +_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i34: ; preds = %100 %110 = atomicrmw sub ptr %101, i32 1 seq_cst, align 4 - %.not.i.i.i33 = icmp eq i32 %110, 1 - br i1 %.not.i.i.i33, label %111, label %_ZN7QStringaSEPKc.exit + %.not.i.i.i35 = icmp eq i32 %110, 1 + br i1 %.not.i.i.i35, label %111, label %_ZN7QStringaSEPKc.exit -111: ; preds = %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i32 +111: ; preds = %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i34 %112 = load ptr, ptr %4, align 8 call void @_ZN10QArrayData10deallocateEPS_xx(ptr noundef %112, i64 noundef 2, i64 noundef 8) #27 br label %_ZN7QStringaSEPKc.exit -_ZN7QStringaSEPKc.exit: ; preds = %100, %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i32, %111 +_ZN7QStringaSEPKc.exit: ; preds = %100, %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i34, %111 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) br label %140 @@ -21974,20 +21978,20 @@ _ZN7QStringaSEPKc.exit: ; preds = %100, %_ZN17QArrayDa %124 = load i64, ptr %122, align 8 store i64 %124, ptr %115, align 8 store i64 %123, ptr %122, align 8 - %.not.i.i.i.i34 = icmp eq ptr %117, null - br i1 %.not.i.i.i.i34, label %_ZN7QStringaSEPKc.exit37, label %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i35 + %.not.i.i.i.i36 = icmp eq ptr %117, null + br i1 %.not.i.i.i.i36, label %_ZN7QStringaSEPKc.exit39, label %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i37 -_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i35: ; preds = %116 +_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i37: ; preds = %116 %125 = atomicrmw sub ptr %117, i32 1 seq_cst, align 4 - %.not.i.i.i36 = icmp eq i32 %125, 1 - br i1 %.not.i.i.i36, label %126, label %_ZN7QStringaSEPKc.exit37 + %.not.i.i.i38 = icmp eq i32 %125, 1 + br i1 %.not.i.i.i38, label %126, label %_ZN7QStringaSEPKc.exit39 -126: ; preds = %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i35 +126: ; preds = %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i37 %127 = load ptr, ptr %3, align 8 call void @_ZN10QArrayData10deallocateEPS_xx(ptr noundef %127, i64 noundef 2, i64 noundef 8) #27 - br label %_ZN7QStringaSEPKc.exit37 + br label %_ZN7QStringaSEPKc.exit39 -_ZN7QStringaSEPKc.exit37: ; preds = %116, %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i35, %126 +_ZN7QStringaSEPKc.exit39: ; preds = %116, %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i37, %126 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) br label %140 @@ -22008,25 +22012,25 @@ _ZN7QStringaSEPKc.exit37: ; preds = %116, %_ZN17QArrayDa %136 = load i64, ptr %134, align 8 store i64 %136, ptr %115, align 8 store i64 %135, ptr %134, align 8 - %.not.i.i.i.i38 = icmp eq ptr %129, null - br i1 %.not.i.i.i.i38, label %_ZN7QStringaSEPKc.exit41, label %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i39 + %.not.i.i.i.i40 = icmp eq ptr %129, null + br i1 %.not.i.i.i.i40, label %_ZN7QStringaSEPKc.exit43, label %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i41 -_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i39: ; preds = %128 +_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i41: ; preds = %128 %137 = atomicrmw sub ptr %129, i32 1 seq_cst, align 4 - %.not.i.i.i40 = icmp eq i32 %137, 1 - br i1 %.not.i.i.i40, label %138, label %_ZN7QStringaSEPKc.exit41 + %.not.i.i.i42 = icmp eq i32 %137, 1 + br i1 %.not.i.i.i42, label %138, label %_ZN7QStringaSEPKc.exit43 -138: ; preds = %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i39 +138: ; preds = %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i41 %139 = load ptr, ptr %2, align 8 call void @_ZN10QArrayData10deallocateEPS_xx(ptr noundef %139, i64 noundef 2, i64 noundef 8) #27 - br label %_ZN7QStringaSEPKc.exit41 + br label %_ZN7QStringaSEPKc.exit43 -_ZN7QStringaSEPKc.exit41: ; preds = %128, %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i39, %138 +_ZN7QStringaSEPKc.exit43: ; preds = %128, %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i41, %138 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) br label %140 -140: ; preds = %_ZN7QStringaSEPKc.exit37, %_ZN7QStringaSEPKc.exit41, %_ZN7QStringaSEPKc.exit - %.0 = phi double [ 1.000000e+00, %_ZN7QStringaSEPKc.exit ], [ 1.000000e+03, %_ZN7QStringaSEPKc.exit37 ], [ 1.000000e+06, %_ZN7QStringaSEPKc.exit41 ] +140: ; preds = %_ZN7QStringaSEPKc.exit39, %_ZN7QStringaSEPKc.exit43, %_ZN7QStringaSEPKc.exit + %.0 = phi double [ 1.000000e+00, %_ZN7QStringaSEPKc.exit ], [ 1.000000e+03, %_ZN7QStringaSEPKc.exit39 ], [ 1.000000e+06, %_ZN7QStringaSEPKc.exit43 ] %141 = load ptr, ptr %24, align 8 %.not15 = icmp eq ptr %141, null br i1 %.not15, label %190, label %142 @@ -22040,8 +22044,8 @@ _ZN7QStringaSEPKc.exit41: ; preds = %128, %_ZN17QArrayDa %146 = getelementptr inbounds nuw i8, ptr %141, i64 200 %147 = load ptr, ptr %146, align 8, !noalias !145 store ptr %147, ptr %145, align 8, !alias.scope !145 - %.not.i.i42 = icmp eq ptr %147, null - br i1 %.not.i.i42, label %_ZNK8QCPGraph4dataEv.exit43, label %148 + %.not.i.i44 = icmp eq ptr %147, null + br i1 %.not.i.i44, label %_ZNK8QCPGraph4dataEv.exit45, label %148 148: ; preds = %142 %149 = atomicrmw add ptr %147, i32 1 seq_cst, align 4, !noalias !145 @@ -22049,13 +22053,13 @@ _ZN7QStringaSEPKc.exit41: ; preds = %128, %_ZN17QArrayDa %151 = getelementptr inbounds nuw i8, ptr %150, i64 4 %152 = atomicrmw add ptr %151, i32 1 seq_cst, align 4, !noalias !145 %.pre = load ptr, ptr %5, align 8 - br label %_ZNK8QCPGraph4dataEv.exit43 + br label %_ZNK8QCPGraph4dataEv.exit45 -_ZNK8QCPGraph4dataEv.exit43: ; preds = %142, %148 +_ZNK8QCPGraph4dataEv.exit45: ; preds = %142, %148 %153 = phi ptr [ %144, %142 ], [ %.pre, %148 ] br i1 %99, label %_ZN7IOGraph14scaleGraphDataI16QCPDataContainerI12QCPGraphDataEEEvRT_i.exit, label %154 -154: ; preds = %_ZNK8QCPGraph4dataEv.exit43 +154: ; preds = %_ZNK8QCPGraph4dataEv.exit45 %155 = getelementptr inbounds nuw i8, ptr %153, i64 8 %156 = load ptr, ptr %155, align 8 %.not.i.i.i.i.i.i = icmp eq ptr %156, null @@ -22068,7 +22072,7 @@ _ZNK17QArrayDataPointerI12QCPGraphDataE11needsDetachEv.exit.i.i.i.i.i: ; preds = _ZNK17QArrayDataPointerI12QCPGraphDataE11needsDetachEv.exit.thread.i.i.i.i.i: ; preds = %_ZNK17QArrayDataPointerI12QCPGraphDataE11needsDetachEv.exit.i.i.i.i.i, %154 invoke void @_ZN17QArrayDataPointerI12QCPGraphDataE17reallocateAndGrowEN10QArrayData14GrowthPositionExPS1_(ptr noundef nonnull align 8 dereferenceable(24) %155, i32 noundef 0, i64 noundef 0, ptr noundef null) - to label %_ZN16QCPDataContainerI12QCPGraphDataE5beginEv.exit.i unwind label %.loopexit.split-lp68 + to label %_ZN16QCPDataContainerI12QCPGraphDataE5beginEv.exit.i unwind label %.loopexit.split-lp70 _ZN16QCPDataContainerI12QCPGraphDataE5beginEv.exit.i: ; preds = %_ZNK17QArrayDataPointerI12QCPGraphDataE11needsDetachEv.exit.thread.i.i.i.i.i, %_ZNK17QArrayDataPointerI12QCPGraphDataE11needsDetachEv.exit.i.i.i.i.i %159 = getelementptr inbounds nuw i8, ptr %153, i64 16 @@ -22093,14 +22097,14 @@ _ZNK17QArrayDataPointerI12QCPGraphDataE11needsDetachEv.exit.i.i.i.i4.i: ; preds _ZNK17QArrayDataPointerI12QCPGraphDataE11needsDetachEv.exit.thread.i.i.i.i5.i: ; preds = %_ZNK17QArrayDataPointerI12QCPGraphDataE11needsDetachEv.exit.i.i.i.i4.i, %166 invoke void @_ZN17QArrayDataPointerI12QCPGraphDataE17reallocateAndGrowEN10QArrayData14GrowthPositionExPS1_(ptr noundef nonnull align 8 dereferenceable(24) %155, i32 noundef 0, i64 noundef 0, ptr noundef null) - to label %_ZN16QCPDataContainerI12QCPGraphDataE3endEv.exit.i unwind label %.loopexit67 + to label %_ZN16QCPDataContainerI12QCPGraphDataE3endEv.exit.i unwind label %.loopexit69 _ZN16QCPDataContainerI12QCPGraphDataE3endEv.exit.i: ; preds = %_ZNK17QArrayDataPointerI12QCPGraphDataE11needsDetachEv.exit.thread.i.i.i.i5.i, %_ZNK17QArrayDataPointerI12QCPGraphDataE11needsDetachEv.exit.i.i.i.i4.i %170 = load ptr, ptr %159, align 8 %171 = load i64, ptr %165, align 8 %172 = getelementptr %class.QCPGraphData, ptr %170, i64 %171 - %.not8.i45 = icmp eq ptr %.sroa.0.0.i, %172 - br i1 %.not8.i45, label %_ZN7IOGraph14scaleGraphDataI16QCPDataContainerI12QCPGraphDataEEEvRT_i.exit, label %173 + %.not8.i47 = icmp eq ptr %.sroa.0.0.i, %172 + br i1 %.not8.i47, label %_ZN7IOGraph14scaleGraphDataI16QCPDataContainerI12QCPGraphDataEEEvRT_i.exit, label %173 173: ; preds = %_ZN16QCPDataContainerI12QCPGraphDataE3endEv.exit.i %174 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i, i64 8 @@ -22110,27 +22114,27 @@ _ZN16QCPDataContainerI12QCPGraphDataE3endEv.exit.i: ; preds = %_ZNK17QArrayDataP %177 = getelementptr i8, ptr %.sroa.0.0.i, i64 16 br label %166, !llvm.loop !148 -_ZN7IOGraph14scaleGraphDataI16QCPDataContainerI12QCPGraphDataEEEvRT_i.exit: ; preds = %_ZN16QCPDataContainerI12QCPGraphDataE3endEv.exit.i, %_ZNK8QCPGraph4dataEv.exit43 +_ZN7IOGraph14scaleGraphDataI16QCPDataContainerI12QCPGraphDataEEEvRT_i.exit: ; preds = %_ZN16QCPDataContainerI12QCPGraphDataE3endEv.exit.i, %_ZNK8QCPGraph4dataEv.exit45 %178 = load ptr, ptr %145, align 8 - %.not.i.i.i47 = icmp eq ptr %178, null - br i1 %.not.i.i.i47, label %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit51, label %179 + %.not.i.i.i49 = icmp eq ptr %178, null + br i1 %.not.i.i.i49, label %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit53, label %179 179: ; preds = %_ZN7IOGraph14scaleGraphDataI16QCPDataContainerI12QCPGraphDataEEEvRT_i.exit %180 = getelementptr inbounds nuw i8, ptr %178, i64 4 %181 = atomicrmw sub ptr %180, i32 1 seq_cst, align 4 - %.not5.i.i.i48 = icmp eq i32 %181, 1 - br i1 %.not5.i.i.i48, label %182, label %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i49 + %.not5.i.i.i50 = icmp eq i32 %181, 1 + br i1 %.not5.i.i.i50, label %182, label %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i51 182: ; preds = %179 %183 = getelementptr inbounds nuw i8, ptr %178, i64 8 %184 = load ptr, ptr %183, align 8 invoke void %184(ptr noundef nonnull align 8 dereferenceable(16) %178) - to label %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i49 unwind label %186 + to label %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i51 unwind label %186 -_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i49: ; preds = %182, %179 +_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i51: ; preds = %182, %179 %185 = atomicrmw sub ptr %178, i32 1 seq_cst, align 4 - %.not6.i.i.i50 = icmp eq i32 %185, 1 - br i1 %.not6.i.i.i50, label %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit51.sink.split, label %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit51 + %.not6.i.i.i52 = icmp eq i32 %185, 1 + br i1 %.not6.i.i.i52, label %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit53.sink.split, label %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit53 186: ; preds = %182 %187 = landingpad { ptr, i32 } @@ -22139,18 +22143,18 @@ _ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i49: ; preds = %18 call void @__clang_call_terminate(ptr %188) #29 unreachable -.loopexit67: ; preds = %_ZNK17QArrayDataPointerI12QCPGraphDataE11needsDetachEv.exit.thread.i.i.i.i5.i - %lpad.loopexit69 = landingpad { ptr, i32 } +.loopexit69: ; preds = %_ZNK17QArrayDataPointerI12QCPGraphDataE11needsDetachEv.exit.thread.i.i.i.i5.i + %lpad.loopexit71 = landingpad { ptr, i32 } cleanup br label %189 -.loopexit.split-lp68: ; preds = %_ZNK17QArrayDataPointerI12QCPGraphDataE11needsDetachEv.exit.thread.i.i.i.i.i - %lpad.loopexit.split-lp70 = landingpad { ptr, i32 } +.loopexit.split-lp70: ; preds = %_ZNK17QArrayDataPointerI12QCPGraphDataE11needsDetachEv.exit.thread.i.i.i.i.i + %lpad.loopexit.split-lp72 = landingpad { ptr, i32 } cleanup br label %189 -189: ; preds = %.loopexit.split-lp68, %.loopexit67 - %lpad.phi71 = phi { ptr, i32 } [ %lpad.loopexit69, %.loopexit67 ], [ %lpad.loopexit.split-lp70, %.loopexit.split-lp68 ] +189: ; preds = %.loopexit.split-lp70, %.loopexit69 + %lpad.phi73 = phi { ptr, i32 } [ %lpad.loopexit71, %.loopexit69 ], [ %lpad.loopexit.split-lp72, %.loopexit.split-lp70 ] call void @_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #27 br label %241 @@ -22158,7 +22162,7 @@ _ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i49: ; preds = %18 %191 = getelementptr inbounds nuw i8, ptr %0, i64 96 %192 = load ptr, ptr %191, align 8 %.not16 = icmp eq ptr %192, null - br i1 %.not16, label %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit51, label %193 + br i1 %.not16, label %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit53, label %193 193: ; preds = %190 call void @llvm.experimental.noalias.scope.decl(metadata !149) @@ -22169,26 +22173,26 @@ _ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i49: ; preds = %18 %197 = getelementptr inbounds nuw i8, ptr %192, i64 200 %198 = load ptr, ptr %197, align 8, !noalias !149 store ptr %198, ptr %196, align 8, !alias.scope !149 - %.not.i.i52 = icmp eq ptr %198, null - br i1 %.not.i.i52, label %_ZNK7QCPBars4dataEv.exit53, label %199 + %.not.i.i54 = icmp eq ptr %198, null + br i1 %.not.i.i54, label %_ZNK7QCPBars4dataEv.exit55, label %199 199: ; preds = %193 %200 = atomicrmw add ptr %198, i32 1 seq_cst, align 4, !noalias !149 %201 = load ptr, ptr %196, align 8, !alias.scope !149 %202 = getelementptr inbounds nuw i8, ptr %201, i64 4 %203 = atomicrmw add ptr %202, i32 1 seq_cst, align 4, !noalias !149 - %.pre78 = load ptr, ptr %6, align 8 - br label %_ZNK7QCPBars4dataEv.exit53 + %.pre80 = load ptr, ptr %6, align 8 + br label %_ZNK7QCPBars4dataEv.exit55 -_ZNK7QCPBars4dataEv.exit53: ; preds = %193, %199 - %204 = phi ptr [ %195, %193 ], [ %.pre78, %199 ] +_ZNK7QCPBars4dataEv.exit55: ; preds = %193, %199 + %204 = phi ptr [ %195, %193 ], [ %.pre80, %199 ] br i1 %99, label %_ZN7IOGraph14scaleGraphDataI16QCPDataContainerI11QCPBarsDataEEEvRT_i.exit, label %205 -205: ; preds = %_ZNK7QCPBars4dataEv.exit53 +205: ; preds = %_ZNK7QCPBars4dataEv.exit55 %206 = getelementptr inbounds nuw i8, ptr %204, i64 8 %207 = load ptr, ptr %206, align 8 - %.not.i.i.i.i.i.i55 = icmp eq ptr %207, null - br i1 %.not.i.i.i.i.i.i55, label %_ZNK17QArrayDataPointerI11QCPBarsDataE11needsDetachEv.exit.thread.i.i.i.i.i, label %_ZNK17QArrayDataPointerI11QCPBarsDataE11needsDetachEv.exit.i.i.i.i.i + %.not.i.i.i.i.i.i57 = icmp eq ptr %207, null + br i1 %.not.i.i.i.i.i.i57, label %_ZNK17QArrayDataPointerI11QCPBarsDataE11needsDetachEv.exit.thread.i.i.i.i.i, label %_ZNK17QArrayDataPointerI11QCPBarsDataE11needsDetachEv.exit.i.i.i.i.i _ZNK17QArrayDataPointerI11QCPBarsDataE11needsDetachEv.exit.i.i.i.i.i: ; preds = %205 %208 = load atomic i32, ptr %207 monotonic, align 4 @@ -22210,10 +22214,10 @@ _ZN16QCPDataContainerI11QCPBarsDataE5beginEv.exit.i: ; preds = %_ZNK17QArrayData br label %217 217: ; preds = %224, %_ZN16QCPDataContainerI11QCPBarsDataE5beginEv.exit.i - %.sroa.0.0.i56 = phi ptr [ %215, %_ZN16QCPDataContainerI11QCPBarsDataE5beginEv.exit.i ], [ %228, %224 ] + %.sroa.0.0.i58 = phi ptr [ %215, %_ZN16QCPDataContainerI11QCPBarsDataE5beginEv.exit.i ], [ %228, %224 ] %218 = load ptr, ptr %206, align 8 - %.not.i.i.i.i.i3.i57 = icmp eq ptr %218, null - br i1 %.not.i.i.i.i.i3.i57, label %_ZNK17QArrayDataPointerI11QCPBarsDataE11needsDetachEv.exit.thread.i.i.i.i5.i, label %_ZNK17QArrayDataPointerI11QCPBarsDataE11needsDetachEv.exit.i.i.i.i4.i + %.not.i.i.i.i.i3.i59 = icmp eq ptr %218, null + br i1 %.not.i.i.i.i.i3.i59, label %_ZNK17QArrayDataPointerI11QCPBarsDataE11needsDetachEv.exit.thread.i.i.i.i5.i, label %_ZNK17QArrayDataPointerI11QCPBarsDataE11needsDetachEv.exit.i.i.i.i4.i _ZNK17QArrayDataPointerI11QCPBarsDataE11needsDetachEv.exit.i.i.i.i4.i: ; preds = %217 %219 = load atomic i32, ptr %218 monotonic, align 4 @@ -22228,38 +22232,38 @@ _ZN16QCPDataContainerI11QCPBarsDataE3endEv.exit.i: ; preds = %_ZNK17QArrayDataPo %221 = load ptr, ptr %210, align 8 %222 = load i64, ptr %216, align 8 %223 = getelementptr %class.QCPBarsData, ptr %221, i64 %222 - %.not8.i58 = icmp eq ptr %.sroa.0.0.i56, %223 - br i1 %.not8.i58, label %_ZN7IOGraph14scaleGraphDataI16QCPDataContainerI11QCPBarsDataEEEvRT_i.exit, label %224 + %.not8.i60 = icmp eq ptr %.sroa.0.0.i58, %223 + br i1 %.not8.i60, label %_ZN7IOGraph14scaleGraphDataI16QCPDataContainerI11QCPBarsDataEEEvRT_i.exit, label %224 224: ; preds = %_ZN16QCPDataContainerI11QCPBarsDataE3endEv.exit.i - %225 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i56, i64 8 + %225 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i58, i64 8 %226 = load double, ptr %225, align 8 %227 = fmul double %.0, %226 store double %227, ptr %225, align 8 - %228 = getelementptr i8, ptr %.sroa.0.0.i56, i64 16 + %228 = getelementptr i8, ptr %.sroa.0.0.i58, i64 16 br label %217, !llvm.loop !152 -_ZN7IOGraph14scaleGraphDataI16QCPDataContainerI11QCPBarsDataEEEvRT_i.exit: ; preds = %_ZN16QCPDataContainerI11QCPBarsDataE3endEv.exit.i, %_ZNK7QCPBars4dataEv.exit53 +_ZN7IOGraph14scaleGraphDataI16QCPDataContainerI11QCPBarsDataEEEvRT_i.exit: ; preds = %_ZN16QCPDataContainerI11QCPBarsDataE3endEv.exit.i, %_ZNK7QCPBars4dataEv.exit55 %229 = load ptr, ptr %196, align 8 - %.not.i.i.i61 = icmp eq ptr %229, null - br i1 %.not.i.i.i61, label %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit51, label %230 + %.not.i.i.i63 = icmp eq ptr %229, null + br i1 %.not.i.i.i63, label %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit53, label %230 230: ; preds = %_ZN7IOGraph14scaleGraphDataI16QCPDataContainerI11QCPBarsDataEEEvRT_i.exit %231 = getelementptr inbounds nuw i8, ptr %229, i64 4 %232 = atomicrmw sub ptr %231, i32 1 seq_cst, align 4 - %.not5.i.i.i62 = icmp eq i32 %232, 1 - br i1 %.not5.i.i.i62, label %233, label %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i63 + %.not5.i.i.i64 = icmp eq i32 %232, 1 + br i1 %.not5.i.i.i64, label %233, label %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i65 233: ; preds = %230 %234 = getelementptr inbounds nuw i8, ptr %229, i64 8 %235 = load ptr, ptr %234, align 8 invoke void %235(ptr noundef nonnull align 8 dereferenceable(16) %229) - to label %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i63 unwind label %237 + to label %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i65 unwind label %237 -_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i63: ; preds = %233, %230 +_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i65: ; preds = %233, %230 %236 = atomicrmw sub ptr %229, i32 1 seq_cst, align 4 - %.not6.i.i.i64 = icmp eq i32 %236, 1 - br i1 %.not6.i.i.i64, label %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit51.sink.split, label %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit51 + %.not6.i.i.i66 = icmp eq i32 %236, 1 + br i1 %.not6.i.i.i66, label %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit53.sink.split, label %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit53 237: ; preds = %233 %238 = landingpad { ptr, i32 } @@ -22283,16 +22287,16 @@ _ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i63: ; preds = %23 call void @_ZN14QSharedPointerI16QCPDataContainerI11QCPBarsDataEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #27 br label %241 -_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit51.sink.split: ; preds = %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i63, %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i49 - %.sink80 = phi ptr [ %178, %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i49 ], [ %229, %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i63 ] - call void @_ZdlPv(ptr noundef nonnull %.sink80) #27 - br label %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit51 +_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit53.sink.split: ; preds = %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i65, %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i51 + %.sink82 = phi ptr [ %178, %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i51 ], [ %229, %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i65 ] + call void @_ZdlPv(ptr noundef nonnull %.sink82) #27 + br label %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit53 -_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit51: ; preds = %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit51.sink.split, %60, %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i63, %_ZN7IOGraph14scaleGraphDataI16QCPDataContainerI11QCPBarsDataEEEvRT_i.exit, %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i49, %_ZN7IOGraph14scaleGraphDataI16QCPDataContainerI12QCPGraphDataEEEvRT_i.exit, %190, %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit, %17, %_ZN7QString5clearEv.exit, %20 +_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit53: ; preds = %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit53.sink.split, %60, %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i65, %_ZN7IOGraph14scaleGraphDataI16QCPDataContainerI11QCPBarsDataEEEvRT_i.exit, %_ZN15QtSharedPointer20ExternalRefCountData7destroyEv.exit.i.i.i51, %_ZN7IOGraph14scaleGraphDataI16QCPDataContainerI12QCPGraphDataEEEvRT_i.exit, %190, %_ZN14QSharedPointerI16QCPDataContainerI12QCPGraphDataEED2Ev.exit, %17, %_ZN7QString5clearEv.exit, %20 ret void 241: ; preds = %240, %189 - %.pn = phi { ptr, i32 } [ %lpad.phi71, %189 ], [ %lpad.phi, %240 ] + %.pn = phi { ptr, i32 } [ %lpad.phi73, %189 ], [ %lpad.phi, %240 ] resume { ptr, i32 } %.pn } diff --git a/bench/wireshark/optimized/packet_list.cpp.ll b/bench/wireshark/optimized/packet_list.cpp.ll index 8c2d7ca87ce..530b8ca0ba9 100644 --- a/bench/wireshark/optimized/packet_list.cpp.ll +++ b/bench/wireshark/optimized/packet_list.cpp.ll @@ -5443,21 +5443,26 @@ _ZN17QArrayDataPointerI11QModelIndexE5derefEv.exit.i.i77: ; preds = %_ZN5QListIi %163 = getelementptr inbounds nuw i8, ptr %0, i64 440 %164 = load i64, ptr %163, align 8 %165 = icmp slt i64 %164, %162 - br i1 %165, label %_ZN9QtPrivate12QPodArrayOpsIiE16appendInitializeEx.exit.i, label %_ZN5QListIiE6resizeEx.exit + br i1 %165, label %166, label %_ZN5QListIiE6resizeEx.exit -_ZN9QtPrivate12QPodArrayOpsIiE16appendInitializeEx.exit.i: ; preds = %157 - %166 = getelementptr inbounds nuw i8, ptr %0, i64 432 - %167 = load ptr, ptr %166, align 8 +166: ; preds = %157 + %167 = getelementptr inbounds nuw i8, ptr %0, i64 432 + %168 = load ptr, ptr %167, align 8 + %.idx.i.i = shl i64 %164, 2 store i64 %162, ptr %163, align 8 - %168 = getelementptr i32, ptr %167, i64 %164 - %169 = sub i64 %162, %164 - %170 = shl i64 %169, 2 - call void @llvm.memset.p0.i64(ptr align 4 %168, i8 0, i64 %170, i1 false) + %.idx6.i.i = shl nsw i64 %162, 2 + %.not4.i.i = icmp eq i64 %.idx.i.i, %.idx6.i.i + br i1 %.not4.i.i, label %_ZN5QListIiE6resizeEx.exit, label %.lr.ph.preheader.i.i + +.lr.ph.preheader.i.i: ; preds = %166 + %169 = getelementptr i8, ptr %168, i64 %.idx.i.i + %170 = sub i64 %.idx6.i.i, %.idx.i.i + call void @llvm.memset.p0.i64(ptr align 4 %169, i8 0, i64 %170, i1 false) %.pre = load i64, ptr %163, align 8 br label %_ZN5QListIiE6resizeEx.exit -_ZN5QListIiE6resizeEx.exit: ; preds = %157, %_ZN9QtPrivate12QPodArrayOpsIiE16appendInitializeEx.exit.i - %171 = phi i64 [ %164, %157 ], [ %.pre, %_ZN9QtPrivate12QPodArrayOpsIiE16appendInitializeEx.exit.i ] +_ZN5QListIiE6resizeEx.exit: ; preds = %157, %166, %.lr.ph.preheader.i.i + %171 = phi i64 [ %164, %157 ], [ %162, %166 ], [ %.pre, %.lr.ph.preheader.i.i ] %172 = load ptr, ptr %17, align 8 %173 = getelementptr inbounds nuw i8, ptr %172, i64 376 %174 = load ptr, ptr %173, align 8 diff --git a/bench/wireshark/optimized/resolved_addresses_models.cpp.ll b/bench/wireshark/optimized/resolved_addresses_models.cpp.ll index ce2e4422cbb..2943d852afd 100644 --- a/bench/wireshark/optimized/resolved_addresses_models.cpp.ll +++ b/bench/wireshark/optimized/resolved_addresses_models.cpp.ll @@ -2201,7 +2201,7 @@ define linkonce_odr void @_ZN5QListIS_I7QStringEE5clearEv(ptr noundef nonnull al %4 = getelementptr inbounds nuw i8, ptr %0, i64 16 %5 = load i64, ptr %4, align 8 %.not = icmp eq i64 %5, 0 - br i1 %.not, label %40, label %6 + br i1 %.not, label %41, label %6 6: ; preds = %1 %7 = load ptr, ptr %0, align 8 @@ -2211,7 +2211,7 @@ define linkonce_odr void @_ZN5QListIS_I7QStringEE5clearEv(ptr noundef nonnull al _ZNK17QArrayDataPointerI5QListI7QStringEE11needsDetachEv.exit: ; preds = %6 %8 = load atomic i32, ptr %7 monotonic, align 4 %9 = icmp sgt i32 %8, 1 - br i1 %9, label %10, label %.lr.ph.i.i.i.preheader.i + br i1 %9, label %10, label %22 10: ; preds = %_ZNK17QArrayDataPointerI5QListI7QStringEE11needsDetachEv.exit %11 = getelementptr inbounds nuw i8, ptr %7, i64 8 @@ -2238,71 +2238,73 @@ _ZN17QArrayDataPointerI5QListI7QStringEE17allocatedCapacityEv.exit: ; preds = %6 store i64 0, ptr %4, align 8 store i64 %21, ptr %17, align 8 call void @_ZN17QArrayDataPointerI5QListI7QStringEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #12 - br label %40 - -.lr.ph.i.i.i.preheader.i: ; preds = %_ZNK17QArrayDataPointerI5QListI7QStringEE11needsDetachEv.exit - %22 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %23 = load ptr, ptr %22, align 8 - %24 = getelementptr %class.QList.0, ptr %23, i64 %5 - br label %.lr.ph.i.i.i.i - -.lr.ph.i.i.i.i: ; preds = %_ZSt8_DestroyI5QListI7QStringEEvPT_.exit.i.i.i.i, %.lr.ph.i.i.i.preheader.i - %.05.i.i.i.i = phi ptr [ %39, %_ZSt8_DestroyI5QListI7QStringEEvPT_.exit.i.i.i.i ], [ %23, %.lr.ph.i.i.i.preheader.i ] - %25 = load ptr, ptr %.05.i.i.i.i, align 8 - %.not.i.i.i.i.i.i.i.i = icmp eq ptr %25, null + br label %41 + +22: ; preds = %_ZNK17QArrayDataPointerI5QListI7QStringEE11needsDetachEv.exit + %23 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %24 = load ptr, ptr %23, align 8 + %.idx2.i = mul i64 %5, 24 + %25 = getelementptr i8, ptr %24, i64 %.idx2.i + %.not4.i.i.i.i = icmp eq i64 %.idx2.i, 0 + br i1 %.not4.i.i.i.i, label %_ZN9QtPrivate16QGenericArrayOpsI5QListI7QStringEE8truncateEm.exit, label %.lr.ph.i.i.i.i + +.lr.ph.i.i.i.i: ; preds = %22, %_ZSt8_DestroyI5QListI7QStringEEvPT_.exit.i.i.i.i + %.05.i.i.i.i = phi ptr [ %40, %_ZSt8_DestroyI5QListI7QStringEEvPT_.exit.i.i.i.i ], [ %24, %22 ] + %26 = load ptr, ptr %.05.i.i.i.i, align 8 + %.not.i.i.i.i.i.i.i.i = icmp eq ptr %26, null br i1 %.not.i.i.i.i.i.i.i.i, label %_ZSt8_DestroyI5QListI7QStringEEvPT_.exit.i.i.i.i, label %_ZN17QArrayDataPointerI7QStringE5derefEv.exit.i.i.i.i.i.i.i _ZN17QArrayDataPointerI7QStringE5derefEv.exit.i.i.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i - %26 = atomicrmw sub ptr %25, i32 1 seq_cst, align 4 - %.not.i.i.i.i.i.i.i = icmp eq i32 %26, 1 - br i1 %.not.i.i.i.i.i.i.i, label %27, label %_ZSt8_DestroyI5QListI7QStringEEvPT_.exit.i.i.i.i - -27: ; preds = %_ZN17QArrayDataPointerI7QStringE5derefEv.exit.i.i.i.i.i.i.i - %28 = getelementptr inbounds nuw i8, ptr %.05.i.i.i.i, i64 8 - %29 = load ptr, ptr %28, align 8 - %30 = getelementptr inbounds nuw i8, ptr %.05.i.i.i.i, i64 16 - %31 = load i64, ptr %30, align 8 - %32 = getelementptr %class.QString, ptr %29, i64 %31 - %.idx.i.i.i.i.i.i.i.i = mul i64 %31, 24 + %27 = atomicrmw sub ptr %26, i32 1 seq_cst, align 4 + %.not.i.i.i.i.i.i.i = icmp eq i32 %27, 1 + br i1 %.not.i.i.i.i.i.i.i, label %28, label %_ZSt8_DestroyI5QListI7QStringEEvPT_.exit.i.i.i.i + +28: ; preds = %_ZN17QArrayDataPointerI7QStringE5derefEv.exit.i.i.i.i.i.i.i + %29 = getelementptr inbounds nuw i8, ptr %.05.i.i.i.i, i64 8 + %30 = load ptr, ptr %29, align 8 + %31 = getelementptr inbounds nuw i8, ptr %.05.i.i.i.i, i64 16 + %32 = load i64, ptr %31, align 8 + %33 = getelementptr %class.QString, ptr %30, i64 %32 + %.idx.i.i.i.i.i.i.i.i = mul i64 %32, 24 %.not4.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %.idx.i.i.i.i.i.i.i.i, 0 br i1 %.not4.i.i.i.i.i.i.i.i.i.i.i, label %_ZN9QtPrivate16QGenericArrayOpsI7QStringE10destroyAllEv.exit.i.i.i.i.i.i.i, label %.lr.ph.i.i.i.i.i.i.i.i.i.i.i -.lr.ph.i.i.i.i.i.i.i.i.i.i.i: ; preds = %27, %_ZSt8_DestroyI7QStringEvPT_.exit.i.i.i.i.i.i.i.i.i.i.i - %.05.i.i.i.i.i.i.i.i.i.i.i = phi ptr [ %37, %_ZSt8_DestroyI7QStringEvPT_.exit.i.i.i.i.i.i.i.i.i.i.i ], [ %29, %27 ] - %33 = load ptr, ptr %.05.i.i.i.i.i.i.i.i.i.i.i, align 8 - %.not.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %33, null +.lr.ph.i.i.i.i.i.i.i.i.i.i.i: ; preds = %28, %_ZSt8_DestroyI7QStringEvPT_.exit.i.i.i.i.i.i.i.i.i.i.i + %.05.i.i.i.i.i.i.i.i.i.i.i = phi ptr [ %38, %_ZSt8_DestroyI7QStringEvPT_.exit.i.i.i.i.i.i.i.i.i.i.i ], [ %30, %28 ] + %34 = load ptr, ptr %.05.i.i.i.i.i.i.i.i.i.i.i, align 8 + %.not.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %34, null br i1 %.not.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, label %_ZSt8_DestroyI7QStringEvPT_.exit.i.i.i.i.i.i.i.i.i.i.i, label %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i.i.i.i.i.i.i.i.i.i.i.i _ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i.i.i.i.i.i.i.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i.i.i.i.i.i.i - %34 = atomicrmw sub ptr %33, i32 1 seq_cst, align 4 - %.not.i.i.i.i.i.i.i.i.i.i.i.i.i.i = icmp eq i32 %34, 1 - br i1 %.not.i.i.i.i.i.i.i.i.i.i.i.i.i.i, label %35, label %_ZSt8_DestroyI7QStringEvPT_.exit.i.i.i.i.i.i.i.i.i.i.i + %35 = atomicrmw sub ptr %34, i32 1 seq_cst, align 4 + %.not.i.i.i.i.i.i.i.i.i.i.i.i.i.i = icmp eq i32 %35, 1 + br i1 %.not.i.i.i.i.i.i.i.i.i.i.i.i.i.i, label %36, label %_ZSt8_DestroyI7QStringEvPT_.exit.i.i.i.i.i.i.i.i.i.i.i -35: ; preds = %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i.i.i.i.i.i.i.i.i.i.i.i - %36 = load ptr, ptr %.05.i.i.i.i.i.i.i.i.i.i.i, align 8 - tail call void @_ZN10QArrayData10deallocateEPS_xx(ptr noundef %36, i64 noundef 2, i64 noundef 8) #12 +36: ; preds = %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i.i.i.i.i.i.i.i.i.i.i.i + %37 = load ptr, ptr %.05.i.i.i.i.i.i.i.i.i.i.i, align 8 + tail call void @_ZN10QArrayData10deallocateEPS_xx(ptr noundef %37, i64 noundef 2, i64 noundef 8) #12 br label %_ZSt8_DestroyI7QStringEvPT_.exit.i.i.i.i.i.i.i.i.i.i.i -_ZSt8_DestroyI7QStringEvPT_.exit.i.i.i.i.i.i.i.i.i.i.i: ; preds = %35, %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i.i.i.i.i.i.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i.i.i.i.i.i.i - %37 = getelementptr i8, ptr %.05.i.i.i.i.i.i.i.i.i.i.i, i64 24 - %.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %37, %32 +_ZSt8_DestroyI7QStringEvPT_.exit.i.i.i.i.i.i.i.i.i.i.i: ; preds = %36, %_ZN17QArrayDataPointerIDsE5derefEv.exit.i.i.i.i.i.i.i.i.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i.i.i.i.i.i.i + %38 = getelementptr i8, ptr %.05.i.i.i.i.i.i.i.i.i.i.i, i64 24 + %.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %38, %33 br i1 %.not.i.i.i.i.i.i.i.i.i.i.i, label %_ZN9QtPrivate16QGenericArrayOpsI7QStringE10destroyAllEv.exit.i.i.i.i.i.i.i, label %.lr.ph.i.i.i.i.i.i.i.i.i.i.i, !llvm.loop !7 -_ZN9QtPrivate16QGenericArrayOpsI7QStringE10destroyAllEv.exit.i.i.i.i.i.i.i: ; preds = %_ZSt8_DestroyI7QStringEvPT_.exit.i.i.i.i.i.i.i.i.i.i.i, %27 - %38 = load ptr, ptr %.05.i.i.i.i, align 8 - tail call void @_ZN10QArrayData10deallocateEPS_xx(ptr noundef %38, i64 noundef 24, i64 noundef 8) #12 +_ZN9QtPrivate16QGenericArrayOpsI7QStringE10destroyAllEv.exit.i.i.i.i.i.i.i: ; preds = %_ZSt8_DestroyI7QStringEvPT_.exit.i.i.i.i.i.i.i.i.i.i.i, %28 + %39 = load ptr, ptr %.05.i.i.i.i, align 8 + tail call void @_ZN10QArrayData10deallocateEPS_xx(ptr noundef %39, i64 noundef 24, i64 noundef 8) #12 br label %_ZSt8_DestroyI5QListI7QStringEEvPT_.exit.i.i.i.i _ZSt8_DestroyI5QListI7QStringEEvPT_.exit.i.i.i.i: ; preds = %_ZN9QtPrivate16QGenericArrayOpsI7QStringE10destroyAllEv.exit.i.i.i.i.i.i.i, %_ZN17QArrayDataPointerI7QStringE5derefEv.exit.i.i.i.i.i.i.i, %.lr.ph.i.i.i.i - %39 = getelementptr i8, ptr %.05.i.i.i.i, i64 24 - %.not.i.i.i.i = icmp eq ptr %39, %24 + %40 = getelementptr i8, ptr %.05.i.i.i.i, i64 24 + %.not.i.i.i.i = icmp eq ptr %40, %25 br i1 %.not.i.i.i.i, label %_ZN9QtPrivate16QGenericArrayOpsI5QListI7QStringEE8truncateEm.exit, label %.lr.ph.i.i.i.i, !llvm.loop !22 -_ZN9QtPrivate16QGenericArrayOpsI5QListI7QStringEE8truncateEm.exit: ; preds = %_ZSt8_DestroyI5QListI7QStringEEvPT_.exit.i.i.i.i +_ZN9QtPrivate16QGenericArrayOpsI5QListI7QStringEE8truncateEm.exit: ; preds = %_ZSt8_DestroyI5QListI7QStringEEvPT_.exit.i.i.i.i, %22 store i64 0, ptr %4, align 8 - br label %40 + br label %41 -40: ; preds = %1, %_ZN9QtPrivate16QGenericArrayOpsI5QListI7QStringEE8truncateEm.exit, %_ZN17QArrayDataPointerI5QListI7QStringEE17allocatedCapacityEv.exit +41: ; preds = %1, %_ZN9QtPrivate16QGenericArrayOpsI5QListI7QStringEE8truncateEm.exit, %_ZN17QArrayDataPointerI5QListI7QStringEE17allocatedCapacityEv.exit ret void } diff --git a/bench/wireshark/optimized/uat_model.cpp.ll b/bench/wireshark/optimized/uat_model.cpp.ll index 535340b7261..7d6a86ab577 100644 --- a/bench/wireshark/optimized/uat_model.cpp.ll +++ b/bench/wireshark/optimized/uat_model.cpp.ll @@ -4212,7 +4212,7 @@ define linkonce_odr void @_ZN5QListI4QMapIi7QStringEE5clearEv(ptr noundef nonnul _ZNK17QArrayDataPointerI4QMapIi7QStringEE11needsDetachEv.exit: ; preds = %5 %7 = load atomic i32, ptr %6 monotonic, align 4 %8 = icmp sgt i32 %7, 1 - br i1 %8, label %9, label %.lr.ph.i.i.i.preheader.i + br i1 %8, label %9, label %36 9: ; preds = %_ZNK17QArrayDataPointerI4QMapIi7QStringEE11needsDetachEv.exit %10 = getelementptr inbounds nuw i8, ptr %6, i64 8 @@ -4290,52 +4290,54 @@ _ZN9QtPrivate16QGenericArrayOpsI4QMapIi7QStringEE10destroyAllEv.exit.i: ; preds call void @_ZN10QArrayData10deallocateEPS_xx(ptr noundef nonnull %15, i64 noundef 8, i64 noundef 8) #19 br label %_ZN17QArrayDataPointerI4QMapIi7QStringEED2Ev.exit -.lr.ph.i.i.i.preheader.i: ; preds = %_ZNK17QArrayDataPointerI4QMapIi7QStringEE11needsDetachEv.exit - %36 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %37 = load ptr, ptr %36, align 8 - %38 = getelementptr %class.QMap, ptr %37, i64 %4 - br label %.lr.ph.i.i.i.i - -.lr.ph.i.i.i.i: ; preds = %_ZSt8_DestroyI4QMapIi7QStringEEvPT_.exit.i.i.i.i, %.lr.ph.i.i.i.preheader.i - %.05.i.i.i.i = phi ptr [ %52, %_ZSt8_DestroyI4QMapIi7QStringEEvPT_.exit.i.i.i.i ], [ %37, %.lr.ph.i.i.i.preheader.i ] - %39 = load ptr, ptr %.05.i.i.i.i, align 8 - %.not.i.i.i.i.i.i.i = icmp eq ptr %39, null - br i1 %.not.i.i.i.i.i.i.i, label %_ZSt8_DestroyI4QMapIi7QStringEEvPT_.exit.i.i.i.i, label %40 - -40: ; preds = %.lr.ph.i.i.i.i - %41 = atomicrmw sub ptr %39, i32 1 seq_cst, align 4 - %.not2.i.i.i.i.i.i.i = icmp eq i32 %41, 1 - br i1 %.not2.i.i.i.i.i.i.i, label %42, label %_ZSt8_DestroyI4QMapIi7QStringEEvPT_.exit.i.i.i.i - -42: ; preds = %40 - %43 = load ptr, ptr %.05.i.i.i.i, align 8 - %44 = icmp eq ptr %43, null - br i1 %44, label %_ZSt8_DestroyI4QMapIi7QStringEEvPT_.exit.i.i.i.i, label %45 - -45: ; preds = %42 - %46 = getelementptr inbounds nuw i8, ptr %43, i64 8 - %47 = getelementptr inbounds nuw i8, ptr %43, i64 24 - %48 = load ptr, ptr %47, align 8 - invoke void @_ZNSt8_Rb_treeIiSt4pairIKi7QStringESt10_Select1stIS3_ESt4lessIiESaIS3_EE8_M_eraseEPSt13_Rb_tree_nodeIS3_E(ptr noundef nonnull align 8 dereferenceable(48) %46, ptr noundef %48) - to label %_ZN8QMapDataISt3mapIi7QStringSt4lessIiESaISt4pairIKiS1_EEEED2Ev.exit.i.i.i.i.i.i.i unwind label %49 +36: ; preds = %_ZNK17QArrayDataPointerI4QMapIi7QStringEE11needsDetachEv.exit + %37 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %38 = load ptr, ptr %37, align 8 + %.idx2.i = shl i64 %4, 3 + %39 = getelementptr i8, ptr %38, i64 %.idx2.i + %.not4.i.i.i.i = icmp eq i64 %.idx2.i, 0 + br i1 %.not4.i.i.i.i, label %_ZN9QtPrivate16QGenericArrayOpsI4QMapIi7QStringEE8truncateEm.exit, label %.lr.ph.i.i.i.i + +.lr.ph.i.i.i.i: ; preds = %36, %_ZSt8_DestroyI4QMapIi7QStringEEvPT_.exit.i.i.i.i + %.05.i.i.i.i = phi ptr [ %53, %_ZSt8_DestroyI4QMapIi7QStringEEvPT_.exit.i.i.i.i ], [ %38, %36 ] + %40 = load ptr, ptr %.05.i.i.i.i, align 8 + %.not.i.i.i.i.i.i.i = icmp eq ptr %40, null + br i1 %.not.i.i.i.i.i.i.i, label %_ZSt8_DestroyI4QMapIi7QStringEEvPT_.exit.i.i.i.i, label %41 + +41: ; preds = %.lr.ph.i.i.i.i + %42 = atomicrmw sub ptr %40, i32 1 seq_cst, align 4 + %.not2.i.i.i.i.i.i.i = icmp eq i32 %42, 1 + br i1 %.not2.i.i.i.i.i.i.i, label %43, label %_ZSt8_DestroyI4QMapIi7QStringEEvPT_.exit.i.i.i.i + +43: ; preds = %41 + %44 = load ptr, ptr %.05.i.i.i.i, align 8 + %45 = icmp eq ptr %44, null + br i1 %45, label %_ZSt8_DestroyI4QMapIi7QStringEEvPT_.exit.i.i.i.i, label %46 + +46: ; preds = %43 + %47 = getelementptr inbounds nuw i8, ptr %44, i64 8 + %48 = getelementptr inbounds nuw i8, ptr %44, i64 24 + %49 = load ptr, ptr %48, align 8 + invoke void @_ZNSt8_Rb_treeIiSt4pairIKi7QStringESt10_Select1stIS3_ESt4lessIiESaIS3_EE8_M_eraseEPSt13_Rb_tree_nodeIS3_E(ptr noundef nonnull align 8 dereferenceable(48) %47, ptr noundef %49) + to label %_ZN8QMapDataISt3mapIi7QStringSt4lessIiESaISt4pairIKiS1_EEEED2Ev.exit.i.i.i.i.i.i.i unwind label %50 -49: ; preds = %45 - %50 = landingpad { ptr, i32 } +50: ; preds = %46 + %51 = landingpad { ptr, i32 } catch ptr null - %51 = extractvalue { ptr, i32 } %50, 0 - tail call void @__clang_call_terminate(ptr %51) #20 + %52 = extractvalue { ptr, i32 } %51, 0 + tail call void @__clang_call_terminate(ptr %52) #20 unreachable -_ZN8QMapDataISt3mapIi7QStringSt4lessIiESaISt4pairIKiS1_EEEED2Ev.exit.i.i.i.i.i.i.i: ; preds = %45 - tail call void @_ZdlPv(ptr noundef nonnull %43) #21 +_ZN8QMapDataISt3mapIi7QStringSt4lessIiESaISt4pairIKiS1_EEEED2Ev.exit.i.i.i.i.i.i.i: ; preds = %46 + tail call void @_ZdlPv(ptr noundef nonnull %44) #21 br label %_ZSt8_DestroyI4QMapIi7QStringEEvPT_.exit.i.i.i.i -_ZSt8_DestroyI4QMapIi7QStringEEvPT_.exit.i.i.i.i: ; preds = %_ZN8QMapDataISt3mapIi7QStringSt4lessIiESaISt4pairIKiS1_EEEED2Ev.exit.i.i.i.i.i.i.i, %42, %40, %.lr.ph.i.i.i.i - %52 = getelementptr i8, ptr %.05.i.i.i.i, i64 8 - %.not.i.i.i.i = icmp eq ptr %52, %38 +_ZSt8_DestroyI4QMapIi7QStringEEvPT_.exit.i.i.i.i: ; preds = %_ZN8QMapDataISt3mapIi7QStringSt4lessIiESaISt4pairIKiS1_EEEED2Ev.exit.i.i.i.i.i.i.i, %43, %41, %.lr.ph.i.i.i.i + %53 = getelementptr i8, ptr %.05.i.i.i.i, i64 8 + %.not.i.i.i.i = icmp eq ptr %53, %39 br i1 %.not.i.i.i.i, label %_ZN9QtPrivate16QGenericArrayOpsI4QMapIi7QStringEE8truncateEm.exit, label %.lr.ph.i.i.i.i, !llvm.loop !6 -_ZN9QtPrivate16QGenericArrayOpsI4QMapIi7QStringEE8truncateEm.exit: ; preds = %_ZSt8_DestroyI4QMapIi7QStringEEvPT_.exit.i.i.i.i +_ZN9QtPrivate16QGenericArrayOpsI4QMapIi7QStringEE8truncateEm.exit: ; preds = %_ZSt8_DestroyI4QMapIi7QStringEEvPT_.exit.i.i.i.i, %36 store i64 0, ptr %3, align 8 br label %_ZN17QArrayDataPointerI4QMapIi7QStringEED2Ev.exit