From a1a485c6873950f1de040e6c077465826c369557 Mon Sep 17 00:00:00 2001 From: dtcxzyw <15650457+dtcxzyw@users.noreply.github.com> Date: Thu, 8 May 2025 21:08:04 +0800 Subject: [PATCH 1/3] pre-commit: PR137875 --- 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..27cc356112c 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/137875 export COMPTIME_MODE=0 # Please rebase manually From 4dae125ef5c936c77e28432e140d02974a33c37f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 8 May 2025 13:24:54 +0000 Subject: [PATCH 2/3] pre-commit: Update --- bench/abc/optimized/abc.ll | 100 ++- bench/abc/optimized/bmcMulti.ll | 13 +- bench/abc/optimized/cecSatG2.ll | 386 +++++---- bench/abc/optimized/giaCof.ll | 55 +- bench/abc/optimized/giaEquiv.ll | 248 +++--- bench/abc/optimized/giaPat2.ll | 462 +++++----- .../abseil-cpp/optimized/float_conversion.ll | 453 +++++----- bench/abseil-cpp/optimized/gtest-all.ll | 162 ++-- bench/abseil-cpp/optimized/int128.ll | 468 +++++----- bench/fmt/optimized/format-impl-test.ll | 139 ++- bench/freetype/optimized/sfnt.ll | 456 +++++----- bench/hdf5/optimized/H5Fsuper_cache.ll | 29 +- bench/imgui/optimized/imgui_draw.ll | 801 +++++++++--------- bench/linux/optimized/tree.ll | 694 ++++++++------- bench/llvm/optimized/RISCVMergeBaseOffset.ll | 30 +- bench/llvm/optimized/blake3.ll | 387 +++++---- .../optimized/2eqafq69fd46y14a.ll | 694 ++++++++------- bench/meshlab/optimized/gltf_loader.ll | 302 ++++--- bench/mold/optimized/arch-m68k.ll | 394 ++++----- bench/mold/optimized/arch-sparc64.ll | 514 +++++------ bench/mold/optimized/blake3.ll | 437 +++++----- bench/openjdk/optimized/hb-ot-name.ll | 221 +++-- bench/openjdk/optimized/utf8.ll | 119 ++- bench/openssl/optimized/d1_lib.ll | 625 +++++++------- bench/openssl/optimized/statem_srvr.ll | 99 ++- bench/php/optimized/pcre2_auto_possess.ll | 117 ++- bench/php/optimized/pcre2_study.ll | 35 +- bench/qemu/optimized/fdt.ll | 51 +- bench/qemu/optimized/fdt_sw.ll | 337 ++++---- .../optimized/imguiRenderGL.ll | 367 ++++---- .../optimized/36cskjvhktchzlnh.ll | 10 +- .../optimized/5ac99zaxn7b9r9xv.ll | 20 +- .../optimized/hf9vzunhg9aziex.ll | 40 +- .../optimized/hknx1qr3lu9291s.ll | 60 +- bench/spike/optimized/fdt.ll | 49 +- bench/spike/optimized/fdt_ro.ll | 269 +++--- bench/spike/optimized/fdt_sw.ll | 335 ++++---- bench/wireshark/optimized/netscaler.ll | 110 +-- bench/wireshark/optimized/packet-atm.ll | 187 ++-- bench/wireshark/optimized/packet-knet.ll | 143 ++-- .../wireshark/optimized/packet-opensafety.ll | 365 ++++---- bench/wireshark/optimized/tvbuff.ll | 644 +++++++------- bench/wolfssl/optimized/tls.ll | 432 +++++----- .../optimized/38cn6p2m6864jrrxog4mr8xwk.ll | 164 ++-- .../optimized/7ud3epkhjcjfe38h6hlh4jrau.ll | 186 ++-- 45 files changed, 6032 insertions(+), 6177 deletions(-) diff --git a/bench/abc/optimized/abc.ll b/bench/abc/optimized/abc.ll index 1cc53723a01..67d8b9239b7 100644 --- a/bench/abc/optimized/abc.ll +++ b/bench/abc/optimized/abc.ll @@ -54248,7 +54248,7 @@ define internal range(i32 0, 2) i32 @Abc_CommandAbc9Pms(ptr noundef readonly cap tail call void (...) @Extra_UtilGetoptReset() #32 %4 = tail call i32 @Extra_UtilGetopt(i32 noundef %1, ptr noundef %2, ptr noundef nonnull @.str.642) #32 %.not = icmp eq i32 %4, -1 - br i1 %.not, label %5, label %84 + br i1 %.not, label %5, label %82 5: ; preds = %3 %6 = getelementptr inbounds nuw i8, ptr %0, i64 288 @@ -54258,7 +54258,7 @@ define internal range(i32 0, 2) i32 @Abc_CommandAbc9Pms(ptr noundef readonly cap 9: ; preds = %5 tail call void (i32, ptr, ...) @Abc_Print(i32 noundef -1, ptr noundef nonnull @.str.3291) - br label %85 + br label %83 10: ; preds = %5 %11 = getelementptr i8, ptr %7, i64 16 @@ -54288,7 +54288,7 @@ define internal range(i32 0, 2) i32 @Abc_CommandAbc9Pms(ptr noundef readonly cap %.val34 = phi ptr [ %.val34.pre, %.lr.ph.preheader ], [ %.val37, %37 ] %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %37 ] %.val3144 = phi ptr [ %.val3140, %.lr.ph.preheader ], [ %.val31, %37 ] - %.043 = phi i32 [ 0, %.lr.ph.preheader ], [ %70, %37 ] + %.043 = phi i32 [ 0, %.lr.ph.preheader ], [ %68, %37 ] %21 = getelementptr i8, ptr %.val3144, i64 8 %.val35.val = load ptr, ptr %21, align 8, !tbaa !38 %22 = getelementptr inbounds nuw i32, ptr %.val35.val, i64 %indvars.iv @@ -54331,64 +54331,62 @@ define internal range(i32 0, 2) i32 @Abc_CommandAbc9Pms(ptr noundef readonly cap %47 = sub nsw i32 %44, %46 %48 = lshr i32 %45, 29 %49 = and i32 %48, 1 - %50 = shl nsw i32 %47, 1 - %51 = or disjoint i32 %50, %49 - %52 = icmp eq i32 %51, 0 - %53 = select i1 %52, ptr @.str.3298, ptr @.str.262 - %54 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3297, ptr noundef nonnull %53) - %55 = load ptr, ptr %6, align 8, !tbaa !60 - %56 = getelementptr i8, ptr %55, i64 32 - %.val37 = load ptr, ptr %56, align 8, !tbaa !855 - %57 = ptrtoint ptr %.val37 to i64 - %58 = sub i64 %40, %57 - %59 = sdiv exact i64 %58, 12 - %60 = trunc i64 %59 to i32 + %50 = or i32 %47, %49 + %51 = icmp eq i32 %50, 0 + %52 = select i1 %51, ptr @.str.3298, ptr @.str.262 + %53 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3297, ptr noundef nonnull %52) + %54 = load ptr, ptr %6, align 8, !tbaa !60 + %55 = getelementptr i8, ptr %54, i64 32 + %.val37 = load ptr, ptr %55, align 8, !tbaa !855 + %56 = ptrtoint ptr %.val37 to i64 + %57 = sub i64 %40, %56 + %58 = sdiv exact i64 %57, 12 + %59 = trunc i64 %58 to i32 %.val3.i.i38 = load i64, ptr %25, align 4 - %61 = trunc i64 %.val3.i.i38 to i32 - %62 = and i32 %61, 536870911 - %63 = sub nsw i32 %60, %62 - %64 = lshr i32 %61, 29 - %65 = and i32 %64, 1 - %66 = shl nsw i32 %63, 1 - %67 = or disjoint i32 %66, %65 - %68 = icmp ne i32 %67, 0 - %69 = zext i1 %68 to i32 - %70 = add nuw nsw i32 %.043, %69 + %60 = trunc i64 %.val3.i.i38 to i32 + %61 = and i32 %60, 536870911 + %62 = sub nsw i32 %59, %61 + %63 = lshr i32 %60, 29 + %64 = and i32 %63, 1 + %65 = or i32 %62, %64 + %66 = icmp ne i32 %65, 0 + %67 = zext i1 %66 to i32 + %68 = add nuw nsw i32 %.043, %67 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %71 = getelementptr i8, ptr %55, i64 16 - %.val30 = load i32, ptr %71, align 8, !tbaa !47 - %72 = getelementptr i8, ptr %55, i64 72 - %.val31 = load ptr, ptr %72, align 8, !tbaa !59 - %73 = getelementptr i8, ptr %.val31, i64 4 - %.val31.val = load i32, ptr %73, align 4, !tbaa !42 - %74 = sub nsw i32 %.val31.val, %.val30 - %75 = sext i32 %74 to i64 - %76 = icmp slt i64 %indvars.iv.next, %75 - br i1 %76, label %.lr.ph, label %.critedge, !llvm.loop !856 + %69 = getelementptr i8, ptr %54, i64 16 + %.val30 = load i32, ptr %69, align 8, !tbaa !47 + %70 = getelementptr i8, ptr %54, i64 72 + %.val31 = load ptr, ptr %70, align 8, !tbaa !59 + %71 = getelementptr i8, ptr %.val31, i64 4 + %.val31.val = load i32, ptr %71, align 4, !tbaa !42 + %72 = sub nsw i32 %.val31.val, %.val30 + %73 = sext i32 %72 to i64 + %74 = icmp slt i64 %indvars.iv.next, %73 + br i1 %74, label %.lr.ph, label %.critedge, !llvm.loop !856 .critedge: ; preds = %.lr.ph, %37, %10 - %.0.lcssa = phi i32 [ 0, %10 ], [ %70, %37 ], [ %.043, %.lr.ph ] + %.0.lcssa = phi i32 [ 0, %10 ], [ %68, %37 ], [ %.043, %.lr.ph ] %putchar = tail call i32 @putchar(i32 10) - %77 = load ptr, ptr %6, align 8, !tbaa !60 - %78 = getelementptr i8, ptr %77, i64 16 - %.val28 = load i32, ptr %78, align 8, !tbaa !47 - %79 = getelementptr i8, ptr %77, i64 72 - %.val29 = load ptr, ptr %79, align 8, !tbaa !59 - %80 = getelementptr i8, ptr %.val29, i64 4 - %.val29.val = load i32, ptr %80, align 4, !tbaa !42 - %81 = add i32 %.val28, %.0.lcssa - %82 = sub i32 %.val29.val, %81 - %83 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3299, i32 noundef %.0.lcssa, i32 noundef %82) - br label %85 + %75 = load ptr, ptr %6, align 8, !tbaa !60 + %76 = getelementptr i8, ptr %75, i64 16 + %.val28 = load i32, ptr %76, align 8, !tbaa !47 + %77 = getelementptr i8, ptr %75, i64 72 + %.val29 = load ptr, ptr %77, align 8, !tbaa !59 + %78 = getelementptr i8, ptr %.val29, i64 4 + %.val29.val = load i32, ptr %78, align 4, !tbaa !42 + %79 = add i32 %.val28, %.0.lcssa + %80 = sub i32 %.val29.val, %79 + %81 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3299, i32 noundef %.0.lcssa, i32 noundef %80) + br label %83 -84: ; preds = %3 +82: ; preds = %3 tail call void (i32, ptr, ...) @Abc_Print(i32 noundef -2, ptr noundef nonnull @.str.3300) tail call void (i32, ptr, ...) @Abc_Print(i32 noundef -2, ptr noundef nonnull @.str.3301) tail call void (i32, ptr, ...) @Abc_Print(i32 noundef -2, ptr noundef nonnull @.str.552) - br label %85 + br label %83 -85: ; preds = %84, %.critedge, %9 - %.022 = phi i32 [ 1, %84 ], [ 1, %9 ], [ 0, %.critedge ] +83: ; preds = %82, %.critedge, %9 + %.022 = phi i32 [ 1, %82 ], [ 1, %9 ], [ 0, %.critedge ] ret i32 %.022 } diff --git a/bench/abc/optimized/bmcMulti.ll b/bench/abc/optimized/bmcMulti.ll index a7680990b8e..dd060cd17e4 100644 --- a/bench/abc/optimized/bmcMulti.ll +++ b/bench/abc/optimized/bmcMulti.ll @@ -196,7 +196,7 @@ define i32 @Gia_ManCountConst0PosGia(ptr noundef readonly captures(none) %0) loc 9: ; preds = %.lr.ph.split, %9 %indvars.iv = phi i64 [ 0, %.lr.ph.split ], [ %indvars.iv.next, %9 ] - %.015 = phi i32 [ 0, %.lr.ph.split ], [ %23, %9 ] + %.015 = phi i32 [ 0, %.lr.ph.split ], [ %22, %9 ] %10 = getelementptr inbounds nuw i32, ptr %.val12.val, i64 %indvars.iv %11 = load i32, ptr %10, align 4, !tbaa !14 %12 = sext i32 %11 to i64 @@ -207,17 +207,16 @@ define i32 @Gia_ManCountConst0PosGia(ptr noundef readonly captures(none) %0) loc %16 = sub nsw i32 %11, %15 %17 = lshr i32 %14, 29 %18 = and i32 %17, 1 - %19 = shl nsw i32 %16, 1 - %20 = or disjoint i32 %19, %18 - %21 = icmp eq i32 %20, 0 - %22 = zext i1 %21 to i32 - %23 = add nuw nsw i32 %.015, %22 + %19 = or i32 %16, %18 + %20 = icmp eq i32 %19, 0 + %21 = zext i1 %20 to i32 + %22 = add nuw nsw i32 %.015, %21 %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 %.critedge, label %9, !llvm.loop !40 .critedge: ; preds = %9, %.lr.ph, %1 - %.0.lcssa = phi i32 [ 0, %1 ], [ 0, %.lr.ph ], [ %23, %9 ] + %.0.lcssa = phi i32 [ 0, %1 ], [ 0, %.lr.ph ], [ %22, %9 ] ret i32 %.0.lcssa } diff --git a/bench/abc/optimized/cecSatG2.ll b/bench/abc/optimized/cecSatG2.ll index 085fc211572..49eb197be51 100644 --- a/bench/abc/optimized/cecSatG2.ll +++ b/bench/abc/optimized/cecSatG2.ll @@ -9805,7 +9805,7 @@ define void @Cec4_ManSimulateDumpInfo(ptr noundef readonly captures(none) %0) lo %13 = getelementptr inbounds nuw i8, ptr %12, i64 104 %14 = load ptr, ptr %13, align 8, !tbaa !218 %15 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.35, ptr noundef %14) - br label %205 + br label %203 16: ; preds = %1 %17 = load ptr, ptr %2, align 8, !tbaa !69 @@ -9949,8 +9949,8 @@ Abc_TtIsConst0.exit: ; preds = %.lr.ph.i, %Abc_TtIs .lr.ph125.split.us: ; preds = %.lr.ph125 br i1 %.not61.us145, label %.critedge, label %.lr.ph149 -73: ; preds = %151 - %74 = getelementptr i8, ptr %152, i64 32 +73: ; preds = %150 + %74 = getelementptr i8, ptr %151, i64 32 %.val72.us = load ptr, ptr %74, align 8, !tbaa !94 %.not61.us = icmp eq ptr %.val72.us, null br i1 %.not61.us, label %.critedge, label %.lr.ph149, !llvm.loop !220 @@ -9981,236 +9981,234 @@ Abc_TtIsConst0.exit: ; preds = %.lr.ph.i, %Abc_TtIs %89 = sub nsw i32 %84, %88 %90 = lshr i32 %87, 29 %91 = and i32 %90, 1 - %92 = shl nsw i32 %89, 1 - %93 = or disjoint i32 %92, %91 - %94 = icmp eq i32 %93, 0 - br i1 %94, label %149, label %.lr.ph.i91.us - -.lr.ph.i91.us: ; preds = %.lr.ph149, %148 - %indvars.iv.i92.us = phi i64 [ %indvars.iv.next.i94.us, %148 ], [ 0, %.lr.ph149 ] - %95 = getelementptr inbounds nuw i64, ptr %76, i64 %indvars.iv.i92.us - %96 = load i64, ptr %95, align 8, !tbaa !12 - %.not.i93.us = icmp eq i64 %96, 0 - br i1 %.not.i93.us, label %148, label %.lr.ph.i99.us - -.lr.ph.i99.us: ; preds = %.lr.ph.i91.us, %125 - %indvars.iv.i100.us = phi i64 [ %indvars.iv.next.i102.us, %125 ], [ 0, %.lr.ph.i91.us ] - %97 = getelementptr inbounds nuw i64, ptr %76, i64 %indvars.iv.i100.us - %98 = load i64, ptr %97, align 8, !tbaa !12 - %.not.i101.us = icmp eq i64 %98, 0 - br i1 %.not.i101.us, label %125, label %99 - -99: ; preds = %.lr.ph.i99.us - %100 = trunc nuw nsw i64 %indvars.iv.i100.us to i32 - %101 = shl nsw i32 %100, 6 - %102 = and i64 %98, 4294967295 - %103 = icmp eq i64 %102, 0 - %104 = lshr exact i64 %98, 32 - %.020.i.i.us = select i1 %103, i64 %104, i64 %98 - %.0.i.i.us = select i1 %103, i32 32, i32 0 - %105 = and i64 %.020.i.i.us, 65535 - %106 = icmp eq i64 %105, 0 - %107 = or disjoint i32 %.0.i.i.us, 16 - %108 = lshr exact i64 %.020.i.i.us, 16 - %.121.i.i.us = select i1 %106, i64 %108, i64 %.020.i.i.us - %.1.i.i.us = select i1 %106, i32 %107, i32 %.0.i.i.us - %109 = and i64 %.121.i.i.us, 255 - %110 = icmp eq i64 %109, 0 - %111 = or disjoint i32 %.1.i.i.us, 8 - %112 = lshr exact i64 %.121.i.i.us, 8 - %.222.i.i.us = select i1 %110, i64 %112, i64 %.121.i.i.us - %.2.i.i.us = select i1 %110, i32 %111, i32 %.1.i.i.us - %113 = and i64 %.222.i.i.us, 15 - %114 = icmp eq i64 %113, 0 - %115 = or disjoint i32 %.2.i.i.us, 4 - %116 = lshr exact i64 %.222.i.i.us, 4 - %.323.i.i.us = select i1 %114, i64 %116, i64 %.222.i.i.us - %.3.i.i.us = select i1 %114, i32 %115, i32 %.2.i.i.us - %117 = and i64 %.323.i.i.us, 3 - %118 = icmp eq i64 %117, 0 - %119 = add nuw nsw i32 %.3.i.i.us, 2 - %120 = lshr exact i64 %.323.i.i.us, 2 - %.424.i.i.us = select i1 %118, i64 %120, i64 %.323.i.i.us - %.4.i.i.us = select i1 %118, i32 %119, i32 %.3.i.i.us - %121 = trunc i64 %.424.i.i.us to i32 - %122 = and i32 %121, 1 - %123 = xor i32 %122, 1 - %.5.i.i.us = add i32 %.4.i.i.us, %101 - %124 = add i32 %.5.i.i.us, %123 + %92 = or i32 %89, %91 + %93 = icmp eq i32 %92, 0 + br i1 %93, label %148, label %.lr.ph.i91.us + +.lr.ph.i91.us: ; preds = %.lr.ph149, %147 + %indvars.iv.i92.us = phi i64 [ %indvars.iv.next.i94.us, %147 ], [ 0, %.lr.ph149 ] + %94 = getelementptr inbounds nuw i64, ptr %76, i64 %indvars.iv.i92.us + %95 = load i64, ptr %94, align 8, !tbaa !12 + %.not.i93.us = icmp eq i64 %95, 0 + br i1 %.not.i93.us, label %147, label %.lr.ph.i99.us + +.lr.ph.i99.us: ; preds = %.lr.ph.i91.us, %124 + %indvars.iv.i100.us = phi i64 [ %indvars.iv.next.i102.us, %124 ], [ 0, %.lr.ph.i91.us ] + %96 = getelementptr inbounds nuw i64, ptr %76, i64 %indvars.iv.i100.us + %97 = load i64, ptr %96, align 8, !tbaa !12 + %.not.i101.us = icmp eq i64 %97, 0 + br i1 %.not.i101.us, label %124, label %98 + +98: ; preds = %.lr.ph.i99.us + %99 = trunc nuw nsw i64 %indvars.iv.i100.us to i32 + %100 = shl nsw i32 %99, 6 + %101 = and i64 %97, 4294967295 + %102 = icmp eq i64 %101, 0 + %103 = lshr exact i64 %97, 32 + %.020.i.i.us = select i1 %102, i64 %103, i64 %97 + %.0.i.i.us = select i1 %102, i32 32, i32 0 + %104 = and i64 %.020.i.i.us, 65535 + %105 = icmp eq i64 %104, 0 + %106 = or disjoint i32 %.0.i.i.us, 16 + %107 = lshr exact i64 %.020.i.i.us, 16 + %.121.i.i.us = select i1 %105, i64 %107, i64 %.020.i.i.us + %.1.i.i.us = select i1 %105, i32 %106, i32 %.0.i.i.us + %108 = and i64 %.121.i.i.us, 255 + %109 = icmp eq i64 %108, 0 + %110 = or disjoint i32 %.1.i.i.us, 8 + %111 = lshr exact i64 %.121.i.i.us, 8 + %.222.i.i.us = select i1 %109, i64 %111, i64 %.121.i.i.us + %.2.i.i.us = select i1 %109, i32 %110, i32 %.1.i.i.us + %112 = and i64 %.222.i.i.us, 15 + %113 = icmp eq i64 %112, 0 + %114 = or disjoint i32 %.2.i.i.us, 4 + %115 = lshr exact i64 %.222.i.i.us, 4 + %.323.i.i.us = select i1 %113, i64 %115, i64 %.222.i.i.us + %.3.i.i.us = select i1 %113, i32 %114, i32 %.2.i.i.us + %116 = and i64 %.323.i.i.us, 3 + %117 = icmp eq i64 %116, 0 + %118 = add nuw nsw i32 %.3.i.i.us, 2 + %119 = lshr exact i64 %.323.i.i.us, 2 + %.424.i.i.us = select i1 %117, i64 %119, i64 %.323.i.i.us + %.4.i.i.us = select i1 %117, i32 %118, i32 %.3.i.i.us + %120 = trunc i64 %.424.i.i.us to i32 + %121 = and i32 %120, 1 + %122 = xor i32 %121, 1 + %.5.i.i.us = add i32 %.4.i.i.us, %100 + %123 = add i32 %.5.i.i.us, %122 br label %Abc_TtFindFirstBit2.exit.us -125: ; preds = %.lr.ph.i99.us +124: ; preds = %.lr.ph.i99.us %indvars.iv.next.i102.us = add nuw nsw i64 %indvars.iv.i100.us, 1 %exitcond.not.i103.us = icmp eq i64 %indvars.iv.next.i102.us, %wide.trip.count.i90 br i1 %exitcond.not.i103.us, label %Abc_TtFindFirstBit2.exit.us, label %.lr.ph.i99.us, !llvm.loop !166 -Abc_TtFindFirstBit2.exit.us: ; preds = %125, %99 - %.08.i.us = phi i32 [ %124, %99 ], [ -1, %125 ] - %126 = load ptr, ptr %2, align 8, !tbaa !69 - %127 = getelementptr i8, ptr %126, i64 16 - %.val78116.us = load i32, ptr %127, align 8, !tbaa !125 - %128 = getelementptr i8, ptr %126, i64 64 - %.val79117.us = load ptr, ptr %128, align 8, !tbaa !23 - %129 = getelementptr i8, ptr %.val79117.us, i64 4 - %.val79.val118.us = load i32, ptr %129, align 4, !tbaa !16 - %130 = icmp sgt i32 %.val79.val118.us, %.val78116.us - br i1 %130, label %.lr.ph.us, label %._crit_edge.us - -._crit_edge.us: ; preds = %132, %Abc_TtFindFirstBit2.exit.us - %131 = add nsw i32 %.sroa.7.0121.us148, 1 - br label %151 - -132: ; preds = %.lr.ph.us, %132 - %indvars.iv160 = phi i64 [ 0, %.lr.ph.us ], [ %indvars.iv.next161, %132 ] - %133 = mul nuw nsw i64 %indvars.iv160, %wide.trip.count.i90 +Abc_TtFindFirstBit2.exit.us: ; preds = %124, %98 + %.08.i.us = phi i32 [ %123, %98 ], [ -1, %124 ] + %125 = load ptr, ptr %2, align 8, !tbaa !69 + %126 = getelementptr i8, ptr %125, i64 16 + %.val78116.us = load i32, ptr %126, align 8, !tbaa !125 + %127 = getelementptr i8, ptr %125, i64 64 + %.val79117.us = load ptr, ptr %127, align 8, !tbaa !23 + %128 = getelementptr i8, ptr %.val79117.us, i64 4 + %.val79.val118.us = load i32, ptr %128, align 4, !tbaa !16 + %129 = icmp sgt i32 %.val79.val118.us, %.val78116.us + br i1 %129, label %.lr.ph.us, label %._crit_edge.us + +._crit_edge.us: ; preds = %131, %Abc_TtFindFirstBit2.exit.us + %130 = add nsw i32 %.sroa.7.0121.us148, 1 + br label %150 + +131: ; preds = %.lr.ph.us, %131 + %indvars.iv160 = phi i64 [ 0, %.lr.ph.us ], [ %indvars.iv.next161, %131 ] + %132 = mul nuw nsw i64 %indvars.iv160, %wide.trip.count.i90 %.059.val.us = load ptr, ptr %71, align 8, !tbaa !10 - %134 = getelementptr inbounds nuw i64, ptr %.059.val.us, i64 %133 - %135 = getelementptr inbounds i64, ptr %134, i64 %159 - %136 = load i64, ptr %135, align 8, !tbaa !12 - %137 = lshr i64 %136, %161 - %138 = trunc i64 %137 to i32 - %139 = and i32 %138, 1 - %140 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %9, ptr noundef nonnull @.str.37, i32 noundef %139) #31 + %133 = getelementptr inbounds nuw i64, ptr %.059.val.us, i64 %132 + %134 = getelementptr inbounds i64, ptr %133, i64 %158 + %135 = load i64, ptr %134, align 8, !tbaa !12 + %136 = lshr i64 %135, %160 + %137 = trunc i64 %136 to i32 + %138 = and i32 %137, 1 + %139 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %9, ptr noundef nonnull @.str.37, i32 noundef %138) #31 %indvars.iv.next161 = add nuw nsw i64 %indvars.iv160, 1 - %141 = load ptr, ptr %2, align 8, !tbaa !69 - %142 = getelementptr i8, ptr %141, i64 16 - %.val78.us = load i32, ptr %142, align 8, !tbaa !125 - %143 = getelementptr i8, ptr %141, i64 64 - %.val79.us = load ptr, ptr %143, align 8, !tbaa !23 - %144 = getelementptr i8, ptr %.val79.us, i64 4 - %.val79.val.us = load i32, ptr %144, align 4, !tbaa !16 - %145 = sub nsw i32 %.val79.val.us, %.val78.us - %146 = sext i32 %145 to i64 - %147 = icmp slt i64 %indvars.iv.next161, %146 - br i1 %147, label %132, label %._crit_edge.us, !llvm.loop !221 - -148: ; preds = %.lr.ph.i91.us + %140 = load ptr, ptr %2, align 8, !tbaa !69 + %141 = getelementptr i8, ptr %140, i64 16 + %.val78.us = load i32, ptr %141, align 8, !tbaa !125 + %142 = getelementptr i8, ptr %140, i64 64 + %.val79.us = load ptr, ptr %142, align 8, !tbaa !23 + %143 = getelementptr i8, ptr %.val79.us, i64 4 + %.val79.val.us = load i32, ptr %143, align 4, !tbaa !16 + %144 = sub nsw i32 %.val79.val.us, %.val78.us + %145 = sext i32 %144 to i64 + %146 = icmp slt i64 %indvars.iv.next161, %145 + br i1 %146, label %131, label %._crit_edge.us, !llvm.loop !221 + +147: ; preds = %.lr.ph.i91.us %indvars.iv.next.i94.us = add nuw nsw i64 %indvars.iv.i92.us, 1 %exitcond.not.i95.us = icmp eq i64 %indvars.iv.next.i94.us, %wide.trip.count.i90 br i1 %exitcond.not.i95.us, label %.loopexit.us, label %.lr.ph.i91.us, !llvm.loop !219 -149: ; preds = %.lr.ph149 - %150 = add nsw i32 %.sroa.0.0122.us147, 1 - br label %151 +148: ; preds = %.lr.ph149 + %149 = add nsw i32 %.sroa.0.0122.us147, 1 + br label %150 -151: ; preds = %149, %.loopexit.us, %._crit_edge.us - %.sroa.7.1.us = phi i32 [ %.sroa.7.0121.us148, %149 ], [ %.sroa.7.0121.us148, %.loopexit.us ], [ %131, %._crit_edge.us ] - %.sroa.0.1.us = phi i32 [ %150, %149 ], [ %.sroa.0.0122.us147, %.loopexit.us ], [ %.sroa.0.0122.us147, %._crit_edge.us ] +150: ; preds = %148, %.loopexit.us, %._crit_edge.us + %.sroa.7.1.us = phi i32 [ %.sroa.7.0121.us148, %148 ], [ %.sroa.7.0121.us148, %.loopexit.us ], [ %130, %._crit_edge.us ] + %.sroa.0.1.us = phi i32 [ %149, %148 ], [ %.sroa.0.0122.us147, %.loopexit.us ], [ %.sroa.0.0122.us147, %._crit_edge.us ] %fputc63.us = tail call i32 @fputc(i32 10, ptr nonnull %9) %indvars.iv.next164 = add nuw nsw i64 %indvars.iv163, 1 - %152 = load ptr, ptr %2, align 8, !tbaa !69 - %153 = getelementptr inbounds nuw i8, ptr %152, i64 72 - %154 = load ptr, ptr %153, align 8, !tbaa !41 - %155 = getelementptr i8, ptr %154, i64 4 - %.val.us = load i32, ptr %155, align 4, !tbaa !16 - %156 = sext i32 %.val.us to i64 - %157 = icmp slt i64 %indvars.iv.next164, %156 - br i1 %157, label %73, label %.critedge, !llvm.loop !220 - -.loopexit.us: ; preds = %148 + %151 = load ptr, ptr %2, align 8, !tbaa !69 + %152 = getelementptr inbounds nuw i8, ptr %151, i64 72 + %153 = load ptr, ptr %152, align 8, !tbaa !41 + %154 = getelementptr i8, ptr %153, i64 4 + %.val.us = load i32, ptr %154, align 4, !tbaa !16 + %155 = sext i32 %.val.us to i64 + %156 = icmp slt i64 %indvars.iv.next164, %155 + br i1 %156, label %73, label %.critedge, !llvm.loop !220 + +.loopexit.us: ; preds = %147 %fputc.us = tail call i32 @fputc(i32 45, ptr nonnull %9) - br label %151 + br label %150 .lr.ph.us: ; preds = %Abc_TtFindFirstBit2.exit.us - %158 = ashr i32 %.08.i.us, 6 - %159 = sext i32 %158 to i64 - %160 = and i32 %.08.i.us, 63 - %161 = zext nneg i32 %160 to i64 - br label %132 + %157 = ashr i32 %.08.i.us, 6 + %158 = sext i32 %157 to i64 + %159 = and i32 %.08.i.us, 63 + %160 = zext nneg i32 %159 to i64 + br label %131 .lr.ph125.split: ; preds = %.lr.ph125 br i1 %.not61.us145, label %.critedge, label %.lr.ph -162: ; preds = %185 - %163 = getelementptr i8, ptr %186, i64 32 - %.val72 = load ptr, ptr %163, align 8, !tbaa !94 +161: ; preds = %183 + %162 = getelementptr i8, ptr %184, i64 32 + %.val72 = load ptr, ptr %162, align 8, !tbaa !94 %.not61 = icmp eq ptr %.val72, null br i1 %.not61, label %.critedge, label %.lr.ph, !llvm.loop !220 -.lr.ph: ; preds = %.lr.ph125.split, %162 - %indvars.iv = phi i64 [ %indvars.iv.next, %162 ], [ 0, %.lr.ph125.split ] - %.sroa.0.0122140 = phi i32 [ %.sroa.0.1, %162 ], [ 0, %.lr.ph125.split ] - %164 = trunc nuw nsw i64 %indvars.iv to i32 - %165 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %9, ptr noundef nonnull @.str, i32 noundef %164) #31 - %166 = load ptr, ptr %69, align 8, !tbaa !131 - %167 = getelementptr i8, ptr %166, i64 32 - %.val70 = load ptr, ptr %167, align 8, !tbaa !94 - %168 = getelementptr i8, ptr %166, i64 72 - %.val71 = load ptr, ptr %168, align 8, !tbaa !41 - %169 = getelementptr i8, ptr %.val71, i64 8 - %.val71.val = load ptr, ptr %169, align 8, !tbaa !19 - %170 = getelementptr inbounds nuw i32, ptr %.val71.val, i64 %indvars.iv - %171 = load i32, ptr %170, align 4, !tbaa !20 - %172 = sext i32 %171 to i64 - %173 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val70, i64 %172 - %.val3.i.i = load i64, ptr %173, align 4 - %174 = trunc i64 %.val3.i.i to i32 - %175 = and i32 %174, 536870911 - %176 = sub nsw i32 %171, %175 - %177 = lshr i32 %174, 29 - %178 = and i32 %177, 1 - %179 = shl nsw i32 %176, 1 - %180 = or disjoint i32 %179, %178 - %181 = icmp eq i32 %180, 0 - br i1 %181, label %182, label %184 +.lr.ph: ; preds = %.lr.ph125.split, %161 + %indvars.iv = phi i64 [ %indvars.iv.next, %161 ], [ 0, %.lr.ph125.split ] + %.sroa.0.0122140 = phi i32 [ %.sroa.0.1, %161 ], [ 0, %.lr.ph125.split ] + %163 = trunc nuw nsw i64 %indvars.iv to i32 + %164 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %9, ptr noundef nonnull @.str, i32 noundef %163) #31 + %165 = load ptr, ptr %69, align 8, !tbaa !131 + %166 = getelementptr i8, ptr %165, i64 32 + %.val70 = load ptr, ptr %166, align 8, !tbaa !94 + %167 = getelementptr i8, ptr %165, i64 72 + %.val71 = load ptr, ptr %167, align 8, !tbaa !41 + %168 = getelementptr i8, ptr %.val71, i64 8 + %.val71.val = load ptr, ptr %168, align 8, !tbaa !19 + %169 = getelementptr inbounds nuw i32, ptr %.val71.val, i64 %indvars.iv + %170 = load i32, ptr %169, align 4, !tbaa !20 + %171 = sext i32 %170 to i64 + %172 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val70, i64 %171 + %.val3.i.i = load i64, ptr %172, align 4 + %173 = trunc i64 %.val3.i.i to i32 + %174 = and i32 %173, 536870911 + %175 = sub nsw i32 %170, %174 + %176 = lshr i32 %173, 29 + %177 = and i32 %176, 1 + %178 = or i32 %175, %177 + %179 = icmp eq i32 %178, 0 + br i1 %179, label %180, label %182 + +180: ; preds = %.lr.ph + %181 = add nsw i32 %.sroa.0.0122140, 1 + br label %183 182: ; preds = %.lr.ph - %183 = add nsw i32 %.sroa.0.0122140, 1 - br label %185 - -184: ; preds = %.lr.ph %fputc = tail call i32 @fputc(i32 45, ptr nonnull %9) - br label %185 + br label %183 -185: ; preds = %184, %182 - %.sroa.0.1 = phi i32 [ %183, %182 ], [ %.sroa.0.0122140, %184 ] +183: ; preds = %182, %180 + %.sroa.0.1 = phi i32 [ %181, %180 ], [ %.sroa.0.0122140, %182 ] %fputc63 = tail call i32 @fputc(i32 10, ptr nonnull %9) %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %186 = load ptr, ptr %2, align 8, !tbaa !69 - %187 = getelementptr inbounds nuw i8, ptr %186, i64 72 - %188 = load ptr, ptr %187, align 8, !tbaa !41 - %189 = getelementptr i8, ptr %188, i64 4 - %.val = load i32, ptr %189, align 4, !tbaa !16 - %190 = sext i32 %.val to i64 - %191 = icmp slt i64 %indvars.iv.next, %190 - br i1 %191, label %162, label %.critedge, !llvm.loop !220 - -.critedge: ; preds = %162, %185, %73, %151, %.lr.ph125.split.us, %.lr.ph125.split, %Abc_TtIsConst0.exit - %.sroa.7.0.lcssa = phi i32 [ 0, %Abc_TtIsConst0.exit ], [ 0, %.lr.ph125.split.us ], [ 0, %.lr.ph125.split ], [ %.sroa.7.1.us, %151 ], [ %.sroa.7.1.us, %73 ], [ 0, %185 ], [ 0, %162 ] - %.sroa.0.0.lcssa = phi i32 [ 0, %Abc_TtIsConst0.exit ], [ 0, %.lr.ph125.split.us ], [ 0, %.lr.ph125.split ], [ %.sroa.0.1.us, %151 ], [ %.sroa.0.1.us, %73 ], [ %.sroa.0.1, %185 ], [ %.sroa.0.1, %162 ] - %.val.lcssa = phi i32 [ %.val120, %Abc_TtIsConst0.exit ], [ %.val120, %.lr.ph125.split.us ], [ %.val120, %.lr.ph125.split ], [ %.val.us, %151 ], [ %.val.us, %73 ], [ %.val, %185 ], [ %.val, %162 ] - %192 = add i32 %.sroa.0.0.lcssa, %.sroa.7.0.lcssa - %193 = sub i32 %.val.lcssa, %192 - %194 = load ptr, ptr %0, align 8, !tbaa !68 - %195 = getelementptr inbounds nuw i8, ptr %194, i64 104 - %196 = load ptr, ptr %195, align 8, !tbaa !218 - %197 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.38, i32 noundef %.sroa.7.0.lcssa, i32 noundef %.sroa.0.0.lcssa, i32 noundef %193, ptr noundef %196) - %198 = tail call i32 @fclose(ptr noundef nonnull %9) - %199 = getelementptr inbounds nuw i8, ptr %62, i64 8 - %200 = load ptr, ptr %199, align 8, !tbaa !10 - %.not.i104 = icmp eq ptr %200, null - br i1 %.not.i104, label %Vec_WrdFree.exit105, label %201 - -201: ; preds = %.critedge - tail call void @free(ptr noundef nonnull %200) #31 + %184 = load ptr, ptr %2, align 8, !tbaa !69 + %185 = getelementptr inbounds nuw i8, ptr %184, i64 72 + %186 = load ptr, ptr %185, align 8, !tbaa !41 + %187 = getelementptr i8, ptr %186, i64 4 + %.val = load i32, ptr %187, align 4, !tbaa !16 + %188 = sext i32 %.val to i64 + %189 = icmp slt i64 %indvars.iv.next, %188 + br i1 %189, label %161, label %.critedge, !llvm.loop !220 + +.critedge: ; preds = %161, %183, %73, %150, %.lr.ph125.split.us, %.lr.ph125.split, %Abc_TtIsConst0.exit + %.sroa.7.0.lcssa = phi i32 [ 0, %Abc_TtIsConst0.exit ], [ 0, %.lr.ph125.split.us ], [ 0, %.lr.ph125.split ], [ %.sroa.7.1.us, %150 ], [ %.sroa.7.1.us, %73 ], [ 0, %183 ], [ 0, %161 ] + %.sroa.0.0.lcssa = phi i32 [ 0, %Abc_TtIsConst0.exit ], [ 0, %.lr.ph125.split.us ], [ 0, %.lr.ph125.split ], [ %.sroa.0.1.us, %150 ], [ %.sroa.0.1.us, %73 ], [ %.sroa.0.1, %183 ], [ %.sroa.0.1, %161 ] + %.val.lcssa = phi i32 [ %.val120, %Abc_TtIsConst0.exit ], [ %.val120, %.lr.ph125.split.us ], [ %.val120, %.lr.ph125.split ], [ %.val.us, %150 ], [ %.val.us, %73 ], [ %.val, %183 ], [ %.val, %161 ] + %190 = add i32 %.sroa.0.0.lcssa, %.sroa.7.0.lcssa + %191 = sub i32 %.val.lcssa, %190 + %192 = load ptr, ptr %0, align 8, !tbaa !68 + %193 = getelementptr inbounds nuw i8, ptr %192, i64 104 + %194 = load ptr, ptr %193, align 8, !tbaa !218 + %195 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.38, i32 noundef %.sroa.7.0.lcssa, i32 noundef %.sroa.0.0.lcssa, i32 noundef %191, ptr noundef %194) + %196 = tail call i32 @fclose(ptr noundef nonnull %9) + %197 = getelementptr inbounds nuw i8, ptr %62, i64 8 + %198 = load ptr, ptr %197, align 8, !tbaa !10 + %.not.i104 = icmp eq ptr %198, null + br i1 %.not.i104, label %Vec_WrdFree.exit105, label %199 + +199: ; preds = %.critedge + tail call void @free(ptr noundef nonnull %198) #31 br label %Vec_WrdFree.exit105 -Vec_WrdFree.exit105: ; preds = %.critedge, %201 +Vec_WrdFree.exit105: ; preds = %.critedge, %199 tail call void @free(ptr noundef nonnull %62) #31 - %202 = getelementptr inbounds nuw i8, ptr %.059, i64 8 - %203 = load ptr, ptr %202, align 8, !tbaa !10 - %.not.i106 = icmp eq ptr %203, null - br i1 %.not.i106, label %Vec_WrdFree.exit107, label %204 + %200 = getelementptr inbounds nuw i8, ptr %.059, i64 8 + %201 = load ptr, ptr %200, align 8, !tbaa !10 + %.not.i106 = icmp eq ptr %201, null + br i1 %.not.i106, label %Vec_WrdFree.exit107, label %202 -204: ; preds = %Vec_WrdFree.exit105 - tail call void @free(ptr noundef nonnull %203) #31 +202: ; preds = %Vec_WrdFree.exit105 + tail call void @free(ptr noundef nonnull %201) #31 br label %Vec_WrdFree.exit107 -Vec_WrdFree.exit107: ; preds = %Vec_WrdFree.exit105, %204 +Vec_WrdFree.exit107: ; preds = %Vec_WrdFree.exit105, %202 tail call void @free(ptr noundef nonnull %.059) #31 - br label %205 + br label %203 -205: ; preds = %Vec_WrdFree.exit107, %11 +203: ; preds = %Vec_WrdFree.exit107, %11 ret void } diff --git a/bench/abc/optimized/giaCof.ll b/bench/abc/optimized/giaCof.ll index 26f42563607..18938cbec4a 100644 --- a/bench/abc/optimized/giaCof.ll +++ b/bench/abc/optimized/giaCof.ll @@ -4325,7 +4325,7 @@ define void @Gia_ManPrintDsdMatrix(ptr noundef %0, i32 noundef %1) local_unnamed %.val33.val48 = phi i32 [ %.val35.val56, %.preheader.lr.ph ], [ %.val35.val, %._crit_edge53 ] %.val3347 = phi ptr [ %.val3555, %.preheader.lr.ph ], [ %.val35, %._crit_edge53 ] %.val46 = phi i32 [ %.val3454, %.preheader.lr.ph ], [ %.val34, %._crit_edge53 ] - %.058 = phi i32 [ 0, %.preheader.lr.ph ], [ %55, %._crit_edge53 ] + %.058 = phi i32 [ 0, %.preheader.lr.ph ], [ %54, %._crit_edge53 ] %.02557 = phi i32 [ 0, %.preheader.lr.ph ], [ %.1.lcssa, %._crit_edge53 ] %19 = icmp sgt i32 %.val33.val48, %.val46 br i1 %19, label %.lr.ph52, label %._crit_edge53 @@ -4357,10 +4357,10 @@ define void @Gia_ManPrintDsdMatrix(ptr noundef %0, i32 noundef %1) local_unnamed %27 = icmp slt i32 %24, %26 br i1 %27, label %.lr.ph52.split.us, label %._crit_edge53, !llvm.loop !113 -.lr.ph52.split: ; preds = %.lr.ph52, %49 - %.151 = phi i32 [ %.2, %49 ], [ %.02557, %.lr.ph52 ] - %.not50 = phi i1 [ true, %49 ], [ false, %.lr.ph52 ] - %.13049 = phi i32 [ %51, %49 ], [ 0, %.lr.ph52 ] +.lr.ph52.split: ; preds = %.lr.ph52, %48 + %.151 = phi i32 [ %.2, %48 ], [ %.02557, %.lr.ph52 ] + %.not50 = phi i1 [ true, %48 ], [ false, %.lr.ph52 ] + %.13049 = phi i32 [ %50, %48 ], [ 0, %.lr.ph52 ] br i1 %.not50, label %30, label %28 28: ; preds = %.lr.ph52.split @@ -4371,7 +4371,7 @@ define void @Gia_ManPrintDsdMatrix(ptr noundef %0, i32 noundef %1) local_unnamed %31 = icmp ne i32 %.13049, %1 %32 = icmp samesign ugt i32 %.13049, %.058 %or.cond = select i1 %31, i1 %32, i1 false - br i1 %or.cond, label %33, label %49 + br i1 %or.cond, label %33, label %48 33: ; preds = %30 %34 = add nsw i32 %.151, 1 @@ -4390,36 +4390,35 @@ define void @Gia_ManPrintDsdMatrix(ptr noundef %0, i32 noundef %1) local_unnamed %43 = sub nsw i32 %38, %42 %44 = lshr i32 %41, 29 %45 = and i32 %44, 1 - %46 = shl nsw i32 %43, 1 - %47 = or disjoint i32 %46, %45 - %48 = icmp eq i32 %47, 0 - %. = select i1 %48, i32 46, i32 43 - br label %49 + %46 = or i32 %43, %45 + %47 = icmp eq i32 %46, 0 + %. = select i1 %47, i32 46, i32 43 + br label %48 -49: ; preds = %33, %30 +48: ; preds = %33, %30 %.sink = phi i32 [ 32, %30 ], [ %., %33 ] %.2 = phi i32 [ %.151, %30 ], [ %34, %33 ] - %50 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i32 noundef %.sink) - %51 = add nuw nsw i32 %.13049, 1 + %49 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i32 noundef %.sink) + %50 = add nuw nsw i32 %.13049, 1 %.val = load i32, ptr %6, align 8, !tbaa !98 %.val33 = load ptr, ptr %7, align 8, !tbaa !12 - %52 = getelementptr i8, ptr %.val33, i64 4 - %.val33.val = load i32, ptr %52, align 4, !tbaa !30 - %53 = sub nsw i32 %.val33.val, %.val - %54 = icmp slt i32 %51, %53 - br i1 %54, label %.lr.ph52.split, label %._crit_edge53, !llvm.loop !113 - -._crit_edge53: ; preds = %49, %23, %.preheader - %.1.lcssa = phi i32 [ %.02557, %.preheader ], [ %.02557, %23 ], [ %.2, %49 ] - %55 = add nuw nsw i32 %.058, 1 + %51 = getelementptr i8, ptr %.val33, i64 4 + %.val33.val = load i32, ptr %51, align 4, !tbaa !30 + %52 = sub nsw i32 %.val33.val, %.val + %53 = icmp slt i32 %50, %52 + br i1 %53, label %.lr.ph52.split, label %._crit_edge53, !llvm.loop !113 + +._crit_edge53: ; preds = %48, %23, %.preheader + %.1.lcssa = phi i32 [ %.02557, %.preheader ], [ %.02557, %23 ], [ %.2, %48 ] + %54 = add nuw nsw i32 %.058, 1 %putchar32 = tail call i32 @putchar(i32 10) %.val34 = load i32, ptr %6, align 8, !tbaa !98 %.val35 = load ptr, ptr %7, align 8, !tbaa !12 - %56 = getelementptr i8, ptr %.val35, i64 4 - %.val35.val = load i32, ptr %56, align 4, !tbaa !30 - %57 = sub nsw i32 %.val35.val, %.val34 - %58 = icmp slt i32 %55, %57 - br i1 %58, label %.preheader, label %._crit_edge60, !llvm.loop !114 + %55 = getelementptr i8, ptr %.val35, i64 4 + %.val35.val = load i32, ptr %55, align 4, !tbaa !30 + %56 = sub nsw i32 %.val35.val, %.val34 + %57 = icmp slt i32 %54, %56 + br i1 %57, label %.preheader, label %._crit_edge60, !llvm.loop !114 ._crit_edge60: ; preds = %._crit_edge53, %._crit_edge tail call void @Gia_ManStop(ptr noundef %4) #27 diff --git a/bench/abc/optimized/giaEquiv.ll b/bench/abc/optimized/giaEquiv.ll index 514ccf1f58d..2ab71482f6e 100644 --- a/bench/abc/optimized/giaEquiv.ll +++ b/bench/abc/optimized/giaEquiv.ll @@ -7531,7 +7531,7 @@ Gia_ManEquivCountLitsAll.exit: ; preds = %8 Gia_ManEquivCountLitsAll.exit.thread: ; preds = %4, %Gia_ManEquivCountLitsAll.exit tail call void (i32, ptr, ...) @Abc_Print(i32 noundef 1, ptr noundef nonnull @.str.22) - br label %128 + br label %126 16: ; preds = %Gia_ManEquivCountLitsAll.exit %17 = tail call ptr @Gia_AigerRead(ptr noundef %1, i32 noundef 0, i32 noundef 0, i32 noundef 0) #31 @@ -7540,11 +7540,11 @@ Gia_ManEquivCountLitsAll.exit.thread: ; preds = %4, %Gia_ManEquivCou 19: ; preds = %16 tail call void (i32, ptr, ...) @Abc_Print(i32 noundef 1, ptr noundef nonnull @.str.23, ptr noundef %1) - br label %128 + br label %126 20: ; preds = %16 %.not = icmp eq i32 %2, 0 - br i1 %.not, label %83, label %21 + br i1 %.not, label %82, label %21 21: ; preds = %20 %22 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #32 @@ -7619,20 +7619,20 @@ Gia_ManEquivCountLitsAll.exit.thread: ; preds = %4, %Gia_ManEquivCou .thread: ; preds = %.thread.i, %43 tail call void @free(ptr noundef nonnull %22) #31 - br label %128 - -45: ; preds = %.lr.ph129, %78 - %.val75144 = phi i32 [ %.val75124, %.lr.ph129 ], [ %.val75, %78 ] - %indvars.iv138 = phi i64 [ 0, %.lr.ph129 ], [ %indvars.iv.next139, %78 ] - %.1128 = phi i32 [ 0, %.lr.ph129 ], [ %.2, %78 ] - %.058127 = phi i32 [ 0, %.lr.ph129 ], [ %.159, %78 ] - %.064126 = phi i32 [ 0, %.lr.ph129 ], [ %.165, %78 ] + br label %126 + +45: ; preds = %.lr.ph129, %77 + %.val75144 = phi i32 [ %.val75124, %.lr.ph129 ], [ %.val75, %77 ] + %indvars.iv138 = phi i64 [ 0, %.lr.ph129 ], [ %indvars.iv.next139, %77 ] + %.1128 = phi i32 [ 0, %.lr.ph129 ], [ %.2, %77 ] + %.058127 = phi i32 [ 0, %.lr.ph129 ], [ %.159, %77 ] + %.064126 = phi i32 [ 0, %.lr.ph129 ], [ %.165, %77 ] %.val80 = load ptr, ptr %7, align 8, !tbaa !49 %46 = getelementptr inbounds nuw %struct.Gia_Rpr_t_, ptr %.val80, i64 %indvars.iv138 %47 = load i32, ptr %46, align 4 %48 = and i32 %47, 268435455 %49 = icmp eq i32 %48, 268435455 - br i1 %49, label %78, label %50 + br i1 %49, label %77, label %50 50: ; preds = %45 %51 = add nsw i32 %.058127, 1 @@ -7641,7 +7641,7 @@ Gia_ManEquivCountLitsAll.exit.thread: ; preds = %4, %Gia_ManEquivCou %53 = getelementptr inbounds i32, ptr %.val76, i64 %52 %54 = load i32, ptr %53, align 4, !tbaa !32 %55 = icmp eq i32 %54, 0 - br i1 %55, label %78, label %56 + br i1 %55, label %77, label %56 56: ; preds = %50 %.val91 = load i32, ptr %36, align 8, !tbaa !90 @@ -7666,145 +7666,143 @@ Gia_ManEquivCountLitsAll.exit.thread: ; preds = %4, %Gia_ManEquivCou %69 = sub nsw i32 %64, %68 %70 = lshr i32 %67, 29 %71 = and i32 %70, 1 - %72 = shl nsw i32 %69, 1 - %73 = or disjoint i32 %72, %71 - %74 = icmp eq i32 %73, 0 - br i1 %74, label %75, label %78 - -75: ; preds = %56 - %76 = or i32 %47, 268435456 - store i32 %76, ptr %46, align 4 - %77 = add nsw i32 %.1128, 1 + %72 = or i32 %69, %71 + %73 = icmp eq i32 %72, 0 + br i1 %73, label %74, label %77 + +74: ; preds = %56 + %75 = or i32 %47, 268435456 + store i32 %75, ptr %46, align 4 + %76 = add nsw i32 %.1128, 1 %.val75.pre = load i32, ptr %5, align 8, !tbaa !12 - br label %78 + br label %77 -78: ; preds = %56, %75, %50, %45 - %.val75 = phi i32 [ %.val75144, %45 ], [ %.val75144, %50 ], [ %.val75.pre, %75 ], [ %.val75144, %56 ] - %.165 = phi i32 [ %.064126, %45 ], [ %.064126, %50 ], [ %58, %75 ], [ %58, %56 ] - %.159 = phi i32 [ %.058127, %45 ], [ %51, %50 ], [ %51, %75 ], [ %51, %56 ] - %.2 = phi i32 [ %.1128, %45 ], [ %.1128, %50 ], [ %77, %75 ], [ %.1128, %56 ] +77: ; preds = %56, %74, %50, %45 + %.val75 = phi i32 [ %.val75144, %45 ], [ %.val75144, %50 ], [ %.val75.pre, %74 ], [ %.val75144, %56 ] + %.165 = phi i32 [ %.064126, %45 ], [ %.064126, %50 ], [ %58, %74 ], [ %58, %56 ] + %.159 = phi i32 [ %.058127, %45 ], [ %51, %50 ], [ %51, %74 ], [ %51, %56 ] + %.2 = phi i32 [ %.1128, %45 ], [ %.1128, %50 ], [ %76, %74 ], [ %.1128, %56 ] %indvars.iv.next139 = add nuw nsw i64 %indvars.iv138, 1 - %79 = sext i32 %.val75 to i64 - %80 = icmp slt i64 %indvars.iv.next139, %79 - br i1 %80, label %45, label %._crit_edge, !llvm.loop !144 + %78 = sext i32 %.val75 to i64 + %79 = icmp slt i64 %indvars.iv.next139, %78 + br i1 %79, label %45, label %._crit_edge, !llvm.loop !144 -._crit_edge: ; preds = %78, %.preheader121 - %.1.lcssa = phi i32 [ 0, %.preheader121 ], [ %.2, %78 ] - %81 = load ptr, ptr %25, align 8, !tbaa !8 - %.not.i109 = icmp eq ptr %81, null - br i1 %.not.i109, label %82, label %.thread.i110 +._crit_edge: ; preds = %77, %.preheader121 + %.1.lcssa = phi i32 [ 0, %.preheader121 ], [ %.2, %77 ] + %80 = load ptr, ptr %25, align 8, !tbaa !8 + %.not.i109 = icmp eq ptr %80, null + br i1 %.not.i109, label %81, label %.thread.i110 .thread.i110: ; preds = %._crit_edge - tail call void @free(ptr noundef nonnull %81) #31 - br label %82 + tail call void @free(ptr noundef nonnull %80) #31 + br label %81 -82: ; preds = %.thread.i110, %._crit_edge +81: ; preds = %.thread.i110, %._crit_edge tail call void @free(ptr noundef nonnull %22) #31 br label %.loopexit -83: ; preds = %20 - %84 = getelementptr i8, ptr %17, i64 16 - %.val89 = load i32, ptr %84, align 8, !tbaa !90 - %85 = getelementptr i8, ptr %17, i64 72 - %.val90 = load ptr, ptr %85, align 8, !tbaa !47 - %86 = getelementptr i8, ptr %.val90, i64 4 - %.val90.val = load i32, ptr %86, align 4, !tbaa !31 - %87 = sub nsw i32 %.val90.val, %.val89 - %88 = getelementptr i8, ptr %0, i64 16 - %.val87 = load i32, ptr %88, align 8, !tbaa !90 - %89 = getelementptr i8, ptr %0, i64 72 - %.val88 = load ptr, ptr %89, align 8, !tbaa !47 - %90 = getelementptr i8, ptr %.val88, i64 4 - %.val88.val = load i32, ptr %90, align 4, !tbaa !31 - %91 = sub nsw i32 %.val88.val, %.val87 - %92 = add nsw i32 %91, %14 - %.not71 = icmp eq i32 %87, %92 - br i1 %.not71, label %.preheader, label %95 - -.preheader: ; preds = %83 +82: ; preds = %20 + %83 = getelementptr i8, ptr %17, i64 16 + %.val89 = load i32, ptr %83, align 8, !tbaa !90 + %84 = getelementptr i8, ptr %17, i64 72 + %.val90 = load ptr, ptr %84, align 8, !tbaa !47 + %85 = getelementptr i8, ptr %.val90, i64 4 + %.val90.val = load i32, ptr %85, align 4, !tbaa !31 + %86 = sub nsw i32 %.val90.val, %.val89 + %87 = getelementptr i8, ptr %0, i64 16 + %.val87 = load i32, ptr %87, align 8, !tbaa !90 + %88 = getelementptr i8, ptr %0, i64 72 + %.val88 = load ptr, ptr %88, align 8, !tbaa !47 + %89 = getelementptr i8, ptr %.val88, i64 4 + %.val88.val = load i32, ptr %89, align 4, !tbaa !31 + %90 = sub nsw i32 %.val88.val, %.val87 + %91 = add nsw i32 %90, %14 + %.not71 = icmp eq i32 %86, %91 + br i1 %.not71, label %.preheader, label %94 + +.preheader: ; preds = %82 %.val131 = load i32, ptr %5, align 8, !tbaa !12 - %93 = icmp sgt i32 %.val131, 0 - br i1 %93, label %.lr.ph135, label %.loopexit + %92 = icmp sgt i32 %.val131, 0 + br i1 %92, label %.lr.ph135, label %.loopexit .lr.ph135: ; preds = %.preheader - %94 = getelementptr i8, ptr %17, i64 32 - br label %96 + %93 = getelementptr i8, ptr %17, i64 32 + br label %95 -95: ; preds = %83 - tail call void (i32, ptr, ...) @Abc_Print(i32 noundef 1, ptr noundef nonnull @.str.25, i32 noundef %87, i32 noundef %91, i32 noundef %14) +94: ; preds = %82 + tail call void (i32, ptr, ...) @Abc_Print(i32 noundef 1, ptr noundef nonnull @.str.25, i32 noundef %86, i32 noundef %90, i32 noundef %14) tail call void @Gia_ManStop(ptr noundef nonnull %17) #31 - br label %128 + br label %126 -96: ; preds = %.lr.ph135, %123 - %.val146 = phi i32 [ %.val131, %.lr.ph135 ], [ %.val, %123 ] - %indvars.iv141 = phi i64 [ 0, %.lr.ph135 ], [ %indvars.iv.next142, %123 ] - %.4134 = phi i32 [ 0, %.lr.ph135 ], [ %.5, %123 ] - %.260133 = phi i32 [ 0, %.lr.ph135 ], [ %.361, %123 ] +95: ; preds = %.lr.ph135, %121 + %.val146 = phi i32 [ %.val131, %.lr.ph135 ], [ %.val, %121 ] + %indvars.iv141 = phi i64 [ 0, %.lr.ph135 ], [ %indvars.iv.next142, %121 ] + %.4134 = phi i32 [ 0, %.lr.ph135 ], [ %.5, %121 ] + %.260133 = phi i32 [ 0, %.lr.ph135 ], [ %.361, %121 ] %.val79 = load ptr, ptr %7, align 8, !tbaa !49 - %97 = getelementptr inbounds nuw %struct.Gia_Rpr_t_, ptr %.val79, i64 %indvars.iv141 - %98 = load i32, ptr %97, align 4 - %99 = and i32 %98, 268435455 - %100 = icmp eq i32 %99, 268435455 - br i1 %100, label %123, label %101 - -101: ; preds = %96 - %.val81 = load i32, ptr %88, align 8, !tbaa !90 - %.val82 = load ptr, ptr %89, align 8, !tbaa !47 - %102 = getelementptr i8, ptr %.val82, i64 4 - %.val82.val = load i32, ptr %102, align 4, !tbaa !31 - %103 = add nsw i32 %.260133, 1 - %104 = sub i32 %.260133, %.val81 - %105 = add i32 %104, %.val82.val - %.val101 = load ptr, ptr %94, align 8, !tbaa !36 - %.val102 = load ptr, ptr %85, align 8, !tbaa !47 - %106 = getelementptr i8, ptr %.val102, i64 8 - %.val102.val = load ptr, ptr %106, align 8, !tbaa !8 - %107 = sext i32 %105 to i64 - %108 = getelementptr inbounds i32, ptr %.val102.val, i64 %107 - %109 = load i32, ptr %108, align 4, !tbaa !32 - %110 = sext i32 %109 to i64 - %111 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val101, i64 %110 - %.val3.i.i112 = load i64, ptr %111, align 4 - %112 = trunc i64 %.val3.i.i112 to i32 - %113 = and i32 %112, 536870911 - %114 = sub nsw i32 %109, %113 - %115 = lshr i32 %112, 29 - %116 = and i32 %115, 1 - %117 = shl nsw i32 %114, 1 - %118 = or disjoint i32 %117, %116 - %119 = icmp eq i32 %118, 0 - br i1 %119, label %120, label %123 - -120: ; preds = %101 - %121 = or i32 %98, 268435456 - store i32 %121, ptr %97, align 4 - %122 = add nsw i32 %.4134, 1 + %96 = getelementptr inbounds nuw %struct.Gia_Rpr_t_, ptr %.val79, i64 %indvars.iv141 + %97 = load i32, ptr %96, align 4 + %98 = and i32 %97, 268435455 + %99 = icmp eq i32 %98, 268435455 + br i1 %99, label %121, label %100 + +100: ; preds = %95 + %.val81 = load i32, ptr %87, align 8, !tbaa !90 + %.val82 = load ptr, ptr %88, align 8, !tbaa !47 + %101 = getelementptr i8, ptr %.val82, i64 4 + %.val82.val = load i32, ptr %101, align 4, !tbaa !31 + %102 = add nsw i32 %.260133, 1 + %103 = sub i32 %.260133, %.val81 + %104 = add i32 %103, %.val82.val + %.val101 = load ptr, ptr %93, align 8, !tbaa !36 + %.val102 = load ptr, ptr %84, align 8, !tbaa !47 + %105 = getelementptr i8, ptr %.val102, i64 8 + %.val102.val = load ptr, ptr %105, align 8, !tbaa !8 + %106 = sext i32 %104 to i64 + %107 = getelementptr inbounds i32, ptr %.val102.val, i64 %106 + %108 = load i32, ptr %107, align 4, !tbaa !32 + %109 = sext i32 %108 to i64 + %110 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val101, i64 %109 + %.val3.i.i112 = load i64, ptr %110, align 4 + %111 = trunc i64 %.val3.i.i112 to i32 + %112 = and i32 %111, 536870911 + %113 = sub nsw i32 %108, %112 + %114 = lshr i32 %111, 29 + %115 = and i32 %114, 1 + %116 = or i32 %113, %115 + %117 = icmp eq i32 %116, 0 + br i1 %117, label %118, label %121 + +118: ; preds = %100 + %119 = or i32 %97, 268435456 + store i32 %119, ptr %96, align 4 + %120 = add nsw i32 %.4134, 1 %.val.pre = load i32, ptr %5, align 8, !tbaa !12 - br label %123 + br label %121 -123: ; preds = %101, %120, %96 - %.val = phi i32 [ %.val146, %96 ], [ %.val.pre, %120 ], [ %.val146, %101 ] - %.361 = phi i32 [ %.260133, %96 ], [ %103, %120 ], [ %103, %101 ] - %.5 = phi i32 [ %.4134, %96 ], [ %122, %120 ], [ %.4134, %101 ] +121: ; preds = %100, %118, %95 + %.val = phi i32 [ %.val146, %95 ], [ %.val.pre, %118 ], [ %.val146, %100 ] + %.361 = phi i32 [ %.260133, %95 ], [ %102, %118 ], [ %102, %100 ] + %.5 = phi i32 [ %.4134, %95 ], [ %120, %118 ], [ %.4134, %100 ] %indvars.iv.next142 = add nuw nsw i64 %indvars.iv141, 1 - %124 = sext i32 %.val to i64 - %125 = icmp slt i64 %indvars.iv.next142, %124 - br i1 %125, label %96, label %.loopexit, !llvm.loop !145 + %122 = sext i32 %.val to i64 + %123 = icmp slt i64 %indvars.iv.next142, %122 + br i1 %123, label %95, label %.loopexit, !llvm.loop !145 -.loopexit: ; preds = %123, %.preheader, %82 - %.3 = phi i32 [ %.1.lcssa, %82 ], [ 0, %.preheader ], [ %.5, %123 ] +.loopexit: ; preds = %121, %.preheader, %81 + %.3 = phi i32 [ %.1.lcssa, %81 ], [ 0, %.preheader ], [ %.5, %121 ] %.not73 = icmp eq i32 %3, 0 - br i1 %.not73, label %127, label %126 + br i1 %.not73, label %125, label %124 -126: ; preds = %.loopexit +124: ; preds = %.loopexit tail call void (i32, ptr, ...) @Abc_Print(i32 noundef 1, ptr noundef nonnull @.str.26, i32 noundef %.3) - br label %127 + br label %125 -127: ; preds = %126, %.loopexit +125: ; preds = %124, %.loopexit tail call void @Gia_ManStop(ptr noundef nonnull %17) #31 - br label %128 + br label %126 -128: ; preds = %.thread, %127, %95, %19, %Gia_ManEquivCountLitsAll.exit.thread +126: ; preds = %.thread, %125, %94, %19, %Gia_ManEquivCountLitsAll.exit.thread ret void } diff --git a/bench/abc/optimized/giaPat2.ll b/bench/abc/optimized/giaPat2.ll index 946a23f21dd..87df748481c 100644 --- a/bench/abc/optimized/giaPat2.ll +++ b/bench/abc/optimized/giaPat2.ll @@ -8680,7 +8680,7 @@ define void @Gia_GenerateCexesDumpFile(ptr noundef %0, ptr noundef readonly capt 7: ; preds = %4 %8 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.36, ptr noundef %0) - br label %168 + br label %164 9: ; preds = %4 %10 = getelementptr i8, ptr %1, i64 64 @@ -8721,12 +8721,12 @@ define void @Gia_GenerateCexesDumpFile(ptr noundef %0, ptr noundef readonly capt %23 = zext nneg i32 %.fr173 to i64 br label %.lr.ph.split.us -.lr.ph.split.us: ; preds = %.lr.ph.split.us.preheader, %38 - %indvars.iv199 = phi i64 [ 0, %.lr.ph.split.us.preheader ], [ %indvars.iv.next200, %38 ] - %.val84.us162.us = phi ptr [ %.val84.us156, %.lr.ph.split.us.preheader ], [ %.val84.us.us, %38 ] - %.sroa.0.0108.us161.us = phi i32 [ 0, %.lr.ph.split.us.preheader ], [ %.sroa.0.1.us.us, %38 ] - %.sroa.7.0109.us160.us = phi i32 [ 0, %.lr.ph.split.us.preheader ], [ %.sroa.7.1.us.us, %38 ] - %24 = phi ptr [ %.val87, %.lr.ph.split.us.preheader ], [ %64, %38 ] +.lr.ph.split.us: ; preds = %.lr.ph.split.us.preheader, %37 + %indvars.iv199 = phi i64 [ 0, %.lr.ph.split.us.preheader ], [ %indvars.iv.next200, %37 ] + %.val84.us162.us = phi ptr [ %.val84.us156, %.lr.ph.split.us.preheader ], [ %.val84.us.us, %37 ] + %.sroa.0.0108.us161.us = phi i32 [ 0, %.lr.ph.split.us.preheader ], [ %.sroa.0.1.us.us, %37 ] + %.sroa.7.0109.us160.us = phi i32 [ 0, %.lr.ph.split.us.preheader ], [ %.sroa.7.1.us.us, %37 ] + %24 = phi ptr [ %.val87, %.lr.ph.split.us.preheader ], [ %63, %37 ] %25 = getelementptr i8, ptr %24, i64 8 %.val85.val.us.us = load ptr, ptr %25, align 8, !tbaa !32 %26 = getelementptr inbounds nuw i32, ptr %.val85.val.us.us, i64 %indvars.iv199 @@ -8739,134 +8739,132 @@ define void @Gia_GenerateCexesDumpFile(ptr noundef %0, ptr noundef readonly capt %32 = sub nsw i32 %27, %31 %33 = lshr i32 %30, 29 %34 = and i32 %33, 1 - %35 = shl nsw i32 %32, 1 - %36 = or disjoint i32 %35, %34 - %37 = icmp eq i32 %36, 0 - br i1 %37, label %59, label %.preheader94.us.us + %35 = or i32 %32, %34 + %36 = icmp eq i32 %35, 0 + br i1 %36, label %58, label %.preheader94.us.us -38: ; preds = %63 +37: ; preds = %62 %.val84.us.us = load ptr, ptr %19, align 8, !tbaa !3 %.not.us.us = icmp eq ptr %.val84.us.us, null br i1 %.not.us.us, label %.critedge, label %.lr.ph.split.us, !llvm.loop !177 .preheader94.us.us: ; preds = %.lr.ph.split.us - %39 = mul nuw nsw i64 %indvars.iv199, %23 - %40 = trunc nuw nsw i64 %indvars.iv199 to i32 - br label %41 + %38 = mul nuw nsw i64 %indvars.iv199, %23 + %39 = trunc nuw nsw i64 %indvars.iv199 to i32 + br label %40 -41: ; preds = %.preheader94.us.us, %.critedge4.us.us +40: ; preds = %.preheader94.us.us, %.critedge4.us.us %indvars.iv194 = phi i64 [ 0, %.preheader94.us.us ], [ %indvars.iv.next195, %.critedge4.us.us ] %.val88.us.us = load ptr, ptr %22, align 8, !tbaa !95 - %42 = getelementptr inbounds nuw %struct.Vec_Int_t_, ptr %.val88.us.us, i64 %indvars.iv194 - %43 = getelementptr inbounds nuw %struct.Vec_Int_t_, ptr %42, i64 %39 + %41 = getelementptr inbounds nuw %struct.Vec_Int_t_, ptr %.val88.us.us, i64 %indvars.iv194 + %42 = getelementptr inbounds nuw %struct.Vec_Int_t_, ptr %41, i64 %38 %.val91.us.us = load ptr, ptr %10, align 8, !tbaa !34 - %44 = getelementptr i8, ptr %.val91.us.us, i64 4 - %.val91.val.us.us = load i32, ptr %44, align 4, !tbaa !30 - %45 = sext i32 %.val91.val.us.us to i64 - tail call void @llvm.memset.p0.i64(ptr align 1 %14, i8 45, i64 %45, i1 false) - %46 = getelementptr i8, ptr %43, i64 4 - %.val100.us.us = load i32, ptr %46, align 4, !tbaa !30 - %47 = icmp sgt i32 %.val100.us.us, 0 - br i1 %47, label %.lr.ph103.us.us, label %.critedge4.us.us - -.critedge4.us.us: ; preds = %49, %41 - %48 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %5, ptr noundef nonnull @.str.53, i32 noundef %40, ptr noundef %14) #27 + %43 = getelementptr i8, ptr %.val91.us.us, i64 4 + %.val91.val.us.us = load i32, ptr %43, align 4, !tbaa !30 + %44 = sext i32 %.val91.val.us.us to i64 + tail call void @llvm.memset.p0.i64(ptr align 1 %14, i8 45, i64 %44, i1 false) + %45 = getelementptr i8, ptr %42, i64 4 + %.val100.us.us = load i32, ptr %45, align 4, !tbaa !30 + %46 = icmp sgt i32 %.val100.us.us, 0 + br i1 %46, label %.lr.ph103.us.us, label %.critedge4.us.us + +.critedge4.us.us: ; preds = %48, %40 + %47 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %5, ptr noundef nonnull @.str.53, i32 noundef %39, ptr noundef %14) #27 %indvars.iv.next195 = add nuw nsw i64 %indvars.iv194, 1 %exitcond198.not = icmp eq i64 %indvars.iv.next195, %23 - br i1 %exitcond198.not, label %._crit_edge106.us.us, label %41, !llvm.loop !178 - -49: ; preds = %.lr.ph103.us.us, %49 - %indvars.iv191 = phi i64 [ 0, %.lr.ph103.us.us ], [ %indvars.iv.next192, %49 ] - %.val80.us.us = load ptr, ptr %68, align 8, !tbaa !32 - %50 = getelementptr inbounds nuw i32, ptr %.val80.us.us, i64 %indvars.iv191 - %51 = load i32, ptr %50, align 4, !tbaa !35 - %52 = trunc i32 %51 to i8 - %53 = and i8 %52, 1 - %54 = sub nuw nsw i8 49, %53 - %55 = ashr i32 %51, 1 - %56 = sext i32 %55 to i64 - %gep.us.us = getelementptr i8, ptr %invariant.gep, i64 %56 - store i8 %54, ptr %gep.us.us, align 1, !tbaa !50 + br i1 %exitcond198.not, label %._crit_edge106.us.us, label %40, !llvm.loop !178 + +48: ; preds = %.lr.ph103.us.us, %48 + %indvars.iv191 = phi i64 [ 0, %.lr.ph103.us.us ], [ %indvars.iv.next192, %48 ] + %.val80.us.us = load ptr, ptr %67, align 8, !tbaa !32 + %49 = getelementptr inbounds nuw i32, ptr %.val80.us.us, i64 %indvars.iv191 + %50 = load i32, ptr %49, align 4, !tbaa !35 + %51 = trunc i32 %50 to i8 + %52 = and i8 %51, 1 + %53 = sub nuw nsw i8 49, %52 + %54 = ashr i32 %50, 1 + %55 = sext i32 %54 to i64 + %gep.us.us = getelementptr i8, ptr %invariant.gep, i64 %55 + store i8 %53, ptr %gep.us.us, align 1, !tbaa !50 %indvars.iv.next192 = add nuw nsw i64 %indvars.iv191, 1 - %.val.us.us = load i32, ptr %46, align 4, !tbaa !30 - %57 = sext i32 %.val.us.us to i64 - %58 = icmp slt i64 %indvars.iv.next192, %57 - br i1 %58, label %49, label %.critedge4.us.us, !llvm.loop !179 - -59: ; preds = %.lr.ph.split.us - %60 = trunc nuw nsw i64 %indvars.iv199 to i32 - %61 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %5, ptr noundef nonnull @.str.49, i32 noundef %60) #27 - %62 = add nsw i32 %.sroa.0.0108.us161.us, 1 - br label %63 - -63: ; preds = %59, %._crit_edge106.us.us - %.sroa.0.1.us.us = phi i32 [ %62, %59 ], [ %.sroa.0.0108.us161.us, %._crit_edge106.us.us ] - %.sroa.7.1.us.us = phi i32 [ %.sroa.7.0109.us160.us, %59 ], [ %69, %._crit_edge106.us.us ] + %.val.us.us = load i32, ptr %45, align 4, !tbaa !30 + %56 = sext i32 %.val.us.us to i64 + %57 = icmp slt i64 %indvars.iv.next192, %56 + br i1 %57, label %48, label %.critedge4.us.us, !llvm.loop !179 + +58: ; preds = %.lr.ph.split.us + %59 = trunc nuw nsw i64 %indvars.iv199 to i32 + %60 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %5, ptr noundef nonnull @.str.49, i32 noundef %59) #27 + %61 = add nsw i32 %.sroa.0.0108.us161.us, 1 + br label %62 + +62: ; preds = %58, %._crit_edge106.us.us + %.sroa.0.1.us.us = phi i32 [ %61, %58 ], [ %.sroa.0.0108.us161.us, %._crit_edge106.us.us ] + %.sroa.7.1.us.us = phi i32 [ %.sroa.7.0109.us160.us, %58 ], [ %68, %._crit_edge106.us.us ] %indvars.iv.next200 = add nuw nsw i64 %indvars.iv199, 1 - %64 = load ptr, ptr %16, align 8, !tbaa !43 - %65 = getelementptr i8, ptr %64, i64 4 - %.val79.us.us = load i32, ptr %65, align 4, !tbaa !30 - %66 = sext i32 %.val79.us.us to i64 - %67 = icmp slt i64 %indvars.iv.next200, %66 - br i1 %67, label %38, label %.critedge, !llvm.loop !177 + %63 = load ptr, ptr %16, align 8, !tbaa !43 + %64 = getelementptr i8, ptr %63, i64 4 + %.val79.us.us = load i32, ptr %64, align 4, !tbaa !30 + %65 = sext i32 %.val79.us.us to i64 + %66 = icmp slt i64 %indvars.iv.next200, %65 + br i1 %66, label %37, label %.critedge, !llvm.loop !177 -.lr.ph103.us.us: ; preds = %41 - %68 = getelementptr i8, ptr %43, i64 8 - br label %49 +.lr.ph103.us.us: ; preds = %40 + %67 = getelementptr i8, ptr %42, i64 8 + br label %48 ._crit_edge106.us.us: ; preds = %.critedge4.us.us - %69 = add nsw i32 %.sroa.7.0109.us160.us, 1 - br label %63 + %68 = add nsw i32 %.sroa.7.0109.us160.us, 1 + br label %62 -70: ; preds = %90 +69: ; preds = %88 %.val84.us = load ptr, ptr %19, align 8, !tbaa !3 %.not.us = icmp eq ptr %.val84.us, null br i1 %.not.us, label %.critedge, label %.lr.ph.split, !llvm.loop !177 -.lr.ph.split: ; preds = %.lr.ph, %70 - %71 = phi ptr [ %91, %70 ], [ %.val87, %.lr.ph ] - %indvars.iv188 = phi i64 [ %indvars.iv.next189, %70 ], [ 0, %.lr.ph ] - %.val84.us162 = phi ptr [ %.val84.us, %70 ], [ %.val84.us156, %.lr.ph ] - %.sroa.0.0108.us161 = phi i32 [ %.sroa.0.1.us, %70 ], [ 0, %.lr.ph ] - %.sroa.7.0109.us160 = phi i32 [ %.sroa.7.1.us, %70 ], [ 0, %.lr.ph ] - %72 = getelementptr i8, ptr %71, i64 8 - %.val85.val.us = load ptr, ptr %72, align 8, !tbaa !32 - %73 = getelementptr inbounds nuw i32, ptr %.val85.val.us, i64 %indvars.iv188 - %74 = load i32, ptr %73, align 4, !tbaa !35 - %75 = sext i32 %74 to i64 - %76 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val84.us162, i64 %75 - %.val.i.i.us = load i64, ptr %76, align 4 - %77 = trunc i64 %.val.i.i.us to i32 - %78 = and i32 %77, 536870911 - %79 = sub nsw i32 %74, %78 - %80 = lshr i32 %77, 29 - %81 = and i32 %80, 1 - %82 = shl nsw i32 %79, 1 - %83 = or disjoint i32 %82, %81 - %84 = icmp eq i32 %83, 0 - br i1 %84, label %86, label %.preheader94.us +.lr.ph.split: ; preds = %.lr.ph, %69 + %70 = phi ptr [ %89, %69 ], [ %.val87, %.lr.ph ] + %indvars.iv188 = phi i64 [ %indvars.iv.next189, %69 ], [ 0, %.lr.ph ] + %.val84.us162 = phi ptr [ %.val84.us, %69 ], [ %.val84.us156, %.lr.ph ] + %.sroa.0.0108.us161 = phi i32 [ %.sroa.0.1.us, %69 ], [ 0, %.lr.ph ] + %.sroa.7.0109.us160 = phi i32 [ %.sroa.7.1.us, %69 ], [ 0, %.lr.ph ] + %71 = getelementptr i8, ptr %70, i64 8 + %.val85.val.us = load ptr, ptr %71, align 8, !tbaa !32 + %72 = getelementptr inbounds nuw i32, ptr %.val85.val.us, i64 %indvars.iv188 + %73 = load i32, ptr %72, align 4, !tbaa !35 + %74 = sext i32 %73 to i64 + %75 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val84.us162, i64 %74 + %.val.i.i.us = load i64, ptr %75, align 4 + %76 = trunc i64 %.val.i.i.us to i32 + %77 = and i32 %76, 536870911 + %78 = sub nsw i32 %73, %77 + %79 = lshr i32 %76, 29 + %80 = and i32 %79, 1 + %81 = or i32 %78, %80 + %82 = icmp eq i32 %81, 0 + br i1 %82, label %84, label %.preheader94.us .preheader94.us: ; preds = %.lr.ph.split - %85 = add nsw i32 %.sroa.7.0109.us160, 1 - br label %90 + %83 = add nsw i32 %.sroa.7.0109.us160, 1 + br label %88 -86: ; preds = %.lr.ph.split - %87 = trunc nuw nsw i64 %indvars.iv188 to i32 - %88 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %5, ptr noundef nonnull @.str.49, i32 noundef %87) #27 - %89 = add nsw i32 %.sroa.0.0108.us161, 1 +84: ; preds = %.lr.ph.split + %85 = trunc nuw nsw i64 %indvars.iv188 to i32 + %86 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %5, ptr noundef nonnull @.str.49, i32 noundef %85) #27 + %87 = add nsw i32 %.sroa.0.0108.us161, 1 %.pre202 = load ptr, ptr %16, align 8, !tbaa !43 - br label %90 + br label %88 -90: ; preds = %86, %.preheader94.us - %91 = phi ptr [ %.pre202, %86 ], [ %71, %.preheader94.us ] - %.sroa.0.1.us = phi i32 [ %89, %86 ], [ %.sroa.0.0108.us161, %.preheader94.us ] - %.sroa.7.1.us = phi i32 [ %.sroa.7.0109.us160, %86 ], [ %85, %.preheader94.us ] +88: ; preds = %84, %.preheader94.us + %89 = phi ptr [ %.pre202, %84 ], [ %70, %.preheader94.us ] + %.sroa.0.1.us = phi i32 [ %87, %84 ], [ %.sroa.0.0108.us161, %.preheader94.us ] + %.sroa.7.1.us = phi i32 [ %.sroa.7.0109.us160, %84 ], [ %83, %.preheader94.us ] %indvars.iv.next189 = add nuw nsw i64 %indvars.iv188, 1 - %92 = getelementptr i8, ptr %91, i64 4 - %.val79.us = load i32, ptr %92, align 4, !tbaa !30 - %93 = sext i32 %.val79.us to i64 - %94 = icmp slt i64 %indvars.iv.next189, %93 - br i1 %94, label %70, label %.critedge, !llvm.loop !177 + %90 = getelementptr i8, ptr %89, i64 4 + %.val79.us = load i32, ptr %90, align 4, !tbaa !30 + %91 = sext i32 %.val79.us to i64 + %92 = icmp slt i64 %indvars.iv.next189, %91 + br i1 %92, label %69, label %.critedge, !llvm.loop !177 .lr.ph113.split: ; preds = %.lr.ph113 br i1 %.not.us157, label %.critedge, label %.lr.ph132 @@ -8875,166 +8873,164 @@ define void @Gia_GenerateCexesDumpFile(ptr noundef %0, ptr noundef readonly capt br i1 %21, label %.lr.ph132.split.us.preheader, label %.lr.ph132.split .lr.ph132.split.us.preheader: ; preds = %.lr.ph132 - %95 = zext nneg i32 %.fr173 to i64 + %93 = zext nneg i32 %.fr173 to i64 br label %.lr.ph132.split.us -.lr.ph132.split.us: ; preds = %.lr.ph132.split.us.preheader, %110 - %indvars.iv185 = phi i64 [ 0, %.lr.ph132.split.us.preheader ], [ %indvars.iv.next186, %110 ] - %.val84131.us = phi ptr [ %.val84.us156, %.lr.ph132.split.us.preheader ], [ %.val84.us142, %110 ] - %.sroa.0.0108130.us = phi i32 [ 0, %.lr.ph132.split.us.preheader ], [ %.sroa.0.1.us144, %110 ] - %.sroa.7.0109129.us = phi i32 [ 0, %.lr.ph132.split.us.preheader ], [ %.sroa.7.1.us145, %110 ] - %96 = phi ptr [ %.val87, %.lr.ph132.split.us.preheader ], [ %132, %110 ] - %97 = getelementptr i8, ptr %96, i64 8 - %.val85.val.us136 = load ptr, ptr %97, align 8, !tbaa !32 - %98 = getelementptr inbounds nuw i32, ptr %.val85.val.us136, i64 %indvars.iv185 - %99 = load i32, ptr %98, align 4, !tbaa !35 - %100 = sext i32 %99 to i64 - %101 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val84131.us, i64 %100 - %.val.i.i.us137 = load i64, ptr %101, align 4 - %102 = trunc i64 %.val.i.i.us137 to i32 - %103 = and i32 %102, 536870911 - %104 = sub nsw i32 %99, %103 - %105 = lshr i32 %102, 29 - %106 = and i32 %105, 1 - %107 = shl nsw i32 %104, 1 - %108 = or disjoint i32 %107, %106 - %109 = icmp eq i32 %108, 0 - br i1 %109, label %127, label %.preheader95.us - -110: ; preds = %131 +.lr.ph132.split.us: ; preds = %.lr.ph132.split.us.preheader, %107 + %indvars.iv185 = phi i64 [ 0, %.lr.ph132.split.us.preheader ], [ %indvars.iv.next186, %107 ] + %.val84131.us = phi ptr [ %.val84.us156, %.lr.ph132.split.us.preheader ], [ %.val84.us142, %107 ] + %.sroa.0.0108130.us = phi i32 [ 0, %.lr.ph132.split.us.preheader ], [ %.sroa.0.1.us144, %107 ] + %.sroa.7.0109129.us = phi i32 [ 0, %.lr.ph132.split.us.preheader ], [ %.sroa.7.1.us145, %107 ] + %94 = phi ptr [ %.val87, %.lr.ph132.split.us.preheader ], [ %129, %107 ] + %95 = getelementptr i8, ptr %94, i64 8 + %.val85.val.us136 = load ptr, ptr %95, align 8, !tbaa !32 + %96 = getelementptr inbounds nuw i32, ptr %.val85.val.us136, i64 %indvars.iv185 + %97 = load i32, ptr %96, align 4, !tbaa !35 + %98 = sext i32 %97 to i64 + %99 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val84131.us, i64 %98 + %.val.i.i.us137 = load i64, ptr %99, align 4 + %100 = trunc i64 %.val.i.i.us137 to i32 + %101 = and i32 %100, 536870911 + %102 = sub nsw i32 %97, %101 + %103 = lshr i32 %100, 29 + %104 = and i32 %103, 1 + %105 = or i32 %102, %104 + %106 = icmp eq i32 %105, 0 + br i1 %106, label %124, label %.preheader95.us + +107: ; preds = %128 %.val84.us142 = load ptr, ptr %19, align 8, !tbaa !3 %.not.us143 = icmp eq ptr %.val84.us142, null br i1 %.not.us143, label %.critedge, label %.lr.ph132.split.us, !llvm.loop !177 .preheader95.us: ; preds = %.lr.ph132.split.us - %111 = mul nuw nsw i64 %indvars.iv185, %95 - %112 = trunc nuw nsw i64 %indvars.iv185 to i32 - br label %113 + %108 = mul nuw nsw i64 %indvars.iv185, %93 + %109 = trunc nuw nsw i64 %indvars.iv185 to i32 + br label %110 -113: ; preds = %.preheader95.us, %.critedge2.us +110: ; preds = %.preheader95.us, %.critedge2.us %indvars.iv182 = phi i64 [ 0, %.preheader95.us ], [ %indvars.iv.next183, %.critedge2.us ] %.val89.us = load ptr, ptr %22, align 8, !tbaa !95 - %114 = getelementptr inbounds nuw %struct.Vec_Int_t_, ptr %.val89.us, i64 %indvars.iv182 - %115 = getelementptr inbounds nuw %struct.Vec_Int_t_, ptr %114, i64 %111 - %116 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %5, ptr noundef nonnull @.str.50, i32 noundef %112) #27 - %117 = getelementptr i8, ptr %115, i64 4 - %.val78.us = load i32, ptr %117, align 4, !tbaa !30 - %118 = icmp eq i32 %.val78.us, 0 - br i1 %118, label %125, label %.preheader.us - -119: ; preds = %.lr.ph.us, %119 - %indvars.iv179 = phi i64 [ 0, %.lr.ph.us ], [ %indvars.iv.next180, %119 ] - %.val81.us = load ptr, ptr %137, align 8, !tbaa !32 - %120 = getelementptr inbounds nuw i32, ptr %.val81.us, i64 %indvars.iv179 - %121 = load i32, ptr %120, align 4, !tbaa !35 - %122 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %5, ptr noundef nonnull @.str.52, i32 noundef %121) #27 + %111 = getelementptr inbounds nuw %struct.Vec_Int_t_, ptr %.val89.us, i64 %indvars.iv182 + %112 = getelementptr inbounds nuw %struct.Vec_Int_t_, ptr %111, i64 %108 + %113 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %5, ptr noundef nonnull @.str.50, i32 noundef %109) #27 + %114 = getelementptr i8, ptr %112, i64 4 + %.val78.us = load i32, ptr %114, align 4, !tbaa !30 + %115 = icmp eq i32 %.val78.us, 0 + br i1 %115, label %122, label %.preheader.us + +116: ; preds = %.lr.ph.us, %116 + %indvars.iv179 = phi i64 [ 0, %.lr.ph.us ], [ %indvars.iv.next180, %116 ] + %.val81.us = load ptr, ptr %134, align 8, !tbaa !32 + %117 = getelementptr inbounds nuw i32, ptr %.val81.us, i64 %indvars.iv179 + %118 = load i32, ptr %117, align 4, !tbaa !35 + %119 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %5, ptr noundef nonnull @.str.52, i32 noundef %118) #27 %indvars.iv.next180 = add nuw nsw i64 %indvars.iv179, 1 - %.val77.us = load i32, ptr %117, align 4, !tbaa !30 - %123 = sext i32 %.val77.us to i64 - %124 = icmp slt i64 %indvars.iv.next180, %123 - br i1 %124, label %119, label %.critedge2.us, !llvm.loop !180 + %.val77.us = load i32, ptr %114, align 4, !tbaa !30 + %120 = sext i32 %.val77.us to i64 + %121 = icmp slt i64 %indvars.iv.next180, %120 + br i1 %121, label %116, label %.critedge2.us, !llvm.loop !180 -125: ; preds = %113 - %126 = tail call i64 @fwrite(ptr nonnull @.str.51, i64 14, i64 1, ptr nonnull %5) +122: ; preds = %110 + %123 = tail call i64 @fwrite(ptr nonnull @.str.51, i64 14, i64 1, ptr nonnull %5) br label %.critedge2.us -.critedge2.us: ; preds = %119, %.preheader.us, %125 +.critedge2.us: ; preds = %116, %.preheader.us, %122 %fputc.us = tail call i32 @fputc(i32 10, ptr nonnull %5) %indvars.iv.next183 = add nuw nsw i64 %indvars.iv182, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next183, %95 - br i1 %exitcond.not, label %._crit_edge.us, label %113, !llvm.loop !181 - -127: ; preds = %.lr.ph132.split.us - %128 = trunc nuw nsw i64 %indvars.iv185 to i32 - %129 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %5, ptr noundef nonnull @.str.49, i32 noundef %128) #27 - %130 = add nsw i32 %.sroa.0.0108130.us, 1 - br label %131 - -131: ; preds = %127, %._crit_edge.us - %.sroa.0.1.us144 = phi i32 [ %130, %127 ], [ %.sroa.0.0108130.us, %._crit_edge.us ] - %.sroa.7.1.us145 = phi i32 [ %.sroa.7.0109129.us, %127 ], [ %138, %._crit_edge.us ] + %exitcond.not = icmp eq i64 %indvars.iv.next183, %93 + br i1 %exitcond.not, label %._crit_edge.us, label %110, !llvm.loop !181 + +124: ; preds = %.lr.ph132.split.us + %125 = trunc nuw nsw i64 %indvars.iv185 to i32 + %126 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %5, ptr noundef nonnull @.str.49, i32 noundef %125) #27 + %127 = add nsw i32 %.sroa.0.0108130.us, 1 + br label %128 + +128: ; preds = %124, %._crit_edge.us + %.sroa.0.1.us144 = phi i32 [ %127, %124 ], [ %.sroa.0.0108130.us, %._crit_edge.us ] + %.sroa.7.1.us145 = phi i32 [ %.sroa.7.0109129.us, %124 ], [ %135, %._crit_edge.us ] %indvars.iv.next186 = add nuw nsw i64 %indvars.iv185, 1 - %132 = load ptr, ptr %16, align 8, !tbaa !43 - %133 = getelementptr i8, ptr %132, i64 4 - %.val79.us146 = load i32, ptr %133, align 4, !tbaa !30 - %134 = sext i32 %.val79.us146 to i64 - %135 = icmp slt i64 %indvars.iv.next186, %134 - br i1 %135, label %110, label %.critedge, !llvm.loop !177 + %129 = load ptr, ptr %16, align 8, !tbaa !43 + %130 = getelementptr i8, ptr %129, i64 4 + %.val79.us146 = load i32, ptr %130, align 4, !tbaa !30 + %131 = sext i32 %.val79.us146 to i64 + %132 = icmp slt i64 %indvars.iv.next186, %131 + br i1 %132, label %107, label %.critedge, !llvm.loop !177 -.preheader.us: ; preds = %113 - %136 = icmp sgt i32 %.val78.us, 0 - br i1 %136, label %.lr.ph.us, label %.critedge2.us +.preheader.us: ; preds = %110 + %133 = icmp sgt i32 %.val78.us, 0 + br i1 %133, label %.lr.ph.us, label %.critedge2.us .lr.ph.us: ; preds = %.preheader.us - %137 = getelementptr i8, ptr %115, i64 8 - br label %119 + %134 = getelementptr i8, ptr %112, i64 8 + br label %116 ._crit_edge.us: ; preds = %.critedge2.us - %138 = add nsw i32 %.sroa.7.0109129.us, 1 - br label %131 + %135 = add nsw i32 %.sroa.7.0109129.us, 1 + br label %128 -139: ; preds = %159 +136: ; preds = %155 %.val84 = load ptr, ptr %19, align 8, !tbaa !3 %.not = icmp eq ptr %.val84, null br i1 %.not, label %.critedge, label %.lr.ph132.split, !llvm.loop !177 -.lr.ph132.split: ; preds = %.lr.ph132, %139 - %140 = phi ptr [ %160, %139 ], [ %.val87, %.lr.ph132 ] - %indvars.iv = phi i64 [ %indvars.iv.next, %139 ], [ 0, %.lr.ph132 ] - %.val84131 = phi ptr [ %.val84, %139 ], [ %.val84.us156, %.lr.ph132 ] - %.sroa.0.0108130 = phi i32 [ %.sroa.0.1, %139 ], [ 0, %.lr.ph132 ] - %.sroa.7.0109129 = phi i32 [ %.sroa.7.1, %139 ], [ 0, %.lr.ph132 ] - %141 = getelementptr i8, ptr %140, i64 8 - %.val85.val = load ptr, ptr %141, align 8, !tbaa !32 - %142 = getelementptr inbounds nuw i32, ptr %.val85.val, i64 %indvars.iv - %143 = load i32, ptr %142, align 4, !tbaa !35 - %144 = sext i32 %143 to i64 - %145 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val84131, i64 %144 - %.val.i.i = load i64, ptr %145, align 4 - %146 = trunc i64 %.val.i.i to i32 - %147 = and i32 %146, 536870911 - %148 = sub nsw i32 %143, %147 - %149 = lshr i32 %146, 29 - %150 = and i32 %149, 1 - %151 = shl nsw i32 %148, 1 - %152 = or disjoint i32 %151, %150 - %153 = icmp eq i32 %152, 0 - br i1 %153, label %154, label %.preheader95 - -154: ; preds = %.lr.ph132.split - %155 = trunc nuw nsw i64 %indvars.iv to i32 - %156 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %5, ptr noundef nonnull @.str.49, i32 noundef %155) #27 - %157 = add nsw i32 %.sroa.0.0108130, 1 +.lr.ph132.split: ; preds = %.lr.ph132, %136 + %137 = phi ptr [ %156, %136 ], [ %.val87, %.lr.ph132 ] + %indvars.iv = phi i64 [ %indvars.iv.next, %136 ], [ 0, %.lr.ph132 ] + %.val84131 = phi ptr [ %.val84, %136 ], [ %.val84.us156, %.lr.ph132 ] + %.sroa.0.0108130 = phi i32 [ %.sroa.0.1, %136 ], [ 0, %.lr.ph132 ] + %.sroa.7.0109129 = phi i32 [ %.sroa.7.1, %136 ], [ 0, %.lr.ph132 ] + %138 = getelementptr i8, ptr %137, i64 8 + %.val85.val = load ptr, ptr %138, align 8, !tbaa !32 + %139 = getelementptr inbounds nuw i32, ptr %.val85.val, i64 %indvars.iv + %140 = load i32, ptr %139, align 4, !tbaa !35 + %141 = sext i32 %140 to i64 + %142 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val84131, i64 %141 + %.val.i.i = load i64, ptr %142, align 4 + %143 = trunc i64 %.val.i.i to i32 + %144 = and i32 %143, 536870911 + %145 = sub nsw i32 %140, %144 + %146 = lshr i32 %143, 29 + %147 = and i32 %146, 1 + %148 = or i32 %145, %147 + %149 = icmp eq i32 %148, 0 + br i1 %149, label %150, label %.preheader95 + +150: ; preds = %.lr.ph132.split + %151 = trunc nuw nsw i64 %indvars.iv to i32 + %152 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %5, ptr noundef nonnull @.str.49, i32 noundef %151) #27 + %153 = add nsw i32 %.sroa.0.0108130, 1 %.pre = load ptr, ptr %16, align 8, !tbaa !43 - br label %159 + br label %155 .preheader95: ; preds = %.lr.ph132.split - %158 = add nsw i32 %.sroa.7.0109129, 1 - br label %159 + %154 = add nsw i32 %.sroa.7.0109129, 1 + br label %155 -159: ; preds = %154, %.preheader95 - %160 = phi ptr [ %.pre, %154 ], [ %140, %.preheader95 ] - %.sroa.0.1 = phi i32 [ %157, %154 ], [ %.sroa.0.0108130, %.preheader95 ] - %.sroa.7.1 = phi i32 [ %.sroa.7.0109129, %154 ], [ %158, %.preheader95 ] +155: ; preds = %150, %.preheader95 + %156 = phi ptr [ %.pre, %150 ], [ %137, %.preheader95 ] + %.sroa.0.1 = phi i32 [ %153, %150 ], [ %.sroa.0.0108130, %.preheader95 ] + %.sroa.7.1 = phi i32 [ %.sroa.7.0109129, %150 ], [ %154, %.preheader95 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %161 = getelementptr i8, ptr %160, i64 4 - %.val79 = load i32, ptr %161, align 4, !tbaa !30 - %162 = sext i32 %.val79 to i64 - %163 = icmp slt i64 %indvars.iv.next, %162 - br i1 %163, label %139, label %.critedge, !llvm.loop !177 - -.critedge: ; preds = %139, %159, %110, %131, %70, %90, %38, %63, %.lr.ph113.split.us, %.lr.ph113.split, %9 - %.sroa.0.0.lcssa = phi i32 [ 0, %9 ], [ 0, %.lr.ph113.split.us ], [ 0, %.lr.ph113.split ], [ %.sroa.0.1.us.us, %63 ], [ %.sroa.0.1.us.us, %38 ], [ %.sroa.0.1.us, %90 ], [ %.sroa.0.1.us, %70 ], [ %.sroa.0.1.us144, %131 ], [ %.sroa.0.1.us144, %110 ], [ %.sroa.0.1, %159 ], [ %.sroa.0.1, %139 ] - %.sroa.7.0.lcssa = phi i32 [ 0, %9 ], [ 0, %.lr.ph113.split.us ], [ 0, %.lr.ph113.split ], [ %.sroa.7.1.us.us, %63 ], [ %.sroa.7.1.us.us, %38 ], [ %.sroa.7.1.us, %90 ], [ %.sroa.7.1.us, %70 ], [ %.sroa.7.1.us145, %131 ], [ %.sroa.7.1.us145, %110 ], [ %.sroa.7.1, %159 ], [ %.sroa.7.1, %139 ] - %.val79.lcssa = phi i32 [ %.val87.val, %9 ], [ %.val87.val, %.lr.ph113.split.us ], [ %.val87.val, %.lr.ph113.split ], [ %.val79.us.us, %63 ], [ %.val79.us.us, %38 ], [ %.val79.us, %90 ], [ %.val79.us, %70 ], [ %.val79.us146, %131 ], [ %.val79.us146, %110 ], [ %.val79, %159 ], [ %.val79, %139 ] - %164 = add i32 %.sroa.7.0.lcssa, %.sroa.0.0.lcssa - %165 = sub i32 %.val79.lcssa, %164 - %166 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.54, i32 noundef %.sroa.7.0.lcssa, i32 noundef %.sroa.0.0.lcssa, i32 noundef %165, ptr noundef %0) - %167 = tail call i32 @fclose(ptr noundef nonnull %5) + %157 = getelementptr i8, ptr %156, i64 4 + %.val79 = load i32, ptr %157, align 4, !tbaa !30 + %158 = sext i32 %.val79 to i64 + %159 = icmp slt i64 %indvars.iv.next, %158 + br i1 %159, label %136, label %.critedge, !llvm.loop !177 + +.critedge: ; preds = %136, %155, %107, %128, %69, %88, %37, %62, %.lr.ph113.split.us, %.lr.ph113.split, %9 + %.sroa.0.0.lcssa = phi i32 [ 0, %9 ], [ 0, %.lr.ph113.split.us ], [ 0, %.lr.ph113.split ], [ %.sroa.0.1.us.us, %62 ], [ %.sroa.0.1.us.us, %37 ], [ %.sroa.0.1.us, %88 ], [ %.sroa.0.1.us, %69 ], [ %.sroa.0.1.us144, %128 ], [ %.sroa.0.1.us144, %107 ], [ %.sroa.0.1, %155 ], [ %.sroa.0.1, %136 ] + %.sroa.7.0.lcssa = phi i32 [ 0, %9 ], [ 0, %.lr.ph113.split.us ], [ 0, %.lr.ph113.split ], [ %.sroa.7.1.us.us, %62 ], [ %.sroa.7.1.us.us, %37 ], [ %.sroa.7.1.us, %88 ], [ %.sroa.7.1.us, %69 ], [ %.sroa.7.1.us145, %128 ], [ %.sroa.7.1.us145, %107 ], [ %.sroa.7.1, %155 ], [ %.sroa.7.1, %136 ] + %.val79.lcssa = phi i32 [ %.val87.val, %9 ], [ %.val87.val, %.lr.ph113.split.us ], [ %.val87.val, %.lr.ph113.split ], [ %.val79.us.us, %62 ], [ %.val79.us.us, %37 ], [ %.val79.us, %88 ], [ %.val79.us, %69 ], [ %.val79.us146, %128 ], [ %.val79.us146, %107 ], [ %.val79, %155 ], [ %.val79, %136 ] + %160 = add i32 %.sroa.7.0.lcssa, %.sroa.0.0.lcssa + %161 = sub i32 %.val79.lcssa, %160 + %162 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.54, i32 noundef %.sroa.7.0.lcssa, i32 noundef %.sroa.0.0.lcssa, i32 noundef %161, ptr noundef %0) + %163 = tail call i32 @fclose(ptr noundef nonnull %5) tail call void @free(ptr noundef %14) #27 - br label %168 + br label %164 -168: ; preds = %.critedge, %7 +164: ; preds = %.critedge, %7 ret void } diff --git a/bench/abseil-cpp/optimized/float_conversion.ll b/bench/abseil-cpp/optimized/float_conversion.ll index aae90f7994b..b36d9cc47b0 100644 --- a/bench/abseil-cpp/optimized/float_conversion.ll +++ b/bench/abseil-cpp/optimized/float_conversion.ll @@ -150,7 +150,7 @@ _ZN4absl19str_format_internal12_GLOBAL__N_123ConvertNonNumericFloatsIeEEbcT_RKNS call void @llvm.lifetime.start.p0(i64 104, ptr nonnull %10) #19 %60 = load i8, ptr %1, align 4, !tbaa !13 %61 = and i8 %60, -2 - switch i8 %61, label %385 [ + switch i8 %61, label %388 [ i8 8, label %62 i8 10, label %151 i8 12, label %197 @@ -391,7 +391,7 @@ _ZN4absl19str_format_internal12_GLOBAL__N_111FormatFFastINS_7uint128EEEvT_iRKNS1 _ZN4absl19str_format_internal12_GLOBAL__N_17FormatFINS_7uint128EEEvT_iRKNS1_11FormatStateE.exit.i: ; preds = %_ZN4absl19str_format_internal12_GLOBAL__N_111FormatFFastINS_7uint128EEEvT_iRKNS1_11FormatStateE.exit.i.i, %79, %76 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #19 - br label %385 + br label %388 151: ; preds = %50 %152 = call fastcc noundef zeroext i1 @_ZN4absl19str_format_internal12_GLOBAL__N_113FloatToBufferILNS1_11FormatStyleE1EeEEbNS1_10DecomposedIT0_EEmPNS1_6BufferEPi(ptr noundef nonnull byval(%"struct.absl::str_format_internal::(anonymous namespace)::Decomposed") align 16 %9, i64 noundef %spec.select.i, ptr noundef %10, ptr noundef %8) @@ -399,7 +399,7 @@ _ZN4absl19str_format_internal12_GLOBAL__N_17FormatFINS_7uint128EEEvT_iRKNS1_11Fo 153: ; preds = %151 %154 = call fastcc noundef zeroext i1 @_ZN4absl19str_format_internal12_GLOBAL__N_118FallbackToSnprintfIeEEbT_RKNS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE(x86_fp80 noundef %0, ptr noundef nonnull align 4 dereferenceable(12) %1, ptr noundef %2) - br label %385 + br label %388 155: ; preds = %151 %156 = getelementptr inbounds nuw i8, ptr %1, i64 1 @@ -474,7 +474,7 @@ _ZN4absl19str_format_internal12_GLOBAL__N_113PrintExponentEicPNS1_6BufferE.exit. %196 = getelementptr inbounds nuw i8, ptr %195, i64 1 store ptr %196, ptr %159, align 8, !tbaa !37 store i8 %194, ptr %195, align 1, !tbaa !12 - br label %375 + br label %378 197: ; preds = %50 %198 = icmp eq i32 %narrow.i, 0 @@ -485,7 +485,7 @@ _ZN4absl19str_format_internal12_GLOBAL__N_113PrintExponentEicPNS1_6BufferE.exit. 201: ; preds = %197 %202 = call fastcc noundef zeroext i1 @_ZN4absl19str_format_internal12_GLOBAL__N_118FallbackToSnprintfIeEEbT_RKNS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE(x86_fp80 noundef %0, ptr noundef nonnull align 4 dereferenceable(12) %1, ptr noundef %2) - br label %385 + br label %388 203: ; preds = %197 %204 = load i32, ptr %8, align 4, !tbaa !16 @@ -575,7 +575,7 @@ _ZN4absl19str_format_internal12_GLOBAL__N_113PrintExponentEicPNS1_6BufferE.exit. .loopexit.i: ; preds = %237, %241, %231 %.not61.i = icmp eq i32 %232, 0 - br i1 %.not61.i, label %375, label %242 + br i1 %.not61.i, label %378, label %242 242: ; preds = %.loopexit.i %243 = load i8, ptr %1, align 4, !tbaa !13 @@ -634,7 +634,7 @@ _ZN4absl19str_format_internal12_GLOBAL__N_113PrintExponentEicPNS1_6BufferE.exit: %275 = getelementptr inbounds nuw i8, ptr %274, i64 1 store ptr %275, ptr %248, align 8, !tbaa !37 store i8 %273, ptr %274, align 1, !tbaa !12 - br label %375 + br label %378 276: ; preds = %50 %277 = icmp eq i8 %60, 15 @@ -652,185 +652,185 @@ _ZN4absl19str_format_internal12_GLOBAL__N_113PrintExponentEicPNS1_6BufferE.exit: %281 = load i32, ptr %51, align 4, !tbaa !15 %282 = icmp slt i32 %281, 0 %283 = add i32 %55, 64 - %.not.i66.i.i.i = icmp ne i64 %.sroa.0.0.copyload.i, 0 + %.not.i65.i.i.i = icmp ne i64 %.sroa.0.0.copyload.i, 0 %284 = icmp ne i64 %.sroa.2.0.copyload.i, 0 - %285 = select i1 %.not.i66.i.i.i, i1 true, i1 %284 + %285 = select i1 %.not.i65.i.i.i, i1 true, i1 %284 br i1 %285, label %.lr.ph.i.preheader.i.i, label %.critedge.i.i.i .lr.ph.i.preheader.i.i: ; preds = %276 %smin.i.i = call i32 @llvm.smin.i32(i32 %283, i32 -16382) br label %.lr.ph.i.i.i -.lr.ph.i.i.i: ; preds = %291, %.lr.ph.i.preheader.i.i - %.199.i.i = phi i32 [ %292, %291 ], [ %283, %.lr.ph.i.preheader.i.i ] - %.sroa.16.2.i.i = phi i64 [ %.sroa.2.0.extract.trunc.i.i37.i.i.i, %291 ], [ %.sroa.2.0.copyload.i, %.lr.ph.i.preheader.i.i ] - %.sroa.082.2.i.i = phi i64 [ %.sroa.0.0.extract.trunc.i.i35.i.i.i, %291 ], [ %.sroa.0.0.copyload.i, %.lr.ph.i.preheader.i.i ] +.lr.ph.i.i.i: ; preds = %292, %.lr.ph.i.preheader.i.i + %.199.i.i = phi i32 [ %293, %292 ], [ %283, %.lr.ph.i.preheader.i.i ] + %.sroa.16.2.i.i = phi i64 [ %.sroa.2.0.extract.trunc.i.i36.i.i.i, %292 ], [ %.sroa.2.0.copyload.i, %.lr.ph.i.preheader.i.i ] + %.sroa.082.2.i.i = phi i64 [ %.sroa.0.0.extract.trunc.i.i34.i.i.i, %292 ], [ %.sroa.0.0.copyload.i, %.lr.ph.i.preheader.i.i ] %.sroa.24.0.insert.ext.i.i.i.i = zext i64 %.sroa.16.2.i.i to i128 %.sroa.24.0.insert.shift.i.i.i.i = shl nuw i128 %.sroa.24.0.insert.ext.i.i.i.i, 64 %.sroa.03.0.insert.ext.i.i.i.i = zext i64 %.sroa.082.2.i.i to i128 %.sroa.03.0.insert.insert.i.i.i.i = or disjoint i128 %.sroa.24.0.insert.shift.i.i.i.i, %.sroa.03.0.insert.ext.i.i.i.i - %.not.i27.i.i.i = icmp sgt i64 %.sroa.16.2.i.i, -1 - br i1 %.not.i27.i.i.i, label %286, label %.critedge.i.i.i + %286 = icmp sgt i64 %.sroa.16.2.i.i, -1 + br i1 %286, label %287, label %.critedge.i.i.i -286: ; preds = %.lr.ph.i.i.i +287: ; preds = %.lr.ph.i.i.i %.not.i.i78.i = icmp sgt i32 %.199.i.i, -16382 - br i1 %.not.i.i78.i, label %291, label %287, !prof !43 - -287: ; preds = %286 - %288 = sub nuw nsw i32 -16382, %smin.i.i - %289 = zext nneg i32 %288 to i128 - %290 = lshr i128 %.sroa.03.0.insert.insert.i.i.i.i, %289 - %extract.t61 = trunc i128 %290 to i64 - %extract64 = lshr i128 %290, 64 + br i1 %.not.i.i78.i, label %292, label %288, !prof !43 + +288: ; preds = %287 + %289 = sub nuw nsw i32 -16382, %smin.i.i + %290 = zext nneg i32 %289 to i128 + %291 = lshr i128 %.sroa.03.0.insert.insert.i.i.i.i, %290 + %extract.t61 = trunc i128 %291 to i64 + %extract64 = lshr i128 %291, 64 %extract.t65 = trunc nuw i128 %extract64 to i64 br label %_ZN4absl19str_format_internal12_GLOBAL__N_116FormatANormalizeINS_7uint128EEEvNS1_18HexFloatTypeParamsEPhPT_Pi.exit.i.i -291: ; preds = %286 - %.sroa.0.0.extract.trunc.i.i35.i.i.i = shl i64 %.sroa.082.2.i.i, 1 - %.sroa.2.0.extract.shift.i.i36.i.i.i = lshr i128 %.sroa.03.0.insert.insert.i.i.i.i, 63 - %.sroa.2.0.extract.trunc.i.i37.i.i.i = trunc nuw i128 %.sroa.2.0.extract.shift.i.i36.i.i.i to i64 - %292 = add nsw i32 %.199.i.i, -1 - %.not.i.i.i.i = icmp ne i64 %.sroa.0.0.extract.trunc.i.i35.i.i.i, 0 - %293 = icmp ne i64 %.sroa.2.0.extract.trunc.i.i37.i.i.i, 0 - %294 = select i1 %.not.i.i.i.i, i1 true, i1 %293 - br i1 %294, label %.lr.ph.i.i.i, label %.critedge.i.i.i, !llvm.loop !44 - -.critedge.i.i.i: ; preds = %291, %.lr.ph.i.i.i, %276 - %.098.i.i = phi i32 [ %283, %276 ], [ %.199.i.i, %.lr.ph.i.i.i ], [ %292, %291 ] - %.sroa.16.1.i.i = phi i64 [ 0, %276 ], [ %.sroa.16.2.i.i, %.lr.ph.i.i.i ], [ 0, %291 ] - %.sroa.082.1.i.i = phi i64 [ 0, %276 ], [ %.sroa.082.2.i.i, %.lr.ph.i.i.i ], [ 0, %291 ] +292: ; preds = %287 + %.sroa.0.0.extract.trunc.i.i34.i.i.i = shl i64 %.sroa.082.2.i.i, 1 + %.sroa.2.0.extract.shift.i.i35.i.i.i = lshr i128 %.sroa.03.0.insert.insert.i.i.i.i, 63 + %.sroa.2.0.extract.trunc.i.i36.i.i.i = trunc nuw i128 %.sroa.2.0.extract.shift.i.i35.i.i.i to i64 + %293 = add nsw i32 %.199.i.i, -1 + %.not.i.i.i.i = icmp ne i64 %.sroa.0.0.extract.trunc.i.i34.i.i.i, 0 + %294 = icmp ne i64 %.sroa.2.0.extract.trunc.i.i36.i.i.i, 0 + %295 = select i1 %.not.i.i.i.i, i1 true, i1 %294 + br i1 %295, label %.lr.ph.i.i.i, label %.critedge.i.i.i, !llvm.loop !44 + +.critedge.i.i.i: ; preds = %292, %.lr.ph.i.i.i, %276 + %.098.i.i = phi i32 [ %283, %276 ], [ %.199.i.i, %.lr.ph.i.i.i ], [ %293, %292 ] + %.sroa.16.1.i.i = phi i64 [ 0, %276 ], [ %.sroa.16.2.i.i, %.lr.ph.i.i.i ], [ 0, %292 ] + %.sroa.082.1.i.i = phi i64 [ 0, %276 ], [ %.sroa.082.2.i.i, %.lr.ph.i.i.i ], [ 0, %292 ] %.sroa.22.0.insert.ext.i.i.i69.i = zext i64 %.sroa.16.1.i.i to i128 %.sroa.22.0.insert.shift.i.i.i70.i = shl nuw i128 %.sroa.22.0.insert.ext.i.i.i69.i, 64 %.sroa.01.0.insert.ext.i.i.i71.i = zext i64 %.sroa.082.1.i.i to i128 %.sroa.01.0.insert.insert.i.i.i72.i = or disjoint i128 %.sroa.22.0.insert.shift.i.i.i70.i, %.sroa.01.0.insert.ext.i.i.i71.i - %295 = lshr i64 %.sroa.16.1.i.i, 60 - %296 = trunc nuw nsw i64 %295 to i8 - %.not58.i.i.i = icmp eq i128 %.sroa.01.0.insert.insert.i.i.i72.i, 0 - %297 = add i32 %.098.i.i, -4 - %298 = select i1 %.not58.i.i.i, i32 0, i32 %297 - %299 = shl i128 %.sroa.01.0.insert.insert.i.i.i72.i, 4 - %extract.t60 = trunc i128 %299 to i64 - %extract62 = lshr i128 %299, 64 + %296 = lshr i64 %.sroa.16.1.i.i, 60 + %297 = trunc nuw nsw i64 %296 to i8 + %.not57.i.i.i = icmp eq i128 %.sroa.01.0.insert.insert.i.i.i72.i, 0 + %298 = add i32 %.098.i.i, -4 + %299 = select i1 %.not57.i.i.i, i32 0, i32 %298 + %300 = shl i128 %.sroa.01.0.insert.insert.i.i.i72.i, 4 + %extract.t60 = trunc i128 %300 to i64 + %extract62 = lshr i128 %300, 64 %extract.t63 = trunc nuw i128 %extract62 to i64 br label %_ZN4absl19str_format_internal12_GLOBAL__N_116FormatANormalizeINS_7uint128EEEvNS1_18HexFloatTypeParamsEPhPT_Pi.exit.i.i -_ZN4absl19str_format_internal12_GLOBAL__N_116FormatANormalizeINS_7uint128EEEvNS1_18HexFloatTypeParamsEPhPT_Pi.exit.i.i: ; preds = %.critedge.i.i.i, %287 - %.sink59.off0 = phi i64 [ %extract.t60, %.critedge.i.i.i ], [ %extract.t61, %287 ] - %.sink59.off64 = phi i64 [ %extract.t63, %.critedge.i.i.i ], [ %extract.t65, %287 ] - %.0100.i.i = phi i8 [ %296, %.critedge.i.i.i ], [ 0, %287 ] - %.2.i.i = phi i32 [ %298, %.critedge.i.i.i ], [ -16382, %287 ] - br i1 %282, label %_ZN4absl19str_format_internal12_GLOBAL__N_112FormatARoundINS_7uint128EEEvbRKNS1_11FormatStateEPhPT_Pi.exit.i.i, label %300 - -300: ; preds = %_ZN4absl19str_format_internal12_GLOBAL__N_116FormatANormalizeINS_7uint128EEEvNS1_18HexFloatTypeParamsEPhPT_Pi.exit.i.i - %301 = call i64 @llvm.usub.sat.i64(i64 32, i64 %spec.select.i) - %302 = icmp ugt i32 %narrow.i, 31 - br i1 %302, label %_ZN4absl19str_format_internal12_GLOBAL__N_123MaskUpToNibbleExclusiveINS_7uint128EEET_m.exit.i.i.i, label %303 - -303: ; preds = %300 - %304 = trunc nuw nsw i64 %301 to i32 - %305 = shl nuw nsw i32 %304, 2 - %306 = sub nuw nsw i32 128, %305 - %307 = zext nneg i32 %306 to i128 - %308 = lshr i128 -1, %307 +_ZN4absl19str_format_internal12_GLOBAL__N_116FormatANormalizeINS_7uint128EEEvNS1_18HexFloatTypeParamsEPhPT_Pi.exit.i.i: ; preds = %.critedge.i.i.i, %288 + %.sink59.off0 = phi i64 [ %extract.t60, %.critedge.i.i.i ], [ %extract.t61, %288 ] + %.sink59.off64 = phi i64 [ %extract.t63, %.critedge.i.i.i ], [ %extract.t65, %288 ] + %.0100.i.i = phi i8 [ %297, %.critedge.i.i.i ], [ 0, %288 ] + %.2.i.i = phi i32 [ %299, %.critedge.i.i.i ], [ -16382, %288 ] + br i1 %282, label %_ZN4absl19str_format_internal12_GLOBAL__N_112FormatARoundINS_7uint128EEEvbRKNS1_11FormatStateEPhPT_Pi.exit.i.i, label %301 + +301: ; preds = %_ZN4absl19str_format_internal12_GLOBAL__N_116FormatANormalizeINS_7uint128EEEvNS1_18HexFloatTypeParamsEPhPT_Pi.exit.i.i + %302 = call i64 @llvm.usub.sat.i64(i64 32, i64 %spec.select.i) + %303 = icmp ugt i32 %narrow.i, 31 + br i1 %303, label %_ZN4absl19str_format_internal12_GLOBAL__N_123MaskUpToNibbleExclusiveINS_7uint128EEET_m.exit.i.i.i, label %304 + +304: ; preds = %301 + %305 = trunc nuw nsw i64 %302 to i32 + %306 = shl nuw nsw i32 %305, 2 + %307 = sub nuw nsw i32 128, %306 + %308 = zext nneg i32 %307 to i128 + %309 = lshr i128 -1, %308 %.sroa.24.0.insert.ext.i.i.i.i.i = zext i64 %.sink59.off64 to i128 %.sroa.24.0.insert.shift.i.i.i.i.i = shl nuw i128 %.sroa.24.0.insert.ext.i.i.i.i.i, 64 - %309 = lshr i128 -18446744073709551616, %307 - %310 = trunc i128 %308 to i64 - %.sroa.0.0.extract.trunc.i.i.i39.i.i = and i64 %.sink59.off0, %310 - %.sroa.2.0.extract.shift.i.i.i40.i.i = and i128 %.sroa.24.0.insert.shift.i.i.i.i.i, %309 - %311 = add nsw i32 %305, -4 - %312 = zext nneg i32 %311 to i128 - %313 = shl i128 8, %312 + %310 = lshr i128 -18446744073709551616, %308 + %311 = trunc i128 %309 to i64 + %.sroa.0.0.extract.trunc.i.i.i39.i.i = and i64 %.sink59.off0, %311 + %.sroa.2.0.extract.shift.i.i.i40.i.i = and i128 %.sroa.24.0.insert.shift.i.i.i.i.i, %310 + %312 = add nsw i32 %306, -4 + %313 = zext nneg i32 %312 to i128 + %314 = shl i128 8, %313 %.sroa.01.0.insert.ext.i.i.i.i.i.i = zext i64 %.sroa.0.0.extract.trunc.i.i.i39.i.i to i128 %.sroa.01.0.insert.insert.i.i.i.i.i.i = or disjoint i128 %.sroa.2.0.extract.shift.i.i.i40.i.i, %.sroa.01.0.insert.ext.i.i.i.i.i.i - %.not.i.i41.i.i = icmp eq i128 %.sroa.01.0.insert.insert.i.i.i.i.i.i, %313 - br i1 %.not.i.i41.i.i, label %316, label %314 - -314: ; preds = %303 - %315 = icmp ult i128 %313, %.sroa.01.0.insert.insert.i.i.i.i.i.i - br i1 %315, label %326, label %._crit_edge.i.i.i - -316: ; preds = %303 - %317 = icmp eq i64 %301, 32 - br i1 %317, label %_ZN4absl19str_format_internal12_GLOBAL__N_120HexFloatNeedsRoundUpINS_7uint128EEEbT_mh.exit.i.i.i, label %318 - -318: ; preds = %316 - %319 = zext nneg i32 %305 to i128 - %320 = shl i128 15, %319 - %321 = trunc i128 %320 to i64 - %.sroa.0.0.extract.trunc.i.i.i.i.i.i.i = and i64 %.sink59.off0, %321 - %.sroa.2.0.extract.shift.i.i.i.i.i.i.i = and i128 %.sroa.24.0.insert.shift.i.i.i.i.i, %320 + %.not.i.i41.i.i = icmp eq i128 %.sroa.01.0.insert.insert.i.i.i.i.i.i, %314 + br i1 %.not.i.i41.i.i, label %317, label %315 + +315: ; preds = %304 + %316 = icmp ult i128 %314, %.sroa.01.0.insert.insert.i.i.i.i.i.i + br i1 %316, label %327, label %._crit_edge.i.i.i + +317: ; preds = %304 + %318 = icmp eq i64 %302, 32 + br i1 %318, label %_ZN4absl19str_format_internal12_GLOBAL__N_120HexFloatNeedsRoundUpINS_7uint128EEEbT_mh.exit.i.i.i, label %319 + +319: ; preds = %317 + %320 = zext nneg i32 %306 to i128 + %321 = shl i128 15, %320 + %322 = trunc i128 %321 to i64 + %.sroa.0.0.extract.trunc.i.i.i.i.i.i.i = and i64 %.sink59.off0, %322 + %.sroa.2.0.extract.shift.i.i.i.i.i.i.i = and i128 %.sroa.24.0.insert.shift.i.i.i.i.i, %321 %.sroa.01.0.insert.ext.i.i46.i.i.i.i = zext i64 %.sroa.0.0.extract.trunc.i.i.i.i.i.i.i to i128 %.sroa.01.0.insert.insert.i.i47.i.i.i.i = or disjoint i128 %.sroa.2.0.extract.shift.i.i.i.i.i.i.i, %.sroa.01.0.insert.ext.i.i46.i.i.i.i - %322 = lshr i128 %.sroa.01.0.insert.insert.i.i47.i.i.i.i, %319 - %323 = trunc i128 %322 to i8 + %323 = lshr i128 %.sroa.01.0.insert.insert.i.i47.i.i.i.i, %320 + %324 = trunc i128 %323 to i8 br label %_ZN4absl19str_format_internal12_GLOBAL__N_120HexFloatNeedsRoundUpINS_7uint128EEEbT_mh.exit.i.i.i -_ZN4absl19str_format_internal12_GLOBAL__N_120HexFloatNeedsRoundUpINS_7uint128EEEbT_mh.exit.i.i.i: ; preds = %318, %316 - %324 = phi i8 [ %323, %318 ], [ %.0100.i.i, %316 ] - %325 = and i8 %324, 1 - %.not.i44.i.i = icmp eq i8 %325, 0 - br i1 %.not.i44.i.i, label %._crit_edge.i.i.i, label %326 - -326: ; preds = %_ZN4absl19str_format_internal12_GLOBAL__N_120HexFloatNeedsRoundUpINS_7uint128EEEbT_mh.exit.i.i.i, %314 +_ZN4absl19str_format_internal12_GLOBAL__N_120HexFloatNeedsRoundUpINS_7uint128EEEbT_mh.exit.i.i.i: ; preds = %319, %317 + %325 = phi i8 [ %324, %319 ], [ %.0100.i.i, %317 ] + %326 = and i8 %325, 1 + %.not.i44.i.i = icmp eq i8 %326, 0 + br i1 %.not.i44.i.i, label %._crit_edge.i.i.i, label %327 + +327: ; preds = %_ZN4absl19str_format_internal12_GLOBAL__N_120HexFloatNeedsRoundUpINS_7uint128EEEbT_mh.exit.i.i.i, %315 + %328 = icmp samesign ugt i64 %302, 31 + %329 = zext nneg i32 %306 to i128 + %330 = shl nuw nsw i128 1, %329 + %.sroa.0.0.extract.trunc.i14.i.i.i.i = trunc i128 %330 to i64 + %.sroa.2.0.extract.shift.i15.i.i.i.i = lshr i128 %330, 64 + %.sroa.2.0.extract.trunc.i16.i.i.i.i = trunc nuw nsw i128 %.sroa.2.0.extract.shift.i15.i.i.i.i to i64 + %.sroa.028.0.i.i.i.i = select i1 %328, i64 0, i64 %.sroa.0.0.extract.trunc.i14.i.i.i.i + %.sroa.3.0.i.i.i.i = select i1 %328, i64 0, i64 %.sroa.2.0.extract.trunc.i16.i.i.i.i %.sroa.01.0.insert.ext.i.i.i.i.i = zext i64 %.sink59.off0 to i128 %.sroa.01.0.insert.insert.i.i.i.i.i = or disjoint i128 %.sroa.24.0.insert.shift.i.i.i.i.i, %.sroa.01.0.insert.ext.i.i.i.i.i - %327 = icmp samesign ugt i64 %301, 31 - %328 = zext nneg i32 %305 to i128 - %329 = shl nuw nsw i128 1, %328 - %.sroa.0.0.extract.trunc.i14.i.i.i.i = trunc i128 %329 to i64 - %.sroa.2.0.extract.shift.i15.i.i.i.i = lshr i128 %329, 64 - %.sroa.2.0.extract.trunc.i16.i.i.i.i = trunc nuw nsw i128 %.sroa.2.0.extract.shift.i15.i.i.i.i to i64 - %.sroa.029.0.i.i.i.i = select i1 %327, i64 0, i64 %.sroa.0.0.extract.trunc.i14.i.i.i.i - %.sroa.3.0.i.i.i.i = select i1 %327, i64 0, i64 %.sroa.2.0.extract.trunc.i16.i.i.i.i - %.sroa.01.0.insert.ext.i.i.i20.i.i.i = zext nneg i64 %.sroa.029.0.i.i.i.i to i128 + %.sroa.01.0.insert.ext.i.i.i20.i.i.i = zext nneg i64 %.sroa.028.0.i.i.i.i to i128 %.sroa.03.0.insert.insert.i.i.i.i.i.i = add i128 %.sroa.01.0.insert.insert.i.i.i.i.i, %.sroa.01.0.insert.ext.i.i.i20.i.i.i %.sroa.0.0.extract.trunc.i.i.i.i.i.i = trunc i128 %.sroa.03.0.insert.insert.i.i.i.i.i.i to i64 - %330 = lshr i128 %.sroa.03.0.insert.insert.i.i.i.i.i.i, 64 - %.tr.i.i.i.i.i.i = trunc nuw i128 %330 to i64 + %331 = lshr i128 %.sroa.03.0.insert.insert.i.i.i.i.i.i, 64 + %.tr.i.i.i.i.i.i = trunc nuw i128 %331 to i64 %.narrow.i.i.i.i.i.i = add i64 %.sroa.3.0.i.i.i.i, %.tr.i.i.i.i.i.i %.not.i.i.i.i77.i = icmp slt i64 %.sink59.off64, 0 - %.not.i28.i.i.i.i = icmp sgt i64 %.narrow.i.i.i.i.i.i, -1 - %or.cond.i.i.i.i = select i1 %.not.i.i.i.i77.i, i1 %.not.i28.i.i.i.i, i1 false - %spec.select.i.i.i.i = or i1 %327, %or.cond.i.i.i.i - %331 = zext i1 %spec.select.i.i.i.i to i8 - %332 = add nuw nsw i8 %.0100.i.i, %331 - %333 = icmp samesign ugt i8 %332, 15 - br i1 %333, label %334, label %._crit_edge.i.i.i, !prof !33 - -334: ; preds = %326 - %335 = add nsw i32 %.2.i.i, 4 + %332 = icmp sgt i64 %.narrow.i.i.i.i.i.i, -1 + %or.cond.i.i.i.i = select i1 %.not.i.i.i.i77.i, i1 %332, i1 false + %spec.select.i.i.i.i = or i1 %328, %or.cond.i.i.i.i + %333 = zext i1 %spec.select.i.i.i.i to i8 + %334 = add nuw nsw i8 %.0100.i.i, %333 + %335 = icmp samesign ugt i8 %334, 15 + br i1 %335, label %336, label %._crit_edge.i.i.i, !prof !33 + +336: ; preds = %327 + %337 = add nsw i32 %.2.i.i, 4 br label %._crit_edge.i.i.i -._crit_edge.i.i.i: ; preds = %334, %326, %_ZN4absl19str_format_internal12_GLOBAL__N_120HexFloatNeedsRoundUpINS_7uint128EEEbT_mh.exit.i.i.i, %314 - %.1101.i.i = phi i8 [ %.0100.i.i, %_ZN4absl19str_format_internal12_GLOBAL__N_120HexFloatNeedsRoundUpINS_7uint128EEEbT_mh.exit.i.i.i ], [ 1, %334 ], [ %.0100.i.i, %314 ], [ %332, %326 ] - %.3.i.i = phi i32 [ %.2.i.i, %_ZN4absl19str_format_internal12_GLOBAL__N_120HexFloatNeedsRoundUpINS_7uint128EEEbT_mh.exit.i.i.i ], [ %335, %334 ], [ %.2.i.i, %314 ], [ %.2.i.i, %326 ] - %.sroa.22.0.copyload.i.pre.i.i.i = phi i64 [ %.sink59.off64, %_ZN4absl19str_format_internal12_GLOBAL__N_120HexFloatNeedsRoundUpINS_7uint128EEEbT_mh.exit.i.i.i ], [ 0, %334 ], [ %.sink59.off64, %314 ], [ %.narrow.i.i.i.i.i.i, %326 ] - %.sroa.01.0.copyload.i.pre.i.i.i = phi i64 [ %.sink59.off0, %_ZN4absl19str_format_internal12_GLOBAL__N_120HexFloatNeedsRoundUpINS_7uint128EEEbT_mh.exit.i.i.i ], [ 0, %334 ], [ %.sink59.off0, %314 ], [ %.sroa.0.0.extract.trunc.i.i.i.i.i.i, %326 ] - %.sroa.2.0.extract.shift.i.i.i.i.i.i = lshr i128 18446744073709551615, %307 +._crit_edge.i.i.i: ; preds = %336, %327, %_ZN4absl19str_format_internal12_GLOBAL__N_120HexFloatNeedsRoundUpINS_7uint128EEEbT_mh.exit.i.i.i, %315 + %.1101.i.i = phi i8 [ %.0100.i.i, %_ZN4absl19str_format_internal12_GLOBAL__N_120HexFloatNeedsRoundUpINS_7uint128EEEbT_mh.exit.i.i.i ], [ 1, %336 ], [ %.0100.i.i, %315 ], [ %334, %327 ] + %.3.i.i = phi i32 [ %.2.i.i, %_ZN4absl19str_format_internal12_GLOBAL__N_120HexFloatNeedsRoundUpINS_7uint128EEEbT_mh.exit.i.i.i ], [ %337, %336 ], [ %.2.i.i, %315 ], [ %.2.i.i, %327 ] + %.sroa.22.0.copyload.i.pre.i.i.i = phi i64 [ %.sink59.off64, %_ZN4absl19str_format_internal12_GLOBAL__N_120HexFloatNeedsRoundUpINS_7uint128EEEbT_mh.exit.i.i.i ], [ 0, %336 ], [ %.sink59.off64, %315 ], [ %.narrow.i.i.i.i.i.i, %327 ] + %.sroa.01.0.copyload.i.pre.i.i.i = phi i64 [ %.sink59.off0, %_ZN4absl19str_format_internal12_GLOBAL__N_120HexFloatNeedsRoundUpINS_7uint128EEEbT_mh.exit.i.i.i ], [ 0, %336 ], [ %.sink59.off0, %315 ], [ %.sroa.0.0.extract.trunc.i.i.i.i.i.i, %327 ] + %.sroa.2.0.extract.shift.i.i.i.i.i.i = lshr i128 18446744073709551615, %308 %.sroa.2.0.extract.trunc.i.i.i.i.i.i = trunc nuw i128 %.sroa.2.0.extract.shift.i.i.i.i.i.i to i64 - %336 = xor i64 %310, -1 + %338 = xor i64 %311, -1 br label %_ZN4absl19str_format_internal12_GLOBAL__N_123MaskUpToNibbleExclusiveINS_7uint128EEET_m.exit.i.i.i -_ZN4absl19str_format_internal12_GLOBAL__N_123MaskUpToNibbleExclusiveINS_7uint128EEET_m.exit.i.i.i: ; preds = %._crit_edge.i.i.i, %300 - %.2102.i.i = phi i8 [ %.0100.i.i, %300 ], [ %.1101.i.i, %._crit_edge.i.i.i ] - %.4.i.i = phi i32 [ %.2.i.i, %300 ], [ %.3.i.i, %._crit_edge.i.i.i ] - %.sroa.22.0.copyload.i.i.i.i = phi i64 [ %.sink59.off64, %300 ], [ %.sroa.22.0.copyload.i.pre.i.i.i, %._crit_edge.i.i.i ] - %.sroa.01.0.copyload.i.i.i.i = phi i64 [ %.sink59.off0, %300 ], [ %.sroa.01.0.copyload.i.pre.i.i.i, %._crit_edge.i.i.i ] - %.sroa.3.0.i23.i.i.i = phi i64 [ 0, %300 ], [ %.sroa.2.0.extract.trunc.i.i.i.i.i.i, %._crit_edge.i.i.i ] - %.sroa.0.0.i.i.i.i = phi i64 [ -1, %300 ], [ %336, %._crit_edge.i.i.i ] +_ZN4absl19str_format_internal12_GLOBAL__N_123MaskUpToNibbleExclusiveINS_7uint128EEET_m.exit.i.i.i: ; preds = %._crit_edge.i.i.i, %301 + %.2102.i.i = phi i8 [ %.0100.i.i, %301 ], [ %.1101.i.i, %._crit_edge.i.i.i ] + %.4.i.i = phi i32 [ %.2.i.i, %301 ], [ %.3.i.i, %._crit_edge.i.i.i ] + %.sroa.22.0.copyload.i.i.i.i = phi i64 [ %.sink59.off64, %301 ], [ %.sroa.22.0.copyload.i.pre.i.i.i, %._crit_edge.i.i.i ] + %.sroa.01.0.copyload.i.i.i.i = phi i64 [ %.sink59.off0, %301 ], [ %.sroa.01.0.copyload.i.pre.i.i.i, %._crit_edge.i.i.i ] + %.sroa.3.0.i23.i.i.i = phi i64 [ 0, %301 ], [ %.sroa.2.0.extract.trunc.i.i.i.i.i.i, %._crit_edge.i.i.i ] + %.sroa.0.0.i.i.i.i = phi i64 [ -1, %301 ], [ %338, %._crit_edge.i.i.i ] %.sroa.22.0.insert.ext.i.i42.i.i = zext i64 %.sroa.3.0.i23.i.i.i to i128 - %337 = xor i128 %.sroa.22.0.insert.ext.i.i42.i.i, -1 - %.sroa.2.0.extract.shift.i.i.i73.i = shl i128 %337, 64 + %339 = xor i128 %.sroa.22.0.insert.ext.i.i42.i.i, -1 + %.sroa.2.0.extract.shift.i.i.i73.i = shl i128 %339, 64 %.sroa.24.0.insert.ext.i.i26.i.i.i = zext i64 %.sroa.22.0.copyload.i.i.i.i to i128 %.sroa.24.0.insert.shift.i.i27.i.i.i = shl nuw i128 %.sroa.24.0.insert.ext.i.i26.i.i.i, 64 %.sroa.03.0.insert.ext.i.i.i.i.i = zext i64 %.sroa.01.0.copyload.i.i.i.i to i128 %.sroa.03.0.insert.insert.i.i.i.i.i = or disjoint i128 %.sroa.24.0.insert.shift.i.i27.i.i.i, %.sroa.03.0.insert.ext.i.i.i.i.i %.sroa.01.0.insert.ext.i.i30.i.i.i = zext i64 %.sroa.0.0.i.i.i.i to i128 %.sroa.01.0.insert.insert.i.i31.i.i.i = or disjoint i128 %.sroa.2.0.extract.shift.i.i.i73.i, %.sroa.01.0.insert.ext.i.i30.i.i.i - %338 = and i128 %.sroa.01.0.insert.insert.i.i31.i.i.i, %.sroa.03.0.insert.insert.i.i.i.i.i - %.sroa.0.0.extract.trunc.i.i32.i.i.i = trunc i128 %338 to i64 - %.sroa.2.0.extract.shift.i.i33.i.i.i = lshr i128 %338, 64 + %340 = and i128 %.sroa.01.0.insert.insert.i.i31.i.i.i, %.sroa.03.0.insert.insert.i.i.i.i.i + %.sroa.0.0.extract.trunc.i.i32.i.i.i = trunc i128 %340 to i64 + %.sroa.2.0.extract.shift.i.i33.i.i.i = lshr i128 %340, 64 %.sroa.2.0.extract.trunc.i.i.i43.i.i = trunc nuw i128 %.sroa.2.0.extract.shift.i.i33.i.i.i to i64 br label %_ZN4absl19str_format_internal12_GLOBAL__N_112FormatARoundINS_7uint128EEEvbRKNS1_11FormatStateEPhPT_Pi.exit.i.i @@ -840,47 +840,42 @@ _ZN4absl19str_format_internal12_GLOBAL__N_112FormatARoundINS_7uint128EEEvbRKNS1_ %.sroa.16.4.i.i = phi i64 [ %.sroa.2.0.extract.trunc.i.i.i43.i.i, %_ZN4absl19str_format_internal12_GLOBAL__N_123MaskUpToNibbleExclusiveINS_7uint128EEET_m.exit.i.i.i ], [ %.sink59.off64, %_ZN4absl19str_format_internal12_GLOBAL__N_116FormatANormalizeINS_7uint128EEEvNS1_18HexFloatTypeParamsEPhPT_Pi.exit.i.i ] %.sroa.082.4.i.i = phi i64 [ %.sroa.0.0.extract.trunc.i.i32.i.i.i, %_ZN4absl19str_format_internal12_GLOBAL__N_123MaskUpToNibbleExclusiveINS_7uint128EEET_m.exit.i.i.i ], [ %.sink59.off0, %_ZN4absl19str_format_internal12_GLOBAL__N_116FormatANormalizeINS_7uint128EEEvNS1_18HexFloatTypeParamsEPhPT_Pi.exit.i.i ] call void @llvm.lifetime.start.p0(i64 20, ptr nonnull %4) #19 - %339 = select i1 %277, i64 0, i64 16 - %340 = getelementptr inbounds nuw i8, ptr @.str.27, i64 %339 - %341 = getelementptr inbounds nuw i8, ptr %4, i64 1 + %341 = select i1 %277, i64 0, i64 16 + %342 = getelementptr inbounds nuw i8, ptr @.str.27, i64 %341 + %343 = getelementptr inbounds nuw i8, ptr %4, i64 1 store i8 48, ptr %4, align 16, !tbaa !12 - %342 = select i1 %277, i8 88, i8 120 - %343 = getelementptr inbounds nuw i8, ptr %4, i64 2 - store i8 %342, ptr %341, align 1, !tbaa !12 - %344 = zext nneg i8 %.3103.i.i to i64 - %345 = getelementptr inbounds nuw i8, ptr %340, i64 %344 - %346 = load i8, ptr %345, align 1, !tbaa !12 - %347 = getelementptr inbounds nuw i8, ptr %4, i64 3 - store i8 %346, ptr %343, align 2, !tbaa !12 + %344 = select i1 %277, i8 88, i8 120 + %345 = getelementptr inbounds nuw i8, ptr %4, i64 2 + store i8 %344, ptr %343, align 1, !tbaa !12 + %346 = zext nneg i8 %.3103.i.i to i64 + %347 = getelementptr inbounds nuw i8, ptr %342, i64 %346 + %348 = load i8, ptr %347, align 1, !tbaa !12 + %349 = getelementptr inbounds nuw i8, ptr %4, i64 3 + store i8 %348, ptr %345, align 2, !tbaa !12 %.not.i74.i = icmp eq i32 %narrow.i, 0 %or.cond.i.i = select i1 %282, i1 true, i1 %.not.i74.i - br i1 %or.cond.i.i, label %348, label %354 - -348: ; preds = %_ZN4absl19str_format_internal12_GLOBAL__N_112FormatARoundINS_7uint128EEEvbRKNS1_11FormatStateEPhPT_Pi.exit.i.i - br i1 %282, label %349, label %350 - -349: ; preds = %348 - %.sroa.2.0.insert.ext.i.i.i.i = zext i64 %.sroa.16.4.i.i to i128 - %.sroa.2.0.insert.shift.i.i.i.i = shl nuw i128 %.sroa.2.0.insert.ext.i.i.i.i, 64 - %.sroa.0.0.insert.ext.i.i.i.i = zext i64 %.sroa.082.4.i.i to i128 - %.sroa.0.0.insert.insert.i.i.i.i = or disjoint i128 %.sroa.2.0.insert.shift.i.i.i.i, %.sroa.0.0.insert.ext.i.i.i.i - %.not104.i.i = icmp eq i128 %.sroa.0.0.insert.insert.i.i.i.i, 0 - br i1 %.not104.i.i, label %350, label %354 - -350: ; preds = %349, %348 - %351 = getelementptr inbounds nuw i8, ptr %1, i64 1 - %352 = load i8, ptr %351, align 1, !tbaa !4 - %353 = and i8 %352, 8 - %.not105.i.i = icmp eq i8 %353, 0 - br i1 %.not105.i.i, label %356, label %354 - -354: ; preds = %350, %349, %_ZN4absl19str_format_internal12_GLOBAL__N_112FormatARoundINS_7uint128EEEvbRKNS1_11FormatStateEPhPT_Pi.exit.i.i - %355 = getelementptr inbounds nuw i8, ptr %4, i64 4 - store i8 46, ptr %347, align 1, !tbaa !12 - br label %356 - -356: ; preds = %354, %350 - %.0.i75.i = phi ptr [ %355, %354 ], [ %347, %350 ] + br i1 %or.cond.i.i, label %350, label %357 + +350: ; preds = %_ZN4absl19str_format_internal12_GLOBAL__N_112FormatARoundINS_7uint128EEEvbRKNS1_11FormatStateEPhPT_Pi.exit.i.i + %351 = or i64 %.sroa.082.4.i.i, %.sroa.16.4.i.i + %352 = icmp ne i64 %351, 0 + %or.cond127.not.i.i = select i1 %282, i1 %352, i1 false + br i1 %or.cond127.not.i.i, label %357, label %353 + +353: ; preds = %350 + %354 = getelementptr inbounds nuw i8, ptr %1, i64 1 + %355 = load i8, ptr %354, align 1, !tbaa !4 + %356 = and i8 %355, 8 + %.not105.i.i = icmp eq i8 %356, 0 + br i1 %.not105.i.i, label %359, label %357 + +357: ; preds = %353, %350, %_ZN4absl19str_format_internal12_GLOBAL__N_112FormatARoundINS_7uint128EEEvbRKNS1_11FormatStateEPhPT_Pi.exit.i.i + %358 = getelementptr inbounds nuw i8, ptr %4, i64 4 + store i8 46, ptr %349, align 1, !tbaa !12 + br label %359 + +359: ; preds = %357, %353 + %.0.i75.i = phi ptr [ %358, %357 ], [ %349, %353 ] %.sroa.2.0.insert.ext.i.i53109.i.i = zext i64 %.sroa.16.4.i.i to i128 %.sroa.2.0.insert.shift.i.i54110.i.i = shl nuw i128 %.sroa.2.0.insert.ext.i.i53109.i.i, 64 %.sroa.0.0.insert.ext.i.i55111.i.i = zext i64 %.sroa.082.4.i.i to i128 @@ -888,72 +883,72 @@ _ZN4absl19str_format_internal12_GLOBAL__N_112FormatARoundINS_7uint128EEEvbRKNS1_ %.not106113.i.i = icmp eq i128 %.sroa.0.0.insert.insert.i.i56112.i.i, 0 br i1 %.not106113.i.i, label %_ZN4absl19str_format_internal12_GLOBAL__N_17FormatAINS_7uint128EEEvNS1_18HexFloatTypeParamsET_ibRKNS1_11FormatStateE.exit.i, label %.lr.ph.i.i -.lr.ph.i.i: ; preds = %356, %.lr.ph.i.i - %.sroa.0.0.insert.insert.i.i56117.i.i = phi i128 [ %361, %.lr.ph.i.i ], [ %.sroa.0.0.insert.insert.i.i56112.i.i, %356 ] - %.1116.i.i = phi ptr [ %360, %.lr.ph.i.i ], [ %.0.i75.i, %356 ] - %.034115.i.i = phi i64 [ %362, %.lr.ph.i.i ], [ 0, %356 ] - %.sroa.16.0114.i.i = phi i64 [ %.sroa.2.0.extract.trunc.i.i.i76.i, %.lr.ph.i.i ], [ %.sroa.16.4.i.i, %356 ] - %357 = lshr i64 %.sroa.16.0114.i.i, 60 - %358 = getelementptr inbounds nuw i8, ptr %340, i64 %357 - %359 = load i8, ptr %358, align 1, !tbaa !12 - %360 = getelementptr inbounds nuw i8, ptr %.1116.i.i, i64 1 - store i8 %359, ptr %.1116.i.i, align 1, !tbaa !12 - %361 = shl i128 %.sroa.0.0.insert.insert.i.i56117.i.i, 4 - %.sroa.2.0.extract.shift.i.i69.i.i = lshr i128 %361, 64 +.lr.ph.i.i: ; preds = %359, %.lr.ph.i.i + %.sroa.0.0.insert.insert.i.i56117.i.i = phi i128 [ %364, %.lr.ph.i.i ], [ %.sroa.0.0.insert.insert.i.i56112.i.i, %359 ] + %.1116.i.i = phi ptr [ %363, %.lr.ph.i.i ], [ %.0.i75.i, %359 ] + %.034115.i.i = phi i64 [ %365, %.lr.ph.i.i ], [ 0, %359 ] + %.sroa.16.0114.i.i = phi i64 [ %.sroa.2.0.extract.trunc.i.i.i76.i, %.lr.ph.i.i ], [ %.sroa.16.4.i.i, %359 ] + %360 = lshr i64 %.sroa.16.0114.i.i, 60 + %361 = getelementptr inbounds nuw i8, ptr %342, i64 %360 + %362 = load i8, ptr %361, align 1, !tbaa !12 + %363 = getelementptr inbounds nuw i8, ptr %.1116.i.i, i64 1 + store i8 %362, ptr %.1116.i.i, align 1, !tbaa !12 + %364 = shl i128 %.sroa.0.0.insert.insert.i.i56117.i.i, 4 + %.sroa.2.0.extract.shift.i.i69.i.i = lshr i128 %364, 64 %.sroa.2.0.extract.trunc.i.i.i76.i = trunc nuw i128 %.sroa.2.0.extract.shift.i.i69.i.i to i64 - %362 = add nuw nsw i64 %.034115.i.i, 1 - %.not106.i.i = icmp eq i128 %361, 0 + %365 = add nuw nsw i64 %.034115.i.i, 1 + %.not106.i.i = icmp eq i128 %364, 0 br i1 %.not106.i.i, label %_ZN4absl19str_format_internal12_GLOBAL__N_17FormatAINS_7uint128EEEvNS1_18HexFloatTypeParamsET_ibRKNS1_11FormatStateE.exit.i, label %.lr.ph.i.i, !llvm.loop !45 -_ZN4absl19str_format_internal12_GLOBAL__N_17FormatAINS_7uint128EEEvNS1_18HexFloatTypeParamsET_ibRKNS1_11FormatStateE.exit.i: ; preds = %.lr.ph.i.i, %356 - %.034.lcssa.i.i = phi i64 [ 0, %356 ], [ %362, %.lr.ph.i.i ] - %.1.lcssa.i.i = phi ptr [ %.0.i75.i, %356 ], [ %360, %.lr.ph.i.i ] - %363 = sub i64 %spec.select.i, %.034.lcssa.i.i - %.035.i.i = select i1 %282, i64 0, i64 %363 - %364 = ptrtoint ptr %.1.lcssa.i.i to i64 - %365 = ptrtoint ptr %4 to i64 - %366 = sub i64 %364, %365 +_ZN4absl19str_format_internal12_GLOBAL__N_17FormatAINS_7uint128EEEvNS1_18HexFloatTypeParamsET_ibRKNS1_11FormatStateE.exit.i: ; preds = %.lr.ph.i.i, %359 + %.034.lcssa.i.i = phi i64 [ 0, %359 ], [ %365, %.lr.ph.i.i ] + %.1.lcssa.i.i = phi ptr [ %.0.i75.i, %359 ], [ %363, %.lr.ph.i.i ] + %366 = sub i64 %spec.select.i, %.034.lcssa.i.i + %.035.i.i = select i1 %282, i64 0, i64 %366 + %367 = ptrtoint ptr %.1.lcssa.i.i to i64 + %368 = ptrtoint ptr %4 to i64 + %369 = sub i64 %367, %368 call void @llvm.lifetime.start.p0(i64 34, ptr nonnull %5) #19 - %367 = select i1 %277, i8 80, i8 112 - store i8 %367, ptr %5, align 16, !tbaa !12 - %368 = icmp sgt i32 %.5.i.i, -1 - %369 = select i1 %368, i8 43, i8 45 - %370 = getelementptr inbounds nuw i8, ptr %5, i64 1 - store i8 %369, ptr %370, align 1, !tbaa !12 - %371 = call i32 @llvm.abs.i32(i32 %.5.i.i, i1 true) - %372 = getelementptr inbounds nuw i8, ptr %5, i64 2 - %373 = call noundef ptr @_ZN4absl16numbers_internal15FastIntToBufferEiPc(i32 noundef %371, ptr noundef nonnull %372) - %374 = call noundef i64 @strlen(ptr noundef nonnull dereferenceable(1) %5) #19 - call fastcc void @_ZN4absl19str_format_internal12_GLOBAL__N_110FinalPrintERKNS1_11FormatStateESt17basic_string_viewIcSt11char_traitsIcEEmmS8_(ptr noundef nonnull readonly align 8 dereferenceable(32) %12, i64 %366, ptr nonnull %4, i64 noundef 2, i64 noundef %.035.i.i, i64 %374, ptr nonnull %5) + %370 = select i1 %277, i8 80, i8 112 + store i8 %370, ptr %5, align 16, !tbaa !12 + %371 = icmp sgt i32 %.5.i.i, -1 + %372 = select i1 %371, i8 43, i8 45 + %373 = getelementptr inbounds nuw i8, ptr %5, i64 1 + store i8 %372, ptr %373, align 1, !tbaa !12 + %374 = call i32 @llvm.abs.i32(i32 %.5.i.i, i1 true) + %375 = getelementptr inbounds nuw i8, ptr %5, i64 2 + %376 = call noundef ptr @_ZN4absl16numbers_internal15FastIntToBufferEiPc(i32 noundef %374, ptr noundef nonnull %375) + %377 = call noundef i64 @strlen(ptr noundef nonnull dereferenceable(1) %5) #19 + call fastcc void @_ZN4absl19str_format_internal12_GLOBAL__N_110FinalPrintERKNS1_11FormatStateESt17basic_string_viewIcSt11char_traitsIcEEmmS8_(ptr noundef nonnull readonly align 8 dereferenceable(32) %12, i64 %369, ptr nonnull %4, i64 noundef 2, i64 noundef %.035.i.i, i64 %377, ptr nonnull %5) call void @llvm.lifetime.end.p0(i64 34, ptr nonnull %5) #19 call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %4) #19 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #19 - br label %385 - -375: ; preds = %_ZN4absl19str_format_internal12_GLOBAL__N_113PrintExponentEicPNS1_6BufferE.exit, %.loopexit.i, %_ZN4absl19str_format_internal12_GLOBAL__N_113PrintExponentEicPNS1_6BufferE.exit.i - %376 = getelementptr inbounds nuw i8, ptr %10, i64 88 - %377 = load ptr, ptr %376, align 8, !tbaa !40 - %378 = getelementptr inbounds nuw i8, ptr %10, i64 96 - %379 = load ptr, ptr %378, align 8, !tbaa !37 - %380 = ptrtoint ptr %379 to i64 - %381 = ptrtoint ptr %377 to i64 - %382 = sub i64 %380, %381 - %383 = getelementptr inbounds nuw i8, ptr %1, i64 1 - %.val64.i = load i8, ptr %383, align 1 - %384 = getelementptr inbounds nuw i8, ptr %1, i64 4 - %.val65.i = load i32, ptr %384, align 4, !tbaa !14 - call fastcc void @_ZN4absl19str_format_internal12_GLOBAL__N_117WriteBufferToSinkEcSt17basic_string_viewIcSt11char_traitsIcEERKNS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE(i8 noundef signext %.05592.i, i64 %382, ptr %377, i8 %.val64.i, i32 %.val65.i, ptr noundef %2) - br label %385 - -385: ; preds = %375, %_ZN4absl19str_format_internal12_GLOBAL__N_17FormatAINS_7uint128EEEvNS1_18HexFloatTypeParamsET_ibRKNS1_11FormatStateE.exit.i, %201, %153, %_ZN4absl19str_format_internal12_GLOBAL__N_17FormatFINS_7uint128EEEvT_iRKNS1_11FormatStateE.exit.i, %50 - %.1.i = phi i1 [ true, %_ZN4absl19str_format_internal12_GLOBAL__N_17FormatFINS_7uint128EEEvT_iRKNS1_11FormatStateE.exit.i ], [ true, %375 ], [ %154, %153 ], [ %202, %201 ], [ true, %_ZN4absl19str_format_internal12_GLOBAL__N_17FormatAINS_7uint128EEEvNS1_18HexFloatTypeParamsET_ibRKNS1_11FormatStateE.exit.i ], [ false, %50 ] + br label %388 + +378: ; preds = %_ZN4absl19str_format_internal12_GLOBAL__N_113PrintExponentEicPNS1_6BufferE.exit, %.loopexit.i, %_ZN4absl19str_format_internal12_GLOBAL__N_113PrintExponentEicPNS1_6BufferE.exit.i + %379 = getelementptr inbounds nuw i8, ptr %10, i64 88 + %380 = load ptr, ptr %379, align 8, !tbaa !40 + %381 = getelementptr inbounds nuw i8, ptr %10, i64 96 + %382 = load ptr, ptr %381, align 8, !tbaa !37 + %383 = ptrtoint ptr %382 to i64 + %384 = ptrtoint ptr %380 to i64 + %385 = sub i64 %383, %384 + %386 = getelementptr inbounds nuw i8, ptr %1, i64 1 + %.val64.i = load i8, ptr %386, align 1 + %387 = getelementptr inbounds nuw i8, ptr %1, i64 4 + %.val65.i = load i32, ptr %387, align 4, !tbaa !14 + call fastcc void @_ZN4absl19str_format_internal12_GLOBAL__N_117WriteBufferToSinkEcSt17basic_string_viewIcSt11char_traitsIcEERKNS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE(i8 noundef signext %.05592.i, i64 %385, ptr %380, i8 %.val64.i, i32 %.val65.i, ptr noundef %2) + br label %388 + +388: ; preds = %378, %_ZN4absl19str_format_internal12_GLOBAL__N_17FormatAINS_7uint128EEEvNS1_18HexFloatTypeParamsET_ibRKNS1_11FormatStateE.exit.i, %201, %153, %_ZN4absl19str_format_internal12_GLOBAL__N_17FormatFINS_7uint128EEEvT_iRKNS1_11FormatStateE.exit.i, %50 + %.1.i = phi i1 [ true, %_ZN4absl19str_format_internal12_GLOBAL__N_17FormatFINS_7uint128EEEvT_iRKNS1_11FormatStateE.exit.i ], [ true, %378 ], [ %154, %153 ], [ %202, %201 ], [ true, %_ZN4absl19str_format_internal12_GLOBAL__N_17FormatAINS_7uint128EEEvNS1_18HexFloatTypeParamsET_ibRKNS1_11FormatStateE.exit.i ], [ false, %50 ] call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %10) #19 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #19 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #19 br label %_ZN4absl19str_format_internal12_GLOBAL__N_111FloatToSinkIeEEbT_RKNS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE.exit -_ZN4absl19str_format_internal12_GLOBAL__N_111FloatToSinkIeEEbT_RKNS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE.exit: ; preds = %_ZN4absl19str_format_internal12_GLOBAL__N_123ConvertNonNumericFloatsIeEEbcT_RKNS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE.exit.i, %385 - %.0.i = phi i1 [ %.1.i, %385 ], [ true, %_ZN4absl19str_format_internal12_GLOBAL__N_123ConvertNonNumericFloatsIeEEbcT_RKNS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE.exit.i ] +_ZN4absl19str_format_internal12_GLOBAL__N_111FloatToSinkIeEEbT_RKNS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE.exit: ; preds = %_ZN4absl19str_format_internal12_GLOBAL__N_123ConvertNonNumericFloatsIeEEbcT_RKNS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE.exit.i, %388 + %.0.i = phi i1 [ %.1.i, %388 ], [ true, %_ZN4absl19str_format_internal12_GLOBAL__N_123ConvertNonNumericFloatsIeEEbcT_RKNS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE.exit.i ] ret i1 %.0.i } diff --git a/bench/abseil-cpp/optimized/gtest-all.ll b/bench/abseil-cpp/optimized/gtest-all.ll index 63b34f483a0..8e3fadfa340 100644 --- a/bench/abseil-cpp/optimized/gtest-all.ll +++ b/bench/abseil-cpp/optimized/gtest-all.ll @@ -24979,58 +24979,52 @@ _ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E.exit: ; ; Function Attrs: mustprogress uwtable define dso_local void @_ZN7testing8internal7PrintToEoPSo(i64 noundef %0, i64 noundef %1, ptr noundef %2) local_unnamed_addr #3 { %4 = alloca [40 x i8], align 16 - %.sroa.2.0.insert.ext = zext i64 %1 to i128 - %.sroa.2.0.insert.shift = shl nuw i128 %.sroa.2.0.insert.ext, 64 - %.sroa.0.0.insert.ext = zext i64 %0 to i128 - %.sroa.0.0.insert.insert = or disjoint i128 %.sroa.2.0.insert.shift, %.sroa.0.0.insert.ext - %5 = icmp eq i128 %.sroa.0.0.insert.insert, 0 - br i1 %5, label %6, label %8 + %5 = or i64 %1, %0 + %6 = icmp eq i64 %5, 0 + br i1 %6, label %7, label %.lr.ph.preheader -6: ; preds = %3 - %7 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull @.str.76, i64 noundef 1) - br label %29 +7: ; preds = %3 + %8 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull @.str.76, i64 noundef 1) + br label %28 -8: ; preds = %3 +.lr.ph.preheader: ; preds = %3 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %4) #59 %9 = getelementptr inbounds nuw i8, ptr %4, i64 39 store i8 0, ptr %9, align 1, !tbaa !28 - %10 = or i64 %1, %0 - %.not = icmp eq i64 %10, 0 - br i1 %.not, label %._crit_edge, label %.lr.ph + br label %.lr.ph -.lr.ph: ; preds = %8, %.lr.ph - %.024 = phi ptr [ %23, %.lr.ph ], [ %9, %8 ] - %.01823 = phi i64 [ %12, %.lr.ph ], [ %1, %8 ] - %.01922 = phi i64 [ %20, %.lr.ph ], [ %0, %8 ] - %11 = urem i64 %.01823, 10 - %12 = udiv i64 %.01823, 10 - %13 = mul nuw nsw i64 %11, 6 - %14 = urem i64 %.01922, 10 - %15 = add nuw nsw i64 %13, %14 - %16 = udiv i64 %.01922, 10 - %17 = mul nuw i64 %11, 1844674407370955161 - %18 = add nuw i64 %17, %16 - %.lhs.trunc = trunc nuw nsw i64 %15 to i8 - %19 = udiv i8 %.lhs.trunc, 10 - %.zext = zext nneg i8 %19 to i64 - %20 = add i64 %18, %.zext - %21 = urem i8 %.lhs.trunc, 10 - %22 = or disjoint i8 %21, 48 - %23 = getelementptr inbounds i8, ptr %.024, i64 -1 - store i8 %22, ptr %23, align 1, !tbaa !28 - %24 = icmp ugt i64 %.01823, 9 - %25 = icmp ne i64 %20, 0 - %26 = select i1 %24, i1 true, i1 %25 - br i1 %26, label %.lr.ph, label %._crit_edge, !llvm.loop !516 - -._crit_edge: ; preds = %.lr.ph, %8 - %.0.lcssa = phi ptr [ %9, %8 ], [ %23, %.lr.ph ] - %27 = call noundef i64 @strlen(ptr noundef nonnull dereferenceable(1) %.0.lcssa) #59 - %28 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull %.0.lcssa, i64 noundef %27) +.lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph + %.024 = phi ptr [ %22, %.lr.ph ], [ %9, %.lr.ph.preheader ] + %.01823 = phi i64 [ %11, %.lr.ph ], [ %1, %.lr.ph.preheader ] + %.01922 = phi i64 [ %19, %.lr.ph ], [ %0, %.lr.ph.preheader ] + %10 = urem i64 %.01823, 10 + %11 = udiv i64 %.01823, 10 + %12 = mul nuw nsw i64 %10, 6 + %13 = urem i64 %.01922, 10 + %14 = add nuw nsw i64 %12, %13 + %15 = udiv i64 %.01922, 10 + %16 = mul nuw i64 %10, 1844674407370955161 + %17 = add nuw i64 %16, %15 + %.lhs.trunc = trunc nuw nsw i64 %14 to i8 + %18 = udiv i8 %.lhs.trunc, 10 + %.zext = zext nneg i8 %18 to i64 + %19 = add i64 %17, %.zext + %20 = urem i8 %.lhs.trunc, 10 + %21 = or disjoint i8 %20, 48 + %22 = getelementptr inbounds i8, ptr %.024, i64 -1 + store i8 %21, ptr %22, align 1, !tbaa !28 + %23 = icmp ugt i64 %.01823, 9 + %24 = icmp ne i64 %19, 0 + %25 = select i1 %23, i1 true, i1 %24 + br i1 %25, label %.lr.ph, label %._crit_edge, !llvm.loop !516 + +._crit_edge: ; preds = %.lr.ph + %26 = call noundef i64 @strlen(ptr noundef nonnull dereferenceable(1) %22) #59 + %27 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull %22, i64 noundef %26) call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4) #59 - br label %29 + br label %28 -29: ; preds = %._crit_edge, %6 +28: ; preds = %._crit_edge, %7 ret void } @@ -25050,63 +25044,57 @@ define dso_local void @_ZN7testing8internal7PrintToEnPSo(i64 noundef %0, i64 nou %extract.t = trunc i128 %8 to i64 %extract = lshr i128 %8, 64 %extract.t8 = trunc nuw i128 %extract to i64 - %.pre11 = and i128 %8, -18446744073709551616 br label %9 9: ; preds = %6, %3 - %.sroa.2.0.insert.shift.i.pre-phi = phi i128 [ %.pre11, %6 ], [ %.sroa.26.0.insert.shift, %3 ] %.0.off0 = phi i64 [ %extract.t, %6 ], [ %0, %3 ] %.0.off64 = phi i64 [ %extract.t8, %6 ], [ %1, %3 ] - %.sroa.0.0.insert.ext.i = zext i64 %.0.off0 to i128 - %.sroa.0.0.insert.insert.i = or disjoint i128 %.sroa.2.0.insert.shift.i.pre-phi, %.sroa.0.0.insert.ext.i - %10 = icmp eq i128 %.sroa.0.0.insert.insert.i, 0 - br i1 %10, label %11, label %13 + %10 = or i64 %.0.off64, %.0.off0 + %11 = icmp eq i64 %10, 0 + br i1 %11, label %12, label %.lr.ph.preheader.i -11: ; preds = %9 - %12 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull @.str.76, i64 noundef 1) +12: ; preds = %9 + %13 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull @.str.76, i64 noundef 1) br label %_ZN7testing8internal7PrintToEoPSo.exit -13: ; preds = %9 +.lr.ph.preheader.i: ; preds = %9 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %4) #59 %14 = getelementptr inbounds nuw i8, ptr %4, i64 39 store i8 0, ptr %14, align 1, !tbaa !28 - %15 = or i64 %.0.off64, %.0.off0 - %.not.i = icmp eq i64 %15, 0 - br i1 %.not.i, label %._crit_edge.i, label %.lr.ph.i - -.lr.ph.i: ; preds = %13, %.lr.ph.i - %.024.i = phi ptr [ %28, %.lr.ph.i ], [ %14, %13 ] - %.01823.i = phi i64 [ %17, %.lr.ph.i ], [ %.0.off64, %13 ] - %.01922.i = phi i64 [ %25, %.lr.ph.i ], [ %.0.off0, %13 ] - %16 = urem i64 %.01823.i, 10 - %17 = udiv i64 %.01823.i, 10 - %18 = mul nuw nsw i64 %16, 6 - %19 = urem i64 %.01922.i, 10 - %20 = add nuw nsw i64 %18, %19 - %21 = udiv i64 %.01922.i, 10 - %22 = mul nuw i64 %16, 1844674407370955161 - %23 = add nuw i64 %22, %21 - %.lhs.trunc.i = trunc nuw nsw i64 %20 to i8 - %24 = udiv i8 %.lhs.trunc.i, 10 - %.zext.i = zext nneg i8 %24 to i64 - %25 = add i64 %23, %.zext.i - %26 = urem i8 %.lhs.trunc.i, 10 - %27 = or disjoint i8 %26, 48 - %28 = getelementptr inbounds i8, ptr %.024.i, i64 -1 - store i8 %27, ptr %28, align 1, !tbaa !28 - %29 = icmp ugt i64 %.01823.i, 9 - %30 = icmp ne i64 %25, 0 - %31 = select i1 %29, i1 true, i1 %30 - br i1 %31, label %.lr.ph.i, label %._crit_edge.i, !llvm.loop !516 - -._crit_edge.i: ; preds = %.lr.ph.i, %13 - %.0.lcssa.i = phi ptr [ %14, %13 ], [ %28, %.lr.ph.i ] - %32 = call noundef i64 @strlen(ptr noundef nonnull dereferenceable(1) %.0.lcssa.i) #59 - %33 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull %.0.lcssa.i, i64 noundef %32) + br label %.lr.ph.i + +.lr.ph.i: ; preds = %.lr.ph.i, %.lr.ph.preheader.i + %.024.i = phi ptr [ %27, %.lr.ph.i ], [ %14, %.lr.ph.preheader.i ] + %.01823.i = phi i64 [ %16, %.lr.ph.i ], [ %.0.off64, %.lr.ph.preheader.i ] + %.01922.i = phi i64 [ %24, %.lr.ph.i ], [ %.0.off0, %.lr.ph.preheader.i ] + %15 = urem i64 %.01823.i, 10 + %16 = udiv i64 %.01823.i, 10 + %17 = mul nuw nsw i64 %15, 6 + %18 = urem i64 %.01922.i, 10 + %19 = add nuw nsw i64 %17, %18 + %20 = udiv i64 %.01922.i, 10 + %21 = mul nuw i64 %15, 1844674407370955161 + %22 = add nuw i64 %21, %20 + %.lhs.trunc.i = trunc nuw nsw i64 %19 to i8 + %23 = udiv i8 %.lhs.trunc.i, 10 + %.zext.i = zext nneg i8 %23 to i64 + %24 = add i64 %22, %.zext.i + %25 = urem i8 %.lhs.trunc.i, 10 + %26 = or disjoint i8 %25, 48 + %27 = getelementptr inbounds i8, ptr %.024.i, i64 -1 + store i8 %26, ptr %27, align 1, !tbaa !28 + %28 = icmp ugt i64 %.01823.i, 9 + %29 = icmp ne i64 %24, 0 + %30 = select i1 %28, i1 true, i1 %29 + br i1 %30, label %.lr.ph.i, label %._crit_edge.i, !llvm.loop !516 + +._crit_edge.i: ; preds = %.lr.ph.i + %31 = call noundef i64 @strlen(ptr noundef nonnull dereferenceable(1) %27) #59 + %32 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull %27, i64 noundef %31) call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4) #59 br label %_ZN7testing8internal7PrintToEoPSo.exit -_ZN7testing8internal7PrintToEoPSo.exit: ; preds = %11, %._crit_edge.i +_ZN7testing8internal7PrintToEoPSo.exit: ; preds = %12, %._crit_edge.i ret void } diff --git a/bench/abseil-cpp/optimized/int128.ll b/bench/abseil-cpp/optimized/int128.ll index 8bb067ad652..35379381451 100644 --- a/bench/abseil-cpp/optimized/int128.ll +++ b/bench/abseil-cpp/optimized/int128.ll @@ -578,7 +578,7 @@ define dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN4absllsERSoN %21 = sub nuw i64 %16, %18 %22 = trunc i32 %10 to i8 %trunc = and i8 %22, -80 - switch i8 %trunc, label %74 [ + switch i8 %trunc, label %75 [ i8 32, label %23 i8 16, label %47 ] @@ -639,198 +639,193 @@ _ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i: ; preds = %.noexc27._ZNKSt 43: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEmc.exit %44 = landingpad { ptr, i32 } cleanup - br label %107 + br label %108 -45: ; preds = %.invoke, %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit55.invoke, %.noexc53, %88, %73, %.noexc39, %64, %.noexc27, %37 +45: ; preds = %.invoke, %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit55.invoke, %.noexc53, %89, %74, %.noexc39, %65, %.noexc27, %37 %46 = landingpad { ptr, i32 } cleanup - br label %107 + br label %108 47: ; preds = %20 %48 = and i32 %10, 586 - %or.cond = icmp eq i32 %48, 520 - br i1 %or.cond, label %49, label %74 + %or.cond = icmp ne i32 %48, 520 + %49 = or i64 %2, %1 + %50 = icmp eq i64 %49, 0 + %or.cond68 = select i1 %or.cond, i1 true, i1 %50 + br i1 %or.cond68, label %75, label %51 + +51: ; preds = %47 + %52 = load i64, ptr %12, align 8 + %53 = getelementptr inbounds i8, ptr %0, i64 %52 + %54 = getelementptr inbounds nuw i8, ptr %53, i64 225 + %55 = load i8, ptr %54, align 1, !tbaa !25, !range !33, !noundef !34 + %56 = trunc nuw i8 %55 to i1 + br i1 %56, label %._crit_edge.i35, label %57 -49: ; preds = %47 - %.sroa.22.0.insert.ext.i.i = zext i64 %2 to i128 - %.sroa.22.0.insert.shift.i.i = shl nuw i128 %.sroa.22.0.insert.ext.i.i, 64 - %.sroa.01.0.insert.ext.i.i = zext i64 %1 to i128 - %.sroa.01.0.insert.insert.i.i = or disjoint i128 %.sroa.22.0.insert.shift.i.i, %.sroa.01.0.insert.ext.i.i - %.not = icmp eq i128 %.sroa.01.0.insert.insert.i.i, 0 - br i1 %.not, label %74, label %50 - -50: ; preds = %49 - %51 = load i64, ptr %12, align 8 - %52 = getelementptr inbounds i8, ptr %0, i64 %51 - %53 = getelementptr inbounds nuw i8, ptr %52, i64 225 - %54 = load i8, ptr %53, align 1, !tbaa !25, !range !33, !noundef !34 - %55 = trunc nuw i8 %54 to i1 - br i1 %55, label %._crit_edge.i35, label %56 - -._crit_edge.i35: ; preds = %50 - %.phi.trans.insert.i36 = getelementptr inbounds nuw i8, ptr %52, i64 224 +._crit_edge.i35: ; preds = %51 + %.phi.trans.insert.i36 = getelementptr inbounds nuw i8, ptr %53, i64 224 %.pre.i37 = load i8, ptr %.phi.trans.insert.i36, align 8, !tbaa !42 br label %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit41 -56: ; preds = %50 - %57 = getelementptr inbounds nuw i8, ptr %52, i64 240 - %58 = load ptr, ptr %57, align 8, !tbaa !35 - %.not.i.i.i30 = icmp eq ptr %58, null +57: ; preds = %51 + %58 = getelementptr inbounds nuw i8, ptr %53, i64 240 + %59 = load ptr, ptr %58, align 8, !tbaa !35 + %.not.i.i.i30 = icmp eq ptr %59, null br i1 %.not.i.i.i30, label %.invoke, label %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i31 -_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i31: ; preds = %56 - %59 = getelementptr inbounds nuw i8, ptr %58, i64 56 - %60 = load i8, ptr %59, align 8, !tbaa !36 - %.not.i1.i.i32 = icmp eq i8 %60, 0 - br i1 %.not.i1.i.i32, label %64, label %61 +_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i31: ; preds = %57 + %60 = getelementptr inbounds nuw i8, ptr %59, i64 56 + %61 = load i8, ptr %60, align 8, !tbaa !36 + %.not.i1.i.i32 = icmp eq i8 %61, 0 + br i1 %.not.i1.i.i32, label %65, label %62 -61: ; preds = %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i31 - %62 = getelementptr inbounds nuw i8, ptr %58, i64 89 - %63 = load i8, ptr %62, align 1, !tbaa !56 +62: ; preds = %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i31 + %63 = getelementptr inbounds nuw i8, ptr %59, i64 89 + %64 = load i8, ptr %63, align 1, !tbaa !56 br label %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i33 -64: ; preds = %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i31 - invoke void @_ZNKSt5ctypeIcE13_M_widen_initEv(ptr noundef nonnull align 8 dereferenceable(570) %58) +65: ; preds = %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i31 + invoke void @_ZNKSt5ctypeIcE13_M_widen_initEv(ptr noundef nonnull align 8 dereferenceable(570) %59) to label %.noexc39 unwind label %45 -.noexc39: ; preds = %64 - %65 = load ptr, ptr %58, align 8, !tbaa !10 - %66 = getelementptr inbounds nuw i8, ptr %65, i64 48 - %67 = load ptr, ptr %66, align 8 - %68 = invoke noundef signext i8 %67(ptr noundef nonnull align 8 dereferenceable(570) %58, i8 noundef signext 32) +.noexc39: ; preds = %65 + %66 = load ptr, ptr %59, align 8, !tbaa !10 + %67 = getelementptr inbounds nuw i8, ptr %66, i64 48 + %68 = load ptr, ptr %67, align 8 + %69 = invoke noundef signext i8 %68(ptr noundef nonnull align 8 dereferenceable(570) %59, i8 noundef signext 32) to label %.noexc39._ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i33_crit_edge unwind label %45 .noexc39._ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i33_crit_edge: ; preds = %.noexc39 %.pre.pre = load i64, ptr %17, align 8, !tbaa !54 br label %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i33 -_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i33: ; preds = %.noexc39._ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i33_crit_edge, %61 - %.pre = phi i64 [ %18, %61 ], [ %.pre.pre, %.noexc39._ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i33_crit_edge ] - %.0.i.i.i34 = phi i8 [ %63, %61 ], [ %68, %.noexc39._ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i33_crit_edge ] - %69 = getelementptr inbounds nuw i8, ptr %52, i64 224 - store i8 %.0.i.i.i34, ptr %69, align 8, !tbaa !42 - store i8 1, ptr %53, align 1, !tbaa !25 +_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i33: ; preds = %.noexc39._ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i33_crit_edge, %62 + %.pre = phi i64 [ %18, %62 ], [ %.pre.pre, %.noexc39._ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i33_crit_edge ] + %.0.i.i.i34 = phi i8 [ %64, %62 ], [ %69, %.noexc39._ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i33_crit_edge ] + %70 = getelementptr inbounds nuw i8, ptr %53, i64 224 + store i8 %.0.i.i.i34, ptr %70, align 8, !tbaa !42 + store i8 1, ptr %54, align 1, !tbaa !25 br label %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit41 _ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit41: ; preds = %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i33, %._crit_edge.i35 - %70 = phi i64 [ %18, %._crit_edge.i35 ], [ %.pre, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i33 ] - %71 = phi i8 [ %.pre.i37, %._crit_edge.i35 ], [ %.0.i.i.i34, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i33 ] - %72 = icmp ult i64 %70, 2 - br i1 %72, label %73, label %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit55.invoke + %71 = phi i64 [ %18, %._crit_edge.i35 ], [ %.pre, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i33 ] + %72 = phi i8 [ %.pre.i37, %._crit_edge.i35 ], [ %.0.i.i.i34, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i33 ] + %73 = icmp ult i64 %71, 2 + br i1 %73, label %74, label %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit55.invoke -73: ; preds = %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit41 - invoke void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.5, i64 noundef 2, i64 noundef %70) #13 +74: ; preds = %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit41 + invoke void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.5, i64 noundef 2, i64 noundef %71) #13 to label %.noexc42 unwind label %45 -.noexc42: ; preds = %73 +.noexc42: ; preds = %74 unreachable -74: ; preds = %20, %49, %47 - %75 = load i64, ptr %12, align 8 - %76 = getelementptr inbounds i8, ptr %0, i64 %75 - %77 = getelementptr inbounds nuw i8, ptr %76, i64 225 - %78 = load i8, ptr %77, align 1, !tbaa !25, !range !33, !noundef !34 - %79 = trunc nuw i8 %78 to i1 - br i1 %79, label %._crit_edge.i49, label %80 +75: ; preds = %20, %47 + %76 = load i64, ptr %12, align 8 + %77 = getelementptr inbounds i8, ptr %0, i64 %76 + %78 = getelementptr inbounds nuw i8, ptr %77, i64 225 + %79 = load i8, ptr %78, align 1, !tbaa !25, !range !33, !noundef !34 + %80 = trunc nuw i8 %79 to i1 + br i1 %80, label %._crit_edge.i49, label %81 -._crit_edge.i49: ; preds = %74 - %.phi.trans.insert.i50 = getelementptr inbounds nuw i8, ptr %76, i64 224 +._crit_edge.i49: ; preds = %75 + %.phi.trans.insert.i50 = getelementptr inbounds nuw i8, ptr %77, i64 224 %.pre.i51 = load i8, ptr %.phi.trans.insert.i50, align 8, !tbaa !42 br label %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit55.invoke -80: ; preds = %74 - %81 = getelementptr inbounds nuw i8, ptr %76, i64 240 - %82 = load ptr, ptr %81, align 8, !tbaa !35 - %.not.i.i.i44 = icmp eq ptr %82, null +81: ; preds = %75 + %82 = getelementptr inbounds nuw i8, ptr %77, i64 240 + %83 = load ptr, ptr %82, align 8, !tbaa !35 + %.not.i.i.i44 = icmp eq ptr %83, null br i1 %.not.i.i.i44, label %.invoke, label %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i45 -.invoke: ; preds = %29, %80, %56 +.invoke: ; preds = %29, %81, %57 invoke void @_ZSt16__throw_bad_castv() #13 to label %.cont unwind label %45 .cont: ; preds = %.invoke unreachable -_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i45: ; preds = %80 - %83 = getelementptr inbounds nuw i8, ptr %82, i64 56 - %84 = load i8, ptr %83, align 8, !tbaa !36 - %.not.i1.i.i46 = icmp eq i8 %84, 0 - br i1 %.not.i1.i.i46, label %88, label %85 +_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i45: ; preds = %81 + %84 = getelementptr inbounds nuw i8, ptr %83, i64 56 + %85 = load i8, ptr %84, align 8, !tbaa !36 + %.not.i1.i.i46 = icmp eq i8 %85, 0 + br i1 %.not.i1.i.i46, label %89, label %86 -85: ; preds = %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i45 - %86 = getelementptr inbounds nuw i8, ptr %82, i64 89 - %87 = load i8, ptr %86, align 1, !tbaa !56 +86: ; preds = %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i45 + %87 = getelementptr inbounds nuw i8, ptr %83, i64 89 + %88 = load i8, ptr %87, align 1, !tbaa !56 br label %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i47 -88: ; preds = %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i45 - invoke void @_ZNKSt5ctypeIcE13_M_widen_initEv(ptr noundef nonnull align 8 dereferenceable(570) %82) +89: ; preds = %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i45 + invoke void @_ZNKSt5ctypeIcE13_M_widen_initEv(ptr noundef nonnull align 8 dereferenceable(570) %83) to label %.noexc53 unwind label %45 -.noexc53: ; preds = %88 - %89 = load ptr, ptr %82, align 8, !tbaa !10 - %90 = getelementptr inbounds nuw i8, ptr %89, i64 48 - %91 = load ptr, ptr %90, align 8 - %92 = invoke noundef signext i8 %91(ptr noundef nonnull align 8 dereferenceable(570) %82, i8 noundef signext 32) +.noexc53: ; preds = %89 + %90 = load ptr, ptr %83, align 8, !tbaa !10 + %91 = getelementptr inbounds nuw i8, ptr %90, i64 48 + %92 = load ptr, ptr %91, align 8 + %93 = invoke noundef signext i8 %92(ptr noundef nonnull align 8 dereferenceable(570) %83, i8 noundef signext 32) to label %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i47 unwind label %45 -_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i47: ; preds = %.noexc53, %85 - %.0.i.i.i48 = phi i8 [ %87, %85 ], [ %92, %.noexc53 ] - %93 = getelementptr inbounds nuw i8, ptr %76, i64 224 - store i8 %.0.i.i.i48, ptr %93, align 8, !tbaa !42 - store i8 1, ptr %77, align 1, !tbaa !25 +_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i47: ; preds = %.noexc53, %86 + %.0.i.i.i48 = phi i8 [ %88, %86 ], [ %93, %.noexc53 ] + %94 = getelementptr inbounds nuw i8, ptr %77, i64 224 + store i8 %.0.i.i.i48, ptr %94, align 8, !tbaa !42 + store i8 1, ptr %78, align 1, !tbaa !25 br label %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit55.invoke _ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit55.invoke: ; preds = %._crit_edge.i, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i, %._crit_edge.i49, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i47, %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit41 - %94 = phi i64 [ 2, %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit41 ], [ 0, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i47 ], [ 0, %._crit_edge.i49 ], [ %18, %._crit_edge.i ], [ %.pre64, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i ] - %95 = phi i8 [ %71, %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit41 ], [ %.0.i.i.i48, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i47 ], [ %.pre.i51, %._crit_edge.i49 ], [ %.pre.i, %._crit_edge.i ], [ %.0.i.i.i, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i ] - %96 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE14_M_replace_auxEmmmc(ptr noundef nonnull align 8 dereferenceable(32) %4, i64 noundef %94, i64 noundef 0, i64 noundef %21, i8 noundef signext %95) + %95 = phi i64 [ 2, %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit41 ], [ 0, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i47 ], [ 0, %._crit_edge.i49 ], [ %18, %._crit_edge.i ], [ %.pre64, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i ] + %96 = phi i8 [ %72, %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit41 ], [ %.0.i.i.i48, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i47 ], [ %.pre.i51, %._crit_edge.i49 ], [ %.pre.i, %._crit_edge.i ], [ %.0.i.i.i, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i ] + %97 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE14_M_replace_auxEmmmc(ptr noundef nonnull align 8 dereferenceable(32) %4, i64 noundef %95, i64 noundef 0, i64 noundef %21, i8 noundef signext %96) to label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEmc.exit unwind label %45 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEmc.exit: ; preds = %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit55.invoke, %3 - %97 = load ptr, ptr %4, align 8, !tbaa !60 - %98 = load i64, ptr %17, align 8, !tbaa !54 - %99 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %97, i64 noundef %98) + %98 = load ptr, ptr %4, align 8, !tbaa !60 + %99 = load i64, ptr %17, align 8, !tbaa !54 + %100 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %98, i64 noundef %99) to label %_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit unwind label %43 _ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEmc.exit - %100 = load ptr, ptr %4, align 8, !tbaa !60 - %101 = getelementptr inbounds nuw i8, ptr %4, i64 16 - %102 = icmp eq ptr %100, %101 - br i1 %102, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i + %101 = load ptr, ptr %4, align 8, !tbaa !60 + %102 = getelementptr inbounds nuw i8, ptr %4, i64 16 + %103 = icmp eq ptr %101, %102 + br i1 %103, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i: ; preds = %_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit - %103 = load i64, ptr %17, align 8, !tbaa !54 - %104 = icmp ult i64 %103, 16 - call void @llvm.assume(i1 %104) + %104 = load i64, ptr %17, align 8, !tbaa !54 + %105 = icmp ult i64 %104, 16 + call void @llvm.assume(i1 %105) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: ; preds = %_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit - %105 = load i64, ptr %101, align 8, !tbaa !56 - %106 = add i64 %105, 1 - call void @_ZdlPvm(ptr noundef %100, i64 noundef %106) #14 + %106 = load i64, ptr %102, align 8, !tbaa !56 + %107 = add i64 %106, 1 + call void @_ZdlPvm(ptr noundef %101, i64 noundef %107) #14 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #12 - ret ptr %99 + ret ptr %100 -107: ; preds = %45, %43 +108: ; preds = %45, %43 %.pn = phi { ptr, i32 } [ %44, %43 ], [ %46, %45 ] - %108 = load ptr, ptr %4, align 8, !tbaa !60 - %109 = getelementptr inbounds nuw i8, ptr %4, i64 16 - %110 = icmp eq ptr %108, %109 - br i1 %110, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i61, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i60 - -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i61: ; preds = %107 - %111 = load i64, ptr %17, align 8, !tbaa !54 - %112 = icmp ult i64 %111, 16 - call void @llvm.assume(i1 %112) + %109 = load ptr, ptr %4, align 8, !tbaa !60 + %110 = getelementptr inbounds nuw i8, ptr %4, i64 16 + %111 = icmp eq ptr %109, %110 + br i1 %111, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i61, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i60 + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i61: ; preds = %108 + %112 = load i64, ptr %17, align 8, !tbaa !54 + %113 = icmp ult i64 %112, 16 + call void @llvm.assume(i1 %113) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit62 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i60: ; preds = %107 - %113 = load i64, ptr %109, align 8, !tbaa !56 - %114 = add i64 %113, 1 - call void @_ZdlPvm(ptr noundef %108, i64 noundef %114) #14 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i60: ; preds = %108 + %114 = load i64, ptr %110, align 8, !tbaa !56 + %115 = add i64 %114, 1 + call void @_ZdlPvm(ptr noundef %109, i64 noundef %115) #14 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit62 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit62: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i61, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i60 @@ -1024,7 +1019,7 @@ define dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN4absllsERSoN 18: ; preds = %22, %16 %19 = landingpad { ptr, i32 } cleanup - br label %185 + br label %184 20: ; preds = %.thread %21 = and i32 %11, 2048 @@ -1123,7 +1118,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKS %59 = sub nuw i64 %55, %56 %60 = trunc i32 %11 to i8 %trunc = and i8 %60, -80 - switch i8 %trunc, label %153 [ + switch i8 %trunc, label %152 [ i8 32, label %76 i8 16, label %96 ] @@ -1156,17 +1151,17 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i50 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i50, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51, %61 %.pn = phi { ptr, i32 } [ %62, %61 ], [ %64, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51 ], [ %64, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i50 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #12 - br label %185 + br label %184 72: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEmc.exit %73 = landingpad { ptr, i32 } cleanup - br label %185 + br label %184 -74: ; preds = %.invoke, %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit97.invoke, %.noexc95, %167, %.noexc80, %147, %123, %.noexc66, %114, %.noexc54, %90, %131, %127 +74: ; preds = %.invoke, %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit97.invoke, %.noexc95, %166, %.noexc80, %146, %123, %.noexc66, %114, %.noexc54, %90, %132, %130 %75 = landingpad { ptr, i32 } cleanup - br label %185 + br label %184 76: ; preds = %58 %77 = load i64, ptr %51, align 8 @@ -1300,179 +1295,172 @@ _ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit68: ; preds = %_ZNKSt9basic_ios 124: ; preds = %97, %96 %125 = and i32 %11, 586 - %or.cond.not = icmp eq i32 %125, 520 - br i1 %or.cond.not, label %126, label %133 - -126: ; preds = %124 - %.sroa.22.0.insert.ext.i = zext i64 %2 to i128 - %.sroa.22.0.insert.shift.i = shl nuw i128 %.sroa.22.0.insert.ext.i, 64 - %.sroa.01.0.insert.ext.i = zext i64 %1 to i128 - %.sroa.01.0.insert.insert.i = or disjoint i128 %.sroa.22.0.insert.shift.i, %.sroa.01.0.insert.ext.i - %.not110 = icmp eq i128 %.sroa.01.0.insert.insert.i, 0 - br i1 %.not110, label %133, label %127 - -127: ; preds = %126 + %or.cond.not = icmp ne i32 %125, 520 + %126 = or i64 %2, %1 + %127 = icmp eq i64 %126, 0 + %or.cond = select i1 %or.cond.not, i1 true, i1 %127 %128 = load i64, ptr %51, align 8 %129 = getelementptr inbounds i8, ptr %0, i64 %128 - %130 = invoke noundef signext i8 @_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv(ptr noundef nonnull align 8 dereferenceable(264) %129) - to label %131 unwind label %74 + br i1 %or.cond, label %134, label %130 + +130: ; preds = %124 + %131 = invoke noundef signext i8 @_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv(ptr noundef nonnull align 8 dereferenceable(264) %129) + to label %132 unwind label %74 -131: ; preds = %127 - %132 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEmmc(ptr noundef nonnull align 8 dereferenceable(32) %4, i64 noundef 2, i64 noundef %59, i8 noundef signext %130) +132: ; preds = %130 + %133 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEmmc(ptr noundef nonnull align 8 dereferenceable(32) %4, i64 noundef 2, i64 noundef %59, i8 noundef signext %131) to label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEmc.exit unwind label %74 -133: ; preds = %126, %124 - %134 = load i64, ptr %51, align 8 - %135 = getelementptr inbounds i8, ptr %0, i64 %134 - %136 = getelementptr inbounds nuw i8, ptr %135, i64 225 - %137 = load i8, ptr %136, align 1, !tbaa !25, !range !33, !noundef !34 - %138 = trunc nuw i8 %137 to i1 - br i1 %138, label %._crit_edge.i76, label %139 +134: ; preds = %124 + %135 = getelementptr inbounds nuw i8, ptr %129, i64 225 + %136 = load i8, ptr %135, align 1, !tbaa !25, !range !33, !noundef !34 + %137 = trunc nuw i8 %136 to i1 + br i1 %137, label %._crit_edge.i76, label %138 -._crit_edge.i76: ; preds = %133 - %.phi.trans.insert.i77 = getelementptr inbounds nuw i8, ptr %135, i64 224 +._crit_edge.i76: ; preds = %134 + %.phi.trans.insert.i77 = getelementptr inbounds nuw i8, ptr %129, i64 224 %.pre.i78 = load i8, ptr %.phi.trans.insert.i77, align 8, !tbaa !42 br label %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit97.invoke -139: ; preds = %133 - %140 = getelementptr inbounds nuw i8, ptr %135, i64 240 - %141 = load ptr, ptr %140, align 8, !tbaa !35 - %.not.i.i.i71 = icmp eq ptr %141, null +138: ; preds = %134 + %139 = getelementptr inbounds nuw i8, ptr %129, i64 240 + %140 = load ptr, ptr %139, align 8, !tbaa !35 + %.not.i.i.i71 = icmp eq ptr %140, null br i1 %.not.i.i.i71, label %.invoke, label %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i72 -_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i72: ; preds = %139 - %142 = getelementptr inbounds nuw i8, ptr %141, i64 56 - %143 = load i8, ptr %142, align 8, !tbaa !36 - %.not.i1.i.i73 = icmp eq i8 %143, 0 - br i1 %.not.i1.i.i73, label %147, label %144 +_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i72: ; preds = %138 + %141 = getelementptr inbounds nuw i8, ptr %140, i64 56 + %142 = load i8, ptr %141, align 8, !tbaa !36 + %.not.i1.i.i73 = icmp eq i8 %142, 0 + br i1 %.not.i1.i.i73, label %146, label %143 -144: ; preds = %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i72 - %145 = getelementptr inbounds nuw i8, ptr %141, i64 89 - %146 = load i8, ptr %145, align 1, !tbaa !56 +143: ; preds = %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i72 + %144 = getelementptr inbounds nuw i8, ptr %140, i64 89 + %145 = load i8, ptr %144, align 1, !tbaa !56 br label %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i74 -147: ; preds = %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i72 - invoke void @_ZNKSt5ctypeIcE13_M_widen_initEv(ptr noundef nonnull align 8 dereferenceable(570) %141) +146: ; preds = %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i72 + invoke void @_ZNKSt5ctypeIcE13_M_widen_initEv(ptr noundef nonnull align 8 dereferenceable(570) %140) to label %.noexc80 unwind label %74 -.noexc80: ; preds = %147 - %148 = load ptr, ptr %141, align 8, !tbaa !10 - %149 = getelementptr inbounds nuw i8, ptr %148, i64 48 - %150 = load ptr, ptr %149, align 8 - %151 = invoke noundef signext i8 %150(ptr noundef nonnull align 8 dereferenceable(570) %141, i8 noundef signext 32) +.noexc80: ; preds = %146 + %147 = load ptr, ptr %140, align 8, !tbaa !10 + %148 = getelementptr inbounds nuw i8, ptr %147, i64 48 + %149 = load ptr, ptr %148, align 8 + %150 = invoke noundef signext i8 %149(ptr noundef nonnull align 8 dereferenceable(570) %140, i8 noundef signext 32) to label %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i74 unwind label %74 -_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i74: ; preds = %.noexc80, %144 - %.0.i.i.i75 = phi i8 [ %146, %144 ], [ %151, %.noexc80 ] - %152 = getelementptr inbounds nuw i8, ptr %135, i64 224 - store i8 %.0.i.i.i75, ptr %152, align 8, !tbaa !42 - store i8 1, ptr %136, align 1, !tbaa !25 +_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i74: ; preds = %.noexc80, %143 + %.0.i.i.i75 = phi i8 [ %145, %143 ], [ %150, %.noexc80 ] + %151 = getelementptr inbounds nuw i8, ptr %129, i64 224 + store i8 %.0.i.i.i75, ptr %151, align 8, !tbaa !42 + store i8 1, ptr %135, align 1, !tbaa !25 br label %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit97.invoke -153: ; preds = %58 - %154 = load i64, ptr %51, align 8 - %155 = getelementptr inbounds i8, ptr %0, i64 %154 - %156 = getelementptr inbounds nuw i8, ptr %155, i64 225 - %157 = load i8, ptr %156, align 1, !tbaa !25, !range !33, !noundef !34 - %158 = trunc nuw i8 %157 to i1 - br i1 %158, label %._crit_edge.i91, label %159 +152: ; preds = %58 + %153 = load i64, ptr %51, align 8 + %154 = getelementptr inbounds i8, ptr %0, i64 %153 + %155 = getelementptr inbounds nuw i8, ptr %154, i64 225 + %156 = load i8, ptr %155, align 1, !tbaa !25, !range !33, !noundef !34 + %157 = trunc nuw i8 %156 to i1 + br i1 %157, label %._crit_edge.i91, label %158 -._crit_edge.i91: ; preds = %153 - %.phi.trans.insert.i92 = getelementptr inbounds nuw i8, ptr %155, i64 224 +._crit_edge.i91: ; preds = %152 + %.phi.trans.insert.i92 = getelementptr inbounds nuw i8, ptr %154, i64 224 %.pre.i93 = load i8, ptr %.phi.trans.insert.i92, align 8, !tbaa !42 br label %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit97.invoke -159: ; preds = %153 - %160 = getelementptr inbounds nuw i8, ptr %155, i64 240 - %161 = load ptr, ptr %160, align 8, !tbaa !35 - %.not.i.i.i86 = icmp eq ptr %161, null +158: ; preds = %152 + %159 = getelementptr inbounds nuw i8, ptr %154, i64 240 + %160 = load ptr, ptr %159, align 8, !tbaa !35 + %.not.i.i.i86 = icmp eq ptr %160, null br i1 %.not.i.i.i86, label %.invoke, label %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i87 -.invoke: ; preds = %159, %139, %106, %82 +.invoke: ; preds = %158, %138, %106, %82 invoke void @_ZSt16__throw_bad_castv() #13 to label %.cont unwind label %74 .cont: ; preds = %.invoke unreachable -_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i87: ; preds = %159 - %162 = getelementptr inbounds nuw i8, ptr %161, i64 56 - %163 = load i8, ptr %162, align 8, !tbaa !36 - %.not.i1.i.i88 = icmp eq i8 %163, 0 - br i1 %.not.i1.i.i88, label %167, label %164 +_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i87: ; preds = %158 + %161 = getelementptr inbounds nuw i8, ptr %160, i64 56 + %162 = load i8, ptr %161, align 8, !tbaa !36 + %.not.i1.i.i88 = icmp eq i8 %162, 0 + br i1 %.not.i1.i.i88, label %166, label %163 -164: ; preds = %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i87 - %165 = getelementptr inbounds nuw i8, ptr %161, i64 89 - %166 = load i8, ptr %165, align 1, !tbaa !56 +163: ; preds = %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i87 + %164 = getelementptr inbounds nuw i8, ptr %160, i64 89 + %165 = load i8, ptr %164, align 1, !tbaa !56 br label %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i89 -167: ; preds = %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i87 - invoke void @_ZNKSt5ctypeIcE13_M_widen_initEv(ptr noundef nonnull align 8 dereferenceable(570) %161) +166: ; preds = %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i87 + invoke void @_ZNKSt5ctypeIcE13_M_widen_initEv(ptr noundef nonnull align 8 dereferenceable(570) %160) to label %.noexc95 unwind label %74 -.noexc95: ; preds = %167 - %168 = load ptr, ptr %161, align 8, !tbaa !10 - %169 = getelementptr inbounds nuw i8, ptr %168, i64 48 - %170 = load ptr, ptr %169, align 8 - %171 = invoke noundef signext i8 %170(ptr noundef nonnull align 8 dereferenceable(570) %161, i8 noundef signext 32) +.noexc95: ; preds = %166 + %167 = load ptr, ptr %160, align 8, !tbaa !10 + %168 = getelementptr inbounds nuw i8, ptr %167, i64 48 + %169 = load ptr, ptr %168, align 8 + %170 = invoke noundef signext i8 %169(ptr noundef nonnull align 8 dereferenceable(570) %160, i8 noundef signext 32) to label %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i89 unwind label %74 -_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i89: ; preds = %.noexc95, %164 - %.0.i.i.i90 = phi i8 [ %166, %164 ], [ %171, %.noexc95 ] - %172 = getelementptr inbounds nuw i8, ptr %155, i64 224 - store i8 %.0.i.i.i90, ptr %172, align 8, !tbaa !42 - store i8 1, ptr %156, align 1, !tbaa !25 +_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i89: ; preds = %.noexc95, %163 + %.0.i.i.i90 = phi i8 [ %165, %163 ], [ %170, %.noexc95 ] + %171 = getelementptr inbounds nuw i8, ptr %154, i64 224 + store i8 %.0.i.i.i90, ptr %171, align 8, !tbaa !42 + store i8 1, ptr %155, align 1, !tbaa !25 br label %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit97.invoke _ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit97.invoke: ; preds = %._crit_edge.i91, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i89, %._crit_edge.i76, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i74, %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit68, %._crit_edge.i, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i - %173 = phi i64 [ %56, %._crit_edge.i ], [ %.pre111, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i ], [ 1, %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit68 ], [ 0, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i74 ], [ 0, %._crit_edge.i76 ], [ 0, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i89 ], [ 0, %._crit_edge.i91 ] - %174 = phi i8 [ %.pre.i, %._crit_edge.i ], [ %.0.i.i.i, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i ], [ %121, %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit68 ], [ %.0.i.i.i75, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i74 ], [ %.pre.i78, %._crit_edge.i76 ], [ %.0.i.i.i90, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i89 ], [ %.pre.i93, %._crit_edge.i91 ] - %175 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE14_M_replace_auxEmmmc(ptr noundef nonnull align 8 dereferenceable(32) %4, i64 noundef %173, i64 noundef 0, i64 noundef %59, i8 noundef signext %174) + %172 = phi i64 [ %56, %._crit_edge.i ], [ %.pre111, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i ], [ 1, %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit68 ], [ 0, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i74 ], [ 0, %._crit_edge.i76 ], [ 0, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i89 ], [ 0, %._crit_edge.i91 ] + %173 = phi i8 [ %.pre.i, %._crit_edge.i ], [ %.0.i.i.i, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i ], [ %121, %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit68 ], [ %.0.i.i.i75, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i74 ], [ %.pre.i78, %._crit_edge.i76 ], [ %.0.i.i.i90, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i89 ], [ %.pre.i93, %._crit_edge.i91 ] + %174 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE14_M_replace_auxEmmmc(ptr noundef nonnull align 8 dereferenceable(32) %4, i64 noundef %172, i64 noundef 0, i64 noundef %59, i8 noundef signext %173) to label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEmc.exit unwind label %74 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEmc.exit: ; preds = %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit97.invoke, %131, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit - %176 = load ptr, ptr %4, align 8, !tbaa !60 - %177 = load i64, ptr %13, align 8, !tbaa !54 - %178 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %176, i64 noundef %177) +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEmc.exit: ; preds = %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit97.invoke, %132, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit + %175 = load ptr, ptr %4, align 8, !tbaa !60 + %176 = load i64, ptr %13, align 8, !tbaa !54 + %177 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %175, i64 noundef %176) to label %_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit unwind label %72 _ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEmc.exit - %179 = load ptr, ptr %4, align 8, !tbaa !60 - %180 = icmp eq ptr %179, %12 - br i1 %180, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i103, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i102 + %178 = load ptr, ptr %4, align 8, !tbaa !60 + %179 = icmp eq ptr %178, %12 + br i1 %179, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i103, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i102 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i103: ; preds = %_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit - %181 = load i64, ptr %13, align 8, !tbaa !54 - %182 = icmp ult i64 %181, 16 - call void @llvm.assume(i1 %182) + %180 = load i64, ptr %13, align 8, !tbaa !54 + %181 = icmp ult i64 %180, 16 + call void @llvm.assume(i1 %181) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit104 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i102: ; preds = %_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit - %183 = load i64, ptr %12, align 8, !tbaa !56 - %184 = add i64 %183, 1 - call void @_ZdlPvm(ptr noundef %179, i64 noundef %184) #14 + %182 = load i64, ptr %12, align 8, !tbaa !56 + %183 = add i64 %182, 1 + call void @_ZdlPvm(ptr noundef %178, i64 noundef %183) #14 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit104 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit104: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i103, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i102 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #12 - ret ptr %178 + ret ptr %177 -185: ; preds = %72, %74, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52, %18 +184: ; preds = %72, %74, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52, %18 %.pn45.pn = phi { ptr, i32 } [ %.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52 ], [ %19, %18 ], [ %73, %72 ], [ %75, %74 ] - %186 = load ptr, ptr %4, align 8, !tbaa !60 - %187 = icmp eq ptr %186, %12 - br i1 %187, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i106, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i105 - -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i106: ; preds = %185 - %188 = load i64, ptr %13, align 8, !tbaa !54 - %189 = icmp ult i64 %188, 16 - call void @llvm.assume(i1 %189) + %185 = load ptr, ptr %4, align 8, !tbaa !60 + %186 = icmp eq ptr %185, %12 + br i1 %186, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i106, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i105 + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i106: ; preds = %184 + %187 = load i64, ptr %13, align 8, !tbaa !54 + %188 = icmp ult i64 %187, 16 + call void @llvm.assume(i1 %188) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit107 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i105: ; preds = %185 - %190 = load i64, ptr %12, align 8, !tbaa !56 - %191 = add i64 %190, 1 - call void @_ZdlPvm(ptr noundef %186, i64 noundef %191) #14 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i105: ; preds = %184 + %189 = load i64, ptr %12, align 8, !tbaa !56 + %190 = add i64 %189, 1 + call void @_ZdlPvm(ptr noundef %185, i64 noundef %190) #14 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit107 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit107: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i106, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i105 diff --git a/bench/fmt/optimized/format-impl-test.ll b/bench/fmt/optimized/format-impl-test.ll index 1876345d70f..ec5d4a8480e 100644 --- a/bench/fmt/optimized/format-impl-test.ll +++ b/bench/fmt/optimized/format-impl-test.ll @@ -10122,97 +10122,96 @@ declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_st ; Function Attrs: mustprogress uwtable define linkonce_odr hidden noundef nonnull align 8 dereferenceable(172) ptr @_ZN3fmt3v116detail6bigintmLIoEERS2_T_(ptr noundef nonnull align 8 dereferenceable(172) %0, i64 noundef %1, i64 noundef %2) local_unnamed_addr #5 comdat align 2 personality ptr @__gxx_personality_v0 { %.sroa.23.0.insert.ext = zext i64 %2 to i128 - %.sroa.23.0.insert.shift = shl nuw i128 %.sroa.23.0.insert.ext, 64 %.sroa.02.0.insert.ext = zext i64 %1 to i128 - %.sroa.02.0.insert.insert = or disjoint i128 %.sroa.23.0.insert.shift, %.sroa.02.0.insert.ext - %.not = icmp eq i128 %.sroa.02.0.insert.insert, 0 - br i1 %.not, label %4, label %9 + %4 = or i128 %.sroa.23.0.insert.ext, %.sroa.02.0.insert.ext + %5 = icmp eq i128 %4, 0 + br i1 %5, label %6, label %11 -4: ; preds = %3 - %5 = tail call ptr @__cxa_allocate_exception(i64 16) #32 - invoke void @_ZN17assertion_failureC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull @.str.6) - to label %6 unwind label %7 +6: ; preds = %3 + %7 = tail call ptr @__cxa_allocate_exception(i64 16) #32 + invoke void @_ZN17assertion_failureC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull @.str.6) + to label %8 unwind label %9 -6: ; preds = %4 - tail call void @__cxa_throw(ptr nonnull %5, ptr nonnull @_ZTI17assertion_failure, ptr nonnull @_ZNSt11logic_errorD2Ev) #34 +8: ; preds = %6 + tail call void @__cxa_throw(ptr nonnull %7, ptr nonnull @_ZTI17assertion_failure, ptr nonnull @_ZNSt11logic_errorD2Ev) #34 unreachable -7: ; preds = %4 - %8 = landingpad { ptr, i32 } +9: ; preds = %6 + %10 = landingpad { ptr, i32 } cleanup - tail call void @__cxa_free_exception(ptr nonnull %5) #32 - resume { ptr, i32 } %8 + tail call void @__cxa_free_exception(ptr nonnull %7) #32 + resume { ptr, i32 } %10 -9: ; preds = %3 - %10 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %11 = load i64, ptr %10, align 8, !tbaa !56 - %.not23.i = icmp eq i64 %11, 0 +11: ; preds = %3 + %12 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %13 = load i64, ptr %12, align 8, !tbaa !56 + %.not23.i = icmp eq i64 %13, 0 br i1 %.not23.i, label %_ZN3fmt3v116detail6bigint8multiplyIoTnNSt9enable_ifIXoosr3std7is_sameIT_mEE5valuesr3std7is_sameIS5_oEE5valueEiE4typeELi0EEEvS5_.exit, label %.lr.ph.i -.lr.ph.i: ; preds = %9 - %12 = load ptr, ptr %0, align 8, !tbaa !23 - %13 = shl nuw nsw i128 %.sroa.23.0.insert.ext, 32 - br label %16 +.lr.ph.i: ; preds = %11 + %14 = load ptr, ptr %0, align 8, !tbaa !23 + %15 = shl nuw nsw i128 %.sroa.23.0.insert.ext, 32 + br label %18 -.preheader.i: ; preds = %16 - %.not20.i = icmp eq i128 %27, 0 +.preheader.i: ; preds = %18 + %.not20.i = icmp eq i128 %29, 0 br i1 %.not20.i, label %_ZN3fmt3v116detail6bigint8multiplyIoTnNSt9enable_ifIXoosr3std7is_sameIT_mEE5valuesr3std7is_sameIS5_oEE5valueEiE4typeELi0EEEvS5_.exit, label %.lr.ph22.i .lr.ph22.i: ; preds = %.preheader.i - %14 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %15 = getelementptr inbounds nuw i8, ptr %0, i64 24 - br label %30 + %16 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %17 = getelementptr inbounds nuw i8, ptr %0, i64 24 + br label %32 -16: ; preds = %16, %.lr.ph.i - %.019.i = phi i128 [ 0, %.lr.ph.i ], [ %27, %16 ] - %.01718.i = phi i64 [ 0, %.lr.ph.i ], [ %29, %16 ] - %17 = getelementptr inbounds nuw i32, ptr %12, i64 %.01718.i - %18 = load i32, ptr %17, align 4, !tbaa !55 - %19 = zext i32 %18 to i128 - %20 = mul nuw nsw i128 %19, %.sroa.02.0.insert.ext - %21 = and i128 %.019.i, 4294967295 - %22 = add nuw nsw i128 %20, %21 - %23 = mul nuw i128 %13, %19 - %24 = lshr i128 %22, 32 - %25 = lshr i128 %.019.i, 32 - %26 = add nuw i128 %23, %25 - %27 = add nuw i128 %26, %24 - %28 = trunc i128 %22 to i32 - store i32 %28, ptr %17, align 4, !tbaa !55 - %29 = add nuw i64 %.01718.i, 1 - %exitcond.not.i = icmp eq i64 %29, %11 - br i1 %exitcond.not.i, label %.preheader.i, label %16, !llvm.loop !123 - -30: ; preds = %_ZN3fmt3v116detail6bufferIjE9push_backERKj.exit.i, %.lr.ph22.i - %31 = phi ptr [ %12, %.lr.ph22.i ], [ %39, %_ZN3fmt3v116detail6bufferIjE9push_backERKj.exit.i ] - %32 = phi i64 [ %11, %.lr.ph22.i ], [ %.pre-phi.i.i, %_ZN3fmt3v116detail6bufferIjE9push_backERKj.exit.i ] - %.121.i = phi i128 [ %27, %.lr.ph22.i ], [ %42, %_ZN3fmt3v116detail6bufferIjE9push_backERKj.exit.i ] - %33 = trunc i128 %.121.i to i32 - %34 = add i64 %32, 1 - %35 = load i64, ptr %14, align 8, !tbaa !24 - %36 = icmp ugt i64 %34, %35 - br i1 %36, label %37, label %_ZN3fmt3v116detail6bufferIjE9push_backERKj.exit.i +18: ; preds = %18, %.lr.ph.i + %.019.i = phi i128 [ 0, %.lr.ph.i ], [ %29, %18 ] + %.01718.i = phi i64 [ 0, %.lr.ph.i ], [ %31, %18 ] + %19 = getelementptr inbounds nuw i32, ptr %14, i64 %.01718.i + %20 = load i32, ptr %19, align 4, !tbaa !55 + %21 = zext i32 %20 to i128 + %22 = mul nuw nsw i128 %21, %.sroa.02.0.insert.ext + %23 = and i128 %.019.i, 4294967295 + %24 = add nuw nsw i128 %22, %23 + %25 = mul nuw i128 %15, %21 + %26 = lshr i128 %24, 32 + %27 = lshr i128 %.019.i, 32 + %28 = add nuw i128 %25, %27 + %29 = add nuw i128 %28, %26 + %30 = trunc i128 %24 to i32 + store i32 %30, ptr %19, align 4, !tbaa !55 + %31 = add nuw i64 %.01718.i, 1 + %exitcond.not.i = icmp eq i64 %31, %13 + br i1 %exitcond.not.i, label %.preheader.i, label %18, !llvm.loop !123 + +32: ; preds = %_ZN3fmt3v116detail6bufferIjE9push_backERKj.exit.i, %.lr.ph22.i + %33 = phi ptr [ %14, %.lr.ph22.i ], [ %41, %_ZN3fmt3v116detail6bufferIjE9push_backERKj.exit.i ] + %34 = phi i64 [ %13, %.lr.ph22.i ], [ %.pre-phi.i.i, %_ZN3fmt3v116detail6bufferIjE9push_backERKj.exit.i ] + %.121.i = phi i128 [ %29, %.lr.ph22.i ], [ %44, %_ZN3fmt3v116detail6bufferIjE9push_backERKj.exit.i ] + %35 = trunc i128 %.121.i to i32 + %36 = add i64 %34, 1 + %37 = load i64, ptr %16, align 8, !tbaa !24 + %38 = icmp ugt i64 %36, %37 + br i1 %38, label %39, label %_ZN3fmt3v116detail6bufferIjE9push_backERKj.exit.i -37: ; preds = %30 - %38 = load ptr, ptr %15, align 8, !tbaa !20 - tail call void %38(ptr noundef nonnull align 8 dereferenceable(172) %0, i64 noundef %34) - %.pre.i.i = load i64, ptr %10, align 8, !tbaa !56 +39: ; preds = %32 + %40 = load ptr, ptr %17, align 8, !tbaa !20 + tail call void %40(ptr noundef nonnull align 8 dereferenceable(172) %0, i64 noundef %36) + %.pre.i.i = load i64, ptr %12, align 8, !tbaa !56 %.pre2.i.i = add i64 %.pre.i.i, 1 %.pre = load ptr, ptr %0, align 8, !tbaa !23 br label %_ZN3fmt3v116detail6bufferIjE9push_backERKj.exit.i -_ZN3fmt3v116detail6bufferIjE9push_backERKj.exit.i: ; preds = %37, %30 - %39 = phi ptr [ %31, %30 ], [ %.pre, %37 ] - %.pre-phi.i.i = phi i64 [ %34, %30 ], [ %.pre2.i.i, %37 ] - %40 = phi i64 [ %32, %30 ], [ %.pre.i.i, %37 ] - store i64 %.pre-phi.i.i, ptr %10, align 8, !tbaa !56 - %41 = getelementptr inbounds nuw i32, ptr %39, i64 %40 - store i32 %33, ptr %41, align 4, !tbaa !55 - %42 = lshr i128 %.121.i, 32 +_ZN3fmt3v116detail6bufferIjE9push_backERKj.exit.i: ; preds = %39, %32 + %41 = phi ptr [ %33, %32 ], [ %.pre, %39 ] + %.pre-phi.i.i = phi i64 [ %36, %32 ], [ %.pre2.i.i, %39 ] + %42 = phi i64 [ %34, %32 ], [ %.pre.i.i, %39 ] + store i64 %.pre-phi.i.i, ptr %12, align 8, !tbaa !56 + %43 = getelementptr inbounds nuw i32, ptr %41, i64 %42 + store i32 %35, ptr %43, align 4, !tbaa !55 + %44 = lshr i128 %.121.i, 32 %.not.i = icmp ult i128 %.121.i, 4294967296 - br i1 %.not.i, label %_ZN3fmt3v116detail6bigint8multiplyIoTnNSt9enable_ifIXoosr3std7is_sameIT_mEE5valuesr3std7is_sameIS5_oEE5valueEiE4typeELi0EEEvS5_.exit, label %30, !llvm.loop !124 + br i1 %.not.i, label %_ZN3fmt3v116detail6bigint8multiplyIoTnNSt9enable_ifIXoosr3std7is_sameIT_mEE5valuesr3std7is_sameIS5_oEE5valueEiE4typeELi0EEEvS5_.exit, label %32, !llvm.loop !124 -_ZN3fmt3v116detail6bigint8multiplyIoTnNSt9enable_ifIXoosr3std7is_sameIT_mEE5valuesr3std7is_sameIS5_oEE5valueEiE4typeELi0EEEvS5_.exit: ; preds = %_ZN3fmt3v116detail6bufferIjE9push_backERKj.exit.i, %9, %.preheader.i +_ZN3fmt3v116detail6bigint8multiplyIoTnNSt9enable_ifIXoosr3std7is_sameIT_mEE5valuesr3std7is_sameIS5_oEE5valueEiE4typeELi0EEEvS5_.exit: ; preds = %_ZN3fmt3v116detail6bufferIjE9push_backERKj.exit.i, %11, %.preheader.i ret ptr %0 } diff --git a/bench/freetype/optimized/sfnt.ll b/bench/freetype/optimized/sfnt.ll index 6d48a356f0e..3dee2c0a3cd 100644 --- a/bench/freetype/optimized/sfnt.ll +++ b/bench/freetype/optimized/sfnt.ll @@ -261,7 +261,7 @@ define internal range(i32 0, 65536) i32 @tt_cmap2_char_index(ptr noundef readonl 6: ; preds = %2 %7 = getelementptr inbounds nuw i8, ptr %4, i64 6 %8 = icmp samesign ult i32 %1, 256 - br i1 %8, label %9, label %20 + br i1 %8, label %9, label %18 9: ; preds = %6 %.ptr.i = getelementptr inbounds nuw i8, ptr %4, i64 518 @@ -269,95 +269,92 @@ define internal range(i32 0, 65536) i32 @tt_cmap2_char_index(ptr noundef readonl %11 = zext nneg i32 %10 to i64 %12 = getelementptr inbounds nuw i8, ptr %7, i64 %11 %13 = load i8, ptr %12, align 1, !tbaa !15 - %14 = zext i8 %13 to i32 - %15 = shl nuw nsw i32 %14, 8 - %16 = getelementptr inbounds nuw i8, ptr %12, i64 1 - %17 = load i8, ptr %16, align 1, !tbaa !15 - %18 = zext i8 %17 to i32 - %19 = or disjoint i32 %15, %18 - %.not.i = icmp eq i32 %19, 0 - br i1 %.not.i, label %tt_cmap2_get_subheader.exit, label %tt_cmap2_get_subheader.exit.thread - -20: ; preds = %6 - %21 = lshr i32 %1, 7 - %22 = and i32 %21, 510 - %23 = zext nneg i32 %22 to i64 - %24 = getelementptr inbounds nuw i8, ptr %7, i64 %23 - %25 = load i8, ptr %24, align 1, !tbaa !15 - %26 = zext i8 %25 to i64 - %27 = shl nuw nsw i64 %26, 8 - %28 = getelementptr inbounds nuw i8, ptr %24, i64 1 - %29 = load i8, ptr %28, align 1, !tbaa !15 - %30 = and i8 %29, -8 - %.masked.i = zext i8 %30 to i64 - %.add.i = add nuw nsw i64 %27, 518 + %14 = getelementptr inbounds nuw i8, ptr %12, i64 1 + %15 = load i8, ptr %14, align 1, !tbaa !15 + %16 = or i8 %15, %13 + %17 = icmp eq i8 %16, 0 + br i1 %17, label %tt_cmap2_get_subheader.exit, label %tt_cmap2_get_subheader.exit.thread + +18: ; preds = %6 + %19 = lshr i32 %1, 7 + %20 = and i32 %19, 510 + %21 = zext nneg i32 %20 to i64 + %22 = getelementptr inbounds nuw i8, ptr %7, i64 %21 + %23 = load i8, ptr %22, align 1, !tbaa !15 + %24 = zext i8 %23 to i64 + %25 = shl nuw nsw i64 %24, 8 + %26 = getelementptr inbounds nuw i8, ptr %22, i64 1 + %27 = load i8, ptr %26, align 1, !tbaa !15 + %28 = and i8 %27, -8 + %.masked.i = zext i8 %28 to i64 + %.add.i = add nuw nsw i64 %25, 518 %.add26.i = or disjoint i64 %.add.i, %.masked.i %.ptr28.i = getelementptr inbounds nuw i8, ptr %4, i64 %.add26.i - %31 = icmp eq i64 %.add26.i, 518 - br i1 %31, label %tt_cmap2_get_subheader.exit.thread, label %tt_cmap2_get_subheader.exit + %29 = icmp eq i64 %.add26.i, 518 + br i1 %29, label %tt_cmap2_get_subheader.exit.thread, label %tt_cmap2_get_subheader.exit -tt_cmap2_get_subheader.exit: ; preds = %20, %9 - %.021.i = phi ptr [ %.ptr.i, %9 ], [ %.ptr28.i, %20 ] - %32 = and i32 %1, 255 - %33 = load i8, ptr %.021.i, align 1, !tbaa !15 - %34 = zext i8 %33 to i32 - %35 = shl nuw nsw i32 %34, 8 - %36 = getelementptr inbounds nuw i8, ptr %.021.i, i64 1 - %37 = load i8, ptr %36, align 1, !tbaa !15 - %38 = zext i8 %37 to i32 - %39 = or disjoint i32 %35, %38 - %40 = getelementptr inbounds nuw i8, ptr %.021.i, i64 2 - %41 = load i8, ptr %40, align 1, !tbaa !15 - %42 = zext i8 %41 to i32 - %43 = shl nuw nsw i32 %42, 8 - %44 = getelementptr inbounds nuw i8, ptr %.021.i, i64 3 - %45 = load i8, ptr %44, align 1, !tbaa !15 - %46 = zext i8 %45 to i32 - %47 = or disjoint i32 %43, %46 - %48 = getelementptr inbounds nuw i8, ptr %.021.i, i64 6 - %49 = getelementptr inbounds nuw i8, ptr %.021.i, i64 4 - %50 = load i8, ptr %49, align 1, !tbaa !15 - %51 = zext i8 %50 to i32 - %52 = shl nuw nsw i32 %51, 8 - %53 = getelementptr inbounds nuw i8, ptr %.021.i, i64 5 - %54 = load i8, ptr %53, align 1, !tbaa !15 - %55 = zext i8 %54 to i32 - %56 = or disjoint i32 %52, %55 - %57 = load i8, ptr %48, align 1, !tbaa !15 - %58 = zext i8 %57 to i32 - %59 = shl nuw nsw i32 %58, 8 - %60 = getelementptr inbounds nuw i8, ptr %.021.i, i64 7 - %61 = load i8, ptr %60, align 1, !tbaa !15 - %62 = zext i8 %61 to i32 - %63 = or disjoint i32 %59, %62 - %64 = sub nsw i32 %32, %39 - %65 = icmp ult i32 %64, %47 - %66 = icmp ne i32 %63, 0 - %or.cond = select i1 %65, i1 %66, i1 false - br i1 %or.cond, label %67, label %tt_cmap2_get_subheader.exit.thread - -67: ; preds = %tt_cmap2_get_subheader.exit - %68 = shl nuw nsw i32 %64, 1 - %69 = add nuw nsw i32 %63, %68 - %70 = zext nneg i32 %69 to i64 - %71 = getelementptr inbounds nuw i8, ptr %48, i64 %70 - %72 = load i8, ptr %71, align 1, !tbaa !15 - %73 = zext i8 %72 to i32 - %74 = shl nuw nsw i32 %73, 8 - %75 = getelementptr inbounds nuw i8, ptr %71, i64 1 - %76 = load i8, ptr %75, align 1, !tbaa !15 - %77 = zext i8 %76 to i32 - %78 = or disjoint i32 %74, %77 - %.not36 = icmp eq i32 %78, 0 - br i1 %.not36, label %tt_cmap2_get_subheader.exit.thread, label %79 +tt_cmap2_get_subheader.exit: ; preds = %18, %9 + %.021.i = phi ptr [ %.ptr.i, %9 ], [ %.ptr28.i, %18 ] + %30 = and i32 %1, 255 + %31 = load i8, ptr %.021.i, align 1, !tbaa !15 + %32 = zext i8 %31 to i32 + %33 = shl nuw nsw i32 %32, 8 + %34 = getelementptr inbounds nuw i8, ptr %.021.i, i64 1 + %35 = load i8, ptr %34, align 1, !tbaa !15 + %36 = zext i8 %35 to i32 + %37 = or disjoint i32 %33, %36 + %38 = getelementptr inbounds nuw i8, ptr %.021.i, i64 2 + %39 = load i8, ptr %38, align 1, !tbaa !15 + %40 = zext i8 %39 to i32 + %41 = shl nuw nsw i32 %40, 8 + %42 = getelementptr inbounds nuw i8, ptr %.021.i, i64 3 + %43 = load i8, ptr %42, align 1, !tbaa !15 + %44 = zext i8 %43 to i32 + %45 = or disjoint i32 %41, %44 + %46 = getelementptr inbounds nuw i8, ptr %.021.i, i64 6 + %47 = getelementptr inbounds nuw i8, ptr %.021.i, i64 4 + %48 = load i8, ptr %47, align 1, !tbaa !15 + %49 = zext i8 %48 to i32 + %50 = shl nuw nsw i32 %49, 8 + %51 = getelementptr inbounds nuw i8, ptr %.021.i, i64 5 + %52 = load i8, ptr %51, align 1, !tbaa !15 + %53 = zext i8 %52 to i32 + %54 = or disjoint i32 %50, %53 + %55 = load i8, ptr %46, align 1, !tbaa !15 + %56 = zext i8 %55 to i32 + %57 = shl nuw nsw i32 %56, 8 + %58 = getelementptr inbounds nuw i8, ptr %.021.i, i64 7 + %59 = load i8, ptr %58, align 1, !tbaa !15 + %60 = zext i8 %59 to i32 + %61 = or disjoint i32 %57, %60 + %62 = sub nsw i32 %30, %37 + %63 = icmp ult i32 %62, %45 + %64 = icmp ne i32 %61, 0 + %or.cond = select i1 %63, i1 %64, i1 false + br i1 %or.cond, label %65, label %tt_cmap2_get_subheader.exit.thread + +65: ; preds = %tt_cmap2_get_subheader.exit + %66 = shl nuw nsw i32 %62, 1 + %67 = add nuw nsw i32 %61, %66 + %68 = zext nneg i32 %67 to i64 + %69 = getelementptr inbounds nuw i8, ptr %46, i64 %68 + %70 = load i8, ptr %69, align 1, !tbaa !15 + %71 = zext i8 %70 to i32 + %72 = shl nuw nsw i32 %71, 8 + %73 = getelementptr inbounds nuw i8, ptr %69, i64 1 + %74 = load i8, ptr %73, align 1, !tbaa !15 + %75 = zext i8 %74 to i32 + %76 = or disjoint i32 %72, %75 + %.not36 = icmp eq i32 %76, 0 + br i1 %.not36, label %tt_cmap2_get_subheader.exit.thread, label %77 -79: ; preds = %67 - %80 = add nuw nsw i32 %78, %56 - %81 = and i32 %80, 65535 +77: ; preds = %65 + %78 = add nuw nsw i32 %76, %54 + %79 = and i32 %78, 65535 br label %tt_cmap2_get_subheader.exit.thread -tt_cmap2_get_subheader.exit.thread: ; preds = %20, %9, %2, %tt_cmap2_get_subheader.exit, %79, %67 - %.0 = phi i32 [ %81, %79 ], [ 0, %67 ], [ 0, %tt_cmap2_get_subheader.exit ], [ 0, %2 ], [ 0, %9 ], [ 0, %20 ] +tt_cmap2_get_subheader.exit.thread: ; preds = %18, %9, %2, %tt_cmap2_get_subheader.exit, %77, %65 + %.0 = phi i32 [ %79, %77 ], [ 0, %65 ], [ 0, %tt_cmap2_get_subheader.exit ], [ 0, %2 ], [ 0, %9 ], [ 0, %18 ] ret i32 %.0 } @@ -378,153 +375,150 @@ define internal range(i32 0, 65536) i32 @tt_cmap2_char_next(ptr noundef readonly 9: ; preds = %.lr.ph107, %.backedge %.067105 = phi i32 [ %6, %.lr.ph107 ], [ %.067.be, %.backedge ] %10 = icmp samesign ult i32 %.067105, 256 - br i1 %10, label %11, label %22 + br i1 %10, label %11, label %20 11: ; preds = %9 %12 = shl nuw nsw i32 %.067105, 1 %13 = zext nneg i32 %12 to i64 %14 = getelementptr inbounds nuw i8, ptr %8, i64 %13 %15 = load i8, ptr %14, align 1, !tbaa !15 - %16 = zext i8 %15 to i32 - %17 = shl nuw nsw i32 %16, 8 - %18 = getelementptr inbounds nuw i8, ptr %14, i64 1 - %19 = load i8, ptr %18, align 1, !tbaa !15 - %20 = zext i8 %19 to i32 - %21 = or disjoint i32 %17, %20 - %.not.i = icmp eq i32 %21, 0 - br i1 %.not.i, label %tt_cmap2_get_subheader.exit, label %tt_cmap2_get_subheader.exit.thread + %16 = getelementptr inbounds nuw i8, ptr %14, i64 1 + %17 = load i8, ptr %16, align 1, !tbaa !15 + %18 = or i8 %17, %15 + %19 = icmp eq i8 %18, 0 + br i1 %19, label %tt_cmap2_get_subheader.exit, label %tt_cmap2_get_subheader.exit.thread -22: ; preds = %9 - %23 = lshr i32 %.067105, 7 - %24 = and i32 %23, 510 - %25 = zext nneg i32 %24 to i64 - %26 = getelementptr inbounds nuw i8, ptr %8, i64 %25 - %27 = load i8, ptr %26, align 1, !tbaa !15 - %28 = zext i8 %27 to i64 - %29 = shl nuw nsw i64 %28, 8 - %30 = getelementptr inbounds nuw i8, ptr %26, i64 1 - %31 = load i8, ptr %30, align 1, !tbaa !15 - %32 = and i8 %31, -8 - %.masked.i = zext i8 %32 to i64 - %.add.i = add nuw nsw i64 %29, 518 +20: ; preds = %9 + %21 = lshr i32 %.067105, 7 + %22 = and i32 %21, 510 + %23 = zext nneg i32 %22 to i64 + %24 = getelementptr inbounds nuw i8, ptr %8, i64 %23 + %25 = load i8, ptr %24, align 1, !tbaa !15 + %26 = zext i8 %25 to i64 + %27 = shl nuw nsw i64 %26, 8 + %28 = getelementptr inbounds nuw i8, ptr %24, i64 1 + %29 = load i8, ptr %28, align 1, !tbaa !15 + %30 = and i8 %29, -8 + %.masked.i = zext i8 %30 to i64 + %.add.i = add nuw nsw i64 %27, 518 %.add26.i = or disjoint i64 %.add.i, %.masked.i %.ptr28.i = getelementptr inbounds nuw i8, ptr %4, i64 %.add26.i - %33 = icmp eq i64 %.add26.i, 518 - br i1 %33, label %tt_cmap2_get_subheader.exit.thread, label %tt_cmap2_get_subheader.exit + %31 = icmp eq i64 %.add26.i, 518 + br i1 %31, label %tt_cmap2_get_subheader.exit.thread, label %tt_cmap2_get_subheader.exit -tt_cmap2_get_subheader.exit: ; preds = %22, %11 - %.021.i = phi ptr [ %.ptr.i, %11 ], [ %.ptr28.i, %22 ] - %34 = load i8, ptr %.021.i, align 1, !tbaa !15 - %35 = zext i8 %34 to i32 - %36 = shl nuw nsw i32 %35, 8 - %37 = getelementptr inbounds nuw i8, ptr %.021.i, i64 1 - %38 = load i8, ptr %37, align 1, !tbaa !15 - %39 = zext i8 %38 to i32 - %40 = or disjoint i32 %36, %39 - %41 = getelementptr inbounds nuw i8, ptr %.021.i, i64 2 - %42 = load i8, ptr %41, align 1, !tbaa !15 - %43 = zext i8 %42 to i32 - %44 = shl nuw nsw i32 %43, 8 - %45 = getelementptr inbounds nuw i8, ptr %.021.i, i64 3 - %46 = load i8, ptr %45, align 1, !tbaa !15 - %47 = zext i8 %46 to i32 - %48 = or disjoint i32 %44, %47 - %49 = getelementptr inbounds nuw i8, ptr %.021.i, i64 6 - %50 = getelementptr inbounds nuw i8, ptr %.021.i, i64 4 - %51 = load i8, ptr %50, align 1, !tbaa !15 - %52 = zext i8 %51 to i32 - %53 = shl nuw nsw i32 %52, 8 - %54 = getelementptr inbounds nuw i8, ptr %.021.i, i64 5 - %55 = load i8, ptr %54, align 1, !tbaa !15 - %56 = zext i8 %55 to i32 - %57 = or disjoint i32 %53, %56 - %58 = load i8, ptr %49, align 1, !tbaa !15 - %59 = zext i8 %58 to i32 - %60 = shl nuw nsw i32 %59, 8 - %61 = getelementptr inbounds nuw i8, ptr %.021.i, i64 7 - %62 = load i8, ptr %61, align 1, !tbaa !15 - %63 = zext i8 %62 to i32 - %64 = or disjoint i32 %60, %63 - %65 = and i32 %.067105, 255 - %66 = add nuw nsw i32 %48, %40 - %67 = icmp samesign uge i32 %65, %66 - %or.cond = and i1 %10, %67 - br i1 %or.cond, label %.backedge, label %68 +tt_cmap2_get_subheader.exit: ; preds = %20, %11 + %.021.i = phi ptr [ %.ptr.i, %11 ], [ %.ptr28.i, %20 ] + %32 = load i8, ptr %.021.i, align 1, !tbaa !15 + %33 = zext i8 %32 to i32 + %34 = shl nuw nsw i32 %33, 8 + %35 = getelementptr inbounds nuw i8, ptr %.021.i, i64 1 + %36 = load i8, ptr %35, align 1, !tbaa !15 + %37 = zext i8 %36 to i32 + %38 = or disjoint i32 %34, %37 + %39 = getelementptr inbounds nuw i8, ptr %.021.i, i64 2 + %40 = load i8, ptr %39, align 1, !tbaa !15 + %41 = zext i8 %40 to i32 + %42 = shl nuw nsw i32 %41, 8 + %43 = getelementptr inbounds nuw i8, ptr %.021.i, i64 3 + %44 = load i8, ptr %43, align 1, !tbaa !15 + %45 = zext i8 %44 to i32 + %46 = or disjoint i32 %42, %45 + %47 = getelementptr inbounds nuw i8, ptr %.021.i, i64 6 + %48 = getelementptr inbounds nuw i8, ptr %.021.i, i64 4 + %49 = load i8, ptr %48, align 1, !tbaa !15 + %50 = zext i8 %49 to i32 + %51 = shl nuw nsw i32 %50, 8 + %52 = getelementptr inbounds nuw i8, ptr %.021.i, i64 5 + %53 = load i8, ptr %52, align 1, !tbaa !15 + %54 = zext i8 %53 to i32 + %55 = or disjoint i32 %51, %54 + %56 = load i8, ptr %47, align 1, !tbaa !15 + %57 = zext i8 %56 to i32 + %58 = shl nuw nsw i32 %57, 8 + %59 = getelementptr inbounds nuw i8, ptr %.021.i, i64 7 + %60 = load i8, ptr %59, align 1, !tbaa !15 + %61 = zext i8 %60 to i32 + %62 = or disjoint i32 %58, %61 + %63 = and i32 %.067105, 255 + %64 = add nuw nsw i32 %46, %38 + %65 = icmp samesign uge i32 %63, %64 + %or.cond = and i1 %10, %65 + br i1 %or.cond, label %.backedge, label %66 + +66: ; preds = %tt_cmap2_get_subheader.exit + %67 = icmp eq i32 %62, 0 + br i1 %67, label %68, label %70 -68: ; preds = %tt_cmap2_get_subheader.exit - %69 = icmp eq i32 %64, 0 - br i1 %69, label %70, label %72 +68: ; preds = %66 + %69 = icmp eq i32 %.067105, 256 + br i1 %69, label %.thread95, label %tt_cmap2_get_subheader.exit.thread -70: ; preds = %68 - %71 = icmp eq i32 %.067105, 256 - br i1 %71, label %.thread95, label %tt_cmap2_get_subheader.exit.thread - -72: ; preds = %68 - %.060 = tail call i32 @llvm.umax.i32(i32 %65, i32 %40) - %.059 = tail call i32 @llvm.usub.sat.i32(i32 %65, i32 %40) - %73 = and i32 %.067105, 65280 - %74 = add nuw nsw i32 %.060, %73 - %75 = icmp samesign ult i32 %.059, %48 - br i1 %75, label %.lr.ph.preheader, label %._crit_edge - -.lr.ph.preheader: ; preds = %72 - %76 = shl nuw nsw i32 %.059, 1 - %77 = add nuw nsw i32 %64, %76 - %78 = zext nneg i32 %77 to i64 - %79 = getelementptr inbounds nuw i8, ptr %49, i64 %78 +70: ; preds = %66 + %.060 = tail call i32 @llvm.umax.i32(i32 %63, i32 %38) + %.059 = tail call i32 @llvm.usub.sat.i32(i32 %63, i32 %38) + %71 = and i32 %.067105, 65280 + %72 = add nuw nsw i32 %.060, %71 + %73 = icmp samesign ult i32 %.059, %46 + br i1 %73, label %.lr.ph.preheader, label %._crit_edge + +.lr.ph.preheader: ; preds = %70 + %74 = shl nuw nsw i32 %.059, 1 + %75 = add nuw nsw i32 %62, %74 + %76 = zext nneg i32 %75 to i64 + %77 = getelementptr inbounds nuw i8, ptr %47, i64 %76 br label %.lr.ph -.lr.ph: ; preds = %.lr.ph.preheader, %91 - %.1104 = phi i32 [ %92, %91 ], [ %.059, %.lr.ph.preheader ] - %.269103 = phi i32 [ %93, %91 ], [ %74, %.lr.ph.preheader ] - %.073102 = phi ptr [ %80, %91 ], [ %79, %.lr.ph.preheader ] - %80 = getelementptr inbounds nuw i8, ptr %.073102, i64 2 - %81 = load i8, ptr %.073102, align 1, !tbaa !15 - %82 = zext i8 %81 to i32 - %83 = shl nuw nsw i32 %82, 8 - %84 = getelementptr inbounds nuw i8, ptr %.073102, i64 1 - %85 = load i8, ptr %84, align 1, !tbaa !15 - %86 = zext i8 %85 to i32 - %87 = or disjoint i32 %83, %86 - %.not84 = icmp eq i32 %87, 0 - br i1 %.not84, label %91, label %88 - -88: ; preds = %.lr.ph - %89 = add nuw nsw i32 %87, %57 - %90 = and i32 %89, 65535 - %.not85 = icmp eq i32 %90, 0 - br i1 %.not85, label %91, label %.thread95 - -91: ; preds = %.lr.ph, %88 - %92 = add nuw nsw i32 %.1104, 1 - %93 = add nuw nsw i32 %.269103, 1 - %94 = icmp samesign ult i32 %92, %48 - br i1 %94, label %.lr.ph, label %._crit_edge, !llvm.loop !29 - -._crit_edge: ; preds = %91, %72 - %.269.lcssa = phi i32 [ %74, %72 ], [ %93, %91 ] - %.not83 = icmp ne i32 %48, 0 - %95 = sext i1 %.not83 to i32 - %spec.select = add i32 %.269.lcssa, %95 +.lr.ph: ; preds = %.lr.ph.preheader, %89 + %.1104 = phi i32 [ %90, %89 ], [ %.059, %.lr.ph.preheader ] + %.269103 = phi i32 [ %91, %89 ], [ %72, %.lr.ph.preheader ] + %.073102 = phi ptr [ %78, %89 ], [ %77, %.lr.ph.preheader ] + %78 = getelementptr inbounds nuw i8, ptr %.073102, i64 2 + %79 = load i8, ptr %.073102, align 1, !tbaa !15 + %80 = zext i8 %79 to i32 + %81 = shl nuw nsw i32 %80, 8 + %82 = getelementptr inbounds nuw i8, ptr %.073102, i64 1 + %83 = load i8, ptr %82, align 1, !tbaa !15 + %84 = zext i8 %83 to i32 + %85 = or disjoint i32 %81, %84 + %.not84 = icmp eq i32 %85, 0 + br i1 %.not84, label %89, label %86 + +86: ; preds = %.lr.ph + %87 = add nuw nsw i32 %85, %55 + %88 = and i32 %87, 65535 + %.not85 = icmp eq i32 %88, 0 + br i1 %.not85, label %89, label %.thread95 + +89: ; preds = %.lr.ph, %86 + %90 = add nuw nsw i32 %.1104, 1 + %91 = add nuw nsw i32 %.269103, 1 + %92 = icmp samesign ult i32 %90, %46 + br i1 %92, label %.lr.ph, label %._crit_edge, !llvm.loop !29 + +._crit_edge: ; preds = %89, %70 + %.269.lcssa = phi i32 [ %72, %70 ], [ %91, %89 ] + %.not83 = icmp ne i32 %46, 0 + %93 = sext i1 %.not83 to i32 + %spec.select = add i32 %.269.lcssa, %93 br label %tt_cmap2_get_subheader.exit.thread -tt_cmap2_get_subheader.exit.thread: ; preds = %70, %._crit_edge, %22, %11 - %.471 = phi i32 [ %.067105, %11 ], [ %.067105, %22 ], [ %.067105, %70 ], [ %spec.select, %._crit_edge ] - %96 = icmp ult i32 %.471, 256 - %97 = add nuw nsw i32 %.471, 1 - %98 = and i32 %.471, -256 - %99 = add i32 %98, 256 - %.572 = select i1 %96, i32 %97, i32 %99 +tt_cmap2_get_subheader.exit.thread: ; preds = %68, %._crit_edge, %20, %11 + %.471 = phi i32 [ %.067105, %11 ], [ %.067105, %20 ], [ %.067105, %68 ], [ %spec.select, %._crit_edge ] + %94 = icmp ult i32 %.471, 256 + %95 = add nuw nsw i32 %.471, 1 + %96 = and i32 %.471, -256 + %97 = add i32 %96, 256 + %.572 = select i1 %94, i32 %95, i32 %97 br label %.backedge .backedge: ; preds = %tt_cmap2_get_subheader.exit.thread, %tt_cmap2_get_subheader.exit %.067.be = phi i32 [ %.572, %tt_cmap2_get_subheader.exit.thread ], [ 256, %tt_cmap2_get_subheader.exit ] - %100 = icmp ult i32 %.067.be, 65536 - br i1 %100, label %9, label %.thread95, !llvm.loop !30 + %98 = icmp ult i32 %.067.be, 65536 + br i1 %98, label %9, label %.thread95, !llvm.loop !30 -.thread95: ; preds = %.backedge, %70, %88, %2 - %.366 = phi i32 [ 0, %2 ], [ %.269103, %88 ], [ 0, %70 ], [ 0, %.backedge ] - %.5 = phi i32 [ 0, %2 ], [ %90, %88 ], [ 0, %70 ], [ 0, %.backedge ] +.thread95: ; preds = %.backedge, %68, %86, %2 + %.366 = phi i32 [ 0, %2 ], [ %.269103, %86 ], [ 0, %68 ], [ 0, %.backedge ] + %.5 = phi i32 [ 0, %2 ], [ %88, %86 ], [ 0, %68 ], [ 0, %.backedge ] store i32 %.366, ptr %1, align 4, !tbaa !16 ret i32 %.5 } @@ -3821,14 +3815,11 @@ tt_cmap14_char_map_def_binary.exit.thread: ; preds = %109, %51 tt_cmap14_char_map_nondef_binary.exit: ; preds = %175 %181 = getelementptr inbounds nuw i8, ptr %161, i64 3 %182 = load i8, ptr %181, align 1, !tbaa !15 - %183 = zext i8 %182 to i32 - %184 = shl nuw nsw i32 %183, 8 - %185 = getelementptr inbounds nuw i8, ptr %161, i64 4 - %186 = load i8, ptr %185, align 1, !tbaa !15 - %187 = zext i8 %186 to i32 - %188 = or disjoint i32 %184, %187 - %.not28 = icmp eq i32 %188, 0 - br i1 %.not28, label %tt_cmap14_char_map_nondef_binary.exit.thread, label %tt_cmap14_char_map_def_binary.exit + %183 = getelementptr inbounds nuw i8, ptr %161, i64 4 + %184 = load i8, ptr %183, align 1, !tbaa !15 + %185 = or i8 %184, %182 + %186 = icmp eq i8 %185, 0 + br i1 %186, label %tt_cmap14_char_map_nondef_binary.exit.thread, label %tt_cmap14_char_map_def_binary.exit tt_cmap14_char_map_nondef_binary.exit.thread: ; preds = %179, %137, %tt_cmap14_char_map_nondef_binary.exit, %tt_cmap14_char_map_def_binary.exit.thread br label %tt_cmap14_char_map_def_binary.exit @@ -3968,7 +3959,7 @@ define internal ptr @tt_cmap14_char_variants(ptr noundef captures(none) %0, ptr tt_cmap14_ensure.exit: ; preds = %14 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #27 - br label %181 + br label %179 23: ; preds = %._crit_edge69, %22 %24 = phi ptr [ %.pre, %._crit_edge69 ], [ %20, %22 ] @@ -3982,7 +3973,7 @@ tt_cmap14_ensure.exit: ; preds = %14 br label %27 27: ; preds = %.lr.ph, %tt_cmap14_char_map_nondef_binary.exit.thread - %.03763 = phi i32 [ %7, %.lr.ph ], [ %180, %tt_cmap14_char_map_nondef_binary.exit.thread ] + %.03763 = phi i32 [ %7, %.lr.ph ], [ %178, %tt_cmap14_char_map_nondef_binary.exit.thread ] %.03862 = phi ptr [ %25, %.lr.ph ], [ %58, %tt_cmap14_char_map_nondef_binary.exit.thread ] %.03961 = phi ptr [ %24, %.lr.ph ], [ %.1, %tt_cmap14_char_map_nondef_binary.exit.thread ] %28 = load i8, ptr %.03862, align 1, !tbaa !15 @@ -4168,32 +4159,29 @@ tt_cmap14_char_map_def_binary.exit.thread: ; preds = %98, %27 tt_cmap14_char_map_nondef_binary.exit: ; preds = %165 %171 = getelementptr inbounds nuw i8, ptr %151, i64 3 %172 = load i8, ptr %171, align 1, !tbaa !15 - %173 = zext i8 %172 to i32 - %174 = shl nuw nsw i32 %173, 8 - %175 = getelementptr inbounds nuw i8, ptr %151, i64 4 - %176 = load i8, ptr %175, align 1, !tbaa !15 - %177 = zext i8 %176 to i32 - %178 = or disjoint i32 %174, %177 - %.not46 = icmp eq i32 %178, 0 - br i1 %.not46, label %tt_cmap14_char_map_nondef_binary.exit.thread, label %tt_cmap14_char_map_def_binary.exit + %173 = getelementptr inbounds nuw i8, ptr %151, i64 4 + %174 = load i8, ptr %173, align 1, !tbaa !15 + %175 = or i8 %174, %172 + %176 = icmp eq i8 %175, 0 + br i1 %176, label %tt_cmap14_char_map_nondef_binary.exit.thread, label %tt_cmap14_char_map_def_binary.exit tt_cmap14_char_map_def_binary.exit: ; preds = %119, %tt_cmap14_char_map_nondef_binary.exit store i32 %39, ptr %.03961, align 4, !tbaa !16 - %179 = getelementptr inbounds nuw i8, ptr %.03961, i64 4 + %177 = getelementptr inbounds nuw i8, ptr %.03961, i64 4 br label %tt_cmap14_char_map_nondef_binary.exit.thread tt_cmap14_char_map_nondef_binary.exit.thread: ; preds = %169, %126, %tt_cmap14_char_map_def_binary.exit, %tt_cmap14_char_map_nondef_binary.exit, %tt_cmap14_char_map_def_binary.exit.thread - %.1 = phi ptr [ %179, %tt_cmap14_char_map_def_binary.exit ], [ %.03961, %tt_cmap14_char_map_nondef_binary.exit ], [ %.03961, %tt_cmap14_char_map_def_binary.exit.thread ], [ %.03961, %126 ], [ %.03961, %169 ] - %180 = add i32 %.03763, -1 - %.not42 = icmp eq i32 %180, 0 + %.1 = phi ptr [ %177, %tt_cmap14_char_map_def_binary.exit ], [ %.03961, %tt_cmap14_char_map_nondef_binary.exit ], [ %.03961, %tt_cmap14_char_map_def_binary.exit.thread ], [ %.03961, %126 ], [ %.03961, %169 ] + %178 = add i32 %.03763, -1 + %.not42 = icmp eq i32 %178, 0 br i1 %.not42, label %._crit_edge, label %27, !llvm.loop !99 ._crit_edge: ; preds = %tt_cmap14_char_map_nondef_binary.exit.thread, %23 %.039.lcssa = phi ptr [ %24, %23 ], [ %.1, %tt_cmap14_char_map_nondef_binary.exit.thread ] store i32 0, ptr %.039.lcssa, align 4, !tbaa !16 - br label %181 + br label %179 -181: ; preds = %tt_cmap14_ensure.exit, %._crit_edge +179: ; preds = %tt_cmap14_ensure.exit, %._crit_edge %.0 = phi ptr [ %24, %._crit_edge ], [ null, %tt_cmap14_ensure.exit ] ret ptr %.0 } diff --git a/bench/hdf5/optimized/H5Fsuper_cache.ll b/bench/hdf5/optimized/H5Fsuper_cache.ll index 91f238f5500..749dda36745 100644 --- a/bench/hdf5/optimized/H5Fsuper_cache.ll +++ b/bench/hdf5/optimized/H5Fsuper_cache.ll @@ -503,17 +503,16 @@ define internal ptr @H5F__cache_superblock_deserialize(ptr noundef %0, i64 nound %192 = load i8, ptr %175, align 1, !tbaa !31 %193 = getelementptr inbounds nuw i8, ptr %32, i64 12 %194 = load i8, ptr %193, align 1, !tbaa !31 - %195 = zext i8 %194 to i32 - %196 = shl nuw nsw i32 %195, 8 - %197 = getelementptr inbounds nuw i8, ptr %32, i64 13 - %198 = load i16, ptr %197, align 1 - %199 = zext i16 %198 to i32 - %200 = shl nuw i32 %199, 16 - %201 = or disjoint i32 %200, %196 - %202 = getelementptr inbounds nuw i8, ptr %32, i64 15 - store ptr %202, ptr %5, align 8, !tbaa !12 - %.not179 = icmp eq i32 %201, 0 - br i1 %.not179, label %207, label %203 + %195 = getelementptr inbounds nuw i8, ptr %32, i64 13 + %196 = load i8, ptr %195, align 1, !tbaa !31 + %197 = getelementptr inbounds nuw i8, ptr %32, i64 14 + %198 = load i8, ptr %197, align 1, !tbaa !31 + %199 = getelementptr inbounds nuw i8, ptr %32, i64 15 + store ptr %199, ptr %5, align 8, !tbaa !12 + %200 = or i8 %196, %194 + %201 = or i8 %200, %198 + %202 = icmp eq i8 %201, 0 + br i1 %202, label %207, label %203 203: ; preds = %191 %204 = load i64, ptr @H5E_FILE_g, align 8, !tbaa !10 @@ -538,8 +537,8 @@ define internal ptr @H5F__cache_superblock_deserialize(ptr noundef %0, i64 nound br i1 %.not181, label %237, label %214 214: ; preds = %213 - %215 = icmp ugt ptr %202, %7 - %216 = ptrtoint ptr %202 to i64 + %215 = icmp ugt ptr %199, %7 + %216 = ptrtoint ptr %199 to i64 %217 = sub i64 %136, %216 %218 = icmp ult i64 %217, 2 %or.cond225 = select i1 %215, i1 true, i1 %218 @@ -552,7 +551,7 @@ define internal ptr @H5F__cache_superblock_deserialize(ptr noundef %0, i64 nound br label %.thread 223: ; preds = %214 - %224 = load i16, ptr %202, align 1 + %224 = load i16, ptr %199, align 1 %225 = getelementptr inbounds nuw i8, ptr %32, i64 17 store ptr %225, ptr %5, align 8, !tbaa !12 %226 = icmp ugt ptr %225, %7 @@ -575,7 +574,7 @@ define internal ptr @H5F__cache_superblock_deserialize(ptr noundef %0, i64 nound br label %237 237: ; preds = %213, %234 - %238 = phi ptr [ %236, %234 ], [ %202, %213 ] + %238 = phi ptr [ %236, %234 ], [ %199, %213 ] %.0150 = phi i32 [ %235, %234 ], [ 32, %213 ] %239 = getelementptr inbounds nuw i8, ptr %2, i64 20 store i32 %.0150, ptr %239, align 4, !tbaa !30 diff --git a/bench/imgui/optimized/imgui_draw.ll b/bench/imgui/optimized/imgui_draw.ll index 66cf4feb43b..66fd9071388 100644 --- a/bench/imgui/optimized/imgui_draw.ll +++ b/bench/imgui/optimized/imgui_draw.ll @@ -14455,478 +14455,471 @@ define noundef ptr @_ZN11ImFontAtlas30AddFontFromMemoryCompressedTTFEPKvifPK12Im 46: ; preds = %6 %47 = getelementptr inbounds nuw i8, ptr %1, i64 4 %48 = load i8, ptr %47, align 1, !tbaa !23 - %49 = zext i8 %48 to i32 - %50 = shl nuw i32 %49, 24 - %51 = getelementptr inbounds nuw i8, ptr %1, i64 5 + %49 = getelementptr inbounds nuw i8, ptr %1, i64 5 + %50 = load i8, ptr %49, align 1, !tbaa !23 + %51 = getelementptr inbounds nuw i8, ptr %1, i64 6 %52 = load i8, ptr %51, align 1, !tbaa !23 - %53 = zext i8 %52 to i32 - %54 = shl nuw nsw i32 %53, 16 - %55 = getelementptr inbounds nuw i8, ptr %1, i64 6 - %56 = load i8, ptr %55, align 1, !tbaa !23 - %57 = zext i8 %56 to i32 - %58 = shl nuw nsw i32 %57, 8 - %59 = getelementptr inbounds nuw i8, ptr %1, i64 7 - %60 = load i8, ptr %59, align 1, !tbaa !23 - %61 = zext i8 %60 to i32 - %62 = or disjoint i32 %54, %50 - %63 = or disjoint i32 %62, %61 - %64 = or disjoint i32 %63, %58 - %.not36.i = icmp eq i32 %64, 0 - br i1 %.not36.i, label %65, label %_ZL14stb_decompressPhPKhj.exit - -65: ; preds = %46 - %66 = load i8, ptr %9, align 1, !tbaa !23 + %53 = getelementptr inbounds nuw i8, ptr %1, i64 7 + %54 = load i8, ptr %53, align 1, !tbaa !23 + %55 = or i8 %50, %48 + %56 = or i8 %55, %52 + %57 = or i8 %56, %54 + %58 = icmp eq i8 %57, 0 + br i1 %58, label %59, label %_ZL14stb_decompressPhPKhj.exit + +59: ; preds = %46 + %60 = load i8, ptr %9, align 1, !tbaa !23 + %61 = zext i8 %60 to i64 + %62 = shl nuw nsw i64 %61, 24 + %63 = load i8, ptr %13, align 1, !tbaa !23 + %64 = zext i8 %63 to i64 + %65 = shl nuw nsw i64 %64, 16 + %66 = load i8, ptr %18, align 1, !tbaa !23 %67 = zext i8 %66 to i64 - %68 = shl nuw nsw i64 %67, 24 - %69 = load i8, ptr %13, align 1, !tbaa !23 + %68 = shl nuw nsw i64 %67, 8 + %69 = load i8, ptr %23, align 1, !tbaa !23 %70 = zext i8 %69 to i64 - %71 = shl nuw nsw i64 %70, 16 - %72 = load i8, ptr %18, align 1, !tbaa !23 - %73 = zext i8 %72 to i64 - %74 = shl nuw nsw i64 %73, 8 - %75 = load i8, ptr %23, align 1, !tbaa !23 - %76 = zext i8 %75 to i64 store ptr %1, ptr @_ZL17stb__barrier_in_b, align 8, !tbaa !282 - %77 = getelementptr inbounds nuw i8, ptr %28, i64 %71 - %78 = getelementptr inbounds nuw i8, ptr %77, i64 %68 - %79 = getelementptr inbounds nuw i8, ptr %78, i64 %74 - %80 = getelementptr inbounds nuw i8, ptr %79, i64 %76 - store ptr %80, ptr @_ZL18stb__barrier_out_e, align 8, !tbaa !282 + %71 = getelementptr inbounds nuw i8, ptr %28, i64 %65 + %72 = getelementptr inbounds nuw i8, ptr %71, i64 %62 + %73 = getelementptr inbounds nuw i8, ptr %72, i64 %68 + %74 = getelementptr inbounds nuw i8, ptr %73, i64 %70 + store ptr %74, ptr @_ZL18stb__barrier_out_e, align 8, !tbaa !282 store ptr %28, ptr @_ZL18stb__barrier_out_b, align 8, !tbaa !282 - %81 = getelementptr inbounds nuw i8, ptr %1, i64 16 + %75 = getelementptr inbounds nuw i8, ptr %1, i64 16 store ptr %28, ptr @_ZL9stb__dout, align 8, !tbaa !282 - %82 = getelementptr inbounds nuw i8, ptr %80, i64 1 - br label %83 + %76 = getelementptr inbounds nuw i8, ptr %74, i64 1 + br label %77 -83: ; preds = %_ZL20stb_decompress_tokenPKh.exit.thread.i, %65 - %.lcssa.sink.i.i63.i = phi ptr [ %28, %65 ], [ %.lcssa.sink.i.i64.i, %_ZL20stb_decompress_tokenPKh.exit.thread.i ] - %.034.i = phi ptr [ %81, %65 ], [ %.0.i42.i, %_ZL20stb_decompress_tokenPKh.exit.thread.i ] - %84 = load i8, ptr %.034.i, align 1, !tbaa !23 - %85 = zext i8 %84 to i32 - %86 = icmp ugt i8 %84, 31 - br i1 %86, label %87, label %146 - -87: ; preds = %83 - %88 = icmp slt i8 %84, 0 - br i1 %88, label %89, label %107 - -89: ; preds = %87 - %90 = add nsw i32 %85, -127 - %91 = zext nneg i32 %90 to i64 - %92 = getelementptr inbounds nuw i8, ptr %.lcssa.sink.i.i63.i, i64 %91 - %93 = icmp ugt ptr %92, %80 - br i1 %93, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %94 - -94: ; preds = %89 - %95 = getelementptr inbounds nuw i8, ptr %.034.i, i64 1 - %96 = load i8, ptr %95, align 1, !tbaa !23 - %97 = zext i8 %96 to i64 - %98 = sub nsw i64 0, %97 - %99 = getelementptr inbounds i8, ptr %.lcssa.sink.i.i63.i, i64 %98 - %100 = getelementptr inbounds i8, ptr %99, i64 -1 - %101 = icmp ult ptr %100, %28 - br i1 %101, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %.preheader.i.i.i - -.preheader.i.i.i: ; preds = %94, %.preheader.i.i.i - %.09.i.i.i = phi i32 [ %103, %.preheader.i.i.i ], [ %90, %94 ] - %.048.i.i.i = phi ptr [ %104, %.preheader.i.i.i ], [ %100, %94 ] - %102 = phi ptr [ %106, %.preheader.i.i.i ], [ %.lcssa.sink.i.i63.i, %94 ] - %103 = add nsw i32 %.09.i.i.i, -1 - %104 = getelementptr inbounds nuw i8, ptr %.048.i.i.i, i64 1 - %105 = load i8, ptr %.048.i.i.i, align 1, !tbaa !23 - %106 = getelementptr inbounds nuw i8, ptr %102, i64 1 - store i8 %105, ptr %102, align 1, !tbaa !23 - %.not.i.i.i = icmp eq i32 %103, 0 +77: ; preds = %_ZL20stb_decompress_tokenPKh.exit.thread.i, %59 + %.lcssa.sink.i.i63.i = phi ptr [ %28, %59 ], [ %.lcssa.sink.i.i64.i, %_ZL20stb_decompress_tokenPKh.exit.thread.i ] + %.034.i = phi ptr [ %75, %59 ], [ %.0.i42.i, %_ZL20stb_decompress_tokenPKh.exit.thread.i ] + %78 = load i8, ptr %.034.i, align 1, !tbaa !23 + %79 = zext i8 %78 to i32 + %80 = icmp ugt i8 %78, 31 + br i1 %80, label %81, label %140 + +81: ; preds = %77 + %82 = icmp slt i8 %78, 0 + br i1 %82, label %83, label %101 + +83: ; preds = %81 + %84 = add nsw i32 %79, -127 + %85 = zext nneg i32 %84 to i64 + %86 = getelementptr inbounds nuw i8, ptr %.lcssa.sink.i.i63.i, i64 %85 + %87 = icmp ugt ptr %86, %74 + br i1 %87, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %88 + +88: ; preds = %83 + %89 = getelementptr inbounds nuw i8, ptr %.034.i, i64 1 + %90 = load i8, ptr %89, align 1, !tbaa !23 + %91 = zext i8 %90 to i64 + %92 = sub nsw i64 0, %91 + %93 = getelementptr inbounds i8, ptr %.lcssa.sink.i.i63.i, i64 %92 + %94 = getelementptr inbounds i8, ptr %93, i64 -1 + %95 = icmp ult ptr %94, %28 + br i1 %95, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %.preheader.i.i.i + +.preheader.i.i.i: ; preds = %88, %.preheader.i.i.i + %.09.i.i.i = phi i32 [ %97, %.preheader.i.i.i ], [ %84, %88 ] + %.048.i.i.i = phi ptr [ %98, %.preheader.i.i.i ], [ %94, %88 ] + %96 = phi ptr [ %100, %.preheader.i.i.i ], [ %.lcssa.sink.i.i63.i, %88 ] + %97 = add nsw i32 %.09.i.i.i, -1 + %98 = getelementptr inbounds nuw i8, ptr %.048.i.i.i, i64 1 + %99 = load i8, ptr %.048.i.i.i, align 1, !tbaa !23 + %100 = getelementptr inbounds nuw i8, ptr %96, i64 1 + store i8 %99, ptr %96, align 1, !tbaa !23 + %.not.i.i.i = icmp eq i32 %97, 0 br i1 %.not.i.i.i, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %.preheader.i.i.i, !llvm.loop !293 -107: ; preds = %87 - %108 = icmp samesign ugt i8 %84, 63 - br i1 %108, label %109, label %133 - -109: ; preds = %107 - %110 = getelementptr inbounds nuw i8, ptr %.034.i, i64 2 - %111 = load i8, ptr %110, align 1, !tbaa !23 - %112 = zext i8 %111 to i32 - %113 = add nuw nsw i32 %112, 1 - %114 = zext nneg i32 %113 to i64 - %115 = getelementptr inbounds nuw i8, ptr %.lcssa.sink.i.i63.i, i64 %114 - %116 = icmp ugt ptr %115, %80 - br i1 %116, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %117 - -117: ; preds = %109 - %118 = shl nuw nsw i32 %85, 8 - %119 = getelementptr inbounds nuw i8, ptr %.034.i, i64 1 - %120 = load i8, ptr %119, align 1, !tbaa !23 - %121 = zext i8 %120 to i32 - %122 = or disjoint i32 %118, %121 - %123 = add nsw i32 %122, -16383 - %124 = zext nneg i32 %123 to i64 - %125 = sub nsw i64 0, %124 - %126 = getelementptr inbounds i8, ptr %.lcssa.sink.i.i63.i, i64 %125 - %127 = icmp ult ptr %126, %28 - br i1 %127, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %.preheader.i56.i.i - -.preheader.i56.i.i: ; preds = %117, %.preheader.i56.i.i - %.09.i57.i.i = phi i32 [ %129, %.preheader.i56.i.i ], [ %113, %117 ] - %.048.i58.i.i = phi ptr [ %130, %.preheader.i56.i.i ], [ %126, %117 ] - %128 = phi ptr [ %132, %.preheader.i56.i.i ], [ %.lcssa.sink.i.i63.i, %117 ] - %129 = add nsw i32 %.09.i57.i.i, -1 - %130 = getelementptr inbounds nuw i8, ptr %.048.i58.i.i, i64 1 - %131 = load i8, ptr %.048.i58.i.i, align 1, !tbaa !23 - %132 = getelementptr inbounds nuw i8, ptr %128, i64 1 - store i8 %131, ptr %128, align 1, !tbaa !23 - %.not.i59.i.i = icmp eq i32 %129, 0 +101: ; preds = %81 + %102 = icmp samesign ugt i8 %78, 63 + br i1 %102, label %103, label %127 + +103: ; preds = %101 + %104 = getelementptr inbounds nuw i8, ptr %.034.i, i64 2 + %105 = load i8, ptr %104, align 1, !tbaa !23 + %106 = zext i8 %105 to i32 + %107 = add nuw nsw i32 %106, 1 + %108 = zext nneg i32 %107 to i64 + %109 = getelementptr inbounds nuw i8, ptr %.lcssa.sink.i.i63.i, i64 %108 + %110 = icmp ugt ptr %109, %74 + br i1 %110, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %111 + +111: ; preds = %103 + %112 = shl nuw nsw i32 %79, 8 + %113 = getelementptr inbounds nuw i8, ptr %.034.i, i64 1 + %114 = load i8, ptr %113, align 1, !tbaa !23 + %115 = zext i8 %114 to i32 + %116 = or disjoint i32 %112, %115 + %117 = add nsw i32 %116, -16383 + %118 = zext nneg i32 %117 to i64 + %119 = sub nsw i64 0, %118 + %120 = getelementptr inbounds i8, ptr %.lcssa.sink.i.i63.i, i64 %119 + %121 = icmp ult ptr %120, %28 + br i1 %121, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %.preheader.i56.i.i + +.preheader.i56.i.i: ; preds = %111, %.preheader.i56.i.i + %.09.i57.i.i = phi i32 [ %123, %.preheader.i56.i.i ], [ %107, %111 ] + %.048.i58.i.i = phi ptr [ %124, %.preheader.i56.i.i ], [ %120, %111 ] + %122 = phi ptr [ %126, %.preheader.i56.i.i ], [ %.lcssa.sink.i.i63.i, %111 ] + %123 = add nsw i32 %.09.i57.i.i, -1 + %124 = getelementptr inbounds nuw i8, ptr %.048.i58.i.i, i64 1 + %125 = load i8, ptr %.048.i58.i.i, align 1, !tbaa !23 + %126 = getelementptr inbounds nuw i8, ptr %122, i64 1 + store i8 %125, ptr %122, align 1, !tbaa !23 + %.not.i59.i.i = icmp eq i32 %123, 0 br i1 %.not.i59.i.i, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %.preheader.i56.i.i, !llvm.loop !293 -133: ; preds = %107 - %134 = getelementptr inbounds nuw i8, ptr %.034.i, i64 1 - %135 = add nsw i32 %85, -31 - %136 = zext nneg i32 %135 to i64 - %137 = getelementptr inbounds nuw i8, ptr %.lcssa.sink.i.i63.i, i64 %136 - %138 = icmp ugt ptr %137, %80 - br i1 %138, label %_ZL8stb__litPKhj.exit.i.i, label %139 +127: ; preds = %101 + %128 = getelementptr inbounds nuw i8, ptr %.034.i, i64 1 + %129 = add nsw i32 %79, -31 + %130 = zext nneg i32 %129 to i64 + %131 = getelementptr inbounds nuw i8, ptr %.lcssa.sink.i.i63.i, i64 %130 + %132 = icmp ugt ptr %131, %74 + br i1 %132, label %_ZL8stb__litPKhj.exit.i.i, label %133 -139: ; preds = %133 - %140 = icmp ult ptr %134, %1 - br i1 %140, label %_ZL8stb__litPKhj.exit.i.i, label %141 +133: ; preds = %127 + %134 = icmp ult ptr %128, %1 + br i1 %134, label %_ZL8stb__litPKhj.exit.i.i, label %135 -141: ; preds = %139 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.lcssa.sink.i.i63.i, ptr noundef nonnull readonly align 1 dereferenceable(1) %134, i64 %136, i1 false) +135: ; preds = %133 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.lcssa.sink.i.i63.i, ptr noundef nonnull readonly align 1 dereferenceable(1) %128, i64 %130, i1 false) %.pre103.i.i = load i8, ptr %.034.i, align 1, !tbaa !23 br label %_ZL8stb__litPKhj.exit.i.i -_ZL8stb__litPKhj.exit.i.i: ; preds = %141, %139, %133 - %142 = phi i8 [ %.pre103.i.i, %141 ], [ %84, %133 ], [ %84, %139 ] - %.sink.i.i.i = phi ptr [ %137, %141 ], [ %137, %133 ], [ %82, %139 ] +_ZL8stb__litPKhj.exit.i.i: ; preds = %135, %133, %127 + %136 = phi i8 [ %.pre103.i.i, %135 ], [ %78, %127 ], [ %78, %133 ] + %.sink.i.i.i = phi ptr [ %131, %135 ], [ %131, %127 ], [ %76, %133 ] store ptr %.sink.i.i.i, ptr @_ZL9stb__dout, align 8, !tbaa !282 - %143 = zext i8 %142 to i64 - %144 = getelementptr i8, ptr %.034.i, i64 %143 - %145 = getelementptr i8, ptr %144, i64 -30 + %137 = zext i8 %136 to i64 + %138 = getelementptr i8, ptr %.034.i, i64 %137 + %139 = getelementptr i8, ptr %138, i64 -30 br label %_ZL20stb_decompress_tokenPKh.exit.i -146: ; preds = %83 - %147 = icmp samesign ugt i8 %84, 23 - br i1 %147, label %148, label %177 - -148: ; preds = %146 - %149 = getelementptr inbounds nuw i8, ptr %.034.i, i64 3 - %150 = load i8, ptr %149, align 1, !tbaa !23 - %151 = zext i8 %150 to i32 - %152 = add nuw nsw i32 %151, 1 - %153 = zext nneg i32 %152 to i64 - %154 = getelementptr inbounds nuw i8, ptr %.lcssa.sink.i.i63.i, i64 %153 - %155 = icmp ugt ptr %154, %80 - br i1 %155, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %156 - -156: ; preds = %148 - %157 = shl nuw nsw i32 %85, 16 - %158 = getelementptr inbounds nuw i8, ptr %.034.i, i64 1 - %159 = load i8, ptr %158, align 1, !tbaa !23 - %160 = zext i8 %159 to i32 - %161 = shl nuw nsw i32 %160, 8 - %162 = getelementptr inbounds nuw i8, ptr %.034.i, i64 2 - %163 = load i8, ptr %162, align 1, !tbaa !23 - %164 = zext i8 %163 to i32 - %165 = or disjoint i32 %157, %164 - %166 = or disjoint i32 %165, %161 - %167 = add nsw i32 %166, -1572863 - %168 = zext nneg i32 %167 to i64 - %169 = sub nsw i64 0, %168 - %170 = getelementptr inbounds i8, ptr %.lcssa.sink.i.i63.i, i64 %169 - %171 = icmp ult ptr %170, %28 - br i1 %171, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %.preheader.i62.i.i - -.preheader.i62.i.i: ; preds = %156, %.preheader.i62.i.i - %.09.i63.i.i = phi i32 [ %173, %.preheader.i62.i.i ], [ %152, %156 ] - %.048.i64.i.i = phi ptr [ %174, %.preheader.i62.i.i ], [ %170, %156 ] - %172 = phi ptr [ %176, %.preheader.i62.i.i ], [ %.lcssa.sink.i.i63.i, %156 ] - %173 = add nsw i32 %.09.i63.i.i, -1 - %174 = getelementptr inbounds nuw i8, ptr %.048.i64.i.i, i64 1 - %175 = load i8, ptr %.048.i64.i.i, align 1, !tbaa !23 - %176 = getelementptr inbounds nuw i8, ptr %172, i64 1 - store i8 %175, ptr %172, align 1, !tbaa !23 - %.not.i65.i.i = icmp eq i32 %173, 0 +140: ; preds = %77 + %141 = icmp samesign ugt i8 %78, 23 + br i1 %141, label %142, label %171 + +142: ; preds = %140 + %143 = getelementptr inbounds nuw i8, ptr %.034.i, i64 3 + %144 = load i8, ptr %143, align 1, !tbaa !23 + %145 = zext i8 %144 to i32 + %146 = add nuw nsw i32 %145, 1 + %147 = zext nneg i32 %146 to i64 + %148 = getelementptr inbounds nuw i8, ptr %.lcssa.sink.i.i63.i, i64 %147 + %149 = icmp ugt ptr %148, %74 + br i1 %149, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %150 + +150: ; preds = %142 + %151 = shl nuw nsw i32 %79, 16 + %152 = getelementptr inbounds nuw i8, ptr %.034.i, i64 1 + %153 = load i8, ptr %152, align 1, !tbaa !23 + %154 = zext i8 %153 to i32 + %155 = shl nuw nsw i32 %154, 8 + %156 = getelementptr inbounds nuw i8, ptr %.034.i, i64 2 + %157 = load i8, ptr %156, align 1, !tbaa !23 + %158 = zext i8 %157 to i32 + %159 = or disjoint i32 %151, %158 + %160 = or disjoint i32 %159, %155 + %161 = add nsw i32 %160, -1572863 + %162 = zext nneg i32 %161 to i64 + %163 = sub nsw i64 0, %162 + %164 = getelementptr inbounds i8, ptr %.lcssa.sink.i.i63.i, i64 %163 + %165 = icmp ult ptr %164, %28 + br i1 %165, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %.preheader.i62.i.i + +.preheader.i62.i.i: ; preds = %150, %.preheader.i62.i.i + %.09.i63.i.i = phi i32 [ %167, %.preheader.i62.i.i ], [ %146, %150 ] + %.048.i64.i.i = phi ptr [ %168, %.preheader.i62.i.i ], [ %164, %150 ] + %166 = phi ptr [ %170, %.preheader.i62.i.i ], [ %.lcssa.sink.i.i63.i, %150 ] + %167 = add nsw i32 %.09.i63.i.i, -1 + %168 = getelementptr inbounds nuw i8, ptr %.048.i64.i.i, i64 1 + %169 = load i8, ptr %.048.i64.i.i, align 1, !tbaa !23 + %170 = getelementptr inbounds nuw i8, ptr %166, i64 1 + store i8 %169, ptr %166, align 1, !tbaa !23 + %.not.i65.i.i = icmp eq i32 %167, 0 br i1 %.not.i65.i.i, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %.preheader.i62.i.i, !llvm.loop !293 -177: ; preds = %146 - %178 = icmp samesign ugt i8 %84, 15 - br i1 %178, label %179, label %213 - -179: ; preds = %177 - %180 = getelementptr inbounds nuw i8, ptr %.034.i, i64 3 - %181 = load i8, ptr %180, align 1, !tbaa !23 - %182 = zext i8 %181 to i32 - %183 = shl nuw nsw i32 %182, 8 - %184 = getelementptr inbounds nuw i8, ptr %.034.i, i64 4 - %185 = load i8, ptr %184, align 1, !tbaa !23 - %186 = zext i8 %185 to i32 - %187 = or disjoint i32 %183, %186 - %188 = add nuw nsw i32 %187, 1 - %189 = zext nneg i32 %188 to i64 - %190 = getelementptr inbounds nuw i8, ptr %.lcssa.sink.i.i63.i, i64 %189 - %191 = icmp ugt ptr %190, %80 - br i1 %191, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %192 - -192: ; preds = %179 - %193 = shl nuw nsw i32 %85, 16 - %194 = getelementptr inbounds nuw i8, ptr %.034.i, i64 1 - %195 = load i8, ptr %194, align 1, !tbaa !23 - %196 = zext i8 %195 to i32 - %197 = shl nuw nsw i32 %196, 8 - %198 = getelementptr inbounds nuw i8, ptr %.034.i, i64 2 - %199 = load i8, ptr %198, align 1, !tbaa !23 - %200 = zext i8 %199 to i32 - %201 = or disjoint i32 %193, %200 - %202 = or disjoint i32 %201, %197 - %203 = add nsw i32 %202, -1048575 - %204 = zext nneg i32 %203 to i64 - %205 = sub nsw i64 0, %204 - %206 = getelementptr inbounds i8, ptr %.lcssa.sink.i.i63.i, i64 %205 - %207 = icmp ult ptr %206, %28 - br i1 %207, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %.preheader.i68.i.i - -.preheader.i68.i.i: ; preds = %192, %.preheader.i68.i.i - %.09.i69.i.i = phi i32 [ %209, %.preheader.i68.i.i ], [ %188, %192 ] - %.048.i70.i.i = phi ptr [ %210, %.preheader.i68.i.i ], [ %206, %192 ] - %208 = phi ptr [ %212, %.preheader.i68.i.i ], [ %.lcssa.sink.i.i63.i, %192 ] - %209 = add nsw i32 %.09.i69.i.i, -1 - %210 = getelementptr inbounds nuw i8, ptr %.048.i70.i.i, i64 1 - %211 = load i8, ptr %.048.i70.i.i, align 1, !tbaa !23 - %212 = getelementptr inbounds nuw i8, ptr %208, i64 1 - store i8 %211, ptr %208, align 1, !tbaa !23 - %.not.i71.i.i = icmp eq i32 %209, 0 - br i1 %.not.i71.i.i, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %.preheader.i68.i.i, !llvm.loop !293 +171: ; preds = %140 + %172 = icmp samesign ugt i8 %78, 15 + br i1 %172, label %173, label %207 -213: ; preds = %177 - %214 = icmp samesign ugt i8 %84, 7 - br i1 %214, label %215, label %237 +173: ; preds = %171 + %174 = getelementptr inbounds nuw i8, ptr %.034.i, i64 3 + %175 = load i8, ptr %174, align 1, !tbaa !23 + %176 = zext i8 %175 to i32 + %177 = shl nuw nsw i32 %176, 8 + %178 = getelementptr inbounds nuw i8, ptr %.034.i, i64 4 + %179 = load i8, ptr %178, align 1, !tbaa !23 + %180 = zext i8 %179 to i32 + %181 = or disjoint i32 %177, %180 + %182 = add nuw nsw i32 %181, 1 + %183 = zext nneg i32 %182 to i64 + %184 = getelementptr inbounds nuw i8, ptr %.lcssa.sink.i.i63.i, i64 %183 + %185 = icmp ugt ptr %184, %74 + br i1 %185, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %186 + +186: ; preds = %173 + %187 = shl nuw nsw i32 %79, 16 + %188 = getelementptr inbounds nuw i8, ptr %.034.i, i64 1 + %189 = load i8, ptr %188, align 1, !tbaa !23 + %190 = zext i8 %189 to i32 + %191 = shl nuw nsw i32 %190, 8 + %192 = getelementptr inbounds nuw i8, ptr %.034.i, i64 2 + %193 = load i8, ptr %192, align 1, !tbaa !23 + %194 = zext i8 %193 to i32 + %195 = or disjoint i32 %187, %194 + %196 = or disjoint i32 %195, %191 + %197 = add nsw i32 %196, -1048575 + %198 = zext nneg i32 %197 to i64 + %199 = sub nsw i64 0, %198 + %200 = getelementptr inbounds i8, ptr %.lcssa.sink.i.i63.i, i64 %199 + %201 = icmp ult ptr %200, %28 + br i1 %201, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %.preheader.i68.i.i + +.preheader.i68.i.i: ; preds = %186, %.preheader.i68.i.i + %.09.i69.i.i = phi i32 [ %203, %.preheader.i68.i.i ], [ %182, %186 ] + %.048.i70.i.i = phi ptr [ %204, %.preheader.i68.i.i ], [ %200, %186 ] + %202 = phi ptr [ %206, %.preheader.i68.i.i ], [ %.lcssa.sink.i.i63.i, %186 ] + %203 = add nsw i32 %.09.i69.i.i, -1 + %204 = getelementptr inbounds nuw i8, ptr %.048.i70.i.i, i64 1 + %205 = load i8, ptr %.048.i70.i.i, align 1, !tbaa !23 + %206 = getelementptr inbounds nuw i8, ptr %202, i64 1 + store i8 %205, ptr %202, align 1, !tbaa !23 + %.not.i71.i.i = icmp eq i32 %203, 0 + br i1 %.not.i71.i.i, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %.preheader.i68.i.i, !llvm.loop !293 -215: ; preds = %213 - %216 = getelementptr inbounds nuw i8, ptr %.034.i, i64 2 - %217 = shl nuw nsw i32 %85, 8 - %218 = getelementptr inbounds nuw i8, ptr %.034.i, i64 1 - %219 = load i8, ptr %218, align 1, !tbaa !23 - %220 = zext i8 %219 to i32 - %221 = or disjoint i32 %217, %220 - %222 = add nsw i32 %221, -2047 - %223 = zext nneg i32 %222 to i64 - %224 = getelementptr inbounds nuw i8, ptr %.lcssa.sink.i.i63.i, i64 %223 - %225 = icmp ugt ptr %224, %80 - br i1 %225, label %_ZL8stb__litPKhj.exit75.i.i, label %226 - -226: ; preds = %215 - %227 = icmp ult ptr %216, %1 - br i1 %227, label %_ZL8stb__litPKhj.exit75.i.i, label %228 - -228: ; preds = %226 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.lcssa.sink.i.i63.i, ptr noundef nonnull readonly align 1 dereferenceable(1) %216, i64 %223, i1 false) +207: ; preds = %171 + %208 = icmp samesign ugt i8 %78, 7 + br i1 %208, label %209, label %231 + +209: ; preds = %207 + %210 = getelementptr inbounds nuw i8, ptr %.034.i, i64 2 + %211 = shl nuw nsw i32 %79, 8 + %212 = getelementptr inbounds nuw i8, ptr %.034.i, i64 1 + %213 = load i8, ptr %212, align 1, !tbaa !23 + %214 = zext i8 %213 to i32 + %215 = or disjoint i32 %211, %214 + %216 = add nsw i32 %215, -2047 + %217 = zext nneg i32 %216 to i64 + %218 = getelementptr inbounds nuw i8, ptr %.lcssa.sink.i.i63.i, i64 %217 + %219 = icmp ugt ptr %218, %74 + br i1 %219, label %_ZL8stb__litPKhj.exit75.i.i, label %220 + +220: ; preds = %209 + %221 = icmp ult ptr %210, %1 + br i1 %221, label %_ZL8stb__litPKhj.exit75.i.i, label %222 + +222: ; preds = %220 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.lcssa.sink.i.i63.i, ptr noundef nonnull readonly align 1 dereferenceable(1) %210, i64 %217, i1 false) %.pre101.i.i = load i8, ptr %.034.i, align 1, !tbaa !23 - %.pre102.i.i = load i8, ptr %218, align 1, !tbaa !23 + %.pre102.i.i = load i8, ptr %212, align 1, !tbaa !23 br label %_ZL8stb__litPKhj.exit75.i.i -_ZL8stb__litPKhj.exit75.i.i: ; preds = %228, %226, %215 - %229 = phi i8 [ %.pre102.i.i, %228 ], [ %219, %215 ], [ %219, %226 ] - %230 = phi i8 [ %.pre101.i.i, %228 ], [ %84, %215 ], [ %84, %226 ] - %.sink.i74.i.i = phi ptr [ %224, %228 ], [ %224, %215 ], [ %82, %226 ] +_ZL8stb__litPKhj.exit75.i.i: ; preds = %222, %220, %209 + %223 = phi i8 [ %.pre102.i.i, %222 ], [ %213, %209 ], [ %213, %220 ] + %224 = phi i8 [ %.pre101.i.i, %222 ], [ %78, %209 ], [ %78, %220 ] + %.sink.i74.i.i = phi ptr [ %218, %222 ], [ %218, %209 ], [ %76, %220 ] store ptr %.sink.i74.i.i, ptr @_ZL9stb__dout, align 8, !tbaa !282 - %231 = zext i8 %230 to i64 - %232 = shl nuw nsw i64 %231, 8 - %233 = zext i8 %229 to i64 - %234 = getelementptr i8, ptr %.034.i, i64 %232 - %235 = getelementptr i8, ptr %234, i64 %233 - %236 = getelementptr i8, ptr %235, i64 -2045 + %225 = zext i8 %224 to i64 + %226 = shl nuw nsw i64 %225, 8 + %227 = zext i8 %223 to i64 + %228 = getelementptr i8, ptr %.034.i, i64 %226 + %229 = getelementptr i8, ptr %228, i64 %227 + %230 = getelementptr i8, ptr %229, i64 -2045 br label %_ZL20stb_decompress_tokenPKh.exit.i -237: ; preds = %213 - switch i8 %84, label %_ZL14stb_decompressPhPKhj.exit [ - i8 7, label %238 - i8 6, label %257 - i8 4, label %287 +231: ; preds = %207 + switch i8 %78, label %_ZL14stb_decompressPhPKhj.exit [ + i8 7, label %232 + i8 6, label %251 + i8 4, label %281 ] -238: ; preds = %237 - %239 = getelementptr inbounds nuw i8, ptr %.034.i, i64 3 - %240 = getelementptr inbounds nuw i8, ptr %.034.i, i64 1 - %241 = load i8, ptr %240, align 1, !tbaa !23 - %242 = zext i8 %241 to i64 - %243 = shl nuw nsw i64 %242, 8 - %244 = getelementptr inbounds nuw i8, ptr %.034.i, i64 2 - %245 = load i8, ptr %244, align 1, !tbaa !23 - %246 = zext i8 %245 to i64 - %247 = or disjoint i64 %243, %246 - %248 = add nuw nsw i64 %247, 1 - %249 = getelementptr inbounds nuw i8, ptr %.lcssa.sink.i.i63.i, i64 %248 - %250 = icmp ugt ptr %249, %80 - br i1 %250, label %_ZL8stb__litPKhj.exit77.i.i, label %251 - -251: ; preds = %238 - %252 = icmp ult ptr %239, %1 - br i1 %252, label %_ZL8stb__litPKhj.exit77.i.i, label %253 - -253: ; preds = %251 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.lcssa.sink.i.i63.i, ptr noundef nonnull readonly align 1 dereferenceable(1) %239, i64 %248, i1 false) - %.pre.i.i = load i8, ptr %240, align 1, !tbaa !23 - %.pre100.i.i = load i8, ptr %244, align 1, !tbaa !23 +232: ; preds = %231 + %233 = getelementptr inbounds nuw i8, ptr %.034.i, i64 3 + %234 = getelementptr inbounds nuw i8, ptr %.034.i, i64 1 + %235 = load i8, ptr %234, align 1, !tbaa !23 + %236 = zext i8 %235 to i64 + %237 = shl nuw nsw i64 %236, 8 + %238 = getelementptr inbounds nuw i8, ptr %.034.i, i64 2 + %239 = load i8, ptr %238, align 1, !tbaa !23 + %240 = zext i8 %239 to i64 + %241 = or disjoint i64 %237, %240 + %242 = add nuw nsw i64 %241, 1 + %243 = getelementptr inbounds nuw i8, ptr %.lcssa.sink.i.i63.i, i64 %242 + %244 = icmp ugt ptr %243, %74 + br i1 %244, label %_ZL8stb__litPKhj.exit77.i.i, label %245 + +245: ; preds = %232 + %246 = icmp ult ptr %233, %1 + br i1 %246, label %_ZL8stb__litPKhj.exit77.i.i, label %247 + +247: ; preds = %245 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.lcssa.sink.i.i63.i, ptr noundef nonnull readonly align 1 dereferenceable(1) %233, i64 %242, i1 false) + %.pre.i.i = load i8, ptr %234, align 1, !tbaa !23 + %.pre100.i.i = load i8, ptr %238, align 1, !tbaa !23 %.pre104.i.i = zext i8 %.pre.i.i to i64 %.pre105.i.i = shl nuw nsw i64 %.pre104.i.i, 8 %.pre107.i.i = zext i8 %.pre100.i.i to i64 br label %_ZL8stb__litPKhj.exit77.i.i -_ZL8stb__litPKhj.exit77.i.i: ; preds = %253, %251, %238 - %.pre-phi108.i.i = phi i64 [ %246, %238 ], [ %.pre107.i.i, %253 ], [ %246, %251 ] - %.pre-phi106.i.i = phi i64 [ %243, %238 ], [ %.pre105.i.i, %253 ], [ %243, %251 ] - %.sink.i76.i.i = phi ptr [ %249, %238 ], [ %249, %253 ], [ %82, %251 ] +_ZL8stb__litPKhj.exit77.i.i: ; preds = %247, %245, %232 + %.pre-phi108.i.i = phi i64 [ %240, %232 ], [ %.pre107.i.i, %247 ], [ %240, %245 ] + %.pre-phi106.i.i = phi i64 [ %237, %232 ], [ %.pre105.i.i, %247 ], [ %237, %245 ] + %.sink.i76.i.i = phi ptr [ %243, %232 ], [ %243, %247 ], [ %76, %245 ] store ptr %.sink.i76.i.i, ptr @_ZL9stb__dout, align 8, !tbaa !282 - %254 = getelementptr inbounds nuw i8, ptr %.034.i, i64 %.pre-phi106.i.i - %255 = getelementptr inbounds nuw i8, ptr %254, i64 %.pre-phi108.i.i - %256 = getelementptr inbounds nuw i8, ptr %255, i64 4 + %248 = getelementptr inbounds nuw i8, ptr %.034.i, i64 %.pre-phi106.i.i + %249 = getelementptr inbounds nuw i8, ptr %248, i64 %.pre-phi108.i.i + %250 = getelementptr inbounds nuw i8, ptr %249, i64 4 br label %_ZL20stb_decompress_tokenPKh.exit.i -257: ; preds = %237 - %258 = getelementptr inbounds nuw i8, ptr %.034.i, i64 4 - %259 = load i8, ptr %258, align 1, !tbaa !23 - %260 = zext i8 %259 to i32 - %261 = add nuw nsw i32 %260, 1 - %262 = zext nneg i32 %261 to i64 - %263 = getelementptr inbounds nuw i8, ptr %.lcssa.sink.i.i63.i, i64 %262 - %264 = icmp ugt ptr %263, %80 - br i1 %264, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %265 - -265: ; preds = %257 - %266 = getelementptr inbounds nuw i8, ptr %.034.i, i64 1 - %267 = load i8, ptr %266, align 1, !tbaa !23 - %268 = zext i8 %267 to i64 - %269 = shl nuw nsw i64 %268, 16 - %270 = getelementptr inbounds nuw i8, ptr %.034.i, i64 2 - %271 = load i8, ptr %270, align 1, !tbaa !23 - %272 = zext i8 %271 to i64 - %273 = shl nuw nsw i64 %272, 8 - %274 = getelementptr inbounds nuw i8, ptr %.034.i, i64 3 - %275 = load i8, ptr %274, align 1, !tbaa !23 - %276 = zext i8 %275 to i64 - %277 = or disjoint i64 %269, %276 - %278 = or disjoint i64 %277, %273 - %279 = xor i64 %278, -1 - %280 = getelementptr inbounds i8, ptr %.lcssa.sink.i.i63.i, i64 %279 - %281 = icmp ult ptr %280, %28 - br i1 %281, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %.preheader.i78.i.i - -.preheader.i78.i.i: ; preds = %265, %.preheader.i78.i.i - %.09.i79.i.i = phi i32 [ %283, %.preheader.i78.i.i ], [ %261, %265 ] - %.048.i80.i.i = phi ptr [ %284, %.preheader.i78.i.i ], [ %280, %265 ] - %282 = phi ptr [ %286, %.preheader.i78.i.i ], [ %.lcssa.sink.i.i63.i, %265 ] - %283 = add nsw i32 %.09.i79.i.i, -1 - %284 = getelementptr inbounds nuw i8, ptr %.048.i80.i.i, i64 1 - %285 = load i8, ptr %.048.i80.i.i, align 1, !tbaa !23 - %286 = getelementptr inbounds nuw i8, ptr %282, i64 1 - store i8 %285, ptr %282, align 1, !tbaa !23 - %.not.i81.i.i = icmp eq i32 %283, 0 +251: ; preds = %231 + %252 = getelementptr inbounds nuw i8, ptr %.034.i, i64 4 + %253 = load i8, ptr %252, align 1, !tbaa !23 + %254 = zext i8 %253 to i32 + %255 = add nuw nsw i32 %254, 1 + %256 = zext nneg i32 %255 to i64 + %257 = getelementptr inbounds nuw i8, ptr %.lcssa.sink.i.i63.i, i64 %256 + %258 = icmp ugt ptr %257, %74 + br i1 %258, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %259 + +259: ; preds = %251 + %260 = getelementptr inbounds nuw i8, ptr %.034.i, i64 1 + %261 = load i8, ptr %260, align 1, !tbaa !23 + %262 = zext i8 %261 to i64 + %263 = shl nuw nsw i64 %262, 16 + %264 = getelementptr inbounds nuw i8, ptr %.034.i, i64 2 + %265 = load i8, ptr %264, align 1, !tbaa !23 + %266 = zext i8 %265 to i64 + %267 = shl nuw nsw i64 %266, 8 + %268 = getelementptr inbounds nuw i8, ptr %.034.i, i64 3 + %269 = load i8, ptr %268, align 1, !tbaa !23 + %270 = zext i8 %269 to i64 + %271 = or disjoint i64 %263, %270 + %272 = or disjoint i64 %271, %267 + %273 = xor i64 %272, -1 + %274 = getelementptr inbounds i8, ptr %.lcssa.sink.i.i63.i, i64 %273 + %275 = icmp ult ptr %274, %28 + br i1 %275, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %.preheader.i78.i.i + +.preheader.i78.i.i: ; preds = %259, %.preheader.i78.i.i + %.09.i79.i.i = phi i32 [ %277, %.preheader.i78.i.i ], [ %255, %259 ] + %.048.i80.i.i = phi ptr [ %278, %.preheader.i78.i.i ], [ %274, %259 ] + %276 = phi ptr [ %280, %.preheader.i78.i.i ], [ %.lcssa.sink.i.i63.i, %259 ] + %277 = add nsw i32 %.09.i79.i.i, -1 + %278 = getelementptr inbounds nuw i8, ptr %.048.i80.i.i, i64 1 + %279 = load i8, ptr %.048.i80.i.i, align 1, !tbaa !23 + %280 = getelementptr inbounds nuw i8, ptr %276, i64 1 + store i8 %279, ptr %276, align 1, !tbaa !23 + %.not.i81.i.i = icmp eq i32 %277, 0 br i1 %.not.i81.i.i, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %.preheader.i78.i.i, !llvm.loop !293 -287: ; preds = %237 - %288 = getelementptr inbounds nuw i8, ptr %.034.i, i64 4 - %289 = load i8, ptr %288, align 1, !tbaa !23 - %290 = zext i8 %289 to i32 - %291 = shl nuw nsw i32 %290, 8 - %292 = getelementptr inbounds nuw i8, ptr %.034.i, i64 5 - %293 = load i8, ptr %292, align 1, !tbaa !23 - %294 = zext i8 %293 to i32 - %295 = or disjoint i32 %291, %294 - %296 = add nuw nsw i32 %295, 1 - %297 = zext nneg i32 %296 to i64 - %298 = getelementptr inbounds nuw i8, ptr %.lcssa.sink.i.i63.i, i64 %297 - %299 = icmp ugt ptr %298, %80 - br i1 %299, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %300 - -300: ; preds = %287 - %301 = getelementptr inbounds nuw i8, ptr %.034.i, i64 1 - %302 = load i8, ptr %301, align 1, !tbaa !23 - %303 = zext i8 %302 to i64 - %304 = shl nuw nsw i64 %303, 16 - %305 = getelementptr inbounds nuw i8, ptr %.034.i, i64 2 - %306 = load i8, ptr %305, align 1, !tbaa !23 - %307 = zext i8 %306 to i64 - %308 = shl nuw nsw i64 %307, 8 - %309 = getelementptr inbounds nuw i8, ptr %.034.i, i64 3 - %310 = load i8, ptr %309, align 1, !tbaa !23 - %311 = zext i8 %310 to i64 - %312 = or disjoint i64 %304, %311 - %313 = or disjoint i64 %312, %308 - %314 = xor i64 %313, -1 - %315 = getelementptr inbounds i8, ptr %.lcssa.sink.i.i63.i, i64 %314 - %316 = icmp ult ptr %315, %28 - br i1 %316, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %.preheader.i84.i.i - -.preheader.i84.i.i: ; preds = %300, %.preheader.i84.i.i - %.09.i85.i.i = phi i32 [ %318, %.preheader.i84.i.i ], [ %296, %300 ] - %.048.i86.i.i = phi ptr [ %319, %.preheader.i84.i.i ], [ %315, %300 ] - %317 = phi ptr [ %321, %.preheader.i84.i.i ], [ %.lcssa.sink.i.i63.i, %300 ] - %318 = add nsw i32 %.09.i85.i.i, -1 - %319 = getelementptr inbounds nuw i8, ptr %.048.i86.i.i, i64 1 - %320 = load i8, ptr %.048.i86.i.i, align 1, !tbaa !23 - %321 = getelementptr inbounds nuw i8, ptr %317, i64 1 - store i8 %320, ptr %317, align 1, !tbaa !23 - %.not.i87.i.i = icmp eq i32 %318, 0 +281: ; preds = %231 + %282 = getelementptr inbounds nuw i8, ptr %.034.i, i64 4 + %283 = load i8, ptr %282, align 1, !tbaa !23 + %284 = zext i8 %283 to i32 + %285 = shl nuw nsw i32 %284, 8 + %286 = getelementptr inbounds nuw i8, ptr %.034.i, i64 5 + %287 = load i8, ptr %286, align 1, !tbaa !23 + %288 = zext i8 %287 to i32 + %289 = or disjoint i32 %285, %288 + %290 = add nuw nsw i32 %289, 1 + %291 = zext nneg i32 %290 to i64 + %292 = getelementptr inbounds nuw i8, ptr %.lcssa.sink.i.i63.i, i64 %291 + %293 = icmp ugt ptr %292, %74 + br i1 %293, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %294 + +294: ; preds = %281 + %295 = getelementptr inbounds nuw i8, ptr %.034.i, i64 1 + %296 = load i8, ptr %295, align 1, !tbaa !23 + %297 = zext i8 %296 to i64 + %298 = shl nuw nsw i64 %297, 16 + %299 = getelementptr inbounds nuw i8, ptr %.034.i, i64 2 + %300 = load i8, ptr %299, align 1, !tbaa !23 + %301 = zext i8 %300 to i64 + %302 = shl nuw nsw i64 %301, 8 + %303 = getelementptr inbounds nuw i8, ptr %.034.i, i64 3 + %304 = load i8, ptr %303, align 1, !tbaa !23 + %305 = zext i8 %304 to i64 + %306 = or disjoint i64 %298, %305 + %307 = or disjoint i64 %306, %302 + %308 = xor i64 %307, -1 + %309 = getelementptr inbounds i8, ptr %.lcssa.sink.i.i63.i, i64 %308 + %310 = icmp ult ptr %309, %28 + br i1 %310, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %.preheader.i84.i.i + +.preheader.i84.i.i: ; preds = %294, %.preheader.i84.i.i + %.09.i85.i.i = phi i32 [ %312, %.preheader.i84.i.i ], [ %290, %294 ] + %.048.i86.i.i = phi ptr [ %313, %.preheader.i84.i.i ], [ %309, %294 ] + %311 = phi ptr [ %315, %.preheader.i84.i.i ], [ %.lcssa.sink.i.i63.i, %294 ] + %312 = add nsw i32 %.09.i85.i.i, -1 + %313 = getelementptr inbounds nuw i8, ptr %.048.i86.i.i, i64 1 + %314 = load i8, ptr %.048.i86.i.i, align 1, !tbaa !23 + %315 = getelementptr inbounds nuw i8, ptr %311, i64 1 + store i8 %314, ptr %311, align 1, !tbaa !23 + %.not.i87.i.i = icmp eq i32 %312, 0 br i1 %.not.i87.i.i, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %.preheader.i84.i.i, !llvm.loop !293 _ZL20stb_decompress_tokenPKh.exit.i: ; preds = %_ZL8stb__litPKhj.exit77.i.i, %_ZL8stb__litPKhj.exit75.i.i, %_ZL8stb__litPKhj.exit.i.i %.lcssa.sink.i.i65.i = phi ptr [ %.sink.i.i.i, %_ZL8stb__litPKhj.exit.i.i ], [ %.sink.i74.i.i, %_ZL8stb__litPKhj.exit75.i.i ], [ %.sink.i76.i.i, %_ZL8stb__litPKhj.exit77.i.i ] - %.0.i.i = phi ptr [ %145, %_ZL8stb__litPKhj.exit.i.i ], [ %236, %_ZL8stb__litPKhj.exit75.i.i ], [ %256, %_ZL8stb__litPKhj.exit77.i.i ] - %322 = icmp eq ptr %.0.i.i, %.034.i - br i1 %322, label %_ZL14stb_decompressPhPKhj.exit, label %_ZL20stb_decompress_tokenPKh.exit.thread.i + %.0.i.i = phi ptr [ %139, %_ZL8stb__litPKhj.exit.i.i ], [ %230, %_ZL8stb__litPKhj.exit75.i.i ], [ %250, %_ZL8stb__litPKhj.exit77.i.i ] + %316 = icmp eq ptr %.0.i.i, %.034.i + br i1 %316, label %_ZL14stb_decompressPhPKhj.exit, label %_ZL20stb_decompress_tokenPKh.exit.thread.i -_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i: ; preds = %.preheader.i84.i.i, %.preheader.i78.i.i, %.preheader.i68.i.i, %.preheader.i62.i.i, %.preheader.i56.i.i, %.preheader.i.i.i, %300, %287, %265, %257, %192, %179, %156, %148, %117, %109, %94, %89 - %.lcssa.sink.i88.i.sink.i = phi ptr [ %92, %89 ], [ %82, %94 ], [ %115, %109 ], [ %82, %117 ], [ %154, %148 ], [ %82, %156 ], [ %190, %179 ], [ %82, %192 ], [ %263, %257 ], [ %82, %265 ], [ %298, %287 ], [ %82, %300 ], [ %106, %.preheader.i.i.i ], [ %132, %.preheader.i56.i.i ], [ %176, %.preheader.i62.i.i ], [ %212, %.preheader.i68.i.i ], [ %286, %.preheader.i78.i.i ], [ %321, %.preheader.i84.i.i ] - %.sink.i = phi i64 [ 2, %89 ], [ 2, %94 ], [ 3, %109 ], [ 3, %117 ], [ 4, %148 ], [ 4, %156 ], [ 5, %179 ], [ 5, %192 ], [ 5, %257 ], [ 5, %265 ], [ 6, %287 ], [ 6, %300 ], [ 2, %.preheader.i.i.i ], [ 3, %.preheader.i56.i.i ], [ 4, %.preheader.i62.i.i ], [ 5, %.preheader.i68.i.i ], [ 5, %.preheader.i78.i.i ], [ 6, %.preheader.i84.i.i ] +_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i: ; preds = %.preheader.i84.i.i, %.preheader.i78.i.i, %.preheader.i68.i.i, %.preheader.i62.i.i, %.preheader.i56.i.i, %.preheader.i.i.i, %294, %281, %259, %251, %186, %173, %150, %142, %111, %103, %88, %83 + %.lcssa.sink.i88.i.sink.i = phi ptr [ %86, %83 ], [ %76, %88 ], [ %109, %103 ], [ %76, %111 ], [ %148, %142 ], [ %76, %150 ], [ %184, %173 ], [ %76, %186 ], [ %257, %251 ], [ %76, %259 ], [ %292, %281 ], [ %76, %294 ], [ %100, %.preheader.i.i.i ], [ %126, %.preheader.i56.i.i ], [ %170, %.preheader.i62.i.i ], [ %206, %.preheader.i68.i.i ], [ %280, %.preheader.i78.i.i ], [ %315, %.preheader.i84.i.i ] + %.sink.i = phi i64 [ 2, %83 ], [ 2, %88 ], [ 3, %103 ], [ 3, %111 ], [ 4, %142 ], [ 4, %150 ], [ 5, %173 ], [ 5, %186 ], [ 5, %251 ], [ 5, %259 ], [ 6, %281 ], [ 6, %294 ], [ 2, %.preheader.i.i.i ], [ 3, %.preheader.i56.i.i ], [ 4, %.preheader.i62.i.i ], [ 5, %.preheader.i68.i.i ], [ 5, %.preheader.i78.i.i ], [ 6, %.preheader.i84.i.i ] store ptr %.lcssa.sink.i88.i.sink.i, ptr @_ZL9stb__dout, align 8, !tbaa !282 - %323 = getelementptr inbounds nuw i8, ptr %.034.i, i64 %.sink.i + %317 = getelementptr inbounds nuw i8, ptr %.034.i, i64 %.sink.i br label %_ZL20stb_decompress_tokenPKh.exit.thread.i _ZL20stb_decompress_tokenPKh.exit.thread.i: ; preds = %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, %_ZL20stb_decompress_tokenPKh.exit.i %.lcssa.sink.i.i64.i = phi ptr [ %.lcssa.sink.i.i65.i, %_ZL20stb_decompress_tokenPKh.exit.i ], [ %.lcssa.sink.i88.i.sink.i, %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i ] - %.0.i42.i = phi ptr [ %.0.i.i, %_ZL20stb_decompress_tokenPKh.exit.i ], [ %323, %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i ] - %.not49.i = icmp ugt ptr %.lcssa.sink.i.i64.i, %80 - br i1 %.not49.i, label %_ZL14stb_decompressPhPKhj.exit, label %83, !llvm.loop !294 + %.0.i42.i = phi ptr [ %.0.i.i, %_ZL20stb_decompress_tokenPKh.exit.i ], [ %317, %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i ] + %.not49.i = icmp ugt ptr %.lcssa.sink.i.i64.i, %74 + br i1 %.not49.i, label %_ZL14stb_decompressPhPKhj.exit, label %77, !llvm.loop !294 -_ZL14stb_decompressPhPKhj.exit: ; preds = %_ZL20stb_decompress_tokenPKh.exit.thread.i, %_ZL20stb_decompress_tokenPKh.exit.i, %237, %6, %46 +_ZL14stb_decompressPhPKhj.exit: ; preds = %_ZL20stb_decompress_tokenPKh.exit.thread.i, %_ZL20stb_decompress_tokenPKh.exit.i, %231, %6, %46 call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %8) #42 %.not = icmp eq ptr %4, null - br i1 %.not, label %325, label %324 + br i1 %.not, label %319, label %318 -324: ; preds = %_ZL14stb_decompressPhPKhj.exit +318: ; preds = %_ZL14stb_decompressPhPKhj.exit call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(128) %8, ptr noundef nonnull align 8 dereferenceable(128) %4, i64 128, i1 false), !tbaa.struct !289 - br label %326 + br label %320 -325: ; preds = %_ZL14stb_decompressPhPKhj.exit +319: ; preds = %_ZL14stb_decompressPhPKhj.exit call void @_ZN12ImFontConfigC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %8) - br label %326 + br label %320 -326: ; preds = %325, %324 - %327 = getelementptr inbounds nuw i8, ptr %8, i64 12 - store i8 1, ptr %327, align 4, !tbaa !235 +320: ; preds = %319, %318 + %321 = getelementptr inbounds nuw i8, ptr %8, i64 12 + store i8 1, ptr %321, align 4, !tbaa !235 call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %7) #42 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(128) %7, ptr noundef nonnull readonly align 8 dereferenceable(128) %8, i64 128, i1 false), !tbaa.struct !289 store ptr %28, ptr %7, align 8, !tbaa !264 - %328 = getelementptr inbounds nuw i8, ptr %7, i64 8 - store i32 %26, ptr %328, align 8, !tbaa !288 - %329 = fcmp ogt float %3, 0.000000e+00 - %330 = getelementptr inbounds nuw i8, ptr %7, i64 28 - %331 = load float, ptr %330, align 4 - %332 = select i1 %329, float %3, float %331 - store float %332, ptr %330, align 4, !tbaa !275 + %322 = getelementptr inbounds nuw i8, ptr %7, i64 8 + store i32 %26, ptr %322, align 8, !tbaa !288 + %323 = fcmp ogt float %3, 0.000000e+00 + %324 = getelementptr inbounds nuw i8, ptr %7, i64 28 + %325 = load float, ptr %324, align 4 + %326 = select i1 %323, float %3, float %325 + store float %326, ptr %324, align 4, !tbaa !275 %.not9.i = icmp eq ptr %5, null - br i1 %.not9.i, label %_ZN11ImFontAtlas20AddFontFromMemoryTTFEPvifPK12ImFontConfigPKt.exit, label %333 + br i1 %.not9.i, label %_ZN11ImFontAtlas20AddFontFromMemoryTTFEPvifPK12ImFontConfigPKt.exit, label %327 -333: ; preds = %326 - %334 = getelementptr inbounds nuw i8, ptr %7, i64 40 - store ptr %5, ptr %334, align 8, !tbaa !278 +327: ; preds = %320 + %328 = getelementptr inbounds nuw i8, ptr %7, i64 40 + store ptr %5, ptr %328, align 8, !tbaa !278 br label %_ZN11ImFontAtlas20AddFontFromMemoryTTFEPvifPK12ImFontConfigPKt.exit -_ZN11ImFontAtlas20AddFontFromMemoryTTFEPvifPK12ImFontConfigPKt.exit: ; preds = %326, %333 - %335 = call noundef ptr @_ZN11ImFontAtlas7AddFontEPK12ImFontConfig(ptr noundef nonnull align 8 dereferenceable(676) %0, ptr noundef nonnull %7) +_ZN11ImFontAtlas20AddFontFromMemoryTTFEPvifPK12ImFontConfigPKt.exit: ; preds = %320, %327 + %329 = call noundef ptr @_ZN11ImFontAtlas7AddFontEPK12ImFontConfig(ptr noundef nonnull align 8 dereferenceable(676) %0, ptr noundef nonnull %7) call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %7) #42 call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %8) #42 - ret ptr %335 + ret ptr %329 } ; Function Attrs: mustprogress uwtable diff --git a/bench/linux/optimized/tree.ll b/bench/linux/optimized/tree.ll index 9e70f2e9cf9..ef0aa696a73 100644 --- a/bench/linux/optimized/tree.ll +++ b/bench/linux/optimized/tree.ll @@ -9151,430 +9151,426 @@ define internal fastcc void @rcu_preempt_deferred_qs_irqrestore(ptr noundef %0, %8 = load i16, ptr %7, align 2 %9 = tail call i64 asm "add %gs:$1, $0", "=r,*m,0,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) @this_cpu_off, ptr nonnull @rcu_data) #28, !srcloc !358 %10 = inttoptr i64 %9 to ptr - %11 = zext i16 %8 to i32 - %12 = shl nuw i32 %11, 16 - %13 = zext i8 %6 to i32 - %14 = shl nuw nsw i32 %13, 8 - %15 = zext i8 %4 to i32 - %16 = or disjoint i32 %14, %15 - %17 = or disjoint i32 %16, %12 - %18 = icmp eq i32 %17, 0 - br i1 %18, label %19, label %27 + %11 = or i8 %6, %4 + %12 = zext i8 %11 to i16 + %13 = or i16 %8, %12 + %14 = icmp eq i16 %13, 0 + br i1 %14, label %15, label %23 -19: ; preds = %2 - %20 = getelementptr inbounds nuw i8, ptr %10, i64 17 - %21 = load i8, ptr %20, align 1 - %22 = icmp eq i8 %21, 0 - br i1 %22, label %23, label %27 +15: ; preds = %2 + %16 = getelementptr inbounds nuw i8, ptr %10, i64 17 + %17 = load i8, ptr %16, align 1 + %18 = icmp eq i8 %17, 0 + br i1 %18, label %19, label %23 -23: ; preds = %19 - %24 = and i64 %1, 512 - %25 = icmp eq i64 %24, 0 - br i1 %25, label %241, label %26 +19: ; preds = %15 + %20 = and i64 %1, 512 + %21 = icmp eq i64 %20, 0 + br i1 %21, label %237, label %22 -26: ; preds = %23 +22: ; preds = %19 tail call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #29, !srcloc !80 - br label %241 + br label %237 -27: ; preds = %19, %2 +23: ; preds = %15, %2 store i32 0, ptr %3, align 8 - %28 = icmp eq i8 %6, 0 - br i1 %28, label %rcu_qs.exit, label %29 - -29: ; preds = %27 - %30 = tail call i8 asm "movb %gs:$1, $0", "=q,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i8) getelementptr inbounds nuw (i8, ptr @rcu_data, i64 16)) #28, !srcloc !6 - %31 = icmp eq i8 %30, 0 - br i1 %31, label %rcu_qs.exit, label %32 - -32: ; preds = %29 - %33 = load ptr, ptr @rcu_qs.___tp_str, align 8 - %34 = tail call i64 asm "movq %gs:$1, $0", "=r,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) @rcu_data) #28, !srcloc !7 - %35 = load ptr, ptr @rcu_qs.___tp_str.246, align 8 + %24 = icmp eq i8 %6, 0 + br i1 %24, label %rcu_qs.exit, label %25 + +25: ; preds = %23 + %26 = tail call i8 asm "movb %gs:$1, $0", "=q,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i8) getelementptr inbounds nuw (i8, ptr @rcu_data, i64 16)) #28, !srcloc !6 + %27 = icmp eq i8 %26, 0 + br i1 %27, label %rcu_qs.exit, label %28 + +28: ; preds = %25 + %29 = load ptr, ptr @rcu_qs.___tp_str, align 8 + %30 = tail call i64 asm "movq %gs:$1, $0", "=r,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) @rcu_data) #28, !srcloc !7 + %31 = load ptr, ptr @rcu_qs.___tp_str.246, align 8 callbr void asm sideeffect "1:jmp ${2:l} # objtool NOPs this \0A\09.pushsection __jump_table, \22aw\22 \0A\09 .balign 8 \0A\09.long 1b - . \0A\09.long ${2:l} - . \0A\09 .quad ${0:c} + ${1:c} - .\0A\09.popsection \0A\09", "i,i,!i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull getelementptr inbounds nuw (i8, ptr @__tracepoint_rcu_grace_period, i64 8), i32 2) #29 - to label %56 [label %36], !srcloc !8 + to label %52 [label %32], !srcloc !8 -36: ; preds = %32 - %37 = tail call i32 asm sideeffect "movl %gs:$1, $0", "=r,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 12)) #29, !srcloc !9 - %38 = zext i32 %37 to i64 - %39 = tail call i8 asm sideeffect " btq $2,$1\0A\09/* output condition code c*/\0A", "={@ccc},*m,Ir,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) @__cpu_online_mask, i64 %38) #29, !srcloc !10 - %40 = icmp ult i8 %39, 2 - tail call void @llvm.assume(i1 %40) - %41 = icmp eq i8 %39, 0 - br i1 %41, label %56, label %42 +32: ; preds = %28 + %33 = tail call i32 asm sideeffect "movl %gs:$1, $0", "=r,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 12)) #29, !srcloc !9 + %34 = zext i32 %33 to i64 + %35 = tail call i8 asm sideeffect " btq $2,$1\0A\09/* output condition code c*/\0A", "={@ccc},*m,Ir,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) @__cpu_online_mask, i64 %34) #29, !srcloc !10 + %36 = icmp ult i8 %35, 2 + tail call void @llvm.assume(i1 %36) + %37 = icmp eq i8 %35, 0 + br i1 %37, label %52, label %38 -42: ; preds = %36 +38: ; preds = %32 tail call void asm "incl %gs:$0", "=*m,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8), ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8)) #29, !srcloc !11 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #29, !srcloc !12 - %43 = load volatile ptr, ptr getelementptr inbounds nuw (i8, ptr @__tracepoint_rcu_grace_period, i64 72), align 8 - %44 = icmp eq ptr %43, null - br i1 %44, label %49, label %45 - -45: ; preds = %42 - %46 = getelementptr inbounds nuw i8, ptr %43, i64 8 - %47 = load ptr, ptr %46, align 8 - %48 = tail call i32 @__SCT__tp_func_rcu_grace_period(ptr noundef %47, ptr noundef %33, i64 noundef %34, ptr noundef %35) #29 - br label %49 + %39 = load volatile ptr, ptr getelementptr inbounds nuw (i8, ptr @__tracepoint_rcu_grace_period, i64 72), align 8 + %40 = icmp eq ptr %39, null + br i1 %40, label %45, label %41 + +41: ; preds = %38 + %42 = getelementptr inbounds nuw i8, ptr %39, i64 8 + %43 = load ptr, ptr %42, align 8 + %44 = tail call i32 @__SCT__tp_func_rcu_grace_period(ptr noundef %43, ptr noundef %29, i64 noundef %30, ptr noundef %31) #29 + br label %45 -49: ; preds = %45, %42 +45: ; preds = %41, %38 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #29, !srcloc !13 - %50 = tail call i8 asm sideeffect "decl %gs:$0\0A\09/* output condition code e*/\0A", "=*m,={@cce},*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8), ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8)) #29, !srcloc !14 - %51 = icmp ult i8 %50, 2 - tail call void @llvm.assume(i1 %51) - %52 = icmp eq i8 %50, 0 - br i1 %52, label %56, label %53, !prof !15 - -53: ; preds = %49 - %54 = tail call i64 @llvm.read_register.i64(metadata !0) - %55 = tail call i64 asm sideeffect "call __SCT__preempt_schedule_notrace", "={rsp},{rsp},~{dirflag},~{fpsr},~{flags}"(i64 %54) #29, !srcloc !16 - tail call void @llvm.write_register.i64(metadata !0, i64 %55) - br label %56 + %46 = tail call i8 asm sideeffect "decl %gs:$0\0A\09/* output condition code e*/\0A", "=*m,={@cce},*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8), ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8)) #29, !srcloc !14 + %47 = icmp ult i8 %46, 2 + tail call void @llvm.assume(i1 %47) + %48 = icmp eq i8 %46, 0 + br i1 %48, label %52, label %49, !prof !15 -56: ; preds = %53, %49, %36, %32 +49: ; preds = %45 + %50 = tail call i64 @llvm.read_register.i64(metadata !0) + %51 = tail call i64 asm sideeffect "call __SCT__preempt_schedule_notrace", "={rsp},{rsp},~{dirflag},~{fpsr},~{flags}"(i64 %50) #29, !srcloc !16 + tail call void @llvm.write_register.i64(metadata !0, i64 %51) + br label %52 + +52: ; preds = %49, %45, %32, %28 tail call void asm "movb $1, %gs:$0", "=*m,qi,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i8) getelementptr inbounds nuw (i8, ptr @rcu_data, i64 16), i8 0, ptr nonnull elementtype(i8) getelementptr inbounds nuw (i8, ptr @rcu_data, i64 16)) #29, !srcloc !17 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #29, !srcloc !18 - %57 = tail call i64 asm "movq %gs:${1:P}, $0", "=r,p,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @pcpu_hot) #30, !srcloc !19 - %58 = inttoptr i64 %57 to ptr - %59 = getelementptr inbounds nuw i8, ptr %58, i64 1017 - store volatile i8 0, ptr %59, align 1 + %53 = tail call i64 asm "movq %gs:${1:P}, $0", "=r,p,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @pcpu_hot) #30, !srcloc !19 + %54 = inttoptr i64 %53 to ptr + %55 = getelementptr inbounds nuw i8, ptr %54, i64 1017 + store volatile i8 0, ptr %55, align 1 br label %rcu_qs.exit -rcu_qs.exit: ; preds = %56, %29, %27 - %60 = getelementptr inbounds nuw i8, ptr %10, i64 17 - %61 = load i8, ptr %60, align 1 - %62 = icmp eq i8 %61, 0 - br i1 %62, label %68, label %63 - -63: ; preds = %rcu_qs.exit - store volatile i8 0, ptr %60, align 1 - %64 = getelementptr inbounds nuw i8, ptr %10, i64 24 - %65 = load ptr, ptr %64, align 8 - %66 = getelementptr inbounds nuw i8, ptr %10, i64 32 - %67 = load i64, ptr %66, align 8 - tail call fastcc void @rcu_report_exp_cpu_mult(ptr noundef %65, i64 noundef %67, i1 noundef zeroext true) - br label %68 +rcu_qs.exit: ; preds = %52, %25, %23 + %56 = getelementptr inbounds nuw i8, ptr %10, i64 17 + %57 = load i8, ptr %56, align 1 + %58 = icmp eq i8 %57, 0 + br i1 %58, label %64, label %59 + +59: ; preds = %rcu_qs.exit + store volatile i8 0, ptr %56, align 1 + %60 = getelementptr inbounds nuw i8, ptr %10, i64 24 + %61 = load ptr, ptr %60, align 8 + %62 = getelementptr inbounds nuw i8, ptr %10, i64 32 + %63 = load i64, ptr %62, align 8 + tail call fastcc void @rcu_report_exp_cpu_mult(ptr noundef %61, i64 noundef %63, i1 noundef zeroext true) + br label %64 -68: ; preds = %63, %rcu_qs.exit - %69 = icmp eq i8 %4, 0 - br i1 %69, label %237, label %70 +64: ; preds = %59, %rcu_qs.exit + %65 = icmp eq i8 %4, 0 + br i1 %65, label %233, label %66 -70: ; preds = %68 - %71 = getelementptr inbounds nuw i8, ptr %0, i64 1040 - %72 = load ptr, ptr %71, align 16 - tail call void @_raw_spin_lock(ptr noundef %72) #29 - %73 = load ptr, ptr %71, align 16 - %74 = icmp eq ptr %72, %73 - br i1 %74, label %76, label %75, !prof !15 +66: ; preds = %64 + %67 = getelementptr inbounds nuw i8, ptr %0, i64 1040 + %68 = load ptr, ptr %67, align 16 + tail call void @_raw_spin_lock(ptr noundef %68) #29 + %69 = load ptr, ptr %67, align 16 + %70 = icmp eq ptr %68, %69 + br i1 %70, label %72, label %71, !prof !15 -75: ; preds = %70 +71: ; preds = %66 tail call void asm sideeffect "1422: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 1422b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 1422) #29, !srcloc !359 tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A998:\0A\09.pushsection .discard.reachable\0A\09.long 998b\0A\09.popsection\0A\09", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str.44, i32 519, i32 2307, i64 12) #29, !srcloc !360 tail call void asm sideeffect "1423: nop\0A\09.pushsection .discard.instr_end\0A\09.long 1423b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 1423) #29, !srcloc !361 - br label %76 - -76: ; preds = %75, %70 - %77 = getelementptr inbounds nuw i8, ptr %72, i64 121 - %78 = load i8, ptr %77, align 1 - %79 = zext i8 %78 to i32 - %80 = load i32, ptr @rcu_num_lvls, align 4 - %81 = add i32 %80, -1 - %82 = icmp eq i32 %81, %79 - br i1 %82, label %84, label %83, !prof !15 - -83: ; preds = %76 + br label %72 + +72: ; preds = %71, %66 + %73 = getelementptr inbounds nuw i8, ptr %68, i64 121 + %74 = load i8, ptr %73, align 1 + %75 = zext i8 %74 to i32 + %76 = load i32, ptr @rcu_num_lvls, align 4 + %77 = add i32 %76, -1 + %78 = icmp eq i32 %77, %75 + br i1 %78, label %80, label %79, !prof !15 + +79: ; preds = %72 tail call void asm sideeffect "1424: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 1424b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 1424) #29, !srcloc !362 tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A998:\0A\09.pushsection .discard.reachable\0A\09.long 998b\0A\09.popsection\0A\09", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str.44, i32 520, i32 2307, i64 12) #29, !srcloc !363 tail call void asm sideeffect "1425: nop\0A\09.pushsection .discard.instr_end\0A\09.long 1425b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 1425) #29, !srcloc !364 - br label %84 - -84: ; preds = %83, %76 - %85 = getelementptr inbounds nuw i8, ptr %72, i64 152 - %86 = load volatile ptr, ptr %85, align 8 - %87 = icmp ne ptr %86, null - %88 = getelementptr inbounds nuw i8, ptr %72, i64 24 - %89 = load i64, ptr %88, align 8 - %90 = getelementptr inbounds nuw i8, ptr %72, i64 8 - %91 = load i64, ptr %90, align 8 - %92 = icmp ne i64 %89, %91 - %93 = select i1 %92, i1 true, i1 %87 - br i1 %93, label %97, label %94 - -94: ; preds = %84 - %95 = getelementptr inbounds nuw i8, ptr %72, i64 32 - %96 = load i64, ptr %95, align 32 - %.not = icmp eq i64 %96, 0 - br i1 %.not, label %99, label %98, !prof !15 - -97: ; preds = %84 - br i1 %92, label %99, label %98, !prof !15 + br label %80 -98: ; preds = %94, %97 +80: ; preds = %79, %72 + %81 = getelementptr inbounds nuw i8, ptr %68, i64 152 + %82 = load volatile ptr, ptr %81, align 8 + %83 = icmp ne ptr %82, null + %84 = getelementptr inbounds nuw i8, ptr %68, i64 24 + %85 = load i64, ptr %84, align 8 + %86 = getelementptr inbounds nuw i8, ptr %68, i64 8 + %87 = load i64, ptr %86, align 8 + %88 = icmp ne i64 %85, %87 + %89 = select i1 %88, i1 true, i1 %83 + br i1 %89, label %93, label %90 + +90: ; preds = %80 + %91 = getelementptr inbounds nuw i8, ptr %68, i64 32 + %92 = load i64, ptr %91, align 32 + %.not = icmp eq i64 %92, 0 + br i1 %.not, label %95, label %94, !prof !15 + +93: ; preds = %80 + br i1 %88, label %95, label %94, !prof !15 + +94: ; preds = %90, %93 tail call void asm sideeffect "1426: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 1426b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 1426) #29, !srcloc !365 tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A998:\0A\09.pushsection .discard.reachable\0A\09.long 998b\0A\09.popsection\0A\09", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str.44, i32 523, i32 2307, i64 12) #29, !srcloc !366 tail call void asm sideeffect "1427: nop\0A\09.pushsection .discard.instr_end\0A\09.long 1427b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 1427) #29, !srcloc !367 - br label %99 + br label %95 -99: ; preds = %94, %98, %97 - %100 = getelementptr inbounds nuw i8, ptr %72, i64 160 - %101 = load volatile ptr, ptr %100, align 32 - %102 = icmp eq ptr %101, null - br i1 %102, label %103, label %107 +95: ; preds = %90, %94, %93 + %96 = getelementptr inbounds nuw i8, ptr %68, i64 160 + %97 = load volatile ptr, ptr %96, align 32 + %98 = icmp eq ptr %97, null + br i1 %98, label %99, label %103 -103: ; preds = %99 - %104 = getelementptr inbounds nuw i8, ptr %72, i64 64 - %105 = load volatile i64, ptr %104, align 64 - %106 = icmp eq i64 %105, 0 - br label %107 +99: ; preds = %95 + %100 = getelementptr inbounds nuw i8, ptr %68, i64 64 + %101 = load volatile i64, ptr %100, align 64 + %102 = icmp eq i64 %101, 0 + br label %103 -107: ; preds = %103, %99 - %108 = phi i1 [ false, %99 ], [ %106, %103 ] +103: ; preds = %99, %95 + %104 = phi i1 [ false, %95 ], [ %102, %99 ] tail call void asm sideeffect "lock; addl $$0,-4(%rsp)", "~{memory},~{cc},~{dirflag},~{fpsr},~{flags}"() #29, !srcloc !368 - %109 = getelementptr inbounds nuw i8, ptr %0, i64 1024 - %110 = load ptr, ptr %109, align 64 - %111 = getelementptr inbounds nuw i8, ptr %72, i64 136 - %112 = icmp eq ptr %110, %111 - %113 = select i1 %112, ptr null, ptr %110 - %114 = getelementptr inbounds nuw i8, ptr %0, i64 1032 - %115 = load ptr, ptr %114, align 8 - %116 = getelementptr inbounds nuw i8, ptr %110, i64 8 - store ptr %115, ptr %116, align 8 - store volatile ptr %110, ptr %115, align 8 - store volatile ptr %109, ptr %109, align 8 - store volatile ptr %109, ptr %114, align 8 - store ptr null, ptr %71, align 16 - %117 = load ptr, ptr @rcu_preempt_deferred_qs_irqrestore.___tp_str, align 8 - %118 = load i64, ptr %90, align 8 - %119 = getelementptr inbounds nuw i8, ptr %0, i64 1320 - %120 = load i32, ptr %119, align 8 + %105 = getelementptr inbounds nuw i8, ptr %0, i64 1024 + %106 = load ptr, ptr %105, align 64 + %107 = getelementptr inbounds nuw i8, ptr %68, i64 136 + %108 = icmp eq ptr %106, %107 + %109 = select i1 %108, ptr null, ptr %106 + %110 = getelementptr inbounds nuw i8, ptr %0, i64 1032 + %111 = load ptr, ptr %110, align 8 + %112 = getelementptr inbounds nuw i8, ptr %106, i64 8 + store ptr %111, ptr %112, align 8 + store volatile ptr %106, ptr %111, align 8 + store volatile ptr %105, ptr %105, align 8 + store volatile ptr %105, ptr %110, align 8 + store ptr null, ptr %67, align 16 + %113 = load ptr, ptr @rcu_preempt_deferred_qs_irqrestore.___tp_str, align 8 + %114 = load i64, ptr %86, align 8 + %115 = getelementptr inbounds nuw i8, ptr %0, i64 1320 + %116 = load i32, ptr %115, align 8 callbr void asm sideeffect "1:jmp ${2:l} # objtool NOPs this \0A\09.pushsection __jump_table, \22aw\22 \0A\09 .balign 8 \0A\09.long 1b - . \0A\09.long ${2:l} - . \0A\09 .quad ${0:c} + ${1:c} - .\0A\09.popsection \0A\09", "i,i,!i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull getelementptr inbounds nuw (i8, ptr @__tracepoint_rcu_unlock_preempted_task, i64 8), i32 2) #29 - to label %141 [label %121], !srcloc !8 - -121: ; preds = %107 - %122 = tail call i32 asm sideeffect "movl %gs:$1, $0", "=r,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 12)) #29, !srcloc !369 - %123 = zext i32 %122 to i64 - %124 = tail call i8 asm sideeffect " btq $2,$1\0A\09/* output condition code c*/\0A", "={@ccc},*m,Ir,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) @__cpu_online_mask, i64 %123) #29, !srcloc !10 - %125 = icmp ult i8 %124, 2 - tail call void @llvm.assume(i1 %125) - %126 = icmp eq i8 %124, 0 - br i1 %126, label %141, label %127 - -127: ; preds = %121 + to label %137 [label %117], !srcloc !8 + +117: ; preds = %103 + %118 = tail call i32 asm sideeffect "movl %gs:$1, $0", "=r,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 12)) #29, !srcloc !369 + %119 = zext i32 %118 to i64 + %120 = tail call i8 asm sideeffect " btq $2,$1\0A\09/* output condition code c*/\0A", "={@ccc},*m,Ir,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) @__cpu_online_mask, i64 %119) #29, !srcloc !10 + %121 = icmp ult i8 %120, 2 + tail call void @llvm.assume(i1 %121) + %122 = icmp eq i8 %120, 0 + br i1 %122, label %137, label %123 + +123: ; preds = %117 tail call void asm "incl %gs:$0", "=*m,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8), ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8)) #29, !srcloc !11 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #29, !srcloc !370 - %128 = load volatile ptr, ptr getelementptr inbounds nuw (i8, ptr @__tracepoint_rcu_unlock_preempted_task, i64 72), align 8 - %129 = icmp eq ptr %128, null - br i1 %129, label %134, label %130 + %124 = load volatile ptr, ptr getelementptr inbounds nuw (i8, ptr @__tracepoint_rcu_unlock_preempted_task, i64 72), align 8 + %125 = icmp eq ptr %124, null + br i1 %125, label %130, label %126 -130: ; preds = %127 - %131 = getelementptr inbounds nuw i8, ptr %128, i64 8 - %132 = load ptr, ptr %131, align 8 - %133 = tail call i32 @__SCT__tp_func_rcu_unlock_preempted_task(ptr noundef %132, ptr noundef %117, i64 noundef %118, i32 noundef %120) #29 - br label %134 +126: ; preds = %123 + %127 = getelementptr inbounds nuw i8, ptr %124, i64 8 + %128 = load ptr, ptr %127, align 8 + %129 = tail call i32 @__SCT__tp_func_rcu_unlock_preempted_task(ptr noundef %128, ptr noundef %113, i64 noundef %114, i32 noundef %116) #29 + br label %130 -134: ; preds = %130, %127 +130: ; preds = %126, %123 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #29, !srcloc !371 - %135 = tail call i8 asm sideeffect "decl %gs:$0\0A\09/* output condition code e*/\0A", "=*m,={@cce},*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8), ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8)) #29, !srcloc !14 - %136 = icmp ult i8 %135, 2 - tail call void @llvm.assume(i1 %136) - %137 = icmp eq i8 %135, 0 - br i1 %137, label %141, label %138, !prof !15 - -138: ; preds = %134 - %139 = tail call i64 @llvm.read_register.i64(metadata !0) - %140 = tail call i64 asm sideeffect "call __SCT__preempt_schedule_notrace", "={rsp},{rsp},~{dirflag},~{fpsr},~{flags}"(i64 %139) #29, !srcloc !372 - tail call void @llvm.write_register.i64(metadata !0, i64 %140) + %131 = tail call i8 asm sideeffect "decl %gs:$0\0A\09/* output condition code e*/\0A", "=*m,={@cce},*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8), ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8)) #29, !srcloc !14 + %132 = icmp ult i8 %131, 2 + tail call void @llvm.assume(i1 %132) + %133 = icmp eq i8 %131, 0 + br i1 %133, label %137, label %134, !prof !15 + +134: ; preds = %130 + %135 = tail call i64 @llvm.read_register.i64(metadata !0) + %136 = tail call i64 asm sideeffect "call __SCT__preempt_schedule_notrace", "={rsp},{rsp},~{dirflag},~{fpsr},~{flags}"(i64 %135) #29, !srcloc !372 + tail call void @llvm.write_register.i64(metadata !0, i64 %136) + br label %137 + +137: ; preds = %134, %130, %117, %103 + %138 = load ptr, ptr %81, align 8 + %139 = icmp eq ptr %105, %138 + br i1 %139, label %140, label %141 + +140: ; preds = %137 + store volatile ptr %109, ptr %81, align 8 br label %141 -141: ; preds = %138, %134, %121, %107 - %142 = load ptr, ptr %85, align 8 - %143 = icmp eq ptr %109, %142 +141: ; preds = %140, %137 + %142 = load ptr, ptr %96, align 32 + %143 = icmp eq ptr %105, %142 br i1 %143, label %144, label %145 144: ; preds = %141 - store volatile ptr %113, ptr %85, align 8 + store volatile ptr %109, ptr %96, align 32 br label %145 145: ; preds = %144, %141 - %146 = load ptr, ptr %100, align 32 - %147 = icmp eq ptr %109, %146 - br i1 %147, label %148, label %149 + %146 = load volatile ptr, ptr %96, align 32 + %147 = icmp eq ptr %146, null + br i1 %147, label %148, label %152 148: ; preds = %145 - store volatile ptr %113, ptr %100, align 32 - br label %149 - -149: ; preds = %148, %145 - %150 = load volatile ptr, ptr %100, align 32 - %151 = icmp eq ptr %150, null - br i1 %151, label %152, label %156 - -152: ; preds = %149 - %153 = getelementptr inbounds nuw i8, ptr %72, i64 64 - %154 = load volatile i64, ptr %153, align 64 - %155 = icmp ne i64 %154, 0 - br label %156 - -156: ; preds = %152, %149 - %157 = phi i1 [ true, %149 ], [ %155, %152 ] - br i1 %87, label %158, label %232 - -158: ; preds = %156 - %159 = load volatile ptr, ptr %85, align 8 - %160 = icmp ne ptr %159, null - %161 = zext i1 %160 to i32 - br i1 %160, label %232, label %162 - -162: ; preds = %158 - %163 = load ptr, ptr @rcu_preempt_deferred_qs_irqrestore.___tp_str.248, align 8 - %164 = load i64, ptr %90, align 8 - %165 = getelementptr inbounds nuw i8, ptr %72, i64 32 - %166 = load i64, ptr %165, align 32 - %167 = load i8, ptr %77, align 1 - %168 = getelementptr inbounds nuw i8, ptr %72, i64 112 - %169 = load i32, ptr %168, align 16 - %170 = getelementptr inbounds nuw i8, ptr %72, i64 116 - %171 = load i32, ptr %170, align 4 + %149 = getelementptr inbounds nuw i8, ptr %68, i64 64 + %150 = load volatile i64, ptr %149, align 64 + %151 = icmp ne i64 %150, 0 + br label %152 + +152: ; preds = %148, %145 + %153 = phi i1 [ true, %145 ], [ %151, %148 ] + br i1 %83, label %154, label %228 + +154: ; preds = %152 + %155 = load volatile ptr, ptr %81, align 8 + %156 = icmp ne ptr %155, null + %157 = zext i1 %156 to i32 + br i1 %156, label %228, label %158 + +158: ; preds = %154 + %159 = load ptr, ptr @rcu_preempt_deferred_qs_irqrestore.___tp_str.248, align 8 + %160 = load i64, ptr %86, align 8 + %161 = getelementptr inbounds nuw i8, ptr %68, i64 32 + %162 = load i64, ptr %161, align 32 + %163 = load i8, ptr %73, align 1 + %164 = getelementptr inbounds nuw i8, ptr %68, i64 112 + %165 = load i32, ptr %164, align 16 + %166 = getelementptr inbounds nuw i8, ptr %68, i64 116 + %167 = load i32, ptr %166, align 4 callbr void asm sideeffect "1:jmp ${2:l} # objtool NOPs this \0A\09.pushsection __jump_table, \22aw\22 \0A\09 .balign 8 \0A\09.long 1b - . \0A\09.long ${2:l} - . \0A\09 .quad ${0:c} + ${1:c} - .\0A\09.popsection \0A\09", "i,i,!i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull getelementptr inbounds nuw (i8, ptr @__tracepoint_rcu_quiescent_state_report, i64 8), i32 2) #29 - to label %192 [label %172], !srcloc !8 + to label %188 [label %168], !srcloc !8 -172: ; preds = %162 - %173 = tail call i32 asm sideeffect "movl %gs:$1, $0", "=r,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 12)) #29, !srcloc !193 - %174 = zext i32 %173 to i64 - %175 = tail call i8 asm sideeffect " btq $2,$1\0A\09/* output condition code c*/\0A", "={@ccc},*m,Ir,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) @__cpu_online_mask, i64 %174) #29, !srcloc !10 - %176 = icmp ult i8 %175, 2 - tail call void @llvm.assume(i1 %176) - %177 = icmp eq i8 %175, 0 - br i1 %177, label %192, label %178 +168: ; preds = %158 + %169 = tail call i32 asm sideeffect "movl %gs:$1, $0", "=r,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 12)) #29, !srcloc !193 + %170 = zext i32 %169 to i64 + %171 = tail call i8 asm sideeffect " btq $2,$1\0A\09/* output condition code c*/\0A", "={@ccc},*m,Ir,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) @__cpu_online_mask, i64 %170) #29, !srcloc !10 + %172 = icmp ult i8 %171, 2 + tail call void @llvm.assume(i1 %172) + %173 = icmp eq i8 %171, 0 + br i1 %173, label %188, label %174 -178: ; preds = %172 +174: ; preds = %168 tail call void asm "incl %gs:$0", "=*m,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8), ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8)) #29, !srcloc !11 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #29, !srcloc !194 - %179 = load volatile ptr, ptr getelementptr inbounds nuw (i8, ptr @__tracepoint_rcu_quiescent_state_report, i64 72), align 8 - %180 = icmp eq ptr %179, null - br i1 %180, label %185, label %181 + %175 = load volatile ptr, ptr getelementptr inbounds nuw (i8, ptr @__tracepoint_rcu_quiescent_state_report, i64 72), align 8 + %176 = icmp eq ptr %175, null + br i1 %176, label %181, label %177 -181: ; preds = %178 - %182 = getelementptr inbounds nuw i8, ptr %179, i64 8 - %183 = load ptr, ptr %182, align 8 - %184 = tail call i32 @__SCT__tp_func_rcu_quiescent_state_report(ptr noundef %183, ptr noundef %163, i64 noundef %164, i64 noundef 0, i64 noundef %166, i8 noundef zeroext %167, i32 noundef %169, i32 noundef %171, i32 noundef %161) #29 - br label %185 +177: ; preds = %174 + %178 = getelementptr inbounds nuw i8, ptr %175, i64 8 + %179 = load ptr, ptr %178, align 8 + %180 = tail call i32 @__SCT__tp_func_rcu_quiescent_state_report(ptr noundef %179, ptr noundef %159, i64 noundef %160, i64 noundef 0, i64 noundef %162, i8 noundef zeroext %163, i32 noundef %165, i32 noundef %167, i32 noundef %157) #29 + br label %181 -185: ; preds = %181, %178 +181: ; preds = %177, %174 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #29, !srcloc !195 - %186 = tail call i8 asm sideeffect "decl %gs:$0\0A\09/* output condition code e*/\0A", "=*m,={@cce},*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8), ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8)) #29, !srcloc !14 - %187 = icmp ult i8 %186, 2 - tail call void @llvm.assume(i1 %187) - %188 = icmp eq i8 %186, 0 - br i1 %188, label %192, label %189, !prof !15 - -189: ; preds = %185 - %190 = tail call i64 @llvm.read_register.i64(metadata !0) - %191 = tail call i64 asm sideeffect "call __SCT__preempt_schedule_notrace", "={rsp},{rsp},~{dirflag},~{fpsr},~{flags}"(i64 %190) #29, !srcloc !196 - tail call void @llvm.write_register.i64(metadata !0, i64 %191) - br label %192 - -192: ; preds = %189, %185, %172, %162 - %193 = load volatile ptr, ptr %85, align 8 - %194 = icmp eq ptr %193, null - br i1 %194, label %196, label %195, !prof !15 - -195: ; preds = %192 + %182 = tail call i8 asm sideeffect "decl %gs:$0\0A\09/* output condition code e*/\0A", "=*m,={@cce},*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8), ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8)) #29, !srcloc !14 + %183 = icmp ult i8 %182, 2 + tail call void @llvm.assume(i1 %183) + %184 = icmp eq i8 %182, 0 + br i1 %184, label %188, label %185, !prof !15 + +185: ; preds = %181 + %186 = tail call i64 @llvm.read_register.i64(metadata !0) + %187 = tail call i64 asm sideeffect "call __SCT__preempt_schedule_notrace", "={rsp},{rsp},~{dirflag},~{fpsr},~{flags}"(i64 %186) #29, !srcloc !196 + tail call void @llvm.write_register.i64(metadata !0, i64 %187) + br label %188 + +188: ; preds = %185, %181, %168, %158 + %189 = load volatile ptr, ptr %81, align 8 + %190 = icmp eq ptr %189, null + br i1 %190, label %192, label %191, !prof !15 + +191: ; preds = %188 tail call void asm sideeffect "974: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 974b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 974) #29, !srcloc !373 tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A998:\0A\09.pushsection .discard.reachable\0A\09.long 998b\0A\09.popsection\0A\09", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str, i32 1979, i32 2307, i64 12) #29, !srcloc !374 tail call void asm sideeffect "975: nop\0A\09.pushsection .discard.instr_end\0A\09.long 975b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 975) #29, !srcloc !375 - br label %199 + br label %195 + +192: ; preds = %188 + %193 = load i64, ptr %161, align 32 + %194 = icmp eq i64 %193, 0 + br i1 %194, label %196, label %195 + +195: ; preds = %192, %191 + tail call void @_raw_spin_unlock_irqrestore(ptr noundef %68, i64 noundef %1) #29 + br label %229 196: ; preds = %192 - %197 = load i64, ptr %165, align 32 - %198 = icmp eq i64 %197, 0 - br i1 %198, label %200, label %199 + %197 = load i64, ptr %86, align 8 + store i64 %197, ptr %84, align 8 + %198 = getelementptr inbounds nuw i8, ptr %68, i64 128 + %199 = load ptr, ptr %198, align 64 + %200 = icmp eq ptr %199, null + br i1 %200, label %201, label %225 -199: ; preds = %196, %195 - tail call void @_raw_spin_unlock_irqrestore(ptr noundef %72, i64 noundef %1) #29 - br label %233 +201: ; preds = %196 + %202 = load volatile i64, ptr getelementptr inbounds nuw (i8, ptr @rcu_state, i64 3264), align 64 + %203 = and i64 %202, 3 + %204 = icmp eq i64 %203, 0 + br i1 %204, label %205, label %206, !prof !29 -200: ; preds = %196 - %201 = load i64, ptr %90, align 8 - store i64 %201, ptr %88, align 8 - %202 = getelementptr inbounds nuw i8, ptr %72, i64 128 - %203 = load ptr, ptr %202, align 64 - %204 = icmp eq ptr %203, null - br i1 %204, label %205, label %229 - -205: ; preds = %200 - %206 = load volatile i64, ptr getelementptr inbounds nuw (i8, ptr @rcu_state, i64 3264), align 64 - %207 = and i64 %206, 3 - %208 = icmp eq i64 %207, 0 - br i1 %208, label %209, label %210, !prof !29 - -209: ; preds = %205 +205: ; preds = %201 tail call void asm sideeffect "962: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 962b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 962) #29, !srcloc !198 tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A998:\0A\09.pushsection .discard.reachable\0A\09.long 998b\0A\09.popsection\0A\09", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str, i32 1884, i32 2307, i64 12) #29, !srcloc !199 tail call void asm sideeffect "963: nop\0A\09.pushsection .discard.instr_end\0A\09.long 963b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 963) #29, !srcloc !200 - br label %210 + br label %206 -210: ; preds = %209, %205 - %211 = load volatile i16, ptr getelementptr inbounds nuw (i8, ptr @rcu_state, i64 3312), align 16 - %212 = or i16 %211, 2 - store volatile i16 %212, ptr getelementptr inbounds nuw (i8, ptr @rcu_state, i64 3312), align 16 +206: ; preds = %205, %201 + %207 = load volatile i16, ptr getelementptr inbounds nuw (i8, ptr @rcu_state, i64 3312), align 16 + %208 = or i16 %207, 2 + store volatile i16 %208, ptr getelementptr inbounds nuw (i8, ptr @rcu_state, i64 3312), align 16 tail call void @_raw_spin_unlock_irqrestore(ptr noundef nonnull @rcu_state, i64 noundef %1) #29 - %213 = load volatile ptr, ptr getelementptr inbounds nuw (i8, ptr @rcu_state, i64 3280), align 16 - %214 = tail call i64 asm "movq %gs:${1:P}, $0", "=r,p,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @pcpu_hot) #30, !srcloc !19 - %215 = inttoptr i64 %214 to ptr - %216 = icmp eq ptr %213, %215 - br i1 %216, label %217, label %221 - -217: ; preds = %210 - %218 = tail call i32 asm "movl %gs:$1, $0", "=r,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8)) #28, !srcloc !64 - %219 = and i32 %218, 983296 - %220 = icmp eq i32 %219, 0 - br i1 %220, label %233, label %221 - -221: ; preds = %217, %210 - %222 = load volatile i16, ptr getelementptr inbounds nuw (i8, ptr @rcu_state, i64 3312), align 16 - %223 = icmp ne i16 %222, 0 - %224 = icmp ne ptr %213, null - %225 = select i1 %223, i1 %224, i1 false - br i1 %225, label %226, label %233 - -226: ; preds = %221 - %227 = load volatile i64, ptr @jiffies, align 64 - store volatile i64 %227, ptr getelementptr inbounds nuw (i8, ptr @rcu_state, i64 3320), align 8 - %228 = load volatile i64, ptr getelementptr inbounds nuw (i8, ptr @rcu_state, i64 3264), align 64 - store volatile i64 %228, ptr getelementptr inbounds nuw (i8, ptr @rcu_state, i64 3328), align 64 - tail call fastcc void @swake_up_one_online(ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @rcu_state, i64 3288)) - br label %233 - -229: ; preds = %200 - %230 = getelementptr inbounds nuw i8, ptr %72, i64 104 - %231 = load i64, ptr %230, align 8 - tail call void @_raw_spin_unlock(ptr noundef %72) #29 - tail call void @_raw_spin_lock(ptr noundef nonnull %203) #29 - tail call fastcc void @rcu_report_qs_rnp(i64 noundef %231, ptr noundef nonnull %203, i64 noundef %201, i64 noundef %1) - br label %233 - -232: ; preds = %158, %156 - tail call void @_raw_spin_unlock_irqrestore(ptr noundef %72, i64 noundef %1) #29 - br label %233 - -233: ; preds = %232, %229, %226, %221, %217, %199 - %234 = select i1 %108, i1 true, i1 %157 - br i1 %234, label %241, label %235 - -235: ; preds = %233 - %236 = tail call i64 @_raw_spin_lock_irqsave(ptr noundef %72) #29 - tail call fastcc void @__rcu_report_exp_rnp(ptr noundef %72, i1 noundef zeroext true, i64 noundef %236) - br label %241 + %209 = load volatile ptr, ptr getelementptr inbounds nuw (i8, ptr @rcu_state, i64 3280), align 16 + %210 = tail call i64 asm "movq %gs:${1:P}, $0", "=r,p,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @pcpu_hot) #30, !srcloc !19 + %211 = inttoptr i64 %210 to ptr + %212 = icmp eq ptr %209, %211 + br i1 %212, label %213, label %217 -237: ; preds = %68 - %238 = and i64 %1, 512 - %239 = icmp eq i64 %238, 0 - br i1 %239, label %241, label %240 +213: ; preds = %206 + %214 = tail call i32 asm "movl %gs:$1, $0", "=r,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8)) #28, !srcloc !64 + %215 = and i32 %214, 983296 + %216 = icmp eq i32 %215, 0 + br i1 %216, label %229, label %217 + +217: ; preds = %213, %206 + %218 = load volatile i16, ptr getelementptr inbounds nuw (i8, ptr @rcu_state, i64 3312), align 16 + %219 = icmp ne i16 %218, 0 + %220 = icmp ne ptr %209, null + %221 = select i1 %219, i1 %220, i1 false + br i1 %221, label %222, label %229 + +222: ; preds = %217 + %223 = load volatile i64, ptr @jiffies, align 64 + store volatile i64 %223, ptr getelementptr inbounds nuw (i8, ptr @rcu_state, i64 3320), align 8 + %224 = load volatile i64, ptr getelementptr inbounds nuw (i8, ptr @rcu_state, i64 3264), align 64 + store volatile i64 %224, ptr getelementptr inbounds nuw (i8, ptr @rcu_state, i64 3328), align 64 + tail call fastcc void @swake_up_one_online(ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @rcu_state, i64 3288)) + br label %229 + +225: ; preds = %196 + %226 = getelementptr inbounds nuw i8, ptr %68, i64 104 + %227 = load i64, ptr %226, align 8 + tail call void @_raw_spin_unlock(ptr noundef %68) #29 + tail call void @_raw_spin_lock(ptr noundef nonnull %199) #29 + tail call fastcc void @rcu_report_qs_rnp(i64 noundef %227, ptr noundef nonnull %199, i64 noundef %197, i64 noundef %1) + br label %229 + +228: ; preds = %154, %152 + tail call void @_raw_spin_unlock_irqrestore(ptr noundef %68, i64 noundef %1) #29 + br label %229 + +229: ; preds = %228, %225, %222, %217, %213, %195 + %230 = select i1 %104, i1 true, i1 %153 + br i1 %230, label %237, label %231 + +231: ; preds = %229 + %232 = tail call i64 @_raw_spin_lock_irqsave(ptr noundef %68) #29 + tail call fastcc void @__rcu_report_exp_rnp(ptr noundef %68, i1 noundef zeroext true, i64 noundef %232) + br label %237 + +233: ; preds = %64 + %234 = and i64 %1, 512 + %235 = icmp eq i64 %234, 0 + br i1 %235, label %237, label %236 -240: ; preds = %237 +236: ; preds = %233 tail call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #29, !srcloc !80 - br label %241 + br label %237 -241: ; preds = %240, %237, %235, %233, %26, %23 +237: ; preds = %236, %233, %231, %229, %22, %19 ret void } diff --git a/bench/llvm/optimized/RISCVMergeBaseOffset.ll b/bench/llvm/optimized/RISCVMergeBaseOffset.ll index 6e5154147db..7371fcffdba 100644 --- a/bench/llvm/optimized/RISCVMergeBaseOffset.ll +++ b/bench/llvm/optimized/RISCVMergeBaseOffset.ll @@ -325,13 +325,12 @@ define internal noundef zeroext i1 @_ZN12_GLOBAL__N_123RISCVMergeBaseOffsetOpt20 %46 = getelementptr inbounds nuw i8, ptr %35, i64 56 %47 = load i32, ptr %46, align 8, !tbaa !175 %48 = sext i32 %47 to i64 - %49 = shl nsw i64 %48, 32 - %50 = getelementptr inbounds nuw i8, ptr %35, i64 36 - %51 = load i32, ptr %50, align 4, !tbaa !175 - %52 = zext i32 %51 to i64 - %53 = or disjoint i64 %49, %52 - %.not39.i = icmp eq i64 %53, 0 - br i1 %.not39.i, label %54, label %_ZN12_GLOBAL__N_123RISCVMergeBaseOffsetOpt14detectFoldableERN4llvm12MachineInstrERPS2_.exit.thread + %49 = getelementptr inbounds nuw i8, ptr %35, i64 36 + %50 = load i32, ptr %49, align 4, !tbaa !175 + %51 = zext i32 %50 to i64 + %52 = or i64 %51, %48 + %53 = icmp eq i64 %52, 0 + br i1 %53, label %54, label %_ZN12_GLOBAL__N_123RISCVMergeBaseOffsetOpt14detectFoldableERN4llvm12MachineInstrERPS2_.exit.thread 54: ; preds = %45 %55 = icmp eq i16 %32, 425 @@ -449,13 +448,12 @@ _ZNK4llvm19MachineRegisterInfo15use_instr_beginENS_8RegisterE.exit.i: ; preds = %97 = getelementptr inbounds nuw i8, ptr %90, i64 24 %98 = load i32, ptr %97, align 8, !tbaa !175 %99 = sext i32 %98 to i64 - %100 = shl nsw i64 %99, 32 - %101 = getelementptr inbounds nuw i8, ptr %90, i64 4 - %102 = load i32, ptr %101, align 4, !tbaa !175 - %103 = zext i32 %102 to i64 - %104 = or disjoint i64 %100, %103 - %.not44.i = icmp eq i64 %104, 0 - br i1 %.not44.i, label %._ZN12_GLOBAL__N_123RISCVMergeBaseOffsetOpt14detectFoldableERN4llvm12MachineInstrERPS2_.exit_crit_edge, label %_ZN12_GLOBAL__N_123RISCVMergeBaseOffsetOpt14detectFoldableERN4llvm12MachineInstrERPS2_.exit.thread + %100 = getelementptr inbounds nuw i8, ptr %90, i64 4 + %101 = load i32, ptr %100, align 4, !tbaa !175 + %102 = zext i32 %101 to i64 + %103 = or i64 %102, %99 + %104 = icmp eq i64 %103, 0 + br i1 %104, label %._ZN12_GLOBAL__N_123RISCVMergeBaseOffsetOpt14detectFoldableERN4llvm12MachineInstrERPS2_.exit_crit_edge, label %_ZN12_GLOBAL__N_123RISCVMergeBaseOffsetOpt14detectFoldableERN4llvm12MachineInstrERPS2_.exit.thread ._ZN12_GLOBAL__N_123RISCVMergeBaseOffsetOpt14detectFoldableERN4llvm12MachineInstrERPS2_.exit_crit_edge: ; preds = %96 %.phi.trans.insert201 = getelementptr inbounds nuw i8, ptr %.val, i64 48 @@ -633,7 +631,7 @@ _ZNK4llvm19MachineRegisterInfo15use_instr_beginENS_8RegisterE.exit68.i: ; preds %167 = load i64, ptr %166, align 8, !tbaa !175 %168 = add nsw i64 %167, %139 %169 = trunc i64 %168 to i32 - store i32 %169, ptr %50, align 4, !tbaa !175 + store i32 %169, ptr %49, align 4, !tbaa !175 %170 = lshr i64 %168, 32 %171 = trunc nuw i64 %170 to i32 store i32 %171, ptr %46, align 8, !tbaa !175 @@ -679,7 +677,7 @@ _ZNK4llvm19MachineRegisterInfo15use_instr_beginENS_8RegisterE.exit68.i: ; preds _ZNK4llvm19MachineRegisterInfo9hasOneUseENS_8RegisterE.exit56.thread.i: ; preds = %.preheader.i.i.i.i42.i, %154, %_ZNK4llvm19MachineRegisterInfo15use_instr_beginENS_8RegisterE.exit68.i, %135 %199 = trunc i64 %139 to i32 - store i32 %199, ptr %50, align 4, !tbaa !175 + store i32 %199, ptr %49, align 4, !tbaa !175 %200 = lshr i64 %139, 32 %201 = trunc nuw i64 %200 to i32 store i32 %201, ptr %46, align 8, !tbaa !175 diff --git a/bench/llvm/optimized/blake3.ll b/bench/llvm/optimized/blake3.ll index f9ad42e52c9..d29e59f85e2 100644 --- a/bench/llvm/optimized/blake3.ll +++ b/bench/llvm/optimized/blake3.ll @@ -1987,7 +1987,7 @@ define dso_local void @llvm_blake3_hasher_finalize_seek(ptr noundef readonly cap %9 = alloca %struct.output_t, align 8 %.sroa.5.sroa.0 = alloca [32 x i8], align 16 %10 = icmp eq i64 %3, 0 - br i1 %10, label %178, label %11 + br i1 %10, label %176, label %11 11: ; preds = %4 %12 = getelementptr inbounds nuw i8, ptr %0, i64 144 @@ -2047,83 +2047,80 @@ define dso_local void @llvm_blake3_hasher_finalize_seek(ptr noundef readonly cap output_root_bytes.exit: ; preds = %35 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %6) #10 call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %8) #10 - br label %178 + br label %176 44: ; preds = %11 call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %9) #10 %45 = getelementptr inbounds nuw i8, ptr %0, i64 137 %46 = load i8, ptr %45, align 1, !tbaa !11 - %47 = zext i8 %46 to i64 - %48 = shl nuw nsw i64 %47, 6 - %49 = getelementptr inbounds nuw i8, ptr %0, i64 136 - %50 = load i8, ptr %49, align 8, !tbaa !12 - %51 = zext i8 %50 to i64 - %52 = or i64 %48, %51 - %.not = icmp eq i64 %52, 0 - br i1 %.not, label %66, label %.thread + %47 = getelementptr inbounds nuw i8, ptr %0, i64 136 + %48 = load i8, ptr %47, align 8, !tbaa !12 + %49 = or i8 %48, %46 + %50 = icmp eq i8 %49, 0 + br i1 %50, label %64, label %.thread .thread: ; preds = %44 - %53 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %54 = zext i8 %13 to i64 - %55 = getelementptr inbounds nuw i8, ptr %0, i64 138 - %56 = load i8, ptr %55, align 2, !tbaa !10, !noalias !66 - %57 = icmp eq i8 %46, 0 - %..i31 = zext i1 %57 to i8 - %58 = or i8 %56, %..i31 - %59 = or i8 %58, 2 - %60 = getelementptr inbounds nuw i8, ptr %0, i64 72 - %61 = getelementptr inbounds nuw i8, ptr %0, i64 64 - %62 = load i64, ptr %61, align 8, !tbaa !13, !noalias !66 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 4 dereferenceable(32) %53, i64 32, i1 false) + %51 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %52 = zext i8 %13 to i64 + %53 = getelementptr inbounds nuw i8, ptr %0, i64 138 + %54 = load i8, ptr %53, align 2, !tbaa !10, !noalias !66 + %55 = icmp eq i8 %46, 0 + %..i31 = zext i1 %55 to i8 + %56 = or i8 %54, %..i31 + %57 = or i8 %56, 2 + %58 = getelementptr inbounds nuw i8, ptr %0, i64 72 + %59 = getelementptr inbounds nuw i8, ptr %0, i64 64 + %60 = load i64, ptr %59, align 8, !tbaa !13, !noalias !66 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 4 dereferenceable(32) %51, i64 32, i1 false) %.sroa.546.0..sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 40 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %.sroa.546.0..sroa_idx, ptr noundef nonnull align 1 dereferenceable(64) %60, i64 64, i1 false) - %63 = getelementptr inbounds nuw i8, ptr %9, i64 32 - store i64 %62, ptr %63, align 8, !tbaa !69 - %64 = getelementptr inbounds nuw i8, ptr %9, i64 104 - store i8 %50, ptr %64, align 8, !tbaa !9 - %65 = getelementptr inbounds nuw i8, ptr %9, i64 105 - store i8 %59, ptr %65, align 1, !tbaa !9 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %.sroa.546.0..sroa_idx, ptr noundef nonnull align 1 dereferenceable(64) %58, i64 64, i1 false) + %61 = getelementptr inbounds nuw i8, ptr %9, i64 32 + store i64 %60, ptr %61, align 8, !tbaa !69 + %62 = getelementptr inbounds nuw i8, ptr %9, i64 104 + store i8 %48, ptr %62, align 8, !tbaa !9 + %63 = getelementptr inbounds nuw i8, ptr %9, i64 105 + store i8 %57, ptr %63, align 1, !tbaa !9 br label %.lr.ph -66: ; preds = %44 - %67 = zext i8 %13 to i64 - %68 = add nsw i64 %67, -2 - %69 = getelementptr inbounds nuw i8, ptr %0, i64 145 - %70 = shl nsw i64 %68, 5 - %71 = getelementptr inbounds nuw [1760 x i8], ptr %69, i64 0, i64 %70 - %72 = getelementptr inbounds nuw i8, ptr %0, i64 138 - %73 = load i8, ptr %72, align 2, !tbaa !29 - %74 = or i8 %73, 4 +64: ; preds = %44 + %65 = zext i8 %13 to i64 + %66 = add nsw i64 %65, -2 + %67 = getelementptr inbounds nuw i8, ptr %0, i64 145 + %68 = shl nsw i64 %66, 5 + %69 = getelementptr inbounds nuw [1760 x i8], ptr %67, i64 0, i64 %68 + %70 = getelementptr inbounds nuw i8, ptr %0, i64 138 + %71 = load i8, ptr %70, align 2, !tbaa !29 + %72 = or i8 %71, 4 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 4 dereferenceable(32) %0, i64 32, i1 false) %.sroa.5.0..sroa_idx40 = getelementptr inbounds nuw i8, ptr %9, i64 40 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %.sroa.5.0..sroa_idx40, ptr noundef nonnull align 1 dereferenceable(64) %71, i64 64, i1 false) - %75 = getelementptr inbounds nuw i8, ptr %9, i64 32 - store i64 0, ptr %75, align 8, !tbaa !69 - %76 = getelementptr inbounds nuw i8, ptr %9, i64 104 - store i8 64, ptr %76, align 8, !tbaa !9 - %77 = getelementptr inbounds nuw i8, ptr %9, i64 105 - store i8 %74, ptr %77, align 1, !tbaa !9 - %.not2350 = icmp eq i64 %68, 0 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %.sroa.5.0..sroa_idx40, ptr noundef nonnull align 1 dereferenceable(64) %69, i64 64, i1 false) + %73 = getelementptr inbounds nuw i8, ptr %9, i64 32 + store i64 0, ptr %73, align 8, !tbaa !69 + %74 = getelementptr inbounds nuw i8, ptr %9, i64 104 + store i8 64, ptr %74, align 8, !tbaa !9 + %75 = getelementptr inbounds nuw i8, ptr %9, i64 105 + store i8 %72, ptr %75, align 1, !tbaa !9 + %.not2350 = icmp eq i64 %66, 0 br i1 %.not2350, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %.thread, %66 - %78 = phi ptr [ %65, %.thread ], [ %77, %66 ] - %79 = phi ptr [ %64, %.thread ], [ %76, %66 ] - %80 = phi ptr [ %63, %.thread ], [ %75, %66 ] - %.070 = phi i64 [ %54, %.thread ], [ %68, %66 ] - %.sink69 = phi i8 [ %59, %.thread ], [ %74, %66 ] - %.sink6068 = phi i8 [ %50, %.thread ], [ 64, %66 ] - %.sink6167 = phi i64 [ %62, %.thread ], [ 0, %66 ] - %81 = getelementptr inbounds nuw i8, ptr %0, i64 145 - %82 = getelementptr inbounds nuw i8, ptr %9, i64 40 - %83 = getelementptr inbounds nuw i8, ptr %7, i64 4 - %84 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %85 = getelementptr inbounds nuw i8, ptr %7, i64 12 - %86 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %87 = getelementptr inbounds nuw i8, ptr %7, i64 20 - %88 = getelementptr inbounds nuw i8, ptr %7, i64 24 - %89 = getelementptr inbounds nuw i8, ptr %7, i64 28 - %90 = getelementptr inbounds nuw i8, ptr %0, i64 138 +.lr.ph: ; preds = %.thread, %64 + %76 = phi ptr [ %63, %.thread ], [ %75, %64 ] + %77 = phi ptr [ %62, %.thread ], [ %74, %64 ] + %78 = phi ptr [ %61, %.thread ], [ %73, %64 ] + %.070 = phi i64 [ %52, %.thread ], [ %66, %64 ] + %.sink69 = phi i8 [ %57, %.thread ], [ %72, %64 ] + %.sink6068 = phi i8 [ %48, %.thread ], [ 64, %64 ] + %.sink6167 = phi i64 [ %60, %.thread ], [ 0, %64 ] + %79 = getelementptr inbounds nuw i8, ptr %0, i64 145 + %80 = getelementptr inbounds nuw i8, ptr %9, i64 40 + %81 = getelementptr inbounds nuw i8, ptr %7, i64 4 + %82 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %83 = getelementptr inbounds nuw i8, ptr %7, i64 12 + %84 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %85 = getelementptr inbounds nuw i8, ptr %7, i64 20 + %86 = getelementptr inbounds nuw i8, ptr %7, i64 24 + %87 = getelementptr inbounds nuw i8, ptr %7, i64 28 + %88 = getelementptr inbounds nuw i8, ptr %0, i64 138 %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 72 %.sroa.5.sroa.5.0..sroa.5.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 73 %.sroa.5.sroa.6.0..sroa.5.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 74 @@ -2156,163 +2153,163 @@ output_root_bytes.exit: ; preds = %35 %.sroa.5.sroa.33.0..sroa.5.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 101 %.sroa.5.sroa.34.0..sroa.5.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 102 %.sroa.5.sroa.35.0..sroa.5.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 103 - br label %91 - -91: ; preds = %.lr.ph, %91 - %92 = phi i8 [ %.sink69, %.lr.ph ], [ %163, %91 ] - %93 = phi i64 [ %.sink6167, %.lr.ph ], [ 0, %91 ] - %94 = phi i8 [ %.sink6068, %.lr.ph ], [ 64, %91 ] - %.151 = phi i64 [ %.070, %.lr.ph ], [ %95, %91 ] - %95 = add i64 %.151, -1 - %96 = shl i64 %95, 5 - %97 = getelementptr inbounds nuw [1760 x i8], ptr %81, i64 0, i64 %96 + br label %89 + +89: ; preds = %.lr.ph, %89 + %90 = phi i8 [ %.sink69, %.lr.ph ], [ %161, %89 ] + %91 = phi i64 [ %.sink6167, %.lr.ph ], [ 0, %89 ] + %92 = phi i8 [ %.sink6068, %.lr.ph ], [ 64, %89 ] + %.151 = phi i64 [ %.070, %.lr.ph ], [ %93, %89 ] + %93 = add i64 %.151, -1 + %94 = shl i64 %93, 5 + %95 = getelementptr inbounds nuw [1760 x i8], ptr %79, i64 0, i64 %94 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %.sroa.5.sroa.0) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %.sroa.5.sroa.0, ptr noundef nonnull align 1 dereferenceable(32) %97, i64 32, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %.sroa.5.sroa.0, ptr noundef nonnull align 1 dereferenceable(32) %95, i64 32, i1 false) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #10 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(32) %9, i64 32, i1 false) - call void @llvm_blake3_compress_in_place(ptr noundef nonnull %7, ptr noundef nonnull %82, i8 noundef zeroext %94, i64 noundef %93, i8 noundef zeroext %92) #10 - %98 = load i32, ptr %7, align 16, !tbaa !26 + call void @llvm_blake3_compress_in_place(ptr noundef nonnull %7, ptr noundef nonnull %80, i8 noundef zeroext %92, i64 noundef %91, i8 noundef zeroext %90) #10 + %96 = load i32, ptr %7, align 16, !tbaa !26 + %97 = trunc i32 %96 to i8 + %98 = lshr i32 %96, 8 %99 = trunc i32 %98 to i8 - %100 = lshr i32 %98, 8 + %100 = lshr i32 %96, 16 %101 = trunc i32 %100 to i8 - %102 = lshr i32 %98, 16 - %103 = trunc i32 %102 to i8 - %104 = lshr i32 %98, 24 - %105 = trunc nuw i32 %104 to i8 - %106 = load i32, ptr %83, align 4, !tbaa !26 + %102 = lshr i32 %96, 24 + %103 = trunc nuw i32 %102 to i8 + %104 = load i32, ptr %81, align 4, !tbaa !26 + %105 = trunc i32 %104 to i8 + %106 = lshr i32 %104, 8 %107 = trunc i32 %106 to i8 - %108 = lshr i32 %106, 8 + %108 = lshr i32 %104, 16 %109 = trunc i32 %108 to i8 - %110 = lshr i32 %106, 16 - %111 = trunc i32 %110 to i8 - %112 = lshr i32 %106, 24 - %113 = trunc nuw i32 %112 to i8 - %114 = load i32, ptr %84, align 8, !tbaa !26 + %110 = lshr i32 %104, 24 + %111 = trunc nuw i32 %110 to i8 + %112 = load i32, ptr %82, align 8, !tbaa !26 + %113 = trunc i32 %112 to i8 + %114 = lshr i32 %112, 8 %115 = trunc i32 %114 to i8 - %116 = lshr i32 %114, 8 + %116 = lshr i32 %112, 16 %117 = trunc i32 %116 to i8 - %118 = lshr i32 %114, 16 - %119 = trunc i32 %118 to i8 - %120 = lshr i32 %114, 24 - %121 = trunc nuw i32 %120 to i8 - %122 = load i32, ptr %85, align 4, !tbaa !26 + %118 = lshr i32 %112, 24 + %119 = trunc nuw i32 %118 to i8 + %120 = load i32, ptr %83, align 4, !tbaa !26 + %121 = trunc i32 %120 to i8 + %122 = lshr i32 %120, 8 %123 = trunc i32 %122 to i8 - %124 = lshr i32 %122, 8 + %124 = lshr i32 %120, 16 %125 = trunc i32 %124 to i8 - %126 = lshr i32 %122, 16 - %127 = trunc i32 %126 to i8 - %128 = lshr i32 %122, 24 - %129 = trunc nuw i32 %128 to i8 - %130 = load i32, ptr %86, align 16, !tbaa !26 + %126 = lshr i32 %120, 24 + %127 = trunc nuw i32 %126 to i8 + %128 = load i32, ptr %84, align 16, !tbaa !26 + %129 = trunc i32 %128 to i8 + %130 = lshr i32 %128, 8 %131 = trunc i32 %130 to i8 - %132 = lshr i32 %130, 8 + %132 = lshr i32 %128, 16 %133 = trunc i32 %132 to i8 - %134 = lshr i32 %130, 16 - %135 = trunc i32 %134 to i8 - %136 = lshr i32 %130, 24 - %137 = trunc nuw i32 %136 to i8 - %138 = load i32, ptr %87, align 4, !tbaa !26 + %134 = lshr i32 %128, 24 + %135 = trunc nuw i32 %134 to i8 + %136 = load i32, ptr %85, align 4, !tbaa !26 + %137 = trunc i32 %136 to i8 + %138 = lshr i32 %136, 8 %139 = trunc i32 %138 to i8 - %140 = lshr i32 %138, 8 + %140 = lshr i32 %136, 16 %141 = trunc i32 %140 to i8 - %142 = lshr i32 %138, 16 - %143 = trunc i32 %142 to i8 - %144 = lshr i32 %138, 24 - %145 = trunc nuw i32 %144 to i8 - %146 = load i32, ptr %88, align 8, !tbaa !26 + %142 = lshr i32 %136, 24 + %143 = trunc nuw i32 %142 to i8 + %144 = load i32, ptr %86, align 8, !tbaa !26 + %145 = trunc i32 %144 to i8 + %146 = lshr i32 %144, 8 %147 = trunc i32 %146 to i8 - %148 = lshr i32 %146, 8 + %148 = lshr i32 %144, 16 %149 = trunc i32 %148 to i8 - %150 = lshr i32 %146, 16 - %151 = trunc i32 %150 to i8 - %152 = lshr i32 %146, 24 - %153 = trunc nuw i32 %152 to i8 - %154 = load i32, ptr %89, align 4, !tbaa !26 + %150 = lshr i32 %144, 24 + %151 = trunc nuw i32 %150 to i8 + %152 = load i32, ptr %87, align 4, !tbaa !26 + %153 = trunc i32 %152 to i8 + %154 = lshr i32 %152, 8 %155 = trunc i32 %154 to i8 - %156 = lshr i32 %154, 8 + %156 = lshr i32 %152, 16 %157 = trunc i32 %156 to i8 - %158 = lshr i32 %154, 16 - %159 = trunc i32 %158 to i8 - %160 = lshr i32 %154, 24 - %161 = trunc nuw i32 %160 to i8 + %158 = lshr i32 %152, 24 + %159 = trunc nuw i32 %158 to i8 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #10 - %162 = load i8, ptr %90, align 2, !tbaa !29 - %163 = or i8 %162, 4 + %160 = load i8, ptr %88, align 2, !tbaa !29 + %161 = or i8 %160, 4 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 4 dereferenceable(32) %0, i64 32, i1 false) - store i64 0, ptr %80, align 8, !tbaa !69 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %82, ptr noundef nonnull align 16 dereferenceable(32) %.sroa.5.sroa.0, i64 32, i1 false), !tbaa.struct !70 - store i8 %99, ptr %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx.sroa_idx, align 8 - store i8 %101, ptr %.sroa.5.sroa.5.0..sroa.5.0..sroa_idx.sroa_idx, align 1 - store i8 %103, ptr %.sroa.5.sroa.6.0..sroa.5.0..sroa_idx.sroa_idx, align 2 - store i8 %105, ptr %.sroa.5.sroa.7.0..sroa.5.0..sroa_idx.sroa_idx, align 1 - store i8 %107, ptr %.sroa.5.sroa.8.0..sroa.5.0..sroa_idx.sroa_idx, align 4 - store i8 %109, ptr %.sroa.5.sroa.9.0..sroa.5.0..sroa_idx.sroa_idx, align 1 - store i8 %111, ptr %.sroa.5.sroa.10.0..sroa.5.0..sroa_idx.sroa_idx, align 2 - store i8 %113, ptr %.sroa.5.sroa.11.0..sroa.5.0..sroa_idx.sroa_idx, align 1 - store i8 %115, ptr %.sroa.5.sroa.12.0..sroa.5.0..sroa_idx.sroa_idx, align 8 - store i8 %117, ptr %.sroa.5.sroa.13.0..sroa.5.0..sroa_idx.sroa_idx, align 1 - store i8 %119, ptr %.sroa.5.sroa.14.0..sroa.5.0..sroa_idx.sroa_idx, align 2 - store i8 %121, ptr %.sroa.5.sroa.15.0..sroa.5.0..sroa_idx.sroa_idx, align 1 - store i8 %123, ptr %.sroa.5.sroa.16.0..sroa.5.0..sroa_idx.sroa_idx, align 4 - store i8 %125, ptr %.sroa.5.sroa.17.0..sroa.5.0..sroa_idx.sroa_idx, align 1 - store i8 %127, ptr %.sroa.5.sroa.18.0..sroa.5.0..sroa_idx.sroa_idx, align 2 - store i8 %129, ptr %.sroa.5.sroa.19.0..sroa.5.0..sroa_idx.sroa_idx, align 1 - store i8 %131, ptr %.sroa.5.sroa.20.0..sroa.5.0..sroa_idx.sroa_idx, align 8 - store i8 %133, ptr %.sroa.5.sroa.21.0..sroa.5.0..sroa_idx.sroa_idx, align 1 - store i8 %135, ptr %.sroa.5.sroa.22.0..sroa.5.0..sroa_idx.sroa_idx, align 2 - store i8 %137, ptr %.sroa.5.sroa.23.0..sroa.5.0..sroa_idx.sroa_idx, align 1 - store i8 %139, ptr %.sroa.5.sroa.24.0..sroa.5.0..sroa_idx.sroa_idx, align 4 - store i8 %141, ptr %.sroa.5.sroa.25.0..sroa.5.0..sroa_idx.sroa_idx, align 1 - store i8 %143, ptr %.sroa.5.sroa.26.0..sroa.5.0..sroa_idx.sroa_idx, align 2 - store i8 %145, ptr %.sroa.5.sroa.27.0..sroa.5.0..sroa_idx.sroa_idx, align 1 - store i8 %147, ptr %.sroa.5.sroa.28.0..sroa.5.0..sroa_idx.sroa_idx, align 8 - store i8 %149, ptr %.sroa.5.sroa.29.0..sroa.5.0..sroa_idx.sroa_idx, align 1 - store i8 %151, ptr %.sroa.5.sroa.30.0..sroa.5.0..sroa_idx.sroa_idx, align 2 - store i8 %153, ptr %.sroa.5.sroa.31.0..sroa.5.0..sroa_idx.sroa_idx, align 1 - store i8 %155, ptr %.sroa.5.sroa.32.0..sroa.5.0..sroa_idx.sroa_idx, align 4 - store i8 %157, ptr %.sroa.5.sroa.33.0..sroa.5.0..sroa_idx.sroa_idx, align 1 - store i8 %159, ptr %.sroa.5.sroa.34.0..sroa.5.0..sroa_idx.sroa_idx, align 2 - store i8 %161, ptr %.sroa.5.sroa.35.0..sroa.5.0..sroa_idx.sroa_idx, align 1, !tbaa !9 - store i8 64, ptr %79, align 8, !tbaa !9 - store i8 %163, ptr %78, align 1, !tbaa !9 + store i64 0, ptr %78, align 8, !tbaa !69 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %80, ptr noundef nonnull align 16 dereferenceable(32) %.sroa.5.sroa.0, i64 32, i1 false), !tbaa.struct !70 + store i8 %97, ptr %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx.sroa_idx, align 8 + store i8 %99, ptr %.sroa.5.sroa.5.0..sroa.5.0..sroa_idx.sroa_idx, align 1 + store i8 %101, ptr %.sroa.5.sroa.6.0..sroa.5.0..sroa_idx.sroa_idx, align 2 + store i8 %103, ptr %.sroa.5.sroa.7.0..sroa.5.0..sroa_idx.sroa_idx, align 1 + store i8 %105, ptr %.sroa.5.sroa.8.0..sroa.5.0..sroa_idx.sroa_idx, align 4 + store i8 %107, ptr %.sroa.5.sroa.9.0..sroa.5.0..sroa_idx.sroa_idx, align 1 + store i8 %109, ptr %.sroa.5.sroa.10.0..sroa.5.0..sroa_idx.sroa_idx, align 2 + store i8 %111, ptr %.sroa.5.sroa.11.0..sroa.5.0..sroa_idx.sroa_idx, align 1 + store i8 %113, ptr %.sroa.5.sroa.12.0..sroa.5.0..sroa_idx.sroa_idx, align 8 + store i8 %115, ptr %.sroa.5.sroa.13.0..sroa.5.0..sroa_idx.sroa_idx, align 1 + store i8 %117, ptr %.sroa.5.sroa.14.0..sroa.5.0..sroa_idx.sroa_idx, align 2 + store i8 %119, ptr %.sroa.5.sroa.15.0..sroa.5.0..sroa_idx.sroa_idx, align 1 + store i8 %121, ptr %.sroa.5.sroa.16.0..sroa.5.0..sroa_idx.sroa_idx, align 4 + store i8 %123, ptr %.sroa.5.sroa.17.0..sroa.5.0..sroa_idx.sroa_idx, align 1 + store i8 %125, ptr %.sroa.5.sroa.18.0..sroa.5.0..sroa_idx.sroa_idx, align 2 + store i8 %127, ptr %.sroa.5.sroa.19.0..sroa.5.0..sroa_idx.sroa_idx, align 1 + store i8 %129, ptr %.sroa.5.sroa.20.0..sroa.5.0..sroa_idx.sroa_idx, align 8 + store i8 %131, ptr %.sroa.5.sroa.21.0..sroa.5.0..sroa_idx.sroa_idx, align 1 + store i8 %133, ptr %.sroa.5.sroa.22.0..sroa.5.0..sroa_idx.sroa_idx, align 2 + store i8 %135, ptr %.sroa.5.sroa.23.0..sroa.5.0..sroa_idx.sroa_idx, align 1 + store i8 %137, ptr %.sroa.5.sroa.24.0..sroa.5.0..sroa_idx.sroa_idx, align 4 + store i8 %139, ptr %.sroa.5.sroa.25.0..sroa.5.0..sroa_idx.sroa_idx, align 1 + store i8 %141, ptr %.sroa.5.sroa.26.0..sroa.5.0..sroa_idx.sroa_idx, align 2 + store i8 %143, ptr %.sroa.5.sroa.27.0..sroa.5.0..sroa_idx.sroa_idx, align 1 + store i8 %145, ptr %.sroa.5.sroa.28.0..sroa.5.0..sroa_idx.sroa_idx, align 8 + store i8 %147, ptr %.sroa.5.sroa.29.0..sroa.5.0..sroa_idx.sroa_idx, align 1 + store i8 %149, ptr %.sroa.5.sroa.30.0..sroa.5.0..sroa_idx.sroa_idx, align 2 + store i8 %151, ptr %.sroa.5.sroa.31.0..sroa.5.0..sroa_idx.sroa_idx, align 1 + store i8 %153, ptr %.sroa.5.sroa.32.0..sroa.5.0..sroa_idx.sroa_idx, align 4 + store i8 %155, ptr %.sroa.5.sroa.33.0..sroa.5.0..sroa_idx.sroa_idx, align 1 + store i8 %157, ptr %.sroa.5.sroa.34.0..sroa.5.0..sroa_idx.sroa_idx, align 2 + store i8 %159, ptr %.sroa.5.sroa.35.0..sroa.5.0..sroa_idx.sroa_idx, align 1, !tbaa !9 + store i8 64, ptr %77, align 8, !tbaa !9 + store i8 %161, ptr %76, align 1, !tbaa !9 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %.sroa.5.sroa.0) - %.not23 = icmp eq i64 %95, 0 - br i1 %.not23, label %._crit_edge, label %91, !llvm.loop !71 - -._crit_edge: ; preds = %91, %66 - %164 = phi ptr [ %77, %66 ], [ %78, %91 ] - %165 = phi ptr [ %76, %66 ], [ %79, %91 ] - %166 = lshr i64 %1, 6 - %167 = and i64 %1, 63 + %.not23 = icmp eq i64 %93, 0 + br i1 %.not23, label %._crit_edge, label %89, !llvm.loop !71 + +._crit_edge: ; preds = %89, %64 + %162 = phi ptr [ %75, %64 ], [ %76, %89 ] + %163 = phi ptr [ %74, %64 ], [ %77, %89 ] + %164 = lshr i64 %1, 6 + %165 = and i64 %1, 63 call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %5) #10 - %168 = getelementptr inbounds nuw i8, ptr %9, i64 40 - br label %169 - -169: ; preds = %._crit_edge, %169 - %.020.i2755 = phi ptr [ %2, %._crit_edge ], [ %175, %169 ] - %.021.i2654 = phi i64 [ %167, %._crit_edge ], [ 0, %169 ] - %.022.i2553 = phi i64 [ %166, %._crit_edge ], [ %177, %169 ] - %.023.i2452 = phi i64 [ %3, %._crit_edge ], [ %176, %169 ] - %170 = load i8, ptr %165, align 8, !tbaa !19 - %171 = load i8, ptr %164, align 1, !tbaa !25 - %172 = or i8 %171, 8 - call void @llvm_blake3_compress_xof(ptr noundef nonnull %9, ptr noundef nonnull %168, i8 noundef zeroext %170, i64 noundef %.022.i2553, i8 noundef zeroext %172, ptr noundef nonnull %5) #10 - %173 = sub nuw nsw i64 64, %.021.i2654 - %..023.i29 = call i64 @llvm.umin.i64(i64 %.023.i2452, i64 %173) - %174 = getelementptr inbounds nuw i8, ptr %5, i64 %.021.i2654 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.020.i2755, ptr nonnull align 1 %174, i64 %..023.i29, i1 false) - %175 = getelementptr inbounds nuw i8, ptr %.020.i2755, i64 %..023.i29 - %176 = sub i64 %.023.i2452, %..023.i29 - %177 = add i64 %.022.i2553, 1 - %.not.i28 = icmp eq i64 %176, 0 - br i1 %.not.i28, label %output_root_bytes.exit30, label %169, !llvm.loop !65 - -output_root_bytes.exit30: ; preds = %169 + %166 = getelementptr inbounds nuw i8, ptr %9, i64 40 + br label %167 + +167: ; preds = %._crit_edge, %167 + %.020.i2755 = phi ptr [ %2, %._crit_edge ], [ %173, %167 ] + %.021.i2654 = phi i64 [ %165, %._crit_edge ], [ 0, %167 ] + %.022.i2553 = phi i64 [ %164, %._crit_edge ], [ %175, %167 ] + %.023.i2452 = phi i64 [ %3, %._crit_edge ], [ %174, %167 ] + %168 = load i8, ptr %163, align 8, !tbaa !19 + %169 = load i8, ptr %162, align 1, !tbaa !25 + %170 = or i8 %169, 8 + call void @llvm_blake3_compress_xof(ptr noundef nonnull %9, ptr noundef nonnull %166, i8 noundef zeroext %168, i64 noundef %.022.i2553, i8 noundef zeroext %170, ptr noundef nonnull %5) #10 + %171 = sub nuw nsw i64 64, %.021.i2654 + %..023.i29 = call i64 @llvm.umin.i64(i64 %.023.i2452, i64 %171) + %172 = getelementptr inbounds nuw i8, ptr %5, i64 %.021.i2654 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.020.i2755, ptr nonnull align 1 %172, i64 %..023.i29, i1 false) + %173 = getelementptr inbounds nuw i8, ptr %.020.i2755, i64 %..023.i29 + %174 = sub i64 %.023.i2452, %..023.i29 + %175 = add i64 %.022.i2553, 1 + %.not.i28 = icmp eq i64 %174, 0 + br i1 %.not.i28, label %output_root_bytes.exit30, label %167, !llvm.loop !65 + +output_root_bytes.exit30: ; preds = %167 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %5) #10 call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %9) #10 - br label %178 + br label %176 -178: ; preds = %4, %output_root_bytes.exit30, %output_root_bytes.exit +176: ; preds = %4, %output_root_bytes.exit30, %output_root_bytes.exit ret void } diff --git a/bench/meilisearch-rs/optimized/2eqafq69fd46y14a.ll b/bench/meilisearch-rs/optimized/2eqafq69fd46y14a.ll index bc8fe741b8f..f0cb7a5b5fe 100644 --- a/bench/meilisearch-rs/optimized/2eqafq69fd46y14a.ll +++ b/bench/meilisearch-rs/optimized/2eqafq69fd46y14a.ll @@ -1547,15 +1547,15 @@ define hidden void @"_ZN105_$LT$meilisearch_types..settings..MinWordSizeTyposSet call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(32) %2, i64 32, i1 false) invoke void @"_ZN132_$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$C$GT$$u20$as$u20$deserr..DeserializeError$GT$5error17hff368a789edfaba3E"(ptr noalias noundef nonnull sret([40 x i8]) align 8 captures(none) dereferenceable(40) %26, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(32) %25, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(88) %24, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(32) %23) - to label %224 unwind label %102 + to label %222 unwind label %100 -.body: ; preds = %87, %50, %79 - %.sroa.045.1 = phi i1 [ %.sroa.045.4, %79 ], [ %.sroa.045.0, %50 ], [ true, %87 ] - %.pn68 = phi { ptr, i32 } [ %.pn64, %79 ], [ %51, %50 ], [ %88, %87 ] +.body: ; preds = %83, %50, %79 + %.sroa.045.1 = phi i1 [ %.sroa.045.4, %79 ], [ %.sroa.045.0, %50 ], [ true, %83 ] + %.pn68 = phi { ptr, i32 } [ %.pn64, %79 ], [ %51, %50 ], [ %84, %83 ] %49 = load i64, ptr %41, align 8, !range !6 %.not = icmp ne i64 %49, -9223372036854775808 %or.cond.not = select i1 %.sroa.045.1, i1 %.not, i1 false - br i1 %or.cond.not, label %223, label %.body105 + br i1 %or.cond.not, label %221, label %.body105 50: ; preds = %"_ZN4core3ptr106drop_in_place$LT$indexmap..map..iter..IntoIter$LT$alloc..string..String$C$serde_json..value..Value$GT$$GT$17h38b9c4ced7951fc3E.llvm.4616129397091597767.exit.i140", %"_ZN4core3ptr106drop_in_place$LT$indexmap..map..iter..IntoIter$LT$alloc..string..String$C$serde_json..value..Value$GT$$GT$17h38b9c4ced7951fc3E.llvm.4616129397091597767.exit.i", %45 %.sroa.045.0 = phi i1 [ true, %45 ], [ true, %"_ZN4core3ptr106drop_in_place$LT$indexmap..map..iter..IntoIter$LT$alloc..string..String$C$serde_json..value..Value$GT$$GT$17h38b9c4ced7951fc3E.llvm.4616129397091597767.exit.i" ], [ false, %"_ZN4core3ptr106drop_in_place$LT$indexmap..map..iter..IntoIter$LT$alloc..string..String$C$serde_json..value..Value$GT$$GT$17h38b9c4ced7951fc3E.llvm.4616129397091597767.exit.i140" ] @@ -1608,14 +1608,14 @@ define hidden void @"_ZN105_$LT$meilisearch_types..settings..MinWordSizeTyposSet %.sroa.10.sroa.6.0..sroa.10.0..sroa_idx165.sroa_idx = getelementptr inbounds nuw i8, ptr %36, i64 32 br label %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i" -"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i": ; preds = %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i.lr.ph", %199 - %76 = phi ptr [ %56, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i.lr.ph" ], [ %201, %199 ] - %.sroa.020.0520 = phi i8 [ 2, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i.lr.ph" ], [ %.sroa.020.1425, %199 ] - %.sroa.522.0519 = phi i8 [ undef, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i.lr.ph" ], [ %.sroa.522.1424, %199 ] - %.sroa.023.0518 = phi i8 [ 2, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i.lr.ph" ], [ %.sroa.023.1423, %199 ] - %.sroa.525.0517 = phi i8 [ undef, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i.lr.ph" ], [ %.sroa.525.1422, %199 ] - %.sroa.11152.0516 = phi i8 [ undef, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i.lr.ph" ], [ %.sroa.11152.1421, %199 ] - %.sroa.11237.0515 = phi i8 [ undef, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i.lr.ph" ], [ %.sroa.11237.1418, %199 ] +"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i": ; preds = %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i.lr.ph", %197 + %76 = phi ptr [ %56, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i.lr.ph" ], [ %199, %197 ] + %.sroa.020.0520 = phi i8 [ 2, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i.lr.ph" ], [ %.sroa.020.1425, %197 ] + %.sroa.522.0519 = phi i8 [ undef, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i.lr.ph" ], [ %.sroa.522.1424, %197 ] + %.sroa.023.0518 = phi i8 [ 2, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i.lr.ph" ], [ %.sroa.023.1423, %197 ] + %.sroa.525.0517 = phi i8 [ undef, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i.lr.ph" ], [ %.sroa.525.1422, %197 ] + %.sroa.11152.0516 = phi i8 [ undef, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i.lr.ph" ], [ %.sroa.11152.1421, %197 ] + %.sroa.11237.0515 = phi i8 [ undef, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i.lr.ph" ], [ %.sroa.11237.1418, %197 ] call void @llvm.experimental.noalias.scope.decl(metadata !133) call void @llvm.experimental.noalias.scope.decl(metadata !135) call void @llvm.experimental.noalias.scope.decl(metadata !137) @@ -1623,13 +1623,13 @@ define hidden void @"_ZN105_$LT$meilisearch_types..settings..MinWordSizeTyposSet store ptr %77, ptr %54, align 8, !alias.scope !139, !noalias !129 %.sroa.0.0.copyload1.i.i = load i64, ptr %76, align 8, !noalias !140 %78 = icmp eq i64 %.sroa.0.0.copyload1.i.i, -9223372036854775808 - br i1 %78, label %._crit_edge.loopexit.split.loop.exit545, label %92 + br i1 %78, label %._crit_edge.loopexit.split.loop.exit542, label %88 79: ; preds = %.loopexit461, %.loopexit.split-lp462, %.thread399 %.sroa.045.4 = phi i1 [ %.sroa.045.8, %.thread399 ], [ true, %.loopexit461 ], [ false, %.loopexit.split-lp462 ] %.pn64 = phi { ptr, i32 } [ %.pn, %.thread399 ], [ %lpad.loopexit463, %.loopexit461 ], [ %lpad.loopexit.split-lp464, %.loopexit.split-lp462 ] invoke void @"_ZN4core3ptr46drop_in_place$LT$serde_json..map..IntoIter$GT$17hc876593003252f2cE"(ptr noalias noundef nonnull align 8 dereferenceable(32) %39) #41 - to label %.body unwind label %221 + to label %.body unwind label %219 .loopexit461: ; preds = %.thread408 %lpad.loopexit463 = landingpad { ptr, i32 } @@ -1641,67 +1641,56 @@ define hidden void @"_ZN105_$LT$meilisearch_types..settings..MinWordSizeTyposSet cleanup br label %79 -._crit_edge.loopexit.split.loop.exit545: ; preds = %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i" +._crit_edge.loopexit.split.loop.exit542: ; preds = %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i" %80 = getelementptr inbounds nuw i8, ptr %76, i64 104 - br label %._crit_edge.loopexit - -._crit_edge.loopexit: ; preds = %199, %._crit_edge.loopexit.split.loop.exit545 - %81 = phi ptr [ %80, %._crit_edge.loopexit.split.loop.exit545 ], [ %201, %199 ] - %.sroa.525.0.lcssa.ph = phi i8 [ %.sroa.525.0517, %._crit_edge.loopexit.split.loop.exit545 ], [ %.sroa.525.1422, %199 ] - %.sroa.023.0.lcssa.ph = phi i8 [ %.sroa.023.0518, %._crit_edge.loopexit.split.loop.exit545 ], [ %.sroa.023.1423, %199 ] - %.sroa.522.0.lcssa.ph = phi i8 [ %.sroa.522.0519, %._crit_edge.loopexit.split.loop.exit545 ], [ %.sroa.522.1424, %199 ] - %.sroa.020.0.lcssa.ph = phi i8 [ %.sroa.020.0520, %._crit_edge.loopexit.split.loop.exit545 ], [ %.sroa.020.1425, %199 ] - %82 = zext nneg i8 %.sroa.023.0.lcssa.ph to i32 - %83 = shl nuw nsw i32 %82, 16 - %84 = zext nneg i8 %.sroa.020.0.lcssa.ph to i32 br label %._crit_edge -._crit_edge: ; preds = %._crit_edge.loopexit, %52 - %85 = phi ptr [ %56, %52 ], [ %81, %._crit_edge.loopexit ] - %.sroa.525.0.lcssa = phi i8 [ undef, %52 ], [ %.sroa.525.0.lcssa.ph, %._crit_edge.loopexit ] - %.sroa.023.0.lcssa = phi i32 [ 131072, %52 ], [ %83, %._crit_edge.loopexit ] - %.sroa.522.0.lcssa = phi i8 [ undef, %52 ], [ %.sroa.522.0.lcssa.ph, %._crit_edge.loopexit ] - %.sroa.020.0.lcssa = phi i32 [ 2, %52 ], [ %84, %._crit_edge.loopexit ] +._crit_edge: ; preds = %197, %._crit_edge.loopexit.split.loop.exit542, %52 + %81 = phi ptr [ %56, %52 ], [ %80, %._crit_edge.loopexit.split.loop.exit542 ], [ %199, %197 ] + %.sroa.525.0.lcssa = phi i8 [ undef, %52 ], [ %.sroa.525.0517, %._crit_edge.loopexit.split.loop.exit542 ], [ %.sroa.525.1422, %197 ] + %.sroa.023.0.lcssa = phi i8 [ 2, %52 ], [ %.sroa.023.0518, %._crit_edge.loopexit.split.loop.exit542 ], [ %.sroa.023.1423, %197 ] + %.sroa.522.0.lcssa = phi i8 [ undef, %52 ], [ %.sroa.522.0519, %._crit_edge.loopexit.split.loop.exit542 ], [ %.sroa.522.1424, %197 ] + %.sroa.020.0.lcssa = phi i8 [ 2, %52 ], [ %.sroa.020.0520, %._crit_edge.loopexit.split.loop.exit542 ], [ %.sroa.020.1425, %197 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %.sroa.7) call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %.sroa.8146) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21), !noalias !141 store ptr %39, ptr %21, align 8, !noalias !141 - %86 = invoke noundef i64 @_ZN4core4iter6traits10exact_size17ExactSizeIterator3len17hde05e5919f9ad533E.llvm.3021571406010367114(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %39) - to label %89 unwind label %87 + %82 = invoke noundef i64 @_ZN4core4iter6traits10exact_size17ExactSizeIterator3len17hde05e5919f9ad533E.llvm.3021571406010367114(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %39) + to label %85 unwind label %83 -87: ; preds = %89, %._crit_edge - %88 = landingpad { ptr, i32 } +83: ; preds = %85, %._crit_edge + %84 = landingpad { ptr, i32 } cleanup invoke void @"_ZN157_$LT$$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd25fe6a53bb16c8bE.llvm.4616129397091597767"(ptr noalias noundef nonnull align 8 dereferenceable(8) %21) - to label %.body unwind label %90 + to label %.body unwind label %86 -89: ; preds = %._crit_edge - invoke void @"_ZN4core3ptr103drop_in_place$LT$$u5b$indexmap..Bucket$LT$alloc..string..String$C$serde_json..value..Value$GT$$u5d$$GT$17he37116cab0fa664cE.llvm.4616129397091597767"(ptr noalias noundef nonnull align 8 %85, i64 noundef %86) - to label %"_ZN4core3ptr106drop_in_place$LT$indexmap..map..iter..IntoIter$LT$alloc..string..String$C$serde_json..value..Value$GT$$GT$17h38b9c4ced7951fc3E.llvm.4616129397091597767.exit.i" unwind label %87 +85: ; preds = %._crit_edge + invoke void @"_ZN4core3ptr103drop_in_place$LT$$u5b$indexmap..Bucket$LT$alloc..string..String$C$serde_json..value..Value$GT$$u5d$$GT$17he37116cab0fa664cE.llvm.4616129397091597767"(ptr noalias noundef nonnull align 8 %81, i64 noundef %82) + to label %"_ZN4core3ptr106drop_in_place$LT$indexmap..map..iter..IntoIter$LT$alloc..string..String$C$serde_json..value..Value$GT$$GT$17h38b9c4ced7951fc3E.llvm.4616129397091597767.exit.i" unwind label %83 -90: ; preds = %87 - %91 = landingpad { ptr, i32 } +86: ; preds = %83 + %87 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() #42 unreachable -"_ZN4core3ptr106drop_in_place$LT$indexmap..map..iter..IntoIter$LT$alloc..string..String$C$serde_json..value..Value$GT$$GT$17h38b9c4ced7951fc3E.llvm.4616129397091597767.exit.i": ; preds = %89 +"_ZN4core3ptr106drop_in_place$LT$indexmap..map..iter..IntoIter$LT$alloc..string..String$C$serde_json..value..Value$GT$$GT$17h38b9c4ced7951fc3E.llvm.4616129397091597767.exit.i": ; preds = %85 invoke void @"_ZN157_$LT$$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd25fe6a53bb16c8bE.llvm.4616129397091597767"(ptr noalias noundef nonnull align 8 dereferenceable(8) %21) - to label %96 unwind label %50 + to label %92 unwind label %50 -92: ; preds = %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i" +88: ; preds = %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i" %.sroa.6.0..sroa_idx2.i.i = getelementptr inbounds nuw i8, ptr %76, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.7, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.6.0..sroa_idx2.i.i, i64 16, i1 false), !noalias !150 - %93 = getelementptr inbounds nuw i8, ptr %76, i64 24 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %.sroa.8146, ptr noundef nonnull align 8 dereferenceable(72) %93, i64 72, i1 false), !noalias !150 + %89 = getelementptr inbounds nuw i8, ptr %76, i64 24 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %.sroa.8146, ptr noundef nonnull align 8 dereferenceable(72) %89, i64 72, i1 false), !noalias !150 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %38) store i64 %.sroa.0.0.copyload1.i.i, ptr %38, align 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.7.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.7, i64 16, i1 false) call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %37) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %37, ptr noundef nonnull align 8 dereferenceable(72) %.sroa.8146, i64 72, i1 false) - %94 = load ptr, ptr %.sroa.7.0..sroa_idx, align 8, !nonnull !5, !noundef !5 - %95 = load i64, ptr %58, align 8, !noundef !5 - switch i64 %95, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111.thread" [ + %90 = load ptr, ptr %.sroa.7.0..sroa_idx, align 8, !nonnull !5, !noundef !5 + %91 = load i64, ptr %58, align 8, !noundef !5 + switch i64 %91, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111.thread" [ i64 7, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit" i64 8, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111" ] @@ -1712,61 +1701,61 @@ define hidden void @"_ZN105_$LT$meilisearch_types..settings..MinWordSizeTyposSet call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) %.old = load i64, ptr %1, align 8, !range !4, !noundef !5 %.old91 = icmp sgt i64 %.old, -9223372036854775802 - br i1 %.old91, label %126, label %.sink.split + br i1 %.old91, label %124, label %.sink.split -96: ; preds = %"_ZN4core3ptr106drop_in_place$LT$indexmap..map..iter..IntoIter$LT$alloc..string..String$C$serde_json..value..Value$GT$$GT$17h38b9c4ced7951fc3E.llvm.4616129397091597767.exit.i" +92: ; preds = %"_ZN4core3ptr106drop_in_place$LT$indexmap..map..iter..IntoIter$LT$alloc..string..String$C$serde_json..value..Value$GT$$GT$17h38b9c4ced7951fc3E.llvm.4616129397091597767.exit.i" call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21), !noalias !141 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) - %97 = load i64, ptr %41, align 8, !range !6, !noundef !5 - %98 = icmp eq i64 %97, -9223372036854775808 - br i1 %98, label %"_ZN6deserr19FieldState$LT$T$GT$6unwrap17h080d3852bc07cf2dE.exit102", label %99 + %93 = load i64, ptr %41, align 8, !range !6, !noundef !5 + %94 = icmp eq i64 %93, -9223372036854775808 + br i1 %94, label %"_ZN6deserr19FieldState$LT$T$GT$6unwrap17h080d3852bc07cf2dE.exit102", label %95 -99: ; preds = %96 +95: ; preds = %92 %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %41, i64 8 %.sroa.2.0.copyload = load i32, ptr %.sroa.2.0..sroa_idx, align 8 %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %41, i64 12 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(20) %.sroa.631, ptr noundef nonnull align 4 dereferenceable(20) %.sroa.3.0..sroa_idx, i64 20, i1 false) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) - br label %114 + br label %112 -"_ZN6deserr19FieldState$LT$T$GT$6unwrap17h080d3852bc07cf2dE.exit102": ; preds = %96 - %.sroa.018.0.insert.insert = or disjoint i32 %.sroa.023.0.lcssa, %.sroa.020.0.lcssa +"_ZN6deserr19FieldState$LT$T$GT$6unwrap17h080d3852bc07cf2dE.exit102": ; preds = %92 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %.sroa.11331.sroa.0) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 8 dereferenceable(32) %2, i64 32, i1 false) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) - %or.cond.i = icmp eq i32 %.sroa.018.0.insert.insert, 0 - br i1 %or.cond.i, label %105, label %.thread387 - -.body105: ; preds = %215, %111, %102, %223, %.body - %.sroa.042.1 = phi i1 [ false, %223 ], [ false, %.body ], [ %104, %102 ], [ false, %111 ], [ false, %215 ] - %.pn70 = phi { ptr, i32 } [ %.pn68, %223 ], [ %.pn68, %.body ], [ %103, %102 ], [ %lpad.thr_comm.i, %111 ], [ %216, %215 ] - %100 = load i64, ptr %1, align 8, !range !4 - %101 = icmp sgt i64 %100, -9223372036854775802 - %or.cond95 = select i1 %.sroa.042.1, i1 true, i1 %101 - br i1 %or.cond95, label %226, label %227 - -102: ; preds = %_ZN5alloc3fmt6format17h7fed6a266585da9dE.exit.i, %46 - %103 = landingpad { ptr, i32 } + %96 = or i8 %.sroa.020.0.lcssa, %.sroa.023.0.lcssa + %97 = icmp eq i8 %96, 0 + br i1 %97, label %103, label %.thread387 + +.body105: ; preds = %213, %109, %100, %221, %.body + %.sroa.042.1 = phi i1 [ false, %221 ], [ false, %.body ], [ %102, %100 ], [ false, %109 ], [ false, %213 ] + %.pn70 = phi { ptr, i32 } [ %.pn68, %221 ], [ %.pn68, %.body ], [ %101, %100 ], [ %lpad.thr_comm.i, %109 ], [ %214, %213 ] + %98 = load i64, ptr %1, align 8, !range !4 + %99 = icmp sgt i64 %98, -9223372036854775802 + %or.cond95 = select i1 %.sroa.042.1, i1 true, i1 %99 + br i1 %or.cond95, label %224, label %225 + +100: ; preds = %_ZN5alloc3fmt6format17h7fed6a266585da9dE.exit.i, %46 + %101 = landingpad { ptr, i32 } cleanup - %104 = xor i1 %44, true + %102 = xor i1 %44, true br label %.body105 -105: ; preds = %"_ZN6deserr19FieldState$LT$T$GT$6unwrap17h080d3852bc07cf2dE.exit102" +103: ; preds = %"_ZN6deserr19FieldState$LT$T$GT$6unwrap17h080d3852bc07cf2dE.exit102" call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20), !noalias !160 store i8 %.sroa.522.0.lcssa, ptr %20, align 1, !noalias !160 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19), !noalias !160 store i8 %.sroa.525.0.lcssa, ptr %19, align 1, !noalias !160 - %106 = icmp ugt i8 %.sroa.522.0.lcssa, %.sroa.525.0.lcssa - br i1 %106, label %108, label %107 + %104 = icmp ugt i8 %.sroa.522.0.lcssa, %.sroa.525.0.lcssa + br i1 %104, label %106, label %105 -107: ; preds = %105 +105: ; preds = %103 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19), !noalias !160 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20), !noalias !160 br label %.thread387 -108: ; preds = %105 +106: ; preds = %103 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %18), !noalias !160 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17), !noalias !160 store i64 -9223372036854775808, ptr %17, align 8, !noalias !160 @@ -1775,8 +1764,8 @@ define hidden void @"_ZN105_$LT$meilisearch_types..settings..MinWordSizeTyposSet store ptr %20, ptr %14, align 8, !noalias !160 %.sroa.420.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %14, i64 8 store ptr @"_ZN4core3fmt3num3imp51_$LT$impl$u20$core..fmt..Display$u20$for$u20$u8$GT$3fmt17h863fba6a29561d2aE", ptr %.sroa.420.0..sroa_idx.i, align 8, !noalias !160 - %109 = getelementptr inbounds nuw i8, ptr %14, i64 16 - store ptr %19, ptr %109, align 8, !noalias !160 + %107 = getelementptr inbounds nuw i8, ptr %14, i64 16 + store ptr %19, ptr %107, align 8, !noalias !160 %.sroa.424.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %14, i64 24 store ptr @"_ZN4core3fmt3num3imp51_$LT$impl$u20$core..fmt..Display$u20$for$u20$u8$GT$3fmt17h863fba6a29561d2aE", ptr %.sroa.424.0..sroa_idx.i, align 8, !noalias !160 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %13), !noalias !164 @@ -1790,52 +1779,52 @@ define hidden void @"_ZN105_$LT$meilisearch_types..settings..MinWordSizeTyposSet %.sroa.10.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %13, i64 32 store ptr null, ptr %.sroa.10.0..sroa_idx.i, align 8, !noalias !175 invoke void @_ZN5alloc3fmt6format12format_inner17h77a68f64fb1f586eE(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %15, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %13) - to label %_ZN5alloc3fmt6format17h7fed6a266585da9dE.exit.i unwind label %111, !noalias !160 + to label %_ZN5alloc3fmt6format17h7fed6a266585da9dE.exit.i unwind label %109, !noalias !160 -_ZN5alloc3fmt6format17h7fed6a266585da9dE.exit.i: ; preds = %108 +_ZN5alloc3fmt6format17h7fed6a266585da9dE.exit.i: ; preds = %106 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %13), !noalias !164 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14), !noalias !160 - %110 = getelementptr inbounds nuw i8, ptr %16, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %110, ptr noundef nonnull align 8 dereferenceable(24) %15, i64 24, i1 false), !noalias !160 + %108 = getelementptr inbounds nuw i8, ptr %16, i64 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %108, ptr noundef nonnull align 8 dereferenceable(24) %15, i64 24, i1 false), !noalias !160 store i64 -9223372036854775800, ptr %16, align 8, !noalias !160 invoke void @"_ZN132_$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$C$GT$$u20$as$u20$deserr..DeserializeError$GT$5error17hb59743492ab65b8bE"(ptr noalias noundef nonnull sret([40 x i8]) align 8 captures(none) dereferenceable(40) %18, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(32) %17, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(40) %16, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(32) %22) - to label %117 unwind label %102 + to label %115 unwind label %100 -111: ; preds = %108 +109: ; preds = %106 %lpad.thr_comm.i = landingpad { ptr, i32 } cleanup invoke fastcc void @"_ZN4core3ptr203drop_in_place$LT$core..option..Option$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$$GT$17hfd3baed4537dcd94E"(ptr noalias noundef align 8 dereferenceable(32) %17) #41 - to label %.body105 unwind label %112, !noalias !160 + to label %.body105 unwind label %110, !noalias !160 -112: ; preds = %111 - %113 = landingpad { ptr, i32 } +110: ; preds = %109 + %111 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() #42, !noalias !160 unreachable -114: ; preds = %99, %224 - %.sroa.9.2 = phi i32 [ %.sroa.2.0.copyload, %99 ], [ %.sroa.528.0.copyload30, %224 ] - %.sroa.07.1 = phi i64 [ %97, %99 ], [ %.sroa.026.0.copyload27, %224 ] +112: ; preds = %95, %222 + %.sroa.9.2 = phi i32 [ %.sroa.2.0.copyload, %95 ], [ %.sroa.528.0.copyload30, %222 ] + %.sroa.07.1 = phi i64 [ %93, %95 ], [ %.sroa.026.0.copyload27, %222 ] store i64 %.sroa.07.1, ptr %0, align 8 %.sroa.254.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store i32 %.sroa.9.2, ptr %.sroa.254.0..sroa_idx, align 8 %.sroa.355.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 12 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(20) %.sroa.355.0..sroa_idx, ptr noundef nonnull align 4 dereferenceable(20) %.sroa.631, i64 20, i1 false) - %115 = load i64, ptr %1, align 8, !range !4 - %116 = icmp slt i64 %115, -9223372036854775801 - %or.cond92.not = select i1 %44, i1 %116, i1 false - br i1 %or.cond92.not, label %.sink.split, label %126 + %113 = load i64, ptr %1, align 8, !range !4 + %114 = icmp slt i64 %113, -9223372036854775801 + %or.cond92.not = select i1 %44, i1 %114, i1 false + br i1 %or.cond92.not, label %.sink.split, label %124 -.thread387: ; preds = %107, %"_ZN6deserr19FieldState$LT$T$GT$6unwrap17h080d3852bc07cf2dE.exit102" +.thread387: ; preds = %105, %"_ZN6deserr19FieldState$LT$T$GT$6unwrap17h080d3852bc07cf2dE.exit102" call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) - br label %120 + br label %118 -117: ; preds = %_ZN5alloc3fmt6format17h7fed6a266585da9dE.exit.i +115: ; preds = %_ZN5alloc3fmt6format17h7fed6a266585da9dE.exit.i call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %16), !noalias !160 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17), !noalias !160 - %118 = getelementptr inbounds nuw i8, ptr %18, i64 8 - %.sroa.0371.0.copyload = load i64, ptr %118, align 8, !noalias !160 + %116 = getelementptr inbounds nuw i8, ptr %18, i64 8 + %.sroa.0371.0.copyload = load i64, ptr %116, align 8, !noalias !160 %.sroa.4372.0..sroa_idx = getelementptr inbounds nuw i8, ptr %18, i64 16 %.sroa.4372.0.copyload = load i32, ptr %.sroa.4372.0..sroa_idx, align 8, !noalias !160 %.sroa.5373.0..sroa_idx = getelementptr inbounds nuw i8, ptr %18, i64 20 @@ -1843,46 +1832,47 @@ _ZN5alloc3fmt6format17h7fed6a266585da9dE.exit.i: ; preds = %108 %.sroa.6374.0..sroa_idx = getelementptr inbounds nuw i8, ptr %18, i64 32 %.sroa.6374.0.copyload = load i8, ptr %.sroa.6374.0..sroa_idx, align 8, !noalias !160 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %18), !noalias !160 + %.sroa.6328.sroa.0.0.extract.trunc = trunc i32 %.sroa.4372.0.copyload to i8 + %.sroa.6328.sroa.6.0.extract.shift = lshr i32 %.sroa.4372.0.copyload, 8 + %.sroa.6328.sroa.6.0.extract.trunc = trunc i32 %.sroa.6328.sroa.6.0.extract.shift to i8 + %.sroa.6328.sroa.7.0.extract.shift = lshr i32 %.sroa.4372.0.copyload, 16 + %.sroa.6328.sroa.7.0.extract.trunc = trunc i32 %.sroa.6328.sroa.7.0.extract.shift to i8 + %.sroa.6328.sroa.8.0.extract.shift = lshr i32 %.sroa.4372.0.copyload, 24 + %.sroa.6328.sroa.8.0.extract.trunc = trunc nuw i32 %.sroa.6328.sroa.8.0.extract.shift to i8 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19), !noalias !160 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20), !noalias !160 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) - %119 = icmp eq i64 %.sroa.0371.0.copyload, -9223372036854775808 - br i1 %119, label %._crit_edge537, label %125 - -._crit_edge537: ; preds = %117 - %.sroa.6328.sroa.8.0.extract.shift = lshr i32 %.sroa.4372.0.copyload, 24 - %.sroa.6328.sroa.8.0.extract.trunc = trunc nuw i32 %.sroa.6328.sroa.8.0.extract.shift to i8 - %.sroa.6328.sroa.6.0.extract.shift = lshr i32 %.sroa.4372.0.copyload, 8 - %.sroa.6328.sroa.6.0.extract.trunc = trunc i32 %.sroa.6328.sroa.6.0.extract.shift to i8 - %.pre = and i32 %.sroa.4372.0.copyload, 16711680 - %.pre539 = and i32 %.sroa.4372.0.copyload, 255 - br label %120 - -120: ; preds = %._crit_edge537, %.thread387 - %.sroa.6328.sroa.0.0.insert.ext333.pre-phi = phi i32 [ %.pre539, %._crit_edge537 ], [ %.sroa.020.0.lcssa, %.thread387 ] - %.sroa.6328.sroa.7.0.insert.shift341.pre-phi = phi i32 [ %.pre, %._crit_edge537 ], [ %.sroa.023.0.lcssa, %.thread387 ] - %.sroa.6328.sroa.8.0397 = phi i8 [ %.sroa.6328.sroa.8.0.extract.trunc, %._crit_edge537 ], [ %.sroa.525.0.lcssa, %.thread387 ] - %.sroa.6328.sroa.6.0395 = phi i8 [ %.sroa.6328.sroa.6.0.extract.trunc, %._crit_edge537 ], [ %.sroa.522.0.lcssa, %.thread387 ] + %117 = icmp eq i64 %.sroa.0371.0.copyload, -9223372036854775808 + br i1 %117, label %118, label %123 + +118: ; preds = %.thread387, %115 + %.sroa.6328.sroa.8.0397 = phi i8 [ %.sroa.525.0.lcssa, %.thread387 ], [ %.sroa.6328.sroa.8.0.extract.trunc, %115 ] + %.sroa.6328.sroa.7.0396 = phi i8 [ %.sroa.023.0.lcssa, %.thread387 ], [ %.sroa.6328.sroa.7.0.extract.trunc, %115 ] + %.sroa.6328.sroa.6.0395 = phi i8 [ %.sroa.522.0.lcssa, %.thread387 ], [ %.sroa.6328.sroa.6.0.extract.trunc, %115 ] + %.sroa.6328.sroa.0.0394 = phi i8 [ %.sroa.020.0.lcssa, %.thread387 ], [ %.sroa.6328.sroa.0.0.extract.trunc, %115 ] %.sroa.6328.sroa.8.0.insert.ext344 = zext i8 %.sroa.6328.sroa.8.0397 to i32 %.sroa.6328.sroa.8.0.insert.shift345 = shl nuw i32 %.sroa.6328.sroa.8.0.insert.ext344, 24 - %.sroa.6328.sroa.7.0.insert.insert343 = or disjoint i32 %.sroa.6328.sroa.7.0.insert.shift341.pre-phi, %.sroa.6328.sroa.8.0.insert.shift345 + %.sroa.6328.sroa.7.0.insert.ext340 = zext i8 %.sroa.6328.sroa.7.0396 to i32 + %.sroa.6328.sroa.7.0.insert.shift341 = shl nuw nsw i32 %.sroa.6328.sroa.7.0.insert.ext340, 16 + %.sroa.6328.sroa.7.0.insert.insert343 = or disjoint i32 %.sroa.6328.sroa.7.0.insert.shift341, %.sroa.6328.sroa.8.0.insert.shift345 %.sroa.6328.sroa.6.0.insert.ext336 = zext i8 %.sroa.6328.sroa.6.0395 to i32 %.sroa.6328.sroa.6.0.insert.shift337 = shl nuw nsw i32 %.sroa.6328.sroa.6.0.insert.ext336, 8 %.sroa.6328.sroa.6.0.insert.insert339 = or disjoint i32 %.sroa.6328.sroa.7.0.insert.insert343, %.sroa.6328.sroa.6.0.insert.shift337 - %.sroa.6328.sroa.0.0.insert.insert335 = or disjoint i32 %.sroa.6328.sroa.6.0.insert.insert339, %.sroa.6328.sroa.0.0.insert.ext333.pre-phi - %121 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i32 %.sroa.6328.sroa.0.0.insert.insert335, ptr %121, align 8 + %.sroa.6328.sroa.0.0.insert.ext333 = zext i8 %.sroa.6328.sroa.0.0394 to i32 + %.sroa.6328.sroa.0.0.insert.insert335 = or disjoint i32 %.sroa.6328.sroa.6.0.insert.insert339, %.sroa.6328.sroa.0.0.insert.ext333 + %119 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i32 %.sroa.6328.sroa.0.0.insert.insert335, ptr %119, align 8 store i64 -9223372036854775808, ptr %0, align 8 - br label %122 + br label %120 -122: ; preds = %125, %120 +120: ; preds = %123, %118 call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %.sroa.11331.sroa.0) - %123 = load i64, ptr %1, align 8, !range !4, !noundef !5 - %124 = icmp sgt i64 %123, -9223372036854775802 - br i1 %124, label %126, label %.sink.split + %121 = load i64, ptr %1, align 8, !range !4, !noundef !5 + %122 = icmp sgt i64 %121, -9223372036854775802 + br i1 %122, label %124, label %.sink.split -125: ; preds = %117 +123: ; preds = %115 %.sroa.7368.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 12 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.sroa.7368.0..sroa_idx, ptr noundef nonnull align 4 dereferenceable(12) %.sroa.11331.sroa.0, i64 12, i1 false) store i64 %.sroa.0371.0.copyload, ptr %0, align 8 @@ -1890,62 +1880,62 @@ _ZN5alloc3fmt6format17h7fed6a266585da9dE.exit.i: ; preds = %108 store i32 %.sroa.4372.0.copyload, ptr %.sroa.5367.0..sroa_idx, align 8 %.sroa.9369.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 store i8 %.sroa.6374.0.copyload, ptr %.sroa.9369.0..sroa_idx, align 8 - br label %122 + br label %120 -.sink.split: ; preds = %.critedge86, %114, %122 +.sink.split: ; preds = %.critedge86, %112, %120 call void @"_ZN4core3ptr73drop_in_place$LT$deserr..value..Value$LT$serde_json..value..Value$GT$$GT$17h42e8fd0d158193feE.llvm.784653754634180241"(ptr noalias noundef nonnull align 8 dereferenceable(72) %1) - br label %126 + br label %124 -126: ; preds = %.sink.split, %.critedge86, %114, %122 +124: ; preds = %.sink.split, %.critedge86, %112, %120 ret void -.thread399.loopexit: ; preds = %170, %169, %148, %147 +.thread399.loopexit: ; preds = %168, %167, %146, %145 %lpad.loopexit = landingpad { ptr, i32 } cleanup br label %.thread399 -.thread399.loopexit.split-lp: ; preds = %178, %156 +.thread399.loopexit.split-lp: ; preds = %176, %154 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup br label %.thread399 -"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit": ; preds = %92 - %bcmp.i = call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(7) %94, ptr noundef nonnull dereferenceable(7) @anon.880c932b6d26fbcc815883ce24785fc3.10, i64 7), !alias.scope !177 - %127 = icmp eq i32 %bcmp.i, 0 - br i1 %127, label %128, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111.thread" +"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit": ; preds = %88 + %bcmp.i = call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(7) %90, ptr noundef nonnull dereferenceable(7) @anon.880c932b6d26fbcc815883ce24785fc3.10, i64 7), !alias.scope !177 + %125 = icmp eq i32 %bcmp.i, 0 + br i1 %125, label %126, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111.thread" -128: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit" +126: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit" call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %36) %.sroa.0156.0.copyload = load i64, ptr %37, align 8 %.sroa.5.0.copyload = load i64, ptr %.sroa.5243.0..sroa_idx, align 8 %.sroa.9.0.copyload = load i64, ptr %.sroa.9247.0..sroa_idx, align 8 %.sroa.10.sroa.0.0.copyload = load i64, ptr %.sroa.10252.0..sroa_idx, align 8 call void @llvm.experimental.noalias.scope.decl(metadata !181) - %129 = xor i64 %.sroa.0156.0.copyload, -9223372036854775808 - %130 = call i64 @llvm.umin.i64(i64 %129, i64 5) - switch i64 %130, label %default.unreachable [ - i64 0, label %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit.thread541" - i64 1, label %131 - i64 2, label %132 - i64 3, label %133 - i64 4, label %134 + %127 = xor i64 %.sroa.0156.0.copyload, -9223372036854775808 + %128 = call i64 @llvm.umin.i64(i64 %127, i64 5) + switch i64 %128, label %default.unreachable [ + i64 0, label %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit.thread538" + i64 1, label %129 + i64 2, label %130 + i64 3, label %131 + i64 4, label %132 i64 5, label %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit" ] -default.unreachable: ; preds = %136, %128 +default.unreachable: ; preds = %134, %126 unreachable -"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit.thread541": ; preds = %128 +"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit.thread538": ; preds = %126 store i64 -9223372036854775808, ptr %36, align 8, !alias.scope !184, !noalias !181 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %35) - br label %169 + br label %167 -131: ; preds = %128 +129: ; preds = %126 %.sroa.5.sroa.0.0.extract.trunc = trunc i64 %.sroa.5.0.copyload to i8 store i8 %.sroa.5.sroa.0.0.extract.trunc, ptr %.sroa.5.0..sroa_idx158, align 8, !alias.scope !184, !noalias !181 br label %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit.thread" -132: ; preds = %128 +130: ; preds = %126 store i64 %.sroa.9.0.copyload, ptr %.sroa.5.0..sroa_idx158, align 8, !alias.scope !184, !noalias !181 %switch.selectcmp.i = icmp eq i64 %.sroa.5.0.copyload, 2 %switch.select.i = select i1 %switch.selectcmp.i, i64 -9223372036854775804, i64 -9223372036854775805 @@ -1953,67 +1943,67 @@ default.unreachable: ; preds = %136, %128 %switch.select11.i = select i1 %switch.selectcmp10.i, i64 -9223372036854775806, i64 %switch.select.i br label %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit.thread" -133: ; preds = %128 +131: ; preds = %126 store i64 %.sroa.5.0.copyload, ptr %.sroa.5.0..sroa_idx158, align 8, !alias.scope !186 store i64 %.sroa.9.0.copyload, ptr %.sroa.9.0..sroa_idx161, align 8, !alias.scope !186 store i64 %.sroa.10.sroa.0.0.copyload, ptr %.sroa.10.0..sroa_idx165, align 8, !alias.scope !186 br label %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit.thread" -134: ; preds = %128 +132: ; preds = %126 store i64 %.sroa.5.0.copyload, ptr %.sroa.5.0..sroa_idx158, align 8, !alias.scope !186 store i64 %.sroa.9.0.copyload, ptr %.sroa.9.0..sroa_idx161, align 8, !alias.scope !186 store i64 %.sroa.10.sroa.0.0.copyload, ptr %.sroa.10.0..sroa_idx165, align 8, !alias.scope !186 br label %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit.thread" -"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111": ; preds = %92 - %bcmp.i110 = call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(8) %94, ptr noundef nonnull dereferenceable(8) @anon.880c932b6d26fbcc815883ce24785fc3.11, i64 8), !alias.scope !187 - %135 = icmp eq i32 %bcmp.i110, 0 - br i1 %135, label %136, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111.thread" +"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111": ; preds = %88 + %bcmp.i110 = call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(8) %90, ptr noundef nonnull dereferenceable(8) @anon.880c932b6d26fbcc815883ce24785fc3.11, i64 8), !alias.scope !187 + %133 = icmp eq i32 %bcmp.i110, 0 + br i1 %133, label %134, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111.thread" -"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111.thread": ; preds = %92, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111" +"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111.thread": ; preds = %88, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111" call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %30) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %29) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull align 8 dereferenceable(32) %41, i64 32, i1 false) call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %28) - store ptr %94, ptr %67, align 8 - store i64 %95, ptr %68, align 8 + store ptr %90, ptr %67, align 8 + store i64 %91, ptr %68, align 8 store ptr @anon.880c932b6d26fbcc815883ce24785fc3.13, ptr %69, align 8 store i64 2, ptr %70, align 8 store i64 -9223372036854775800, ptr %28, align 8 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 8 dereferenceable(32) %2, i64 32, i1 false) invoke void @"_ZN132_$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$C$GT$$u20$as$u20$deserr..DeserializeError$GT$5error17hff368a789edfaba3E"(ptr noalias noundef nonnull sret([40 x i8]) align 8 captures(none) dereferenceable(40) %30, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(32) %29, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(88) %28, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(32) %27) - to label %143 unwind label %220 + to label %141 unwind label %218 -136: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111" +134: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111" call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %33) %.sroa.0241.0.copyload = load i64, ptr %37, align 8 %.sroa.5243.0.copyload = load i64, ptr %.sroa.5243.0..sroa_idx, align 8 %.sroa.9247.0.copyload = load i64, ptr %.sroa.9247.0..sroa_idx, align 8 %.sroa.10252.sroa.0.0.copyload = load i64, ptr %.sroa.10252.0..sroa_idx, align 8 call void @llvm.experimental.noalias.scope.decl(metadata !191) - %137 = xor i64 %.sroa.0241.0.copyload, -9223372036854775808 - %138 = call i64 @llvm.umin.i64(i64 %137, i64 5) - switch i64 %138, label %default.unreachable [ - i64 0, label %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122.thread540" - i64 1, label %139 - i64 2, label %140 - i64 3, label %141 - i64 4, label %142 + %135 = xor i64 %.sroa.0241.0.copyload, -9223372036854775808 + %136 = call i64 @llvm.umin.i64(i64 %135, i64 5) + switch i64 %136, label %default.unreachable [ + i64 0, label %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122.thread537" + i64 1, label %137 + i64 2, label %138 + i64 3, label %139 + i64 4, label %140 i64 5, label %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122" ] -"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122.thread540": ; preds = %136 +"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122.thread537": ; preds = %134 store i64 -9223372036854775808, ptr %33, align 8, !alias.scope !194, !noalias !191 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %32) - br label %147 + br label %145 -139: ; preds = %136 +137: ; preds = %134 %.sroa.5243.sroa.0.0.extract.trunc = trunc i64 %.sroa.5243.0.copyload to i8 store i8 %.sroa.5243.sroa.0.0.extract.trunc, ptr %.sroa.5243.0..sroa_idx244, align 8, !alias.scope !194, !noalias !191 br label %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122.thread" -140: ; preds = %136 +138: ; preds = %134 store i64 %.sroa.9247.0.copyload, ptr %.sroa.5243.0..sroa_idx244, align 8, !alias.scope !194, !noalias !191 %switch.selectcmp.i117 = icmp eq i64 %.sroa.5243.0.copyload, 2 %switch.select.i118 = select i1 %switch.selectcmp.i117, i64 -9223372036854775804, i64 -9223372036854775805 @@ -2021,79 +2011,79 @@ default.unreachable: ; preds = %136, %128 %switch.select11.i120 = select i1 %switch.selectcmp10.i119, i64 -9223372036854775806, i64 %switch.select.i118 br label %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122.thread" -141: ; preds = %136 +139: ; preds = %134 store i64 %.sroa.5243.0.copyload, ptr %.sroa.5243.0..sroa_idx244, align 8, !alias.scope !196 store i64 %.sroa.9247.0.copyload, ptr %.sroa.9247.0..sroa_idx248, align 8, !alias.scope !196 store i64 %.sroa.10252.sroa.0.0.copyload, ptr %.sroa.10252.0..sroa_idx253, align 8, !alias.scope !196 br label %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122.thread" -142: ; preds = %136 +140: ; preds = %134 store i64 %.sroa.5243.0.copyload, ptr %.sroa.5243.0..sroa_idx244, align 8, !alias.scope !196 store i64 %.sroa.9247.0.copyload, ptr %.sroa.9247.0..sroa_idx248, align 8, !alias.scope !196 store i64 %.sroa.10252.sroa.0.0.copyload, ptr %.sroa.10252.0..sroa_idx253, align 8, !alias.scope !196 br label %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122.thread" -143: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111.thread" +141: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111.thread" call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %28) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) - %144 = load i64, ptr %30, align 8, !range !55, !noundef !5 - %trunc60 = trunc nuw i64 %144 to i1 - br i1 %trunc60, label %145, label %197 + %142 = load i64, ptr %30, align 8, !range !55, !noundef !5 + %trunc60 = trunc nuw i64 %142 to i1 + br i1 %trunc60, label %143, label %195 -145: ; preds = %143 +143: ; preds = %141 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %71, i64 32, i1 false) call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %30) invoke void @"_ZN4core3ptr45drop_in_place$LT$serde_json..value..Value$GT$17h8c450484c5264072E.llvm.784653754634180241"(ptr noalias noundef nonnull align 8 dereferenceable(72) %37) to label %.critedge unwind label %.loopexit.split-lp -"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122.thread": ; preds = %142, %141, %140, %139 - %.sink = phi i64 [ -9223372036854775802, %142 ], [ -9223372036854775803, %141 ], [ %switch.select11.i120, %140 ], [ -9223372036854775807, %139 ] +"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122.thread": ; preds = %140, %139, %138, %137 + %.sink = phi i64 [ -9223372036854775802, %140 ], [ -9223372036854775803, %139 ], [ %switch.select11.i120, %138 ], [ -9223372036854775807, %137 ] store i64 %.sink, ptr %33, align 8, !alias.scope !194, !noalias !191 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %32) - store ptr %94, ptr %59, align 8 + store ptr %90, ptr %59, align 8 store i64 8, ptr %60, align 8 store ptr %2, ptr %61, align 8 store i64 1, ptr %32, align 8 - br label %148 + br label %146 -"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122": ; preds = %136 +"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122": ; preds = %134 store i64 %.sroa.0241.0.copyload, ptr %33, align 8, !alias.scope !196 store i64 %.sroa.5243.0.copyload, ptr %.sroa.5243.0..sroa_idx244, align 8, !alias.scope !196 store i64 %.sroa.9247.0.copyload, ptr %.sroa.9247.0..sroa_idx248, align 8, !alias.scope !196 store i64 %.sroa.10252.sroa.0.0.copyload, ptr %.sroa.10252.0..sroa_idx253, align 8, !alias.scope !196 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %.sroa.10252.sroa.6.0..sroa.10252.0..sroa_idx253.sroa_idx, ptr noundef nonnull align 8 dereferenceable(40) %74, i64 40, i1 false) - %146 = icmp eq i64 %.sroa.0241.0.copyload, -9223372036854775808 + %144 = icmp eq i64 %.sroa.0241.0.copyload, -9223372036854775808 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %32) - store ptr %94, ptr %59, align 8 + store ptr %90, ptr %59, align 8 store i64 8, ptr %60, align 8 store ptr %2, ptr %61, align 8 store i64 1, ptr %32, align 8 - br i1 %146, label %147, label %148 + br i1 %144, label %145, label %146 -147: ; preds = %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122.thread540", %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122" +145: ; preds = %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122.thread537", %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122" invoke void @"_ZN4core3ptr73drop_in_place$LT$deserr..value..Value$LT$serde_json..value..Value$GT$$GT$17h42e8fd0d158193feE.llvm.1929265744411185926"(ptr noalias noundef nonnull align 8 dereferenceable(72) %33) - to label %166 unwind label %.thread399.loopexit + to label %164 unwind label %.thread399.loopexit -148: ; preds = %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122.thread", %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122" +146: ; preds = %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122.thread", %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122" call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12), !noalias !197 call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %11), !noalias !197 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %11, ptr noundef nonnull align 8 dereferenceable(72) %33, i64 72, i1 false), !noalias !202 invoke void @"_ZN6deserr5impls56_$LT$impl$u20$deserr..Deserr$LT$E$GT$$u20$for$u20$u8$GT$22deserialize_from_value17heb89a1c9d8e27929E"(ptr noalias noundef nonnull sret([32 x i8]) align 8 captures(none) dereferenceable(32) %12, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(72) %11, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(32) %32) to label %.noexc124 unwind label %.thread399.loopexit -.noexc124: ; preds = %148 +.noexc124: ; preds = %146 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %11), !noalias !197 - %149 = load i64, ptr %12, align 8, !range !6, !noalias !197, !noundef !5 - %150 = icmp eq i64 %149, -9223372036854775808 - %151 = load i8, ptr %62, align 8, !noalias !203 - br i1 %150, label %152, label %153 + %147 = load i64, ptr %12, align 8, !range !6, !noalias !197, !noundef !5 + %148 = icmp eq i64 %147, -9223372036854775808 + %149 = load i8, ptr %62, align 8, !noalias !203 + br i1 %148, label %150, label %151 -152: ; preds = %.noexc124 +150: ; preds = %.noexc124 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12), !noalias !197 - br label %166 + br label %164 -153: ; preds = %.noexc124 +151: ; preds = %.noexc124 %.sroa.11237.0..sroa_idx238 = getelementptr inbounds nuw i8, ptr %12, i64 9 %.sroa.11237.0.copyload239 = load i8, ptr %.sroa.11237.0..sroa_idx238, align 1, !noalias !203 %.sroa.13.0..sroa_idx240 = getelementptr inbounds nuw i8, ptr %12, i64 10 @@ -2108,50 +2098,50 @@ default.unreachable: ; preds = %136, %128 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull align 8 dereferenceable(32) %41, i64 32, i1 false) call void @llvm.experimental.noalias.scope.decl(metadata !204) call void @llvm.experimental.noalias.scope.decl(metadata !207) - %154 = load i64, ptr %31, align 8, !range !6, !alias.scope !210, !noalias !211, !noundef !5 - %155 = icmp eq i64 %154, -9223372036854775808 - br i1 %155, label %167, label %156 + %152 = load i64, ptr %31, align 8, !range !6, !alias.scope !210, !noalias !211, !noundef !5 + %153 = icmp eq i64 %152, -9223372036854775808 + br i1 %153, label %165, label %154 -156: ; preds = %153 +154: ; preds = %151 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10), !noalias !214 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h0aaf48f80649e9ddE.llvm.4616129397091597767"(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %10, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %31) to label %.noexc127 unwind label %.thread399.loopexit.split-lp -.noexc127: ; preds = %156 - %157 = getelementptr inbounds nuw i8, ptr %10, i64 8 - %158 = load i64, ptr %157, align 8, !range !6, !noalias !214, !noundef !5 - %159 = icmp eq i64 %158, 0 - br i1 %159, label %"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E.exit.i.i126", label %160 - -160: ; preds = %.noexc127 - %161 = getelementptr inbounds nuw i8, ptr %10, i64 16 - %162 = load i64, ptr %161, align 8, !noalias !214, !noundef !5 - %163 = icmp eq i64 %162, 0 - br i1 %163, label %"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E.exit.i.i126", label %164 - -164: ; preds = %160 - %165 = load ptr, ptr %10, align 8, !noalias !214, !nonnull !5, !noundef !5 - call void @__rust_dealloc(ptr noundef nonnull %165, i64 noundef %162, i64 noundef %158) #43, !noalias !211 +.noexc127: ; preds = %154 + %155 = getelementptr inbounds nuw i8, ptr %10, i64 8 + %156 = load i64, ptr %155, align 8, !range !6, !noalias !214, !noundef !5 + %157 = icmp eq i64 %156, 0 + br i1 %157, label %"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E.exit.i.i126", label %158 + +158: ; preds = %.noexc127 + %159 = getelementptr inbounds nuw i8, ptr %10, i64 16 + %160 = load i64, ptr %159, align 8, !noalias !214, !noundef !5 + %161 = icmp eq i64 %160, 0 + br i1 %161, label %"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E.exit.i.i126", label %162 + +162: ; preds = %158 + %163 = load ptr, ptr %10, align 8, !noalias !214, !nonnull !5, !noundef !5 + call void @__rust_dealloc(ptr noundef nonnull %163, i64 noundef %160, i64 noundef %156) #43, !noalias !211 br label %"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E.exit.i.i126" -"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E.exit.i.i126": ; preds = %164, %160, %.noexc127 +"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E.exit.i.i126": ; preds = %162, %158, %.noexc127 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10), !noalias !214 - br label %167 + br label %165 -166: ; preds = %147, %152 - %.sroa.8234.0.ph = phi i8 [ 1, %147 ], [ 0, %152 ] - %.sroa.11237.2.ph = phi i8 [ %.sroa.11237.0515, %147 ], [ %151, %152 ] +164: ; preds = %145, %150 + %.sroa.8234.0.ph = phi i8 [ 1, %145 ], [ 0, %150 ] + %.sroa.11237.2.ph = phi i8 [ %.sroa.11237.0515, %145 ], [ %149, %150 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %33) br label %.thread408 -167: ; preds = %153, %"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E.exit.i.i126" +165: ; preds = %151, %"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E.exit.i.i126" call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) %.sroa.4323.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 10 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(14) %.sroa.4323.0..sroa_idx, ptr noundef nonnull align 2 dereferenceable(14) %.sroa.10297, i64 14, i1 false) - store i64 %149, ptr %0, align 8 + store i64 %147, ptr %0, align 8 %.sroa.2321.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i8 %151, ptr %.sroa.2321.0..sroa_idx, align 8 + store i8 %149, ptr %.sroa.2321.0..sroa_idx, align 8 %.sroa.3322.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 9 store i8 %.sroa.11237.0.copyload239, ptr %.sroa.3322.0..sroa_idx, align 1 %.sroa.5324.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 @@ -2159,53 +2149,53 @@ default.unreachable: ; preds = %136, %128 call void @llvm.lifetime.end.p0(i64 14, ptr nonnull %.sroa.10297) br label %.critedge -"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit.thread": ; preds = %134, %133, %132, %131 - %.sink552 = phi i64 [ -9223372036854775802, %134 ], [ -9223372036854775803, %133 ], [ %switch.select11.i, %132 ], [ -9223372036854775807, %131 ] - store i64 %.sink552, ptr %36, align 8, !alias.scope !184, !noalias !181 +"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit.thread": ; preds = %132, %131, %130, %129 + %.sink549 = phi i64 [ -9223372036854775802, %132 ], [ -9223372036854775803, %131 ], [ %switch.select11.i, %130 ], [ -9223372036854775807, %129 ] + store i64 %.sink549, ptr %36, align 8, !alias.scope !184, !noalias !181 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %35) - store ptr %94, ptr %63, align 8 + store ptr %90, ptr %63, align 8 store i64 7, ptr %64, align 8 store ptr %2, ptr %65, align 8 store i64 1, ptr %35, align 8 - br label %170 + br label %168 -"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit": ; preds = %128 +"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit": ; preds = %126 store i64 %.sroa.0156.0.copyload, ptr %36, align 8, !alias.scope !186 store i64 %.sroa.5.0.copyload, ptr %.sroa.5.0..sroa_idx158, align 8, !alias.scope !186 store i64 %.sroa.9.0.copyload, ptr %.sroa.9.0..sroa_idx161, align 8, !alias.scope !186 store i64 %.sroa.10.sroa.0.0.copyload, ptr %.sroa.10.0..sroa_idx165, align 8, !alias.scope !186 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %.sroa.10.sroa.6.0..sroa.10.0..sroa_idx165.sroa_idx, ptr noundef nonnull align 8 dereferenceable(40) %75, i64 40, i1 false) - %168 = icmp eq i64 %.sroa.0156.0.copyload, -9223372036854775808 + %166 = icmp eq i64 %.sroa.0156.0.copyload, -9223372036854775808 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %35) - store ptr %94, ptr %63, align 8 + store ptr %90, ptr %63, align 8 store i64 7, ptr %64, align 8 store ptr %2, ptr %65, align 8 store i64 1, ptr %35, align 8 - br i1 %168, label %169, label %170 + br i1 %166, label %167, label %168 -169: ; preds = %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit.thread541", %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit" +167: ; preds = %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit.thread538", %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit" invoke void @"_ZN4core3ptr73drop_in_place$LT$deserr..value..Value$LT$serde_json..value..Value$GT$$GT$17h42e8fd0d158193feE.llvm.1929265744411185926"(ptr noalias noundef nonnull align 8 dereferenceable(72) %36) - to label %188 unwind label %.thread399.loopexit + to label %186 unwind label %.thread399.loopexit -170: ; preds = %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit.thread", %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit" +168: ; preds = %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit.thread", %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit" call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9), !noalias !225 call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %8), !noalias !225 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %8, ptr noundef nonnull align 8 dereferenceable(72) %36, i64 72, i1 false), !noalias !230 invoke void @"_ZN6deserr5impls56_$LT$impl$u20$deserr..Deserr$LT$E$GT$$u20$for$u20$u8$GT$22deserialize_from_value17heb89a1c9d8e27929E"(ptr noalias noundef nonnull sret([32 x i8]) align 8 captures(none) dereferenceable(32) %9, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(72) %8, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(32) %35) to label %.noexc130 unwind label %.thread399.loopexit -.noexc130: ; preds = %170 +.noexc130: ; preds = %168 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %8), !noalias !225 - %171 = load i64, ptr %9, align 8, !range !6, !noalias !225, !noundef !5 - %172 = icmp eq i64 %171, -9223372036854775808 - %173 = load i8, ptr %66, align 8, !noalias !231 - br i1 %172, label %174, label %175 + %169 = load i64, ptr %9, align 8, !range !6, !noalias !225, !noundef !5 + %170 = icmp eq i64 %169, -9223372036854775808 + %171 = load i8, ptr %66, align 8, !noalias !231 + br i1 %170, label %172, label %173 -174: ; preds = %.noexc130 +172: ; preds = %.noexc130 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9), !noalias !225 - br label %188 + br label %186 -175: ; preds = %.noexc130 +173: ; preds = %.noexc130 %.sroa.11152.0..sroa_idx153 = getelementptr inbounds nuw i8, ptr %9, i64 9 %.sroa.11152.0.copyload154 = load i8, ptr %.sroa.11152.0..sroa_idx153, align 1, !noalias !231 %.sroa.13.0..sroa_idx155 = getelementptr inbounds nuw i8, ptr %9, i64 10 @@ -2220,50 +2210,50 @@ default.unreachable: ; preds = %136, %128 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull align 8 dereferenceable(32) %41, i64 32, i1 false) call void @llvm.experimental.noalias.scope.decl(metadata !232) call void @llvm.experimental.noalias.scope.decl(metadata !235) - %176 = load i64, ptr %34, align 8, !range !6, !alias.scope !238, !noalias !239, !noundef !5 - %177 = icmp eq i64 %176, -9223372036854775808 - br i1 %177, label %189, label %178 + %174 = load i64, ptr %34, align 8, !range !6, !alias.scope !238, !noalias !239, !noundef !5 + %175 = icmp eq i64 %174, -9223372036854775808 + br i1 %175, label %187, label %176 -178: ; preds = %175 +176: ; preds = %173 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7), !noalias !242 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h0aaf48f80649e9ddE.llvm.4616129397091597767"(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %34) to label %.noexc134 unwind label %.thread399.loopexit.split-lp -.noexc134: ; preds = %178 - %179 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %180 = load i64, ptr %179, align 8, !range !6, !noalias !242, !noundef !5 - %181 = icmp eq i64 %180, 0 - br i1 %181, label %"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E.exit.i.i133", label %182 - -182: ; preds = %.noexc134 - %183 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %184 = load i64, ptr %183, align 8, !noalias !242, !noundef !5 - %185 = icmp eq i64 %184, 0 - br i1 %185, label %"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E.exit.i.i133", label %186 - -186: ; preds = %182 - %187 = load ptr, ptr %7, align 8, !noalias !242, !nonnull !5, !noundef !5 - call void @__rust_dealloc(ptr noundef nonnull %187, i64 noundef %184, i64 noundef %180) #43, !noalias !239 +.noexc134: ; preds = %176 + %177 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %178 = load i64, ptr %177, align 8, !range !6, !noalias !242, !noundef !5 + %179 = icmp eq i64 %178, 0 + br i1 %179, label %"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E.exit.i.i133", label %180 + +180: ; preds = %.noexc134 + %181 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %182 = load i64, ptr %181, align 8, !noalias !242, !noundef !5 + %183 = icmp eq i64 %182, 0 + br i1 %183, label %"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E.exit.i.i133", label %184 + +184: ; preds = %180 + %185 = load ptr, ptr %7, align 8, !noalias !242, !nonnull !5, !noundef !5 + call void @__rust_dealloc(ptr noundef nonnull %185, i64 noundef %182, i64 noundef %178) #43, !noalias !239 br label %"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E.exit.i.i133" -"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E.exit.i.i133": ; preds = %186, %182, %.noexc134 +"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E.exit.i.i133": ; preds = %184, %180, %.noexc134 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7), !noalias !242 - br label %189 + br label %187 -188: ; preds = %169, %174 - %.sroa.11152.2.ph = phi i8 [ %.sroa.11152.0516, %169 ], [ %173, %174 ] - %.sroa.8149.0.ph = phi i8 [ 1, %169 ], [ 0, %174 ] +186: ; preds = %167, %172 + %.sroa.11152.2.ph = phi i8 [ %.sroa.11152.0516, %167 ], [ %171, %172 ] + %.sroa.8149.0.ph = phi i8 [ 1, %167 ], [ 0, %172 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %36) br label %.thread408 -189: ; preds = %175, %"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E.exit.i.i133" +187: ; preds = %173, %"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E.exit.i.i133" call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) %.sroa.4229.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 10 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(14) %.sroa.4229.0..sroa_idx, ptr noundef nonnull align 2 dereferenceable(14) %.sroa.10204, i64 14, i1 false) - store i64 %171, ptr %0, align 8 + store i64 %169, ptr %0, align 8 %.sroa.2227.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i8 %173, ptr %.sroa.2227.0..sroa_idx, align 8 + store i8 %171, ptr %.sroa.2227.0..sroa_idx, align 8 %.sroa.3228.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 9 store i8 %.sroa.11152.0.copyload154, ptr %.sroa.3228.0..sroa_idx, align 1 %.sroa.5230.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 @@ -2271,96 +2261,96 @@ default.unreachable: ; preds = %136, %128 call void @llvm.lifetime.end.p0(i64 14, ptr nonnull %.sroa.10204) br label %.critedge -.thread408: ; preds = %166, %188, %197 - %.sroa.020.1425 = phi i8 [ %.sroa.020.0520, %197 ], [ %.sroa.020.0520, %166 ], [ %.sroa.8149.0.ph, %188 ] - %.sroa.522.1424 = phi i8 [ %.sroa.522.0519, %197 ], [ %.sroa.522.0519, %166 ], [ %.sroa.11152.2.ph, %188 ] - %.sroa.023.1423 = phi i8 [ %.sroa.023.0518, %197 ], [ %.sroa.8234.0.ph, %166 ], [ %.sroa.023.0518, %188 ] - %.sroa.525.1422 = phi i8 [ %.sroa.525.0517, %197 ], [ %.sroa.11237.2.ph, %166 ], [ %.sroa.525.0517, %188 ] - %.sroa.11152.1421 = phi i8 [ %.sroa.11152.0516, %197 ], [ %.sroa.11152.0516, %166 ], [ %.sroa.11152.2.ph, %188 ] - %.sroa.11237.1418 = phi i8 [ %.sroa.11237.0515, %197 ], [ %.sroa.11237.2.ph, %166 ], [ %.sroa.11237.0515, %188 ] +.thread408: ; preds = %164, %186, %195 + %.sroa.020.1425 = phi i8 [ %.sroa.020.0520, %195 ], [ %.sroa.020.0520, %164 ], [ %.sroa.8149.0.ph, %186 ] + %.sroa.522.1424 = phi i8 [ %.sroa.522.0519, %195 ], [ %.sroa.522.0519, %164 ], [ %.sroa.11152.2.ph, %186 ] + %.sroa.023.1423 = phi i8 [ %.sroa.023.0518, %195 ], [ %.sroa.8234.0.ph, %164 ], [ %.sroa.023.0518, %186 ] + %.sroa.525.1422 = phi i8 [ %.sroa.525.0517, %195 ], [ %.sroa.11237.2.ph, %164 ], [ %.sroa.525.0517, %186 ] + %.sroa.11152.1421 = phi i8 [ %.sroa.11152.0516, %195 ], [ %.sroa.11152.0516, %164 ], [ %.sroa.11152.2.ph, %186 ] + %.sroa.11237.1418 = phi i8 [ %.sroa.11237.0515, %195 ], [ %.sroa.11237.2.ph, %164 ], [ %.sroa.11237.0515, %186 ] call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %37) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6), !noalias !253 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h0aaf48f80649e9ddE.llvm.4616129397091597767"(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %38) to label %.noexc136 unwind label %.loopexit461 .noexc136: ; preds = %.thread408 - %190 = load i64, ptr %72, align 8, !range !6, !noalias !253, !noundef !5 - %191 = icmp eq i64 %190, 0 - br i1 %191, label %199, label %192 + %188 = load i64, ptr %72, align 8, !range !6, !noalias !253, !noundef !5 + %189 = icmp eq i64 %188, 0 + br i1 %189, label %197, label %190 -192: ; preds = %.noexc136 - %193 = load i64, ptr %73, align 8, !noalias !253, !noundef !5 - %194 = icmp eq i64 %193, 0 - br i1 %194, label %199, label %195 +190: ; preds = %.noexc136 + %191 = load i64, ptr %73, align 8, !noalias !253, !noundef !5 + %192 = icmp eq i64 %191, 0 + br i1 %192, label %197, label %193 -195: ; preds = %192 - %196 = load ptr, ptr %6, align 8, !noalias !253, !nonnull !5, !noundef !5 - call void @__rust_dealloc(ptr noundef nonnull %196, i64 noundef %193, i64 noundef %190) #43 - br label %199 +193: ; preds = %190 + %194 = load ptr, ptr %6, align 8, !noalias !253, !nonnull !5, !noundef !5 + call void @__rust_dealloc(ptr noundef nonnull %194, i64 noundef %191, i64 noundef %188) #43 + br label %197 -197: ; preds = %143 +195: ; preds = %141 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull align 8 dereferenceable(32) %71, i64 32, i1 false) call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %30) invoke void @"_ZN4core3ptr45drop_in_place$LT$serde_json..value..Value$GT$17h8c450484c5264072E.llvm.784653754634180241"(ptr noalias noundef nonnull align 8 dereferenceable(72) %37) to label %.thread408 unwind label %.loopexit -.thread399: ; preds = %.thread399.loopexit, %.thread399.loopexit.split-lp, %220, %198 - %.sroa.045.8 = phi i1 [ %.sroa.045.13, %198 ], [ false, %220 ], [ true, %.thread399.loopexit ], [ false, %.thread399.loopexit.split-lp ] - %.pn = phi { ptr, i32 } [ %lpad.phi460, %198 ], [ %lpad.thr_comm.split-lp, %220 ], [ %lpad.loopexit, %.thread399.loopexit ], [ %lpad.loopexit.split-lp, %.thread399.loopexit.split-lp ] +.thread399: ; preds = %.thread399.loopexit, %.thread399.loopexit.split-lp, %218, %196 + %.sroa.045.8 = phi i1 [ %.sroa.045.13, %196 ], [ false, %218 ], [ true, %.thread399.loopexit ], [ false, %.thread399.loopexit.split-lp ] + %.pn = phi { ptr, i32 } [ %lpad.phi460, %196 ], [ %lpad.thr_comm.split-lp, %218 ], [ %lpad.loopexit, %.thread399.loopexit ], [ %lpad.loopexit.split-lp, %.thread399.loopexit.split-lp ] invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h3912e219446a661dE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %38) #41 - to label %79 unwind label %221 + to label %79 unwind label %219 -.loopexit: ; preds = %197 +.loopexit: ; preds = %195 %lpad.loopexit458 = landingpad { ptr, i32 } cleanup - br label %198 + br label %196 -.loopexit.split-lp: ; preds = %145 +.loopexit.split-lp: ; preds = %143 %lpad.loopexit.split-lp459 = landingpad { ptr, i32 } cleanup - br label %198 + br label %196 -198: ; preds = %.loopexit.split-lp, %.loopexit +196: ; preds = %.loopexit.split-lp, %.loopexit %lpad.phi460 = phi { ptr, i32 } [ %lpad.loopexit458, %.loopexit ], [ %lpad.loopexit.split-lp459, %.loopexit.split-lp ] %.sroa.045.13 = xor i1 %trunc60, true br label %.thread399 -199: ; preds = %195, %192, %.noexc136 +197: ; preds = %193, %190, %.noexc136 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6), !noalias !253 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %38) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %.sroa.7) call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %.sroa.8146) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %.sroa.7) call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %.sroa.8146) - %200 = load ptr, ptr %53, align 8, !alias.scope !262, !noalias !129, !nonnull !5, !noundef !5 - %201 = load ptr, ptr %54, align 8, !alias.scope !262, !noalias !129, !nonnull !5, !noundef !5 - %202 = icmp eq ptr %201, %200 - br i1 %202, label %._crit_edge.loopexit, label %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i" + %198 = load ptr, ptr %53, align 8, !alias.scope !262, !noalias !129, !nonnull !5, !noundef !5 + %199 = load ptr, ptr %54, align 8, !alias.scope !262, !noalias !129, !nonnull !5, !noundef !5 + %200 = icmp eq ptr %199, %198 + br i1 %200, label %._crit_edge, label %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i" -.critedge: ; preds = %189, %167, %145 +.critedge: ; preds = %187, %165, %143 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %37) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5), !noalias !266 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h0aaf48f80649e9ddE.llvm.4616129397091597767"(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %38) to label %.noexc137 unwind label %.loopexit.split-lp462 .noexc137: ; preds = %.critedge - %203 = getelementptr inbounds nuw i8, ptr %5, i64 8 - %204 = load i64, ptr %203, align 8, !range !6, !noalias !266, !noundef !5 - %205 = icmp eq i64 %204, 0 - br i1 %205, label %212, label %206 - -206: ; preds = %.noexc137 - %207 = getelementptr inbounds nuw i8, ptr %5, i64 16 - %208 = load i64, ptr %207, align 8, !noalias !266, !noundef !5 - %209 = icmp eq i64 %208, 0 - br i1 %209, label %212, label %210 - -210: ; preds = %206 - %211 = load ptr, ptr %5, align 8, !noalias !266, !nonnull !5, !noundef !5 - call void @__rust_dealloc(ptr noundef nonnull %211, i64 noundef %208, i64 noundef %204) #43 - br label %212 - -212: ; preds = %210, %206, %.noexc137 + %201 = getelementptr inbounds nuw i8, ptr %5, i64 8 + %202 = load i64, ptr %201, align 8, !range !6, !noalias !266, !noundef !5 + %203 = icmp eq i64 %202, 0 + br i1 %203, label %210, label %204 + +204: ; preds = %.noexc137 + %205 = getelementptr inbounds nuw i8, ptr %5, i64 16 + %206 = load i64, ptr %205, align 8, !noalias !266, !noundef !5 + %207 = icmp eq i64 %206, 0 + br i1 %207, label %210, label %208 + +208: ; preds = %204 + %209 = load ptr, ptr %5, align 8, !noalias !266, !nonnull !5, !noundef !5 + call void @__rust_dealloc(ptr noundef nonnull %209, i64 noundef %206, i64 noundef %202) #43 + br label %210 + +210: ; preds = %208, %204, %.noexc137 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5), !noalias !266 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %38) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %.sroa.7) @@ -2371,65 +2361,65 @@ default.unreachable: ; preds = %136, %128 call void @llvm.experimental.noalias.scope.decl(metadata !278) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4), !noalias !151 store ptr %39, ptr %4, align 8, !noalias !151 - %213 = load ptr, ptr %54, align 8, !alias.scope !279, !nonnull !5, !noundef !5 - %214 = invoke noundef i64 @_ZN4core4iter6traits10exact_size17ExactSizeIterator3len17hde05e5919f9ad533E.llvm.3021571406010367114(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %39) - to label %217 unwind label %215 + %211 = load ptr, ptr %54, align 8, !alias.scope !279, !nonnull !5, !noundef !5 + %212 = invoke noundef i64 @_ZN4core4iter6traits10exact_size17ExactSizeIterator3len17hde05e5919f9ad533E.llvm.3021571406010367114(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %39) + to label %215 unwind label %213 -215: ; preds = %217, %212 - %216 = landingpad { ptr, i32 } +213: ; preds = %215, %210 + %214 = landingpad { ptr, i32 } cleanup invoke void @"_ZN157_$LT$$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd25fe6a53bb16c8bE.llvm.4616129397091597767"(ptr noalias noundef nonnull align 8 dereferenceable(8) %4) - to label %.body105 unwind label %218 + to label %.body105 unwind label %216 -217: ; preds = %212 - invoke void @"_ZN4core3ptr103drop_in_place$LT$$u5b$indexmap..Bucket$LT$alloc..string..String$C$serde_json..value..Value$GT$$u5d$$GT$17he37116cab0fa664cE.llvm.4616129397091597767"(ptr noalias noundef nonnull align 8 %213, i64 noundef %214) - to label %"_ZN4core3ptr106drop_in_place$LT$indexmap..map..iter..IntoIter$LT$alloc..string..String$C$serde_json..value..Value$GT$$GT$17h38b9c4ced7951fc3E.llvm.4616129397091597767.exit.i140" unwind label %215 +215: ; preds = %210 + invoke void @"_ZN4core3ptr103drop_in_place$LT$$u5b$indexmap..Bucket$LT$alloc..string..String$C$serde_json..value..Value$GT$$u5d$$GT$17he37116cab0fa664cE.llvm.4616129397091597767"(ptr noalias noundef nonnull align 8 %211, i64 noundef %212) + to label %"_ZN4core3ptr106drop_in_place$LT$indexmap..map..iter..IntoIter$LT$alloc..string..String$C$serde_json..value..Value$GT$$GT$17h38b9c4ced7951fc3E.llvm.4616129397091597767.exit.i140" unwind label %213 -218: ; preds = %215 - %219 = landingpad { ptr, i32 } +216: ; preds = %213 + %217 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() #42 unreachable -"_ZN4core3ptr106drop_in_place$LT$indexmap..map..iter..IntoIter$LT$alloc..string..String$C$serde_json..value..Value$GT$$GT$17h38b9c4ced7951fc3E.llvm.4616129397091597767.exit.i140": ; preds = %217 +"_ZN4core3ptr106drop_in_place$LT$indexmap..map..iter..IntoIter$LT$alloc..string..String$C$serde_json..value..Value$GT$$GT$17h38b9c4ced7951fc3E.llvm.4616129397091597767.exit.i140": ; preds = %215 invoke void @"_ZN157_$LT$$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd25fe6a53bb16c8bE.llvm.4616129397091597767"(ptr noalias noundef nonnull align 8 dereferenceable(8) %4) to label %.critedge86 unwind label %50 -220: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111.thread" +218: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111.thread" %lpad.thr_comm.split-lp = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr45drop_in_place$LT$serde_json..value..Value$GT$17h8c450484c5264072E.llvm.784653754634180241"(ptr noalias noundef nonnull align 8 dereferenceable(72) %37) #41 - to label %.thread399 unwind label %221 + to label %.thread399 unwind label %219 -221: ; preds = %227, %223, %220, %.thread399, %79 - %222 = landingpad { ptr, i32 } +219: ; preds = %225, %221, %218, %.thread399, %79 + %220 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() #42 unreachable -223: ; preds = %.body +221: ; preds = %.body invoke void @"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %41) #41 - to label %.body105 unwind label %221 + to label %.body105 unwind label %219 -224: ; preds = %46 +222: ; preds = %46 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %24) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) - %225 = getelementptr inbounds nuw i8, ptr %26, i64 8 - %.sroa.026.0.copyload27 = load i64, ptr %225, align 8 + %223 = getelementptr inbounds nuw i8, ptr %26, i64 8 + %.sroa.026.0.copyload27 = load i64, ptr %223, align 8 %.sroa.528.0..sroa_idx29 = getelementptr inbounds nuw i8, ptr %26, i64 16 %.sroa.528.0.copyload30 = load i32, ptr %.sroa.528.0..sroa_idx29, align 8 %.sroa.631.0..sroa_idx32 = getelementptr inbounds nuw i8, ptr %26, i64 20 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(20) %.sroa.631, ptr noundef nonnull align 4 dereferenceable(20) %.sroa.631.0..sroa_idx32, i64 20, i1 false) call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %26) - br label %114 + br label %112 -226: ; preds = %227, %.body105 +224: ; preds = %225, %.body105 resume { ptr, i32 } %.pn70 -227: ; preds = %.body105 +225: ; preds = %.body105 invoke void @"_ZN4core3ptr73drop_in_place$LT$deserr..value..Value$LT$serde_json..value..Value$GT$$GT$17h42e8fd0d158193feE.llvm.784653754634180241"(ptr noalias noundef nonnull align 8 dereferenceable(72) %1) #41 - to label %226 unwind label %221 + to label %224 unwind label %219 } ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable diff --git a/bench/meshlab/optimized/gltf_loader.ll b/bench/meshlab/optimized/gltf_loader.ll index 27630f16ece..97fc823bd82 100644 --- a/bench/meshlab/optimized/gltf_loader.ll +++ b/bench/meshlab/optimized/gltf_loader.ll @@ -14370,202 +14370,196 @@ _ZL13stbi__get16leP13stbi__context.exit: ; preds = %190, %193, %_ZL19st %213 = phi ptr [ %187, %190 ], [ %.sink.i.i5.i, %_ZL19stbi__refill_bufferP13stbi__context.exit.i4.i ], [ %187, %193 ] %214 = phi ptr [ %191, %190 ], [ %212, %_ZL19stbi__refill_bufferP13stbi__context.exit.i4.i ], [ %188, %193 ] %.0.i6.i = phi i8 [ %192, %190 ], [ %211, %_ZL19stbi__refill_bufferP13stbi__context.exit.i4.i ], [ 0, %193 ] - %215 = zext i8 %.0.i.i to i32 - %216 = zext i8 %.0.i6.i to i32 - %217 = shl nuw nsw i32 %216, 8 - %218 = or disjoint i32 %217, %215 - %219 = icmp eq i32 %218, 0 - br i1 %219, label %_ZL10stbi__get8P13stbi__context.exit79.thread, label %220 + %215 = or i8 %.0.i6.i, %.0.i.i + %216 = icmp eq i8 %215, 0 + br i1 %216, label %_ZL10stbi__get8P13stbi__context.exit79.thread, label %217 -220: ; preds = %_ZL13stbi__get16leP13stbi__context.exit - %221 = icmp ult ptr %214, %213 - br i1 %221, label %222, label %225 +217: ; preds = %_ZL13stbi__get16leP13stbi__context.exit + %218 = icmp ult ptr %214, %213 + br i1 %218, label %219, label %222 -222: ; preds = %220 - %223 = getelementptr inbounds nuw i8, ptr %214, i64 1 - store ptr %223, ptr %2, align 8 - %224 = load i8, ptr %214, align 1 +219: ; preds = %217 + %220 = getelementptr inbounds nuw i8, ptr %214, i64 1 + store ptr %220, ptr %2, align 8 + %221 = load i8, ptr %214, align 1 br label %_ZL10stbi__get8P13stbi__context.exit.i94 -225: ; preds = %220 - %226 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %227 = load i32, ptr %226, align 8 - %.not.i.i90 = icmp eq i32 %227, 0 - br i1 %.not.i.i90, label %_ZL10stbi__get8P13stbi__context.exit.i94, label %228 +222: ; preds = %217 + %223 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %224 = load i32, ptr %223, align 8 + %.not.i.i90 = icmp eq i32 %224, 0 + br i1 %.not.i.i90, label %_ZL10stbi__get8P13stbi__context.exit.i94, label %225 -228: ; preds = %225 - %229 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %230 = load ptr, ptr %229, align 8 - %231 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %232 = load ptr, ptr %231, align 8 - %233 = getelementptr inbounds nuw i8, ptr %0, i64 56 - %234 = getelementptr inbounds nuw i8, ptr %0, i64 52 - %235 = load i32, ptr %234, align 4 - %236 = tail call noundef i32 %230(ptr noundef %232, ptr noundef nonnull %233, i32 noundef %235) - %237 = icmp eq i32 %236, 0 - br i1 %237, label %238, label %240 - -238: ; preds = %228 - store i32 0, ptr %226, align 8 - %239 = getelementptr inbounds nuw i8, ptr %0, i64 57 - store i8 0, ptr %233, align 1 +225: ; preds = %222 + %226 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %227 = load ptr, ptr %226, align 8 + %228 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %229 = load ptr, ptr %228, align 8 + %230 = getelementptr inbounds nuw i8, ptr %0, i64 56 + %231 = getelementptr inbounds nuw i8, ptr %0, i64 52 + %232 = load i32, ptr %231, align 4 + %233 = tail call noundef i32 %227(ptr noundef %229, ptr noundef nonnull %230, i32 noundef %232) + %234 = icmp eq i32 %233, 0 + br i1 %234, label %235, label %237 + +235: ; preds = %225 + store i32 0, ptr %223, align 8 + %236 = getelementptr inbounds nuw i8, ptr %0, i64 57 + store i8 0, ptr %230, align 1 br label %_ZL19stbi__refill_bufferP13stbi__context.exit.i.i92 -240: ; preds = %228 - %241 = sext i32 %236 to i64 - %242 = getelementptr inbounds i8, ptr %233, i64 %241 - %.pre.i.i91 = load i8, ptr %233, align 1 +237: ; preds = %225 + %238 = sext i32 %233 to i64 + %239 = getelementptr inbounds i8, ptr %230, i64 %238 + %.pre.i.i91 = load i8, ptr %230, align 1 br label %_ZL19stbi__refill_bufferP13stbi__context.exit.i.i92 -_ZL19stbi__refill_bufferP13stbi__context.exit.i.i92: ; preds = %240, %238 - %243 = phi i8 [ 0, %238 ], [ %.pre.i.i91, %240 ] - %.sink.i.i.i93 = phi ptr [ %239, %238 ], [ %242, %240 ] +_ZL19stbi__refill_bufferP13stbi__context.exit.i.i92: ; preds = %237, %235 + %240 = phi i8 [ 0, %235 ], [ %.pre.i.i91, %237 ] + %.sink.i.i.i93 = phi ptr [ %236, %235 ], [ %239, %237 ] store ptr %.sink.i.i.i93, ptr %4, align 8 - %244 = getelementptr inbounds nuw i8, ptr %0, i64 57 - store ptr %244, ptr %2, align 8 + %241 = getelementptr inbounds nuw i8, ptr %0, i64 57 + store ptr %241, ptr %2, align 8 br label %_ZL10stbi__get8P13stbi__context.exit.i94 -_ZL10stbi__get8P13stbi__context.exit.i94: ; preds = %_ZL19stbi__refill_bufferP13stbi__context.exit.i.i92, %225, %222 - %245 = phi ptr [ %213, %222 ], [ %.sink.i.i.i93, %_ZL19stbi__refill_bufferP13stbi__context.exit.i.i92 ], [ %213, %225 ] - %246 = phi ptr [ %223, %222 ], [ %244, %_ZL19stbi__refill_bufferP13stbi__context.exit.i.i92 ], [ %214, %225 ] - %.0.i.i95 = phi i8 [ %224, %222 ], [ %243, %_ZL19stbi__refill_bufferP13stbi__context.exit.i.i92 ], [ 0, %225 ] - %247 = icmp ult ptr %246, %245 - br i1 %247, label %248, label %251 - -248: ; preds = %_ZL10stbi__get8P13stbi__context.exit.i94 - %249 = getelementptr inbounds nuw i8, ptr %246, i64 1 - store ptr %249, ptr %2, align 8 - %250 = load i8, ptr %246, align 1 +_ZL10stbi__get8P13stbi__context.exit.i94: ; preds = %_ZL19stbi__refill_bufferP13stbi__context.exit.i.i92, %222, %219 + %242 = phi ptr [ %213, %219 ], [ %.sink.i.i.i93, %_ZL19stbi__refill_bufferP13stbi__context.exit.i.i92 ], [ %213, %222 ] + %243 = phi ptr [ %220, %219 ], [ %241, %_ZL19stbi__refill_bufferP13stbi__context.exit.i.i92 ], [ %214, %222 ] + %.0.i.i95 = phi i8 [ %221, %219 ], [ %240, %_ZL19stbi__refill_bufferP13stbi__context.exit.i.i92 ], [ 0, %222 ] + %244 = icmp ult ptr %243, %242 + br i1 %244, label %245, label %248 + +245: ; preds = %_ZL10stbi__get8P13stbi__context.exit.i94 + %246 = getelementptr inbounds nuw i8, ptr %243, i64 1 + store ptr %246, ptr %2, align 8 + %247 = load i8, ptr %243, align 1 br label %_ZL13stbi__get16leP13stbi__context.exit101 -251: ; preds = %_ZL10stbi__get8P13stbi__context.exit.i94 - %252 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %253 = load i32, ptr %252, align 8 - %.not.i2.i96 = icmp eq i32 %253, 0 - br i1 %.not.i2.i96, label %_ZL13stbi__get16leP13stbi__context.exit101, label %254 +248: ; preds = %_ZL10stbi__get8P13stbi__context.exit.i94 + %249 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %250 = load i32, ptr %249, align 8 + %.not.i2.i96 = icmp eq i32 %250, 0 + br i1 %.not.i2.i96, label %_ZL13stbi__get16leP13stbi__context.exit101, label %251 -254: ; preds = %251 - %255 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %256 = load ptr, ptr %255, align 8 - %257 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %258 = load ptr, ptr %257, align 8 - %259 = getelementptr inbounds nuw i8, ptr %0, i64 56 - %260 = getelementptr inbounds nuw i8, ptr %0, i64 52 - %261 = load i32, ptr %260, align 4 - %262 = tail call noundef i32 %256(ptr noundef %258, ptr noundef nonnull %259, i32 noundef %261) - %263 = icmp eq i32 %262, 0 - br i1 %263, label %264, label %266 - -264: ; preds = %254 - store i32 0, ptr %252, align 8 - %265 = getelementptr inbounds nuw i8, ptr %0, i64 57 - store i8 0, ptr %259, align 1 +251: ; preds = %248 + %252 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %253 = load ptr, ptr %252, align 8 + %254 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %255 = load ptr, ptr %254, align 8 + %256 = getelementptr inbounds nuw i8, ptr %0, i64 56 + %257 = getelementptr inbounds nuw i8, ptr %0, i64 52 + %258 = load i32, ptr %257, align 4 + %259 = tail call noundef i32 %253(ptr noundef %255, ptr noundef nonnull %256, i32 noundef %258) + %260 = icmp eq i32 %259, 0 + br i1 %260, label %261, label %263 + +261: ; preds = %251 + store i32 0, ptr %249, align 8 + %262 = getelementptr inbounds nuw i8, ptr %0, i64 57 + store i8 0, ptr %256, align 1 br label %_ZL19stbi__refill_bufferP13stbi__context.exit.i4.i98 -266: ; preds = %254 - %267 = sext i32 %262 to i64 - %268 = getelementptr inbounds i8, ptr %259, i64 %267 - %.pre.i3.i97 = load i8, ptr %259, align 1 +263: ; preds = %251 + %264 = sext i32 %259 to i64 + %265 = getelementptr inbounds i8, ptr %256, i64 %264 + %.pre.i3.i97 = load i8, ptr %256, align 1 br label %_ZL19stbi__refill_bufferP13stbi__context.exit.i4.i98 -_ZL19stbi__refill_bufferP13stbi__context.exit.i4.i98: ; preds = %266, %264 - %269 = phi i8 [ 0, %264 ], [ %.pre.i3.i97, %266 ] - %.sink.i.i5.i99 = phi ptr [ %265, %264 ], [ %268, %266 ] +_ZL19stbi__refill_bufferP13stbi__context.exit.i4.i98: ; preds = %263, %261 + %266 = phi i8 [ 0, %261 ], [ %.pre.i3.i97, %263 ] + %.sink.i.i5.i99 = phi ptr [ %262, %261 ], [ %265, %263 ] store ptr %.sink.i.i5.i99, ptr %4, align 8 - %270 = getelementptr inbounds nuw i8, ptr %0, i64 57 - store ptr %270, ptr %2, align 8 + %267 = getelementptr inbounds nuw i8, ptr %0, i64 57 + store ptr %267, ptr %2, align 8 br label %_ZL13stbi__get16leP13stbi__context.exit101 -_ZL13stbi__get16leP13stbi__context.exit101: ; preds = %248, %251, %_ZL19stbi__refill_bufferP13stbi__context.exit.i4.i98 - %271 = phi ptr [ %245, %248 ], [ %.sink.i.i5.i99, %_ZL19stbi__refill_bufferP13stbi__context.exit.i4.i98 ], [ %245, %251 ] - %272 = phi ptr [ %249, %248 ], [ %270, %_ZL19stbi__refill_bufferP13stbi__context.exit.i4.i98 ], [ %246, %251 ] - %.0.i6.i100 = phi i8 [ %250, %248 ], [ %269, %_ZL19stbi__refill_bufferP13stbi__context.exit.i4.i98 ], [ 0, %251 ] - %273 = zext i8 %.0.i.i95 to i32 - %274 = zext i8 %.0.i6.i100 to i32 - %275 = shl nuw nsw i32 %274, 8 - %276 = or disjoint i32 %275, %273 - %277 = icmp eq i32 %276, 0 - br i1 %277, label %_ZL10stbi__get8P13stbi__context.exit79.thread, label %278 - -278: ; preds = %_ZL13stbi__get16leP13stbi__context.exit101 - %279 = icmp ult ptr %272, %271 - br i1 %279, label %280, label %283 - -280: ; preds = %278 - %281 = getelementptr inbounds nuw i8, ptr %272, i64 1 - store ptr %281, ptr %2, align 8 - %282 = load i8, ptr %272, align 1 +_ZL13stbi__get16leP13stbi__context.exit101: ; preds = %245, %248, %_ZL19stbi__refill_bufferP13stbi__context.exit.i4.i98 + %268 = phi ptr [ %242, %245 ], [ %.sink.i.i5.i99, %_ZL19stbi__refill_bufferP13stbi__context.exit.i4.i98 ], [ %242, %248 ] + %269 = phi ptr [ %246, %245 ], [ %267, %_ZL19stbi__refill_bufferP13stbi__context.exit.i4.i98 ], [ %243, %248 ] + %.0.i6.i100 = phi i8 [ %247, %245 ], [ %266, %_ZL19stbi__refill_bufferP13stbi__context.exit.i4.i98 ], [ 0, %248 ] + %270 = or i8 %.0.i6.i100, %.0.i.i95 + %271 = icmp eq i8 %270, 0 + br i1 %271, label %_ZL10stbi__get8P13stbi__context.exit79.thread, label %272 + +272: ; preds = %_ZL13stbi__get16leP13stbi__context.exit101 + %273 = icmp ult ptr %269, %268 + br i1 %273, label %274, label %277 + +274: ; preds = %272 + %275 = getelementptr inbounds nuw i8, ptr %269, i64 1 + store ptr %275, ptr %2, align 8 + %276 = load i8, ptr %269, align 1 br label %_ZL10stbi__get8P13stbi__context.exit107 -283: ; preds = %278 - %284 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %285 = load i32, ptr %284, align 8 - %.not.i102 = icmp eq i32 %285, 0 - br i1 %.not.i102, label %_ZL10stbi__get8P13stbi__context.exit107, label %286 - -286: ; preds = %283 - %287 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %288 = load ptr, ptr %287, align 8 - %289 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %290 = load ptr, ptr %289, align 8 - %291 = getelementptr inbounds nuw i8, ptr %0, i64 56 - %292 = getelementptr inbounds nuw i8, ptr %0, i64 52 - %293 = load i32, ptr %292, align 4 - %294 = tail call noundef i32 %288(ptr noundef %290, ptr noundef nonnull %291, i32 noundef %293) - %295 = icmp eq i32 %294, 0 - br i1 %295, label %296, label %298 +277: ; preds = %272 + %278 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %279 = load i32, ptr %278, align 8 + %.not.i102 = icmp eq i32 %279, 0 + br i1 %.not.i102, label %_ZL10stbi__get8P13stbi__context.exit107, label %280 -296: ; preds = %286 - store i32 0, ptr %284, align 8 - %297 = getelementptr inbounds nuw i8, ptr %0, i64 57 - store i8 0, ptr %291, align 1 +280: ; preds = %277 + %281 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %282 = load ptr, ptr %281, align 8 + %283 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %284 = load ptr, ptr %283, align 8 + %285 = getelementptr inbounds nuw i8, ptr %0, i64 56 + %286 = getelementptr inbounds nuw i8, ptr %0, i64 52 + %287 = load i32, ptr %286, align 4 + %288 = tail call noundef i32 %282(ptr noundef %284, ptr noundef nonnull %285, i32 noundef %287) + %289 = icmp eq i32 %288, 0 + br i1 %289, label %290, label %292 + +290: ; preds = %280 + store i32 0, ptr %278, align 8 + %291 = getelementptr inbounds nuw i8, ptr %0, i64 57 + store i8 0, ptr %285, align 1 br label %_ZL19stbi__refill_bufferP13stbi__context.exit.i104 -298: ; preds = %286 - %299 = sext i32 %294 to i64 - %300 = getelementptr inbounds i8, ptr %291, i64 %299 - %.pre.i103 = load i8, ptr %291, align 1 +292: ; preds = %280 + %293 = sext i32 %288 to i64 + %294 = getelementptr inbounds i8, ptr %285, i64 %293 + %.pre.i103 = load i8, ptr %285, align 1 br label %_ZL19stbi__refill_bufferP13stbi__context.exit.i104 -_ZL19stbi__refill_bufferP13stbi__context.exit.i104: ; preds = %298, %296 - %301 = phi i8 [ 0, %296 ], [ %.pre.i103, %298 ] - %.sink.i.i105 = phi ptr [ %297, %296 ], [ %300, %298 ] +_ZL19stbi__refill_bufferP13stbi__context.exit.i104: ; preds = %292, %290 + %295 = phi i8 [ 0, %290 ], [ %.pre.i103, %292 ] + %.sink.i.i105 = phi ptr [ %291, %290 ], [ %294, %292 ] store ptr %.sink.i.i105, ptr %4, align 8 - %302 = getelementptr inbounds nuw i8, ptr %0, i64 57 - store ptr %302, ptr %2, align 8 + %296 = getelementptr inbounds nuw i8, ptr %0, i64 57 + store ptr %296, ptr %2, align 8 br label %_ZL10stbi__get8P13stbi__context.exit107 -_ZL10stbi__get8P13stbi__context.exit107: ; preds = %280, %283, %_ZL19stbi__refill_bufferP13stbi__context.exit.i104 - %.0.i106 = phi i8 [ %282, %280 ], [ %301, %_ZL19stbi__refill_bufferP13stbi__context.exit.i104 ], [ 0, %283 ] - br i1 %.not, label %305, label %switch.early.test +_ZL10stbi__get8P13stbi__context.exit107: ; preds = %274, %277, %_ZL19stbi__refill_bufferP13stbi__context.exit.i104 + %.0.i106 = phi i8 [ %276, %274 ], [ %295, %_ZL19stbi__refill_bufferP13stbi__context.exit.i104 ], [ 0, %277 ] + br i1 %.not, label %299, label %switch.early.test switch.early.test: ; preds = %_ZL10stbi__get8P13stbi__context.exit107 - %303 = add i8 %.0.i106, -8 - %switch.and = and i8 %303, -9 + %297 = add i8 %.0.i106, -8 + %switch.and = and i8 %297, -9 %switch.selectcmp = icmp eq i8 %switch.and, 0 - %304 = zext i1 %switch.selectcmp to i32 + %298 = zext i1 %switch.selectcmp to i32 br label %_ZL10stbi__get8P13stbi__context.exit79.thread -305: ; preds = %_ZL10stbi__get8P13stbi__context.exit107 +299: ; preds = %_ZL10stbi__get8P13stbi__context.exit107 switch i8 %.0.i106, label %_ZL10stbi__get8P13stbi__context.exit79.thread [ - i8 32, label %306 - i8 24, label %306 - i8 16, label %306 - i8 15, label %306 - i8 8, label %306 + i8 32, label %300 + i8 24, label %300 + i8 16, label %300 + i8 15, label %300 + i8 8, label %300 ] -306: ; preds = %305, %305, %305, %305, %305 +300: ; preds = %299, %299, %299, %299, %299 br label %_ZL10stbi__get8P13stbi__context.exit79.thread -_ZL10stbi__get8P13stbi__context.exit79.thread: ; preds = %108, %switch.early.test, %305, %_ZL10stbi__get8P13stbi__context.exit79, %_ZL13stbi__get16leP13stbi__context.exit101, %_ZL13stbi__get16leP13stbi__context.exit, %143, %84, %_ZL10stbi__get8P13stbi__context.exit65, %306 - %.0 = phi i32 [ 0, %_ZL10stbi__get8P13stbi__context.exit65 ], [ 0, %84 ], [ 0, %_ZL10stbi__get8P13stbi__context.exit79 ], [ 0, %_ZL13stbi__get16leP13stbi__context.exit ], [ 0, %_ZL13stbi__get16leP13stbi__context.exit101 ], [ 0, %305 ], [ 1, %306 ], [ 0, %143 ], [ %304, %switch.early.test ], [ 0, %108 ] - %307 = getelementptr inbounds nuw i8, ptr %0, i64 200 - %308 = load ptr, ptr %307, align 8 - store ptr %308, ptr %2, align 8 - %309 = getelementptr inbounds nuw i8, ptr %0, i64 208 - %310 = load ptr, ptr %309, align 8 - store ptr %310, ptr %4, align 8 +_ZL10stbi__get8P13stbi__context.exit79.thread: ; preds = %108, %switch.early.test, %299, %_ZL10stbi__get8P13stbi__context.exit79, %_ZL13stbi__get16leP13stbi__context.exit101, %_ZL13stbi__get16leP13stbi__context.exit, %143, %84, %_ZL10stbi__get8P13stbi__context.exit65, %300 + %.0 = phi i32 [ 0, %_ZL10stbi__get8P13stbi__context.exit65 ], [ 0, %84 ], [ 0, %_ZL10stbi__get8P13stbi__context.exit79 ], [ 0, %_ZL13stbi__get16leP13stbi__context.exit ], [ 0, %_ZL13stbi__get16leP13stbi__context.exit101 ], [ 0, %299 ], [ 1, %300 ], [ 0, %143 ], [ %298, %switch.early.test ], [ 0, %108 ] + %301 = getelementptr inbounds nuw i8, ptr %0, i64 200 + %302 = load ptr, ptr %301, align 8 + store ptr %302, ptr %2, align 8 + %303 = getelementptr inbounds nuw i8, ptr %0, i64 208 + %304 = load ptr, ptr %303, align 8 + store ptr %304, ptr %4, align 8 ret i32 %.0 } diff --git a/bench/mold/optimized/arch-m68k.ll b/bench/mold/optimized/arch-m68k.ll index 01b95d3255b..5b8e9098357 100644 --- a/bench/mold/optimized/arch-m68k.ll +++ b/bench/mold/optimized/arch-m68k.ll @@ -2324,8 +2324,8 @@ define linkonce_odr dso_local { ptr, i64 } @_ZN4mold12InputSectionINS_4M68KEE12g %15 = load ptr, ptr %5, align 8, !tbaa !280 %.idx = shl nuw nsw i64 %11, 12 %16 = getelementptr inbounds nuw i8, ptr %15, i64 %.idx - %.idx28 = shl nuw nsw i64 %8, 20 - %17 = getelementptr inbounds nuw i8, ptr %16, i64 %.idx28 + %.idx29 = shl nuw nsw i64 %8, 20 + %17 = getelementptr inbounds nuw i8, ptr %16, i64 %.idx29 %18 = getelementptr inbounds nuw %"struct.mold::ElfSym", ptr %17, i64 %14 %19 = getelementptr inbounds nuw i8, ptr %18, i64 14 %20 = load i8, ptr %19, align 1, !tbaa !258 @@ -2335,211 +2335,215 @@ define linkonce_odr dso_local { ptr, i64 } @_ZN4mold12InputSectionINS_4M68KEE12g %24 = load i8, ptr %23, align 1, !tbaa !258 %25 = zext i8 %24 to i16 %26 = or disjoint i16 %22, %25 - switch i16 %26, label %52 [ - i16 -15, label %184 - i16 -14, label %184 - i16 0, label %184 - i16 -1, label %27 - ] - -27: ; preds = %3 - %28 = getelementptr inbounds nuw i8, ptr %4, i64 696 - %29 = ptrtoint ptr %18 to i64 - %30 = ptrtoint ptr %15 to i64 - %31 = sub i64 %29, %30 - %32 = load ptr, ptr %28, align 8, !tbaa !378 - %33 = ashr exact i64 %31, 2 - %34 = getelementptr inbounds nuw i8, ptr %32, i64 %33 - %35 = load i8, ptr %34, align 1, !tbaa !258 - %36 = zext i8 %35 to i64 - %37 = shl nuw nsw i64 %36, 24 - %38 = getelementptr inbounds nuw i8, ptr %34, i64 1 + %.off = add i16 %26, 15 + %switch = icmp ult i16 %.off, 2 + %27 = or i8 %24, %20 + %28 = icmp eq i8 %27, 0 + %or.cond = or i1 %28, %switch + br i1 %or.cond, label %188, label %29 + +29: ; preds = %3 + %30 = icmp eq i16 %26, -1 + br i1 %30, label %31, label %56 + +31: ; preds = %29 + %32 = getelementptr inbounds nuw i8, ptr %4, i64 696 + %33 = ptrtoint ptr %18 to i64 + %34 = ptrtoint ptr %15 to i64 + %35 = sub i64 %33, %34 + %36 = load ptr, ptr %32, align 8, !tbaa !378 + %37 = ashr exact i64 %35, 2 + %38 = getelementptr inbounds nuw i8, ptr %36, i64 %37 %39 = load i8, ptr %38, align 1, !tbaa !258 %40 = zext i8 %39 to i64 - %41 = shl nuw nsw i64 %40, 16 - %42 = or disjoint i64 %41, %37 - %43 = getelementptr inbounds nuw i8, ptr %34, i64 2 - %44 = load i8, ptr %43, align 1, !tbaa !258 - %45 = zext i8 %44 to i64 - %46 = shl nuw nsw i64 %45, 8 - %47 = or disjoint i64 %42, %46 - %48 = getelementptr inbounds nuw i8, ptr %34, i64 3 - %49 = load i8, ptr %48, align 1, !tbaa !258 - %50 = zext i8 %49 to i64 - %51 = or disjoint i64 %47, %50 + %41 = shl nuw nsw i64 %40, 24 + %42 = getelementptr inbounds nuw i8, ptr %38, i64 1 + %43 = load i8, ptr %42, align 1, !tbaa !258 + %44 = zext i8 %43 to i64 + %45 = shl nuw nsw i64 %44, 16 + %46 = or disjoint i64 %45, %41 + %47 = getelementptr inbounds nuw i8, ptr %38, i64 2 + %48 = load i8, ptr %47, align 1, !tbaa !258 + %49 = zext i8 %48 to i64 + %50 = shl nuw nsw i64 %49, 8 + %51 = or disjoint i64 %46, %50 + %52 = getelementptr inbounds nuw i8, ptr %38, i64 3 + %53 = load i8, ptr %52, align 1, !tbaa !258 + %54 = zext i8 %53 to i64 + %55 = or disjoint i64 %51, %54 br label %_ZN4mold10ObjectFileINS_4M68KEE9get_shndxERKNS_6ElfSymIS1_EE.exit -52: ; preds = %3 - %53 = icmp eq i8 %20, -1 - %54 = zext i16 %26 to i64 - %spec.select.i = select i1 %53, i64 0, i64 %54 +56: ; preds = %29 + %57 = icmp eq i8 %20, -1 + %58 = zext i16 %26 to i64 + %spec.select.i = select i1 %57, i64 0, i64 %58 br label %_ZN4mold10ObjectFileINS_4M68KEE9get_shndxERKNS_6ElfSymIS1_EE.exit -_ZN4mold10ObjectFileINS_4M68KEE9get_shndxERKNS_6ElfSymIS1_EE.exit: ; preds = %27, %52 - %.0.i = phi i64 [ %51, %27 ], [ %spec.select.i, %52 ] - %55 = getelementptr inbounds nuw i8, ptr %4, i64 352 - %56 = load ptr, ptr %55, align 8, !tbaa !381 - %57 = getelementptr inbounds nuw %"class.std::unique_ptr.327", ptr %56, i64 %.0.i - %58 = load ptr, ptr %57, align 8, !tbaa !384 - %.not = icmp eq ptr %58, null - br i1 %.not, label %184, label %59 - -59: ; preds = %_ZN4mold10ObjectFileINS_4M68KEE9get_shndxERKNS_6ElfSymIS1_EE.exit - %60 = getelementptr inbounds nuw i8, ptr %18, i64 12 - %61 = load i8, ptr %60, align 1 - %62 = and i8 %61, 15 - %63 = icmp eq i8 %62, 3 - %64 = getelementptr inbounds nuw i8, ptr %18, i64 4 - %65 = load i8, ptr %64, align 1, !tbaa !258 - %66 = zext i8 %65 to i64 - %67 = shl nuw nsw i64 %66, 24 - %68 = getelementptr inbounds nuw i8, ptr %18, i64 5 +_ZN4mold10ObjectFileINS_4M68KEE9get_shndxERKNS_6ElfSymIS1_EE.exit: ; preds = %31, %56 + %.0.i = phi i64 [ %55, %31 ], [ %spec.select.i, %56 ] + %59 = getelementptr inbounds nuw i8, ptr %4, i64 352 + %60 = load ptr, ptr %59, align 8, !tbaa !381 + %61 = getelementptr inbounds nuw %"class.std::unique_ptr.327", ptr %60, i64 %.0.i + %62 = load ptr, ptr %61, align 8, !tbaa !384 + %.not = icmp eq ptr %62, null + br i1 %.not, label %188, label %63 + +63: ; preds = %_ZN4mold10ObjectFileINS_4M68KEE9get_shndxERKNS_6ElfSymIS1_EE.exit + %64 = getelementptr inbounds nuw i8, ptr %18, i64 12 + %65 = load i8, ptr %64, align 1 + %66 = and i8 %65, 15 + %67 = icmp eq i8 %66, 3 + %68 = getelementptr inbounds nuw i8, ptr %18, i64 4 %69 = load i8, ptr %68, align 1, !tbaa !258 %70 = zext i8 %69 to i64 - %71 = shl nuw nsw i64 %70, 16 - %72 = or disjoint i64 %71, %67 - %73 = getelementptr inbounds nuw i8, ptr %18, i64 6 - %74 = load i8, ptr %73, align 1, !tbaa !258 - %75 = zext i8 %74 to i64 - %76 = shl nuw nsw i64 %75, 8 - %77 = or disjoint i64 %72, %76 - %78 = getelementptr inbounds nuw i8, ptr %18, i64 7 - %79 = load i8, ptr %78, align 1, !tbaa !258 - %80 = zext i8 %79 to i64 - %81 = or disjoint i64 %77, %80 - br i1 %63, label %82, label %133 - -82: ; preds = %59 - %83 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %84 = load i8, ptr %83, align 1, !tbaa !258 - %85 = zext i8 %84 to i32 - %86 = shl nuw i32 %85, 24 - %87 = getelementptr inbounds nuw i8, ptr %2, i64 9 + %71 = shl nuw nsw i64 %70, 24 + %72 = getelementptr inbounds nuw i8, ptr %18, i64 5 + %73 = load i8, ptr %72, align 1, !tbaa !258 + %74 = zext i8 %73 to i64 + %75 = shl nuw nsw i64 %74, 16 + %76 = or disjoint i64 %75, %71 + %77 = getelementptr inbounds nuw i8, ptr %18, i64 6 + %78 = load i8, ptr %77, align 1, !tbaa !258 + %79 = zext i8 %78 to i64 + %80 = shl nuw nsw i64 %79, 8 + %81 = or disjoint i64 %76, %80 + %82 = getelementptr inbounds nuw i8, ptr %18, i64 7 + %83 = load i8, ptr %82, align 1, !tbaa !258 + %84 = zext i8 %83 to i64 + %85 = or disjoint i64 %81, %84 + br i1 %67, label %86, label %137 + +86: ; preds = %63 + %87 = getelementptr inbounds nuw i8, ptr %2, i64 8 %88 = load i8, ptr %87, align 1, !tbaa !258 %89 = zext i8 %88 to i32 - %90 = shl nuw nsw i32 %89, 16 - %91 = or disjoint i32 %90, %86 - %92 = getelementptr inbounds nuw i8, ptr %2, i64 10 - %93 = load i8, ptr %92, align 1, !tbaa !258 - %94 = zext i8 %93 to i32 - %95 = shl nuw nsw i32 %94, 8 - %96 = or disjoint i32 %91, %95 - %97 = getelementptr inbounds nuw i8, ptr %2, i64 11 - %98 = load i8, ptr %97, align 1, !tbaa !258 - %99 = zext i8 %98 to i32 - %100 = or disjoint i32 %96, %99 - %101 = sext i32 %100 to i64 - %102 = add nsw i64 %81, %101 - %103 = getelementptr inbounds nuw i8, ptr %58, i64 48 - %104 = load ptr, ptr %103, align 8, !tbaa !386 - %105 = getelementptr inbounds nuw i8, ptr %58, i64 56 - %106 = load ptr, ptr %105, align 8, !tbaa !388 - %107 = ptrtoint ptr %104 to i64 - %108 = ptrtoint ptr %106 to i64 - %109 = sub i64 %108, %107 - %110 = ashr exact i64 %109, 2 - %111 = icmp sgt i64 %110, 0 - br i1 %111, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i, label %_ZN4mold16MergeableSectionINS_4M68KEE12get_fragmentEl.exit - -_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i: ; preds = %82, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i - %.013.i.i.i = phi i64 [ %.1.i.i.i, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i ], [ %110, %82 ] - %.sroa.011.012.i.i.i = phi ptr [ %.sroa.011.1.i.i.i, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i ], [ %104, %82 ] - %112 = lshr i64 %.013.i.i.i, 1 - %113 = getelementptr inbounds nuw i32, ptr %.sroa.011.012.i.i.i, i64 %112 - %114 = load i32, ptr %113, align 4, !tbaa !389 - %115 = zext i32 %114 to i64 - %116 = icmp slt i64 %102, %115 - %117 = getelementptr inbounds nuw i8, ptr %113, i64 4 - %118 = xor i64 %112, -1 - %119 = add nsw i64 %.013.i.i.i, %118 - %.sroa.011.1.i.i.i = select i1 %116, ptr %.sroa.011.012.i.i.i, ptr %117 - %.1.i.i.i = select i1 %116, i64 %112, i64 %119 - %120 = icmp sgt i64 %.1.i.i.i, 0 - br i1 %120, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i, label %_ZN4mold16MergeableSectionINS_4M68KEE12get_fragmentEl.exit, !llvm.loop !390 - -_ZN4mold16MergeableSectionINS_4M68KEE12get_fragmentEl.exit: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i, %82 - %.sroa.011.0.lcssa.i.i.i = phi ptr [ %104, %82 ], [ %.sroa.011.1.i.i.i, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i ] - %121 = getelementptr inbounds i8, ptr %.sroa.011.0.lcssa.i.i.i, i64 -4 - %122 = ptrtoint ptr %121 to i64 - %123 = sub i64 %122, %107 - %124 = ashr exact i64 %123, 2 - %125 = getelementptr inbounds nuw i8, ptr %58, i64 8 - %126 = load ptr, ptr %125, align 8, !tbaa !391 - %127 = getelementptr inbounds nuw ptr, ptr %126, i64 %124 - %128 = getelementptr inbounds nuw i8, ptr %104, i64 %123 - %129 = load i32, ptr %128, align 4, !tbaa !389 - %130 = zext i32 %129 to i64 - %131 = sub nsw i64 %102, %130 - %132 = load ptr, ptr %127, align 8, !tbaa !394 - br label %184 - -133: ; preds = %59 - %134 = getelementptr inbounds nuw i8, ptr %58, i64 48 - %135 = load ptr, ptr %134, align 8, !tbaa !386 - %136 = getelementptr inbounds nuw i8, ptr %58, i64 56 - %137 = load ptr, ptr %136, align 8, !tbaa !388 - %138 = ptrtoint ptr %135 to i64 - %139 = ptrtoint ptr %137 to i64 - %140 = sub i64 %139, %138 - %141 = ashr exact i64 %140, 2 - %142 = icmp sgt i64 %141, 0 - br i1 %142, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17, label %_ZN4mold16MergeableSectionINS_4M68KEE12get_fragmentEl.exit24 - -_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17: ; preds = %133, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17 - %.013.i.i.i18 = phi i64 [ %.1.i.i.i23, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17 ], [ %141, %133 ] - %.sroa.011.012.i.i.i19 = phi ptr [ %.sroa.011.1.i.i.i22, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17 ], [ %135, %133 ] - %143 = lshr i64 %.013.i.i.i18, 1 - %144 = getelementptr inbounds nuw i32, ptr %.sroa.011.012.i.i.i19, i64 %143 - %145 = load i32, ptr %144, align 4, !tbaa !389 - %146 = zext i32 %145 to i64 - %147 = icmp samesign ult i64 %81, %146 - %148 = getelementptr inbounds nuw i8, ptr %144, i64 4 - %149 = xor i64 %143, -1 - %150 = add nsw i64 %.013.i.i.i18, %149 - %.sroa.011.1.i.i.i22 = select i1 %147, ptr %.sroa.011.012.i.i.i19, ptr %148 - %.1.i.i.i23 = select i1 %147, i64 %143, i64 %150 - %151 = icmp sgt i64 %.1.i.i.i23, 0 - br i1 %151, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17, label %_ZN4mold16MergeableSectionINS_4M68KEE12get_fragmentEl.exit24, !llvm.loop !390 - -_ZN4mold16MergeableSectionINS_4M68KEE12get_fragmentEl.exit24: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17, %133 - %.sroa.011.0.lcssa.i.i.i14 = phi ptr [ %135, %133 ], [ %.sroa.011.1.i.i.i22, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17 ] - %152 = getelementptr inbounds i8, ptr %.sroa.011.0.lcssa.i.i.i14, i64 -4 - %153 = ptrtoint ptr %152 to i64 - %154 = sub i64 %153, %138 - %155 = ashr exact i64 %154, 2 - %156 = getelementptr inbounds nuw i8, ptr %58, i64 8 - %157 = load ptr, ptr %156, align 8, !tbaa !391 - %158 = getelementptr inbounds nuw ptr, ptr %157, i64 %155 - %159 = getelementptr inbounds nuw i8, ptr %135, i64 %154 - %160 = load i32, ptr %159, align 4, !tbaa !389 - %161 = zext i32 %160 to i64 - %162 = sub nsw i64 %81, %161 - %163 = load ptr, ptr %158, align 8, !tbaa !394 - %164 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %165 = load i8, ptr %164, align 1, !tbaa !258 - %166 = zext i8 %165 to i32 - %167 = shl nuw i32 %166, 24 - %168 = getelementptr inbounds nuw i8, ptr %2, i64 9 + %90 = shl nuw i32 %89, 24 + %91 = getelementptr inbounds nuw i8, ptr %2, i64 9 + %92 = load i8, ptr %91, align 1, !tbaa !258 + %93 = zext i8 %92 to i32 + %94 = shl nuw nsw i32 %93, 16 + %95 = or disjoint i32 %94, %90 + %96 = getelementptr inbounds nuw i8, ptr %2, i64 10 + %97 = load i8, ptr %96, align 1, !tbaa !258 + %98 = zext i8 %97 to i32 + %99 = shl nuw nsw i32 %98, 8 + %100 = or disjoint i32 %95, %99 + %101 = getelementptr inbounds nuw i8, ptr %2, i64 11 + %102 = load i8, ptr %101, align 1, !tbaa !258 + %103 = zext i8 %102 to i32 + %104 = or disjoint i32 %100, %103 + %105 = sext i32 %104 to i64 + %106 = add nsw i64 %85, %105 + %107 = getelementptr inbounds nuw i8, ptr %62, i64 48 + %108 = load ptr, ptr %107, align 8, !tbaa !386 + %109 = getelementptr inbounds nuw i8, ptr %62, i64 56 + %110 = load ptr, ptr %109, align 8, !tbaa !388 + %111 = ptrtoint ptr %108 to i64 + %112 = ptrtoint ptr %110 to i64 + %113 = sub i64 %112, %111 + %114 = ashr exact i64 %113, 2 + %115 = icmp sgt i64 %114, 0 + br i1 %115, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i, label %_ZN4mold16MergeableSectionINS_4M68KEE12get_fragmentEl.exit + +_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i: ; preds = %86, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i + %.013.i.i.i = phi i64 [ %.1.i.i.i, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i ], [ %114, %86 ] + %.sroa.011.012.i.i.i = phi ptr [ %.sroa.011.1.i.i.i, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i ], [ %108, %86 ] + %116 = lshr i64 %.013.i.i.i, 1 + %117 = getelementptr inbounds nuw i32, ptr %.sroa.011.012.i.i.i, i64 %116 + %118 = load i32, ptr %117, align 4, !tbaa !389 + %119 = zext i32 %118 to i64 + %120 = icmp slt i64 %106, %119 + %121 = getelementptr inbounds nuw i8, ptr %117, i64 4 + %122 = xor i64 %116, -1 + %123 = add nsw i64 %.013.i.i.i, %122 + %.sroa.011.1.i.i.i = select i1 %120, ptr %.sroa.011.012.i.i.i, ptr %121 + %.1.i.i.i = select i1 %120, i64 %116, i64 %123 + %124 = icmp sgt i64 %.1.i.i.i, 0 + br i1 %124, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i, label %_ZN4mold16MergeableSectionINS_4M68KEE12get_fragmentEl.exit, !llvm.loop !390 + +_ZN4mold16MergeableSectionINS_4M68KEE12get_fragmentEl.exit: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i, %86 + %.sroa.011.0.lcssa.i.i.i = phi ptr [ %108, %86 ], [ %.sroa.011.1.i.i.i, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i ] + %125 = getelementptr inbounds i8, ptr %.sroa.011.0.lcssa.i.i.i, i64 -4 + %126 = ptrtoint ptr %125 to i64 + %127 = sub i64 %126, %111 + %128 = ashr exact i64 %127, 2 + %129 = getelementptr inbounds nuw i8, ptr %62, i64 8 + %130 = load ptr, ptr %129, align 8, !tbaa !391 + %131 = getelementptr inbounds nuw ptr, ptr %130, i64 %128 + %132 = getelementptr inbounds nuw i8, ptr %108, i64 %127 + %133 = load i32, ptr %132, align 4, !tbaa !389 + %134 = zext i32 %133 to i64 + %135 = sub nsw i64 %106, %134 + %136 = load ptr, ptr %131, align 8, !tbaa !394 + br label %188 + +137: ; preds = %63 + %138 = getelementptr inbounds nuw i8, ptr %62, i64 48 + %139 = load ptr, ptr %138, align 8, !tbaa !386 + %140 = getelementptr inbounds nuw i8, ptr %62, i64 56 + %141 = load ptr, ptr %140, align 8, !tbaa !388 + %142 = ptrtoint ptr %139 to i64 + %143 = ptrtoint ptr %141 to i64 + %144 = sub i64 %143, %142 + %145 = ashr exact i64 %144, 2 + %146 = icmp sgt i64 %145, 0 + br i1 %146, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17, label %_ZN4mold16MergeableSectionINS_4M68KEE12get_fragmentEl.exit24 + +_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17: ; preds = %137, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17 + %.013.i.i.i18 = phi i64 [ %.1.i.i.i23, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17 ], [ %145, %137 ] + %.sroa.011.012.i.i.i19 = phi ptr [ %.sroa.011.1.i.i.i22, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17 ], [ %139, %137 ] + %147 = lshr i64 %.013.i.i.i18, 1 + %148 = getelementptr inbounds nuw i32, ptr %.sroa.011.012.i.i.i19, i64 %147 + %149 = load i32, ptr %148, align 4, !tbaa !389 + %150 = zext i32 %149 to i64 + %151 = icmp samesign ult i64 %85, %150 + %152 = getelementptr inbounds nuw i8, ptr %148, i64 4 + %153 = xor i64 %147, -1 + %154 = add nsw i64 %.013.i.i.i18, %153 + %.sroa.011.1.i.i.i22 = select i1 %151, ptr %.sroa.011.012.i.i.i19, ptr %152 + %.1.i.i.i23 = select i1 %151, i64 %147, i64 %154 + %155 = icmp sgt i64 %.1.i.i.i23, 0 + br i1 %155, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17, label %_ZN4mold16MergeableSectionINS_4M68KEE12get_fragmentEl.exit24, !llvm.loop !390 + +_ZN4mold16MergeableSectionINS_4M68KEE12get_fragmentEl.exit24: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17, %137 + %.sroa.011.0.lcssa.i.i.i14 = phi ptr [ %139, %137 ], [ %.sroa.011.1.i.i.i22, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17 ] + %156 = getelementptr inbounds i8, ptr %.sroa.011.0.lcssa.i.i.i14, i64 -4 + %157 = ptrtoint ptr %156 to i64 + %158 = sub i64 %157, %142 + %159 = ashr exact i64 %158, 2 + %160 = getelementptr inbounds nuw i8, ptr %62, i64 8 + %161 = load ptr, ptr %160, align 8, !tbaa !391 + %162 = getelementptr inbounds nuw ptr, ptr %161, i64 %159 + %163 = getelementptr inbounds nuw i8, ptr %139, i64 %158 + %164 = load i32, ptr %163, align 4, !tbaa !389 + %165 = zext i32 %164 to i64 + %166 = sub nsw i64 %85, %165 + %167 = load ptr, ptr %162, align 8, !tbaa !394 + %168 = getelementptr inbounds nuw i8, ptr %2, i64 8 %169 = load i8, ptr %168, align 1, !tbaa !258 %170 = zext i8 %169 to i32 - %171 = shl nuw nsw i32 %170, 16 - %172 = or disjoint i32 %171, %167 - %173 = getelementptr inbounds nuw i8, ptr %2, i64 10 - %174 = load i8, ptr %173, align 1, !tbaa !258 - %175 = zext i8 %174 to i32 - %176 = shl nuw nsw i32 %175, 8 - %177 = or disjoint i32 %172, %176 - %178 = getelementptr inbounds nuw i8, ptr %2, i64 11 - %179 = load i8, ptr %178, align 1, !tbaa !258 - %180 = zext i8 %179 to i32 - %181 = or disjoint i32 %177, %180 - %182 = sext i32 %181 to i64 - %183 = add nsw i64 %162, %182 - br label %184 - -184: ; preds = %3, %3, %3, %_ZN4mold10ObjectFileINS_4M68KEE9get_shndxERKNS_6ElfSymIS1_EE.exit, %_ZN4mold16MergeableSectionINS_4M68KEE12get_fragmentEl.exit, %_ZN4mold16MergeableSectionINS_4M68KEE12get_fragmentEl.exit24 - %.sroa.027.0 = phi ptr [ %132, %_ZN4mold16MergeableSectionINS_4M68KEE12get_fragmentEl.exit ], [ %163, %_ZN4mold16MergeableSectionINS_4M68KEE12get_fragmentEl.exit24 ], [ null, %3 ], [ null, %_ZN4mold10ObjectFileINS_4M68KEE9get_shndxERKNS_6ElfSymIS1_EE.exit ], [ null, %3 ], [ null, %3 ] - %.sroa.5.0 = phi i64 [ %131, %_ZN4mold16MergeableSectionINS_4M68KEE12get_fragmentEl.exit ], [ %183, %_ZN4mold16MergeableSectionINS_4M68KEE12get_fragmentEl.exit24 ], [ 0, %3 ], [ 0, %_ZN4mold10ObjectFileINS_4M68KEE9get_shndxERKNS_6ElfSymIS1_EE.exit ], [ 0, %3 ], [ 0, %3 ] + %171 = shl nuw i32 %170, 24 + %172 = getelementptr inbounds nuw i8, ptr %2, i64 9 + %173 = load i8, ptr %172, align 1, !tbaa !258 + %174 = zext i8 %173 to i32 + %175 = shl nuw nsw i32 %174, 16 + %176 = or disjoint i32 %175, %171 + %177 = getelementptr inbounds nuw i8, ptr %2, i64 10 + %178 = load i8, ptr %177, align 1, !tbaa !258 + %179 = zext i8 %178 to i32 + %180 = shl nuw nsw i32 %179, 8 + %181 = or disjoint i32 %176, %180 + %182 = getelementptr inbounds nuw i8, ptr %2, i64 11 + %183 = load i8, ptr %182, align 1, !tbaa !258 + %184 = zext i8 %183 to i32 + %185 = or disjoint i32 %181, %184 + %186 = sext i32 %185 to i64 + %187 = add nsw i64 %166, %186 + br label %188 + +188: ; preds = %3, %_ZN4mold10ObjectFileINS_4M68KEE9get_shndxERKNS_6ElfSymIS1_EE.exit, %_ZN4mold16MergeableSectionINS_4M68KEE12get_fragmentEl.exit, %_ZN4mold16MergeableSectionINS_4M68KEE12get_fragmentEl.exit24 + %.sroa.027.0 = phi ptr [ %136, %_ZN4mold16MergeableSectionINS_4M68KEE12get_fragmentEl.exit ], [ %167, %_ZN4mold16MergeableSectionINS_4M68KEE12get_fragmentEl.exit24 ], [ null, %_ZN4mold10ObjectFileINS_4M68KEE9get_shndxERKNS_6ElfSymIS1_EE.exit ], [ null, %3 ] + %.sroa.5.0 = phi i64 [ %135, %_ZN4mold16MergeableSectionINS_4M68KEE12get_fragmentEl.exit ], [ %187, %_ZN4mold16MergeableSectionINS_4M68KEE12get_fragmentEl.exit24 ], [ 0, %_ZN4mold10ObjectFileINS_4M68KEE9get_shndxERKNS_6ElfSymIS1_EE.exit ], [ 0, %3 ] %.fca.0.insert = insertvalue { ptr, i64 } poison, ptr %.sroa.027.0, 0 %.fca.1.insert = insertvalue { ptr, i64 } %.fca.0.insert, i64 %.sroa.5.0, 1 ret { ptr, i64 } %.fca.1.insert diff --git a/bench/mold/optimized/arch-sparc64.ll b/bench/mold/optimized/arch-sparc64.ll index 9649330b127..800e877f5a7 100644 --- a/bench/mold/optimized/arch-sparc64.ll +++ b/bench/mold/optimized/arch-sparc64.ll @@ -4541,10 +4541,10 @@ define linkonce_odr dso_local { ptr, i64 } @_ZN4mold12InputSectionINS_7SPARC64EE %18 = load ptr, ptr %5, align 8, !tbaa !280 %.idx = mul nuw nsw i64 %11, 1572864 %19 = getelementptr inbounds nuw i8, ptr %18, i64 %.idx - %.idx28 = mul nuw nsw i64 %8, 402653184 - %20 = getelementptr inbounds nuw i8, ptr %19, i64 %.idx28 - %.idx29 = mul nuw nsw i64 %14, 6144 - %21 = getelementptr inbounds nuw i8, ptr %20, i64 %.idx29 + %.idx29 = mul nuw nsw i64 %8, 402653184 + %20 = getelementptr inbounds nuw i8, ptr %19, i64 %.idx29 + %.idx30 = mul nuw nsw i64 %14, 6144 + %21 = getelementptr inbounds nuw i8, ptr %20, i64 %.idx30 %22 = getelementptr inbounds nuw %"struct.mold::ElfSym", ptr %21, i64 %17 %23 = getelementptr inbounds nuw i8, ptr %22, i64 6 %24 = load i8, ptr %23, align 1, !tbaa !259 @@ -4554,269 +4554,273 @@ define linkonce_odr dso_local { ptr, i64 } @_ZN4mold12InputSectionINS_7SPARC64EE %28 = load i8, ptr %27, align 1, !tbaa !259 %29 = zext i8 %28 to i16 %30 = or disjoint i16 %26, %29 - switch i16 %30, label %56 [ - i16 -15, label %246 - i16 -14, label %246 - i16 0, label %246 - i16 -1, label %31 - ] - -31: ; preds = %3 - %32 = getelementptr inbounds nuw i8, ptr %4, i64 696 - %33 = ptrtoint ptr %22 to i64 - %34 = ptrtoint ptr %18 to i64 - %35 = sub i64 %33, %34 - %36 = load ptr, ptr %32, align 8, !tbaa !388 - %37 = sdiv exact i64 %35, 6 - %38 = getelementptr inbounds nuw i8, ptr %36, i64 %37 - %39 = load i8, ptr %38, align 1, !tbaa !259 - %40 = zext i8 %39 to i64 - %41 = shl nuw nsw i64 %40, 24 - %42 = getelementptr inbounds nuw i8, ptr %38, i64 1 + %.off = add i16 %30, 15 + %switch = icmp ult i16 %.off, 2 + %31 = or i8 %28, %24 + %32 = icmp eq i8 %31, 0 + %or.cond = or i1 %32, %switch + br i1 %or.cond, label %250, label %33 + +33: ; preds = %3 + %34 = icmp eq i16 %30, -1 + br i1 %34, label %35, label %60 + +35: ; preds = %33 + %36 = getelementptr inbounds nuw i8, ptr %4, i64 696 + %37 = ptrtoint ptr %22 to i64 + %38 = ptrtoint ptr %18 to i64 + %39 = sub i64 %37, %38 + %40 = load ptr, ptr %36, align 8, !tbaa !388 + %41 = sdiv exact i64 %39, 6 + %42 = getelementptr inbounds nuw i8, ptr %40, i64 %41 %43 = load i8, ptr %42, align 1, !tbaa !259 %44 = zext i8 %43 to i64 - %45 = shl nuw nsw i64 %44, 16 - %46 = or disjoint i64 %45, %41 - %47 = getelementptr inbounds nuw i8, ptr %38, i64 2 - %48 = load i8, ptr %47, align 1, !tbaa !259 - %49 = zext i8 %48 to i64 - %50 = shl nuw nsw i64 %49, 8 - %51 = or disjoint i64 %46, %50 - %52 = getelementptr inbounds nuw i8, ptr %38, i64 3 - %53 = load i8, ptr %52, align 1, !tbaa !259 - %54 = zext i8 %53 to i64 - %55 = or disjoint i64 %51, %54 + %45 = shl nuw nsw i64 %44, 24 + %46 = getelementptr inbounds nuw i8, ptr %42, i64 1 + %47 = load i8, ptr %46, align 1, !tbaa !259 + %48 = zext i8 %47 to i64 + %49 = shl nuw nsw i64 %48, 16 + %50 = or disjoint i64 %49, %45 + %51 = getelementptr inbounds nuw i8, ptr %42, i64 2 + %52 = load i8, ptr %51, align 1, !tbaa !259 + %53 = zext i8 %52 to i64 + %54 = shl nuw nsw i64 %53, 8 + %55 = or disjoint i64 %50, %54 + %56 = getelementptr inbounds nuw i8, ptr %42, i64 3 + %57 = load i8, ptr %56, align 1, !tbaa !259 + %58 = zext i8 %57 to i64 + %59 = or disjoint i64 %55, %58 br label %_ZN4mold10ObjectFileINS_7SPARC64EE9get_shndxERKNS_6ElfSymIS1_EE.exit -56: ; preds = %3 - %57 = icmp eq i8 %24, -1 - %58 = zext i16 %30 to i64 - %spec.select.i = select i1 %57, i64 0, i64 %58 +60: ; preds = %33 + %61 = icmp eq i8 %24, -1 + %62 = zext i16 %30 to i64 + %spec.select.i = select i1 %61, i64 0, i64 %62 br label %_ZN4mold10ObjectFileINS_7SPARC64EE9get_shndxERKNS_6ElfSymIS1_EE.exit -_ZN4mold10ObjectFileINS_7SPARC64EE9get_shndxERKNS_6ElfSymIS1_EE.exit: ; preds = %31, %56 - %.0.i = phi i64 [ %55, %31 ], [ %spec.select.i, %56 ] - %59 = getelementptr inbounds nuw i8, ptr %4, i64 352 - %60 = load ptr, ptr %59, align 8, !tbaa !391 - %61 = getelementptr inbounds nuw %"class.std::unique_ptr.327", ptr %60, i64 %.0.i - %62 = load ptr, ptr %61, align 8, !tbaa !394 - %.not = icmp eq ptr %62, null - br i1 %.not, label %246, label %63 - -63: ; preds = %_ZN4mold10ObjectFileINS_7SPARC64EE9get_shndxERKNS_6ElfSymIS1_EE.exit - %64 = getelementptr inbounds nuw i8, ptr %22, i64 4 - %65 = load i8, ptr %64, align 1 - %66 = and i8 %65, 15 - %67 = icmp eq i8 %66, 3 - %68 = getelementptr inbounds nuw i8, ptr %22, i64 8 - %69 = load i8, ptr %68, align 1, !tbaa !259 - %70 = zext i8 %69 to i64 - %71 = shl nuw i64 %70, 56 - %72 = getelementptr inbounds nuw i8, ptr %22, i64 9 +_ZN4mold10ObjectFileINS_7SPARC64EE9get_shndxERKNS_6ElfSymIS1_EE.exit: ; preds = %35, %60 + %.0.i = phi i64 [ %59, %35 ], [ %spec.select.i, %60 ] + %63 = getelementptr inbounds nuw i8, ptr %4, i64 352 + %64 = load ptr, ptr %63, align 8, !tbaa !391 + %65 = getelementptr inbounds nuw %"class.std::unique_ptr.327", ptr %64, i64 %.0.i + %66 = load ptr, ptr %65, align 8, !tbaa !394 + %.not = icmp eq ptr %66, null + br i1 %.not, label %250, label %67 + +67: ; preds = %_ZN4mold10ObjectFileINS_7SPARC64EE9get_shndxERKNS_6ElfSymIS1_EE.exit + %68 = getelementptr inbounds nuw i8, ptr %22, i64 4 + %69 = load i8, ptr %68, align 1 + %70 = and i8 %69, 15 + %71 = icmp eq i8 %70, 3 + %72 = getelementptr inbounds nuw i8, ptr %22, i64 8 %73 = load i8, ptr %72, align 1, !tbaa !259 %74 = zext i8 %73 to i64 - %75 = shl nuw nsw i64 %74, 48 - %76 = or disjoint i64 %75, %71 - %77 = getelementptr inbounds nuw i8, ptr %22, i64 10 - %78 = load i8, ptr %77, align 1, !tbaa !259 - %79 = zext i8 %78 to i64 - %80 = shl nuw nsw i64 %79, 40 - %81 = or disjoint i64 %76, %80 - %82 = getelementptr inbounds nuw i8, ptr %22, i64 11 - %83 = load i8, ptr %82, align 1, !tbaa !259 - %84 = zext i8 %83 to i64 - %85 = shl nuw nsw i64 %84, 32 - %86 = or disjoint i64 %81, %85 - %87 = getelementptr inbounds nuw i8, ptr %22, i64 12 - %88 = load i8, ptr %87, align 1, !tbaa !259 - %89 = zext i8 %88 to i64 - %90 = shl nuw nsw i64 %89, 24 - %91 = or disjoint i64 %86, %90 - %92 = getelementptr inbounds nuw i8, ptr %22, i64 13 - %93 = load i8, ptr %92, align 1, !tbaa !259 - %94 = zext i8 %93 to i64 - %95 = shl nuw nsw i64 %94, 16 - %96 = or disjoint i64 %91, %95 - %97 = getelementptr inbounds nuw i8, ptr %22, i64 14 - %98 = load i8, ptr %97, align 1, !tbaa !259 - %99 = zext i8 %98 to i64 - %100 = shl nuw nsw i64 %99, 8 - %101 = or i64 %96, %100 - %102 = getelementptr inbounds nuw i8, ptr %22, i64 15 - %103 = load i8, ptr %102, align 1, !tbaa !259 - %104 = zext i8 %103 to i64 - %105 = or i64 %101, %104 - br i1 %67, label %106, label %176 - -106: ; preds = %63 - %107 = getelementptr inbounds nuw i8, ptr %2, i64 16 - %108 = load i8, ptr %107, align 1, !tbaa !259 - %109 = zext i8 %108 to i64 - %110 = shl nuw i64 %109, 56 - %111 = getelementptr inbounds nuw i8, ptr %2, i64 17 + %75 = shl nuw i64 %74, 56 + %76 = getelementptr inbounds nuw i8, ptr %22, i64 9 + %77 = load i8, ptr %76, align 1, !tbaa !259 + %78 = zext i8 %77 to i64 + %79 = shl nuw nsw i64 %78, 48 + %80 = or disjoint i64 %79, %75 + %81 = getelementptr inbounds nuw i8, ptr %22, i64 10 + %82 = load i8, ptr %81, align 1, !tbaa !259 + %83 = zext i8 %82 to i64 + %84 = shl nuw nsw i64 %83, 40 + %85 = or disjoint i64 %80, %84 + %86 = getelementptr inbounds nuw i8, ptr %22, i64 11 + %87 = load i8, ptr %86, align 1, !tbaa !259 + %88 = zext i8 %87 to i64 + %89 = shl nuw nsw i64 %88, 32 + %90 = or disjoint i64 %85, %89 + %91 = getelementptr inbounds nuw i8, ptr %22, i64 12 + %92 = load i8, ptr %91, align 1, !tbaa !259 + %93 = zext i8 %92 to i64 + %94 = shl nuw nsw i64 %93, 24 + %95 = or disjoint i64 %90, %94 + %96 = getelementptr inbounds nuw i8, ptr %22, i64 13 + %97 = load i8, ptr %96, align 1, !tbaa !259 + %98 = zext i8 %97 to i64 + %99 = shl nuw nsw i64 %98, 16 + %100 = or disjoint i64 %95, %99 + %101 = getelementptr inbounds nuw i8, ptr %22, i64 14 + %102 = load i8, ptr %101, align 1, !tbaa !259 + %103 = zext i8 %102 to i64 + %104 = shl nuw nsw i64 %103, 8 + %105 = or i64 %100, %104 + %106 = getelementptr inbounds nuw i8, ptr %22, i64 15 + %107 = load i8, ptr %106, align 1, !tbaa !259 + %108 = zext i8 %107 to i64 + %109 = or i64 %105, %108 + br i1 %71, label %110, label %180 + +110: ; preds = %67 + %111 = getelementptr inbounds nuw i8, ptr %2, i64 16 %112 = load i8, ptr %111, align 1, !tbaa !259 %113 = zext i8 %112 to i64 - %114 = shl nuw nsw i64 %113, 48 - %115 = or disjoint i64 %114, %110 - %116 = getelementptr inbounds nuw i8, ptr %2, i64 18 - %117 = load i8, ptr %116, align 1, !tbaa !259 - %118 = zext i8 %117 to i64 - %119 = shl nuw nsw i64 %118, 40 - %120 = or disjoint i64 %115, %119 - %121 = getelementptr inbounds nuw i8, ptr %2, i64 19 - %122 = load i8, ptr %121, align 1, !tbaa !259 - %123 = zext i8 %122 to i64 - %124 = shl nuw nsw i64 %123, 32 - %125 = or disjoint i64 %120, %124 - %126 = getelementptr inbounds nuw i8, ptr %2, i64 20 - %127 = load i8, ptr %126, align 1, !tbaa !259 - %128 = zext i8 %127 to i64 - %129 = shl nuw nsw i64 %128, 24 - %130 = or disjoint i64 %125, %129 - %131 = getelementptr inbounds nuw i8, ptr %2, i64 21 - %132 = load i8, ptr %131, align 1, !tbaa !259 - %133 = zext i8 %132 to i64 - %134 = shl nuw nsw i64 %133, 16 - %135 = or disjoint i64 %130, %134 - %136 = getelementptr inbounds nuw i8, ptr %2, i64 22 - %137 = load i8, ptr %136, align 1, !tbaa !259 - %138 = zext i8 %137 to i64 - %139 = shl nuw nsw i64 %138, 8 - %140 = or i64 %135, %139 - %141 = getelementptr inbounds nuw i8, ptr %2, i64 23 - %142 = load i8, ptr %141, align 1, !tbaa !259 - %143 = zext i8 %142 to i64 - %144 = or i64 %140, %143 - %145 = add i64 %144, %105 - %146 = getelementptr inbounds nuw i8, ptr %62, i64 48 - %147 = load ptr, ptr %146, align 8, !tbaa !396 - %148 = getelementptr inbounds nuw i8, ptr %62, i64 56 - %149 = load ptr, ptr %148, align 8, !tbaa !398 - %150 = ptrtoint ptr %147 to i64 - %151 = ptrtoint ptr %149 to i64 - %152 = sub i64 %151, %150 - %153 = ashr exact i64 %152, 2 - %154 = icmp sgt i64 %153, 0 - br i1 %154, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i, label %_ZN4mold16MergeableSectionINS_7SPARC64EE12get_fragmentEl.exit - -_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i: ; preds = %106, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i - %.013.i.i.i = phi i64 [ %.1.i.i.i, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i ], [ %153, %106 ] - %.sroa.011.012.i.i.i = phi ptr [ %.sroa.011.1.i.i.i, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i ], [ %147, %106 ] - %155 = lshr i64 %.013.i.i.i, 1 - %156 = getelementptr inbounds nuw i32, ptr %.sroa.011.012.i.i.i, i64 %155 - %157 = load i32, ptr %156, align 4, !tbaa !399 - %158 = zext i32 %157 to i64 - %159 = icmp slt i64 %145, %158 - %160 = getelementptr inbounds nuw i8, ptr %156, i64 4 - %161 = xor i64 %155, -1 - %162 = add nsw i64 %.013.i.i.i, %161 - %.sroa.011.1.i.i.i = select i1 %159, ptr %.sroa.011.012.i.i.i, ptr %160 - %.1.i.i.i = select i1 %159, i64 %155, i64 %162 - %163 = icmp sgt i64 %.1.i.i.i, 0 - br i1 %163, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i, label %_ZN4mold16MergeableSectionINS_7SPARC64EE12get_fragmentEl.exit, !llvm.loop !400 - -_ZN4mold16MergeableSectionINS_7SPARC64EE12get_fragmentEl.exit: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i, %106 - %.sroa.011.0.lcssa.i.i.i = phi ptr [ %147, %106 ], [ %.sroa.011.1.i.i.i, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i ] - %164 = getelementptr inbounds i8, ptr %.sroa.011.0.lcssa.i.i.i, i64 -4 - %165 = ptrtoint ptr %164 to i64 - %166 = sub i64 %165, %150 - %167 = ashr exact i64 %166, 2 - %168 = getelementptr inbounds nuw i8, ptr %62, i64 8 - %169 = load ptr, ptr %168, align 8, !tbaa !401 - %170 = getelementptr inbounds nuw ptr, ptr %169, i64 %167 - %171 = getelementptr inbounds nuw i8, ptr %147, i64 %166 - %172 = load i32, ptr %171, align 4, !tbaa !399 - %173 = zext i32 %172 to i64 - %174 = sub nsw i64 %145, %173 - %175 = load ptr, ptr %170, align 8, !tbaa !404 - br label %246 - -176: ; preds = %63 - %177 = getelementptr inbounds nuw i8, ptr %62, i64 48 - %178 = load ptr, ptr %177, align 8, !tbaa !396 - %179 = getelementptr inbounds nuw i8, ptr %62, i64 56 - %180 = load ptr, ptr %179, align 8, !tbaa !398 - %181 = ptrtoint ptr %178 to i64 - %182 = ptrtoint ptr %180 to i64 - %183 = sub i64 %182, %181 - %184 = ashr exact i64 %183, 2 - %185 = icmp sgt i64 %184, 0 - br i1 %185, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17, label %_ZN4mold16MergeableSectionINS_7SPARC64EE12get_fragmentEl.exit24 - -_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17: ; preds = %176, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17 - %.013.i.i.i18 = phi i64 [ %.1.i.i.i23, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17 ], [ %184, %176 ] - %.sroa.011.012.i.i.i19 = phi ptr [ %.sroa.011.1.i.i.i22, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17 ], [ %178, %176 ] - %186 = lshr i64 %.013.i.i.i18, 1 - %187 = getelementptr inbounds nuw i32, ptr %.sroa.011.012.i.i.i19, i64 %186 - %188 = load i32, ptr %187, align 4, !tbaa !399 - %189 = zext i32 %188 to i64 - %190 = icmp slt i64 %105, %189 - %191 = getelementptr inbounds nuw i8, ptr %187, i64 4 - %192 = xor i64 %186, -1 - %193 = add nsw i64 %.013.i.i.i18, %192 - %.sroa.011.1.i.i.i22 = select i1 %190, ptr %.sroa.011.012.i.i.i19, ptr %191 - %.1.i.i.i23 = select i1 %190, i64 %186, i64 %193 - %194 = icmp sgt i64 %.1.i.i.i23, 0 - br i1 %194, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17, label %_ZN4mold16MergeableSectionINS_7SPARC64EE12get_fragmentEl.exit24, !llvm.loop !400 - -_ZN4mold16MergeableSectionINS_7SPARC64EE12get_fragmentEl.exit24: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17, %176 - %.sroa.011.0.lcssa.i.i.i14 = phi ptr [ %178, %176 ], [ %.sroa.011.1.i.i.i22, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17 ] - %195 = getelementptr inbounds i8, ptr %.sroa.011.0.lcssa.i.i.i14, i64 -4 - %196 = ptrtoint ptr %195 to i64 - %197 = sub i64 %196, %181 - %198 = ashr exact i64 %197, 2 - %199 = getelementptr inbounds nuw i8, ptr %62, i64 8 - %200 = load ptr, ptr %199, align 8, !tbaa !401 - %201 = getelementptr inbounds nuw ptr, ptr %200, i64 %198 - %202 = getelementptr inbounds nuw i8, ptr %178, i64 %197 - %203 = load i32, ptr %202, align 4, !tbaa !399 - %204 = zext i32 %203 to i64 - %205 = sub i64 %105, %204 - %206 = load ptr, ptr %201, align 8, !tbaa !404 - %207 = getelementptr inbounds nuw i8, ptr %2, i64 16 - %208 = load i8, ptr %207, align 1, !tbaa !259 - %209 = zext i8 %208 to i64 - %210 = shl nuw i64 %209, 56 - %211 = getelementptr inbounds nuw i8, ptr %2, i64 17 + %114 = shl nuw i64 %113, 56 + %115 = getelementptr inbounds nuw i8, ptr %2, i64 17 + %116 = load i8, ptr %115, align 1, !tbaa !259 + %117 = zext i8 %116 to i64 + %118 = shl nuw nsw i64 %117, 48 + %119 = or disjoint i64 %118, %114 + %120 = getelementptr inbounds nuw i8, ptr %2, i64 18 + %121 = load i8, ptr %120, align 1, !tbaa !259 + %122 = zext i8 %121 to i64 + %123 = shl nuw nsw i64 %122, 40 + %124 = or disjoint i64 %119, %123 + %125 = getelementptr inbounds nuw i8, ptr %2, i64 19 + %126 = load i8, ptr %125, align 1, !tbaa !259 + %127 = zext i8 %126 to i64 + %128 = shl nuw nsw i64 %127, 32 + %129 = or disjoint i64 %124, %128 + %130 = getelementptr inbounds nuw i8, ptr %2, i64 20 + %131 = load i8, ptr %130, align 1, !tbaa !259 + %132 = zext i8 %131 to i64 + %133 = shl nuw nsw i64 %132, 24 + %134 = or disjoint i64 %129, %133 + %135 = getelementptr inbounds nuw i8, ptr %2, i64 21 + %136 = load i8, ptr %135, align 1, !tbaa !259 + %137 = zext i8 %136 to i64 + %138 = shl nuw nsw i64 %137, 16 + %139 = or disjoint i64 %134, %138 + %140 = getelementptr inbounds nuw i8, ptr %2, i64 22 + %141 = load i8, ptr %140, align 1, !tbaa !259 + %142 = zext i8 %141 to i64 + %143 = shl nuw nsw i64 %142, 8 + %144 = or i64 %139, %143 + %145 = getelementptr inbounds nuw i8, ptr %2, i64 23 + %146 = load i8, ptr %145, align 1, !tbaa !259 + %147 = zext i8 %146 to i64 + %148 = or i64 %144, %147 + %149 = add i64 %148, %109 + %150 = getelementptr inbounds nuw i8, ptr %66, i64 48 + %151 = load ptr, ptr %150, align 8, !tbaa !396 + %152 = getelementptr inbounds nuw i8, ptr %66, i64 56 + %153 = load ptr, ptr %152, align 8, !tbaa !398 + %154 = ptrtoint ptr %151 to i64 + %155 = ptrtoint ptr %153 to i64 + %156 = sub i64 %155, %154 + %157 = ashr exact i64 %156, 2 + %158 = icmp sgt i64 %157, 0 + br i1 %158, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i, label %_ZN4mold16MergeableSectionINS_7SPARC64EE12get_fragmentEl.exit + +_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i: ; preds = %110, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i + %.013.i.i.i = phi i64 [ %.1.i.i.i, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i ], [ %157, %110 ] + %.sroa.011.012.i.i.i = phi ptr [ %.sroa.011.1.i.i.i, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i ], [ %151, %110 ] + %159 = lshr i64 %.013.i.i.i, 1 + %160 = getelementptr inbounds nuw i32, ptr %.sroa.011.012.i.i.i, i64 %159 + %161 = load i32, ptr %160, align 4, !tbaa !399 + %162 = zext i32 %161 to i64 + %163 = icmp slt i64 %149, %162 + %164 = getelementptr inbounds nuw i8, ptr %160, i64 4 + %165 = xor i64 %159, -1 + %166 = add nsw i64 %.013.i.i.i, %165 + %.sroa.011.1.i.i.i = select i1 %163, ptr %.sroa.011.012.i.i.i, ptr %164 + %.1.i.i.i = select i1 %163, i64 %159, i64 %166 + %167 = icmp sgt i64 %.1.i.i.i, 0 + br i1 %167, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i, label %_ZN4mold16MergeableSectionINS_7SPARC64EE12get_fragmentEl.exit, !llvm.loop !400 + +_ZN4mold16MergeableSectionINS_7SPARC64EE12get_fragmentEl.exit: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i, %110 + %.sroa.011.0.lcssa.i.i.i = phi ptr [ %151, %110 ], [ %.sroa.011.1.i.i.i, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i ] + %168 = getelementptr inbounds i8, ptr %.sroa.011.0.lcssa.i.i.i, i64 -4 + %169 = ptrtoint ptr %168 to i64 + %170 = sub i64 %169, %154 + %171 = ashr exact i64 %170, 2 + %172 = getelementptr inbounds nuw i8, ptr %66, i64 8 + %173 = load ptr, ptr %172, align 8, !tbaa !401 + %174 = getelementptr inbounds nuw ptr, ptr %173, i64 %171 + %175 = getelementptr inbounds nuw i8, ptr %151, i64 %170 + %176 = load i32, ptr %175, align 4, !tbaa !399 + %177 = zext i32 %176 to i64 + %178 = sub nsw i64 %149, %177 + %179 = load ptr, ptr %174, align 8, !tbaa !404 + br label %250 + +180: ; preds = %67 + %181 = getelementptr inbounds nuw i8, ptr %66, i64 48 + %182 = load ptr, ptr %181, align 8, !tbaa !396 + %183 = getelementptr inbounds nuw i8, ptr %66, i64 56 + %184 = load ptr, ptr %183, align 8, !tbaa !398 + %185 = ptrtoint ptr %182 to i64 + %186 = ptrtoint ptr %184 to i64 + %187 = sub i64 %186, %185 + %188 = ashr exact i64 %187, 2 + %189 = icmp sgt i64 %188, 0 + br i1 %189, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17, label %_ZN4mold16MergeableSectionINS_7SPARC64EE12get_fragmentEl.exit24 + +_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17: ; preds = %180, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17 + %.013.i.i.i18 = phi i64 [ %.1.i.i.i23, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17 ], [ %188, %180 ] + %.sroa.011.012.i.i.i19 = phi ptr [ %.sroa.011.1.i.i.i22, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17 ], [ %182, %180 ] + %190 = lshr i64 %.013.i.i.i18, 1 + %191 = getelementptr inbounds nuw i32, ptr %.sroa.011.012.i.i.i19, i64 %190 + %192 = load i32, ptr %191, align 4, !tbaa !399 + %193 = zext i32 %192 to i64 + %194 = icmp slt i64 %109, %193 + %195 = getelementptr inbounds nuw i8, ptr %191, i64 4 + %196 = xor i64 %190, -1 + %197 = add nsw i64 %.013.i.i.i18, %196 + %.sroa.011.1.i.i.i22 = select i1 %194, ptr %.sroa.011.012.i.i.i19, ptr %195 + %.1.i.i.i23 = select i1 %194, i64 %190, i64 %197 + %198 = icmp sgt i64 %.1.i.i.i23, 0 + br i1 %198, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17, label %_ZN4mold16MergeableSectionINS_7SPARC64EE12get_fragmentEl.exit24, !llvm.loop !400 + +_ZN4mold16MergeableSectionINS_7SPARC64EE12get_fragmentEl.exit24: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17, %180 + %.sroa.011.0.lcssa.i.i.i14 = phi ptr [ %182, %180 ], [ %.sroa.011.1.i.i.i22, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17 ] + %199 = getelementptr inbounds i8, ptr %.sroa.011.0.lcssa.i.i.i14, i64 -4 + %200 = ptrtoint ptr %199 to i64 + %201 = sub i64 %200, %185 + %202 = ashr exact i64 %201, 2 + %203 = getelementptr inbounds nuw i8, ptr %66, i64 8 + %204 = load ptr, ptr %203, align 8, !tbaa !401 + %205 = getelementptr inbounds nuw ptr, ptr %204, i64 %202 + %206 = getelementptr inbounds nuw i8, ptr %182, i64 %201 + %207 = load i32, ptr %206, align 4, !tbaa !399 + %208 = zext i32 %207 to i64 + %209 = sub i64 %109, %208 + %210 = load ptr, ptr %205, align 8, !tbaa !404 + %211 = getelementptr inbounds nuw i8, ptr %2, i64 16 %212 = load i8, ptr %211, align 1, !tbaa !259 %213 = zext i8 %212 to i64 - %214 = shl nuw nsw i64 %213, 48 - %215 = or disjoint i64 %214, %210 - %216 = getelementptr inbounds nuw i8, ptr %2, i64 18 - %217 = load i8, ptr %216, align 1, !tbaa !259 - %218 = zext i8 %217 to i64 - %219 = shl nuw nsw i64 %218, 40 - %220 = or disjoint i64 %215, %219 - %221 = getelementptr inbounds nuw i8, ptr %2, i64 19 - %222 = load i8, ptr %221, align 1, !tbaa !259 - %223 = zext i8 %222 to i64 - %224 = shl nuw nsw i64 %223, 32 - %225 = or disjoint i64 %220, %224 - %226 = getelementptr inbounds nuw i8, ptr %2, i64 20 - %227 = load i8, ptr %226, align 1, !tbaa !259 - %228 = zext i8 %227 to i64 - %229 = shl nuw nsw i64 %228, 24 - %230 = or disjoint i64 %225, %229 - %231 = getelementptr inbounds nuw i8, ptr %2, i64 21 - %232 = load i8, ptr %231, align 1, !tbaa !259 - %233 = zext i8 %232 to i64 - %234 = shl nuw nsw i64 %233, 16 - %235 = or disjoint i64 %230, %234 - %236 = getelementptr inbounds nuw i8, ptr %2, i64 22 - %237 = load i8, ptr %236, align 1, !tbaa !259 - %238 = zext i8 %237 to i64 - %239 = shl nuw nsw i64 %238, 8 - %240 = or i64 %235, %239 - %241 = getelementptr inbounds nuw i8, ptr %2, i64 23 - %242 = load i8, ptr %241, align 1, !tbaa !259 - %243 = zext i8 %242 to i64 - %244 = or i64 %240, %243 - %245 = add nsw i64 %205, %244 - br label %246 - -246: ; preds = %3, %3, %3, %_ZN4mold10ObjectFileINS_7SPARC64EE9get_shndxERKNS_6ElfSymIS1_EE.exit, %_ZN4mold16MergeableSectionINS_7SPARC64EE12get_fragmentEl.exit, %_ZN4mold16MergeableSectionINS_7SPARC64EE12get_fragmentEl.exit24 - %.sroa.027.0 = phi ptr [ %175, %_ZN4mold16MergeableSectionINS_7SPARC64EE12get_fragmentEl.exit ], [ %206, %_ZN4mold16MergeableSectionINS_7SPARC64EE12get_fragmentEl.exit24 ], [ null, %3 ], [ null, %_ZN4mold10ObjectFileINS_7SPARC64EE9get_shndxERKNS_6ElfSymIS1_EE.exit ], [ null, %3 ], [ null, %3 ] - %.sroa.5.0 = phi i64 [ %174, %_ZN4mold16MergeableSectionINS_7SPARC64EE12get_fragmentEl.exit ], [ %245, %_ZN4mold16MergeableSectionINS_7SPARC64EE12get_fragmentEl.exit24 ], [ 0, %3 ], [ 0, %_ZN4mold10ObjectFileINS_7SPARC64EE9get_shndxERKNS_6ElfSymIS1_EE.exit ], [ 0, %3 ], [ 0, %3 ] + %214 = shl nuw i64 %213, 56 + %215 = getelementptr inbounds nuw i8, ptr %2, i64 17 + %216 = load i8, ptr %215, align 1, !tbaa !259 + %217 = zext i8 %216 to i64 + %218 = shl nuw nsw i64 %217, 48 + %219 = or disjoint i64 %218, %214 + %220 = getelementptr inbounds nuw i8, ptr %2, i64 18 + %221 = load i8, ptr %220, align 1, !tbaa !259 + %222 = zext i8 %221 to i64 + %223 = shl nuw nsw i64 %222, 40 + %224 = or disjoint i64 %219, %223 + %225 = getelementptr inbounds nuw i8, ptr %2, i64 19 + %226 = load i8, ptr %225, align 1, !tbaa !259 + %227 = zext i8 %226 to i64 + %228 = shl nuw nsw i64 %227, 32 + %229 = or disjoint i64 %224, %228 + %230 = getelementptr inbounds nuw i8, ptr %2, i64 20 + %231 = load i8, ptr %230, align 1, !tbaa !259 + %232 = zext i8 %231 to i64 + %233 = shl nuw nsw i64 %232, 24 + %234 = or disjoint i64 %229, %233 + %235 = getelementptr inbounds nuw i8, ptr %2, i64 21 + %236 = load i8, ptr %235, align 1, !tbaa !259 + %237 = zext i8 %236 to i64 + %238 = shl nuw nsw i64 %237, 16 + %239 = or disjoint i64 %234, %238 + %240 = getelementptr inbounds nuw i8, ptr %2, i64 22 + %241 = load i8, ptr %240, align 1, !tbaa !259 + %242 = zext i8 %241 to i64 + %243 = shl nuw nsw i64 %242, 8 + %244 = or i64 %239, %243 + %245 = getelementptr inbounds nuw i8, ptr %2, i64 23 + %246 = load i8, ptr %245, align 1, !tbaa !259 + %247 = zext i8 %246 to i64 + %248 = or i64 %244, %247 + %249 = add nsw i64 %209, %248 + br label %250 + +250: ; preds = %3, %_ZN4mold10ObjectFileINS_7SPARC64EE9get_shndxERKNS_6ElfSymIS1_EE.exit, %_ZN4mold16MergeableSectionINS_7SPARC64EE12get_fragmentEl.exit, %_ZN4mold16MergeableSectionINS_7SPARC64EE12get_fragmentEl.exit24 + %.sroa.027.0 = phi ptr [ %179, %_ZN4mold16MergeableSectionINS_7SPARC64EE12get_fragmentEl.exit ], [ %210, %_ZN4mold16MergeableSectionINS_7SPARC64EE12get_fragmentEl.exit24 ], [ null, %_ZN4mold10ObjectFileINS_7SPARC64EE9get_shndxERKNS_6ElfSymIS1_EE.exit ], [ null, %3 ] + %.sroa.5.0 = phi i64 [ %178, %_ZN4mold16MergeableSectionINS_7SPARC64EE12get_fragmentEl.exit ], [ %249, %_ZN4mold16MergeableSectionINS_7SPARC64EE12get_fragmentEl.exit24 ], [ 0, %_ZN4mold10ObjectFileINS_7SPARC64EE9get_shndxERKNS_6ElfSymIS1_EE.exit ], [ 0, %3 ] %.fca.0.insert = insertvalue { ptr, i64 } poison, ptr %.sroa.027.0, 0 %.fca.1.insert = insertvalue { ptr, i64 } %.fca.0.insert, i64 %.sroa.5.0, 1 ret { ptr, i64 } %.fca.1.insert diff --git a/bench/mold/optimized/blake3.ll b/bench/mold/optimized/blake3.ll index 015f1a26a7d..b53ed7341be 100644 --- a/bench/mold/optimized/blake3.ll +++ b/bench/mold/optimized/blake3.ll @@ -1983,7 +1983,7 @@ define dso_local void @blake3_hasher_finalize_seek(ptr noundef readonly captures %9 = alloca %struct.output_t, align 8 %.sroa.5.sroa.0 = alloca [32 x i8], align 16 %10 = icmp eq i64 %3, 0 - br i1 %10, label %209, label %11 + br i1 %10, label %207, label %11 11: ; preds = %4 %12 = getelementptr inbounds nuw i8, ptr %0, i64 144 @@ -2068,83 +2068,80 @@ define dso_local void @blake3_hasher_finalize_seek(ptr noundef readonly captures output_root_bytes.exit: ; preds = %49, %51 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %6) #10 call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %8) #10 - br label %209 + br label %207 58: ; preds = %11 call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %9) #10 %59 = getelementptr inbounds nuw i8, ptr %0, i64 137 %60 = load i8, ptr %59, align 1, !tbaa !12 - %61 = zext i8 %60 to i64 - %62 = shl nuw nsw i64 %61, 6 - %63 = getelementptr inbounds nuw i8, ptr %0, i64 136 - %64 = load i8, ptr %63, align 8, !tbaa !13 - %65 = zext i8 %64 to i64 - %66 = or i64 %62, %65 - %.not = icmp eq i64 %66, 0 - br i1 %.not, label %80, label %.thread + %61 = getelementptr inbounds nuw i8, ptr %0, i64 136 + %62 = load i8, ptr %61, align 8, !tbaa !13 + %63 = or i8 %62, %60 + %64 = icmp eq i8 %63, 0 + br i1 %64, label %78, label %.thread .thread: ; preds = %58 - %67 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %68 = zext i8 %13 to i64 - %69 = getelementptr inbounds nuw i8, ptr %0, i64 138 - %70 = load i8, ptr %69, align 2, !tbaa !11, !noalias !66 - %71 = icmp eq i8 %60, 0 - %..i31 = zext i1 %71 to i8 - %72 = or i8 %70, %..i31 - %73 = or i8 %72, 2 - %74 = getelementptr inbounds nuw i8, ptr %0, i64 72 - %75 = getelementptr inbounds nuw i8, ptr %0, i64 64 - %76 = load i64, ptr %75, align 8, !tbaa !14, !noalias !66 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 4 dereferenceable(32) %67, i64 32, i1 false) + %65 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %66 = zext i8 %13 to i64 + %67 = getelementptr inbounds nuw i8, ptr %0, i64 138 + %68 = load i8, ptr %67, align 2, !tbaa !11, !noalias !66 + %69 = icmp eq i8 %60, 0 + %..i31 = zext i1 %69 to i8 + %70 = or i8 %68, %..i31 + %71 = or i8 %70, 2 + %72 = getelementptr inbounds nuw i8, ptr %0, i64 72 + %73 = getelementptr inbounds nuw i8, ptr %0, i64 64 + %74 = load i64, ptr %73, align 8, !tbaa !14, !noalias !66 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 4 dereferenceable(32) %65, i64 32, i1 false) %.sroa.546.0..sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 40 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %.sroa.546.0..sroa_idx, ptr noundef nonnull align 1 dereferenceable(64) %74, i64 64, i1 false) - %77 = getelementptr inbounds nuw i8, ptr %9, i64 32 - store i64 %76, ptr %77, align 8, !tbaa !69 - %78 = getelementptr inbounds nuw i8, ptr %9, i64 104 - store i8 %64, ptr %78, align 8, !tbaa !10 - %79 = getelementptr inbounds nuw i8, ptr %9, i64 105 - store i8 %73, ptr %79, align 1, !tbaa !10 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %.sroa.546.0..sroa_idx, ptr noundef nonnull align 1 dereferenceable(64) %72, i64 64, i1 false) + %75 = getelementptr inbounds nuw i8, ptr %9, i64 32 + store i64 %74, ptr %75, align 8, !tbaa !69 + %76 = getelementptr inbounds nuw i8, ptr %9, i64 104 + store i8 %62, ptr %76, align 8, !tbaa !10 + %77 = getelementptr inbounds nuw i8, ptr %9, i64 105 + store i8 %71, ptr %77, align 1, !tbaa !10 br label %.lr.ph -80: ; preds = %58 - %81 = zext i8 %13 to i64 - %82 = add nsw i64 %81, -2 - %83 = getelementptr inbounds nuw i8, ptr %0, i64 145 - %84 = shl nsw i64 %82, 5 - %85 = getelementptr inbounds nuw [1760 x i8], ptr %83, i64 0, i64 %84 - %86 = getelementptr inbounds nuw i8, ptr %0, i64 138 - %87 = load i8, ptr %86, align 2, !tbaa !30 - %88 = or i8 %87, 4 +78: ; preds = %58 + %79 = zext i8 %13 to i64 + %80 = add nsw i64 %79, -2 + %81 = getelementptr inbounds nuw i8, ptr %0, i64 145 + %82 = shl nsw i64 %80, 5 + %83 = getelementptr inbounds nuw [1760 x i8], ptr %81, i64 0, i64 %82 + %84 = getelementptr inbounds nuw i8, ptr %0, i64 138 + %85 = load i8, ptr %84, align 2, !tbaa !30 + %86 = or i8 %85, 4 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 4 dereferenceable(32) %0, i64 32, i1 false) %.sroa.5.0..sroa_idx40 = getelementptr inbounds nuw i8, ptr %9, i64 40 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %.sroa.5.0..sroa_idx40, ptr noundef nonnull align 1 dereferenceable(64) %85, i64 64, i1 false) - %89 = getelementptr inbounds nuw i8, ptr %9, i64 32 - store i64 0, ptr %89, align 8, !tbaa !69 - %90 = getelementptr inbounds nuw i8, ptr %9, i64 104 - store i8 64, ptr %90, align 8, !tbaa !10 - %91 = getelementptr inbounds nuw i8, ptr %9, i64 105 - store i8 %88, ptr %91, align 1, !tbaa !10 - %.not2350 = icmp eq i64 %82, 0 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %.sroa.5.0..sroa_idx40, ptr noundef nonnull align 1 dereferenceable(64) %83, i64 64, i1 false) + %87 = getelementptr inbounds nuw i8, ptr %9, i64 32 + store i64 0, ptr %87, align 8, !tbaa !69 + %88 = getelementptr inbounds nuw i8, ptr %9, i64 104 + store i8 64, ptr %88, align 8, !tbaa !10 + %89 = getelementptr inbounds nuw i8, ptr %9, i64 105 + store i8 %86, ptr %89, align 1, !tbaa !10 + %.not2350 = icmp eq i64 %80, 0 br i1 %.not2350, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %.thread, %80 - %92 = phi ptr [ %79, %.thread ], [ %91, %80 ] - %93 = phi ptr [ %78, %.thread ], [ %90, %80 ] - %94 = phi ptr [ %77, %.thread ], [ %89, %80 ] - %.062 = phi i64 [ %68, %.thread ], [ %82, %80 ] - %.sink61 = phi i8 [ %73, %.thread ], [ %88, %80 ] - %.sink5260 = phi i8 [ %64, %.thread ], [ 64, %80 ] - %.sink5359 = phi i64 [ %76, %.thread ], [ 0, %80 ] - %95 = getelementptr inbounds nuw i8, ptr %0, i64 145 - %96 = getelementptr inbounds nuw i8, ptr %9, i64 40 - %97 = getelementptr inbounds nuw i8, ptr %7, i64 4 - %98 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %99 = getelementptr inbounds nuw i8, ptr %7, i64 12 - %100 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %101 = getelementptr inbounds nuw i8, ptr %7, i64 20 - %102 = getelementptr inbounds nuw i8, ptr %7, i64 24 - %103 = getelementptr inbounds nuw i8, ptr %7, i64 28 - %104 = getelementptr inbounds nuw i8, ptr %0, i64 138 +.lr.ph: ; preds = %.thread, %78 + %90 = phi ptr [ %77, %.thread ], [ %89, %78 ] + %91 = phi ptr [ %76, %.thread ], [ %88, %78 ] + %92 = phi ptr [ %75, %.thread ], [ %87, %78 ] + %.062 = phi i64 [ %66, %.thread ], [ %80, %78 ] + %.sink61 = phi i8 [ %71, %.thread ], [ %86, %78 ] + %.sink5260 = phi i8 [ %62, %.thread ], [ 64, %78 ] + %.sink5359 = phi i64 [ %74, %.thread ], [ 0, %78 ] + %93 = getelementptr inbounds nuw i8, ptr %0, i64 145 + %94 = getelementptr inbounds nuw i8, ptr %9, i64 40 + %95 = getelementptr inbounds nuw i8, ptr %7, i64 4 + %96 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %97 = getelementptr inbounds nuw i8, ptr %7, i64 12 + %98 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %99 = getelementptr inbounds nuw i8, ptr %7, i64 20 + %100 = getelementptr inbounds nuw i8, ptr %7, i64 24 + %101 = getelementptr inbounds nuw i8, ptr %7, i64 28 + %102 = getelementptr inbounds nuw i8, ptr %0, i64 138 %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 72 %.sroa.5.sroa.5.0..sroa.5.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 73 %.sroa.5.sroa.6.0..sroa.5.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 74 @@ -2177,191 +2174,191 @@ output_root_bytes.exit: ; preds = %49, %51 %.sroa.5.sroa.33.0..sroa.5.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 101 %.sroa.5.sroa.34.0..sroa.5.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 102 %.sroa.5.sroa.35.0..sroa.5.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 103 - br label %105 - -105: ; preds = %.lr.ph, %105 - %106 = phi i8 [ %.sink61, %.lr.ph ], [ %177, %105 ] - %107 = phi i64 [ %.sink5359, %.lr.ph ], [ 0, %105 ] - %108 = phi i8 [ %.sink5260, %.lr.ph ], [ 64, %105 ] - %.151 = phi i64 [ %.062, %.lr.ph ], [ %109, %105 ] - %109 = add i64 %.151, -1 - %110 = shl i64 %109, 5 - %111 = getelementptr inbounds nuw [1760 x i8], ptr %95, i64 0, i64 %110 + br label %103 + +103: ; preds = %.lr.ph, %103 + %104 = phi i8 [ %.sink61, %.lr.ph ], [ %175, %103 ] + %105 = phi i64 [ %.sink5359, %.lr.ph ], [ 0, %103 ] + %106 = phi i8 [ %.sink5260, %.lr.ph ], [ 64, %103 ] + %.151 = phi i64 [ %.062, %.lr.ph ], [ %107, %103 ] + %107 = add i64 %.151, -1 + %108 = shl i64 %107, 5 + %109 = getelementptr inbounds nuw [1760 x i8], ptr %93, i64 0, i64 %108 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %.sroa.5.sroa.0) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %.sroa.5.sroa.0, ptr noundef nonnull align 1 dereferenceable(32) %111, i64 32, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %.sroa.5.sroa.0, ptr noundef nonnull align 1 dereferenceable(32) %109, i64 32, i1 false) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #10 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(32) %9, i64 32, i1 false) - call void @blake3_compress_in_place(ptr noundef nonnull %7, ptr noundef nonnull %96, i8 noundef zeroext %108, i64 noundef %107, i8 noundef zeroext %106) #10 - %112 = load i32, ptr %7, align 16, !tbaa !27 + call void @blake3_compress_in_place(ptr noundef nonnull %7, ptr noundef nonnull %94, i8 noundef zeroext %106, i64 noundef %105, i8 noundef zeroext %104) #10 + %110 = load i32, ptr %7, align 16, !tbaa !27 + %111 = trunc i32 %110 to i8 + %112 = lshr i32 %110, 8 %113 = trunc i32 %112 to i8 - %114 = lshr i32 %112, 8 + %114 = lshr i32 %110, 16 %115 = trunc i32 %114 to i8 - %116 = lshr i32 %112, 16 - %117 = trunc i32 %116 to i8 - %118 = lshr i32 %112, 24 - %119 = trunc nuw i32 %118 to i8 - %120 = load i32, ptr %97, align 4, !tbaa !27 + %116 = lshr i32 %110, 24 + %117 = trunc nuw i32 %116 to i8 + %118 = load i32, ptr %95, align 4, !tbaa !27 + %119 = trunc i32 %118 to i8 + %120 = lshr i32 %118, 8 %121 = trunc i32 %120 to i8 - %122 = lshr i32 %120, 8 + %122 = lshr i32 %118, 16 %123 = trunc i32 %122 to i8 - %124 = lshr i32 %120, 16 - %125 = trunc i32 %124 to i8 - %126 = lshr i32 %120, 24 - %127 = trunc nuw i32 %126 to i8 - %128 = load i32, ptr %98, align 8, !tbaa !27 + %124 = lshr i32 %118, 24 + %125 = trunc nuw i32 %124 to i8 + %126 = load i32, ptr %96, align 8, !tbaa !27 + %127 = trunc i32 %126 to i8 + %128 = lshr i32 %126, 8 %129 = trunc i32 %128 to i8 - %130 = lshr i32 %128, 8 + %130 = lshr i32 %126, 16 %131 = trunc i32 %130 to i8 - %132 = lshr i32 %128, 16 - %133 = trunc i32 %132 to i8 - %134 = lshr i32 %128, 24 - %135 = trunc nuw i32 %134 to i8 - %136 = load i32, ptr %99, align 4, !tbaa !27 + %132 = lshr i32 %126, 24 + %133 = trunc nuw i32 %132 to i8 + %134 = load i32, ptr %97, align 4, !tbaa !27 + %135 = trunc i32 %134 to i8 + %136 = lshr i32 %134, 8 %137 = trunc i32 %136 to i8 - %138 = lshr i32 %136, 8 + %138 = lshr i32 %134, 16 %139 = trunc i32 %138 to i8 - %140 = lshr i32 %136, 16 - %141 = trunc i32 %140 to i8 - %142 = lshr i32 %136, 24 - %143 = trunc nuw i32 %142 to i8 - %144 = load i32, ptr %100, align 16, !tbaa !27 + %140 = lshr i32 %134, 24 + %141 = trunc nuw i32 %140 to i8 + %142 = load i32, ptr %98, align 16, !tbaa !27 + %143 = trunc i32 %142 to i8 + %144 = lshr i32 %142, 8 %145 = trunc i32 %144 to i8 - %146 = lshr i32 %144, 8 + %146 = lshr i32 %142, 16 %147 = trunc i32 %146 to i8 - %148 = lshr i32 %144, 16 - %149 = trunc i32 %148 to i8 - %150 = lshr i32 %144, 24 - %151 = trunc nuw i32 %150 to i8 - %152 = load i32, ptr %101, align 4, !tbaa !27 + %148 = lshr i32 %142, 24 + %149 = trunc nuw i32 %148 to i8 + %150 = load i32, ptr %99, align 4, !tbaa !27 + %151 = trunc i32 %150 to i8 + %152 = lshr i32 %150, 8 %153 = trunc i32 %152 to i8 - %154 = lshr i32 %152, 8 + %154 = lshr i32 %150, 16 %155 = trunc i32 %154 to i8 - %156 = lshr i32 %152, 16 - %157 = trunc i32 %156 to i8 - %158 = lshr i32 %152, 24 - %159 = trunc nuw i32 %158 to i8 - %160 = load i32, ptr %102, align 8, !tbaa !27 + %156 = lshr i32 %150, 24 + %157 = trunc nuw i32 %156 to i8 + %158 = load i32, ptr %100, align 8, !tbaa !27 + %159 = trunc i32 %158 to i8 + %160 = lshr i32 %158, 8 %161 = trunc i32 %160 to i8 - %162 = lshr i32 %160, 8 + %162 = lshr i32 %158, 16 %163 = trunc i32 %162 to i8 - %164 = lshr i32 %160, 16 - %165 = trunc i32 %164 to i8 - %166 = lshr i32 %160, 24 - %167 = trunc nuw i32 %166 to i8 - %168 = load i32, ptr %103, align 4, !tbaa !27 + %164 = lshr i32 %158, 24 + %165 = trunc nuw i32 %164 to i8 + %166 = load i32, ptr %101, align 4, !tbaa !27 + %167 = trunc i32 %166 to i8 + %168 = lshr i32 %166, 8 %169 = trunc i32 %168 to i8 - %170 = lshr i32 %168, 8 + %170 = lshr i32 %166, 16 %171 = trunc i32 %170 to i8 - %172 = lshr i32 %168, 16 - %173 = trunc i32 %172 to i8 - %174 = lshr i32 %168, 24 - %175 = trunc nuw i32 %174 to i8 + %172 = lshr i32 %166, 24 + %173 = trunc nuw i32 %172 to i8 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #10 - %176 = load i8, ptr %104, align 2, !tbaa !30 - %177 = or i8 %176, 4 + %174 = load i8, ptr %102, align 2, !tbaa !30 + %175 = or i8 %174, 4 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 4 dereferenceable(32) %0, i64 32, i1 false) - store i64 0, ptr %94, align 8, !tbaa !69 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %96, ptr noundef nonnull align 16 dereferenceable(32) %.sroa.5.sroa.0, i64 32, i1 false), !tbaa.struct !70 - store i8 %113, ptr %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx.sroa_idx, align 8 - store i8 %115, ptr %.sroa.5.sroa.5.0..sroa.5.0..sroa_idx.sroa_idx, align 1 - store i8 %117, ptr %.sroa.5.sroa.6.0..sroa.5.0..sroa_idx.sroa_idx, align 2 - store i8 %119, ptr %.sroa.5.sroa.7.0..sroa.5.0..sroa_idx.sroa_idx, align 1 - store i8 %121, ptr %.sroa.5.sroa.8.0..sroa.5.0..sroa_idx.sroa_idx, align 4 - store i8 %123, ptr %.sroa.5.sroa.9.0..sroa.5.0..sroa_idx.sroa_idx, align 1 - store i8 %125, ptr %.sroa.5.sroa.10.0..sroa.5.0..sroa_idx.sroa_idx, align 2 - store i8 %127, ptr %.sroa.5.sroa.11.0..sroa.5.0..sroa_idx.sroa_idx, align 1 - store i8 %129, ptr %.sroa.5.sroa.12.0..sroa.5.0..sroa_idx.sroa_idx, align 8 - store i8 %131, ptr %.sroa.5.sroa.13.0..sroa.5.0..sroa_idx.sroa_idx, align 1 - store i8 %133, ptr %.sroa.5.sroa.14.0..sroa.5.0..sroa_idx.sroa_idx, align 2 - store i8 %135, ptr %.sroa.5.sroa.15.0..sroa.5.0..sroa_idx.sroa_idx, align 1 - store i8 %137, ptr %.sroa.5.sroa.16.0..sroa.5.0..sroa_idx.sroa_idx, align 4 - store i8 %139, ptr %.sroa.5.sroa.17.0..sroa.5.0..sroa_idx.sroa_idx, align 1 - store i8 %141, ptr %.sroa.5.sroa.18.0..sroa.5.0..sroa_idx.sroa_idx, align 2 - store i8 %143, ptr %.sroa.5.sroa.19.0..sroa.5.0..sroa_idx.sroa_idx, align 1 - store i8 %145, ptr %.sroa.5.sroa.20.0..sroa.5.0..sroa_idx.sroa_idx, align 8 - store i8 %147, ptr %.sroa.5.sroa.21.0..sroa.5.0..sroa_idx.sroa_idx, align 1 - store i8 %149, ptr %.sroa.5.sroa.22.0..sroa.5.0..sroa_idx.sroa_idx, align 2 - store i8 %151, ptr %.sroa.5.sroa.23.0..sroa.5.0..sroa_idx.sroa_idx, align 1 - store i8 %153, ptr %.sroa.5.sroa.24.0..sroa.5.0..sroa_idx.sroa_idx, align 4 - store i8 %155, ptr %.sroa.5.sroa.25.0..sroa.5.0..sroa_idx.sroa_idx, align 1 - store i8 %157, ptr %.sroa.5.sroa.26.0..sroa.5.0..sroa_idx.sroa_idx, align 2 - store i8 %159, ptr %.sroa.5.sroa.27.0..sroa.5.0..sroa_idx.sroa_idx, align 1 - store i8 %161, ptr %.sroa.5.sroa.28.0..sroa.5.0..sroa_idx.sroa_idx, align 8 - store i8 %163, ptr %.sroa.5.sroa.29.0..sroa.5.0..sroa_idx.sroa_idx, align 1 - store i8 %165, ptr %.sroa.5.sroa.30.0..sroa.5.0..sroa_idx.sroa_idx, align 2 - store i8 %167, ptr %.sroa.5.sroa.31.0..sroa.5.0..sroa_idx.sroa_idx, align 1 - store i8 %169, ptr %.sroa.5.sroa.32.0..sroa.5.0..sroa_idx.sroa_idx, align 4 - store i8 %171, ptr %.sroa.5.sroa.33.0..sroa.5.0..sroa_idx.sroa_idx, align 1 - store i8 %173, ptr %.sroa.5.sroa.34.0..sroa.5.0..sroa_idx.sroa_idx, align 2 - store i8 %175, ptr %.sroa.5.sroa.35.0..sroa.5.0..sroa_idx.sroa_idx, align 1, !tbaa !10 - store i8 64, ptr %93, align 8, !tbaa !10 - store i8 %177, ptr %92, align 1, !tbaa !10 + store i64 0, ptr %92, align 8, !tbaa !69 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %94, ptr noundef nonnull align 16 dereferenceable(32) %.sroa.5.sroa.0, i64 32, i1 false), !tbaa.struct !70 + store i8 %111, ptr %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx.sroa_idx, align 8 + store i8 %113, ptr %.sroa.5.sroa.5.0..sroa.5.0..sroa_idx.sroa_idx, align 1 + store i8 %115, ptr %.sroa.5.sroa.6.0..sroa.5.0..sroa_idx.sroa_idx, align 2 + store i8 %117, ptr %.sroa.5.sroa.7.0..sroa.5.0..sroa_idx.sroa_idx, align 1 + store i8 %119, ptr %.sroa.5.sroa.8.0..sroa.5.0..sroa_idx.sroa_idx, align 4 + store i8 %121, ptr %.sroa.5.sroa.9.0..sroa.5.0..sroa_idx.sroa_idx, align 1 + store i8 %123, ptr %.sroa.5.sroa.10.0..sroa.5.0..sroa_idx.sroa_idx, align 2 + store i8 %125, ptr %.sroa.5.sroa.11.0..sroa.5.0..sroa_idx.sroa_idx, align 1 + store i8 %127, ptr %.sroa.5.sroa.12.0..sroa.5.0..sroa_idx.sroa_idx, align 8 + store i8 %129, ptr %.sroa.5.sroa.13.0..sroa.5.0..sroa_idx.sroa_idx, align 1 + store i8 %131, ptr %.sroa.5.sroa.14.0..sroa.5.0..sroa_idx.sroa_idx, align 2 + store i8 %133, ptr %.sroa.5.sroa.15.0..sroa.5.0..sroa_idx.sroa_idx, align 1 + store i8 %135, ptr %.sroa.5.sroa.16.0..sroa.5.0..sroa_idx.sroa_idx, align 4 + store i8 %137, ptr %.sroa.5.sroa.17.0..sroa.5.0..sroa_idx.sroa_idx, align 1 + store i8 %139, ptr %.sroa.5.sroa.18.0..sroa.5.0..sroa_idx.sroa_idx, align 2 + store i8 %141, ptr %.sroa.5.sroa.19.0..sroa.5.0..sroa_idx.sroa_idx, align 1 + store i8 %143, ptr %.sroa.5.sroa.20.0..sroa.5.0..sroa_idx.sroa_idx, align 8 + store i8 %145, ptr %.sroa.5.sroa.21.0..sroa.5.0..sroa_idx.sroa_idx, align 1 + store i8 %147, ptr %.sroa.5.sroa.22.0..sroa.5.0..sroa_idx.sroa_idx, align 2 + store i8 %149, ptr %.sroa.5.sroa.23.0..sroa.5.0..sroa_idx.sroa_idx, align 1 + store i8 %151, ptr %.sroa.5.sroa.24.0..sroa.5.0..sroa_idx.sroa_idx, align 4 + store i8 %153, ptr %.sroa.5.sroa.25.0..sroa.5.0..sroa_idx.sroa_idx, align 1 + store i8 %155, ptr %.sroa.5.sroa.26.0..sroa.5.0..sroa_idx.sroa_idx, align 2 + store i8 %157, ptr %.sroa.5.sroa.27.0..sroa.5.0..sroa_idx.sroa_idx, align 1 + store i8 %159, ptr %.sroa.5.sroa.28.0..sroa.5.0..sroa_idx.sroa_idx, align 8 + store i8 %161, ptr %.sroa.5.sroa.29.0..sroa.5.0..sroa_idx.sroa_idx, align 1 + store i8 %163, ptr %.sroa.5.sroa.30.0..sroa.5.0..sroa_idx.sroa_idx, align 2 + store i8 %165, ptr %.sroa.5.sroa.31.0..sroa.5.0..sroa_idx.sroa_idx, align 1 + store i8 %167, ptr %.sroa.5.sroa.32.0..sroa.5.0..sroa_idx.sroa_idx, align 4 + store i8 %169, ptr %.sroa.5.sroa.33.0..sroa.5.0..sroa_idx.sroa_idx, align 1 + store i8 %171, ptr %.sroa.5.sroa.34.0..sroa.5.0..sroa_idx.sroa_idx, align 2 + store i8 %173, ptr %.sroa.5.sroa.35.0..sroa.5.0..sroa_idx.sroa_idx, align 1, !tbaa !10 + store i8 64, ptr %91, align 8, !tbaa !10 + store i8 %175, ptr %90, align 1, !tbaa !10 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %.sroa.5.sroa.0) - %.not23 = icmp eq i64 %109, 0 - br i1 %.not23, label %._crit_edge, label %105, !llvm.loop !71 - -._crit_edge: ; preds = %105, %80 - %178 = phi ptr [ %91, %80 ], [ %92, %105 ] - %179 = phi ptr [ %90, %80 ], [ %93, %105 ] - %180 = phi i8 [ %88, %80 ], [ %177, %105 ] - %181 = lshr i64 %1, 6 - %182 = and i64 %1, 63 + %.not23 = icmp eq i64 %107, 0 + br i1 %.not23, label %._crit_edge, label %103, !llvm.loop !71 + +._crit_edge: ; preds = %103, %78 + %176 = phi ptr [ %89, %78 ], [ %90, %103 ] + %177 = phi ptr [ %88, %78 ], [ %91, %103 ] + %178 = phi i8 [ %86, %78 ], [ %175, %103 ] + %179 = lshr i64 %1, 6 + %180 = and i64 %1, 63 call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %5) #10 - %.not.i24 = icmp eq i64 %182, 0 - br i1 %.not.i24, label %192, label %183 - -183: ; preds = %._crit_edge - %184 = getelementptr inbounds nuw i8, ptr %9, i64 40 - %185 = or i8 %180, 8 - call void @blake3_compress_xof(ptr noundef nonnull %9, ptr noundef nonnull %184, i8 noundef zeroext 64, i64 noundef %181, i8 noundef zeroext %185, ptr noundef nonnull %5) #10 - %186 = sub nuw nsw i64 64, %182 - %187 = call i64 @llvm.umin.i64(i64 range(i64 1, 0) %3, i64 %186) - %188 = getelementptr inbounds nuw i8, ptr %5, i64 %182 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %2, ptr noundef nonnull align 1 dereferenceable(1) %188, i64 %187, i1 false) - %189 = getelementptr inbounds nuw i8, ptr %2, i64 %187 - %190 = sub i64 %3, %187 - %191 = add nuw nsw i64 %181, 1 - br label %192 - -192: ; preds = %183, %._crit_edge - %.044.i25 = phi i64 [ %191, %183 ], [ %181, %._crit_edge ] - %.043.i26 = phi i64 [ %190, %183 ], [ %3, %._crit_edge ] - %.0.i27 = phi ptr [ %189, %183 ], [ %2, %._crit_edge ] - %193 = lshr i64 %.043.i26, 6 + %.not.i24 = icmp eq i64 %180, 0 + br i1 %.not.i24, label %190, label %181 + +181: ; preds = %._crit_edge + %182 = getelementptr inbounds nuw i8, ptr %9, i64 40 + %183 = or i8 %178, 8 + call void @blake3_compress_xof(ptr noundef nonnull %9, ptr noundef nonnull %182, i8 noundef zeroext 64, i64 noundef %179, i8 noundef zeroext %183, ptr noundef nonnull %5) #10 + %184 = sub nuw nsw i64 64, %180 + %185 = call i64 @llvm.umin.i64(i64 range(i64 1, 0) %3, i64 %184) + %186 = getelementptr inbounds nuw i8, ptr %5, i64 %180 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %2, ptr noundef nonnull align 1 dereferenceable(1) %186, i64 %185, i1 false) + %187 = getelementptr inbounds nuw i8, ptr %2, i64 %185 + %188 = sub i64 %3, %185 + %189 = add nuw nsw i64 %179, 1 + br label %190 + +190: ; preds = %181, %._crit_edge + %.044.i25 = phi i64 [ %189, %181 ], [ %179, %._crit_edge ] + %.043.i26 = phi i64 [ %188, %181 ], [ %3, %._crit_edge ] + %.0.i27 = phi ptr [ %187, %181 ], [ %2, %._crit_edge ] + %191 = lshr i64 %.043.i26, 6 %.not49.i28 = icmp ult i64 %.043.i26, 64 - br i1 %.not49.i28, label %199, label %194 - -194: ; preds = %192 - %195 = getelementptr inbounds nuw i8, ptr %9, i64 40 - %196 = load i8, ptr %179, align 8, !tbaa !20 - %197 = load i8, ptr %178, align 1, !tbaa !26 - %198 = or i8 %197, 8 - call void @blake3_xof_many(ptr noundef nonnull %9, ptr noundef nonnull %195, i8 noundef zeroext %196, i64 noundef %.044.i25, i8 noundef zeroext %198, ptr noundef %.0.i27, i64 noundef %193) #10 - br label %199 - -199: ; preds = %194, %192 - %200 = and i64 %.043.i26, 63 - %.not50.i29 = icmp eq i64 %200, 0 - br i1 %.not50.i29, label %output_root_bytes.exit30, label %201 - -201: ; preds = %199 - %202 = and i64 %.043.i26, -64 - %203 = getelementptr inbounds nuw i8, ptr %.0.i27, i64 %202 - %204 = add nuw nsw i64 %193, %.044.i25 - %205 = getelementptr inbounds nuw i8, ptr %9, i64 40 - %206 = load i8, ptr %179, align 8, !tbaa !20 - %207 = load i8, ptr %178, align 1, !tbaa !26 - %208 = or i8 %207, 8 - call void @blake3_compress_xof(ptr noundef nonnull %9, ptr noundef nonnull %205, i8 noundef zeroext %206, i64 noundef %204, i8 noundef zeroext %208, ptr noundef nonnull %5) #10 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %203, ptr nonnull align 16 %5, i64 %200, i1 false) + br i1 %.not49.i28, label %197, label %192 + +192: ; preds = %190 + %193 = getelementptr inbounds nuw i8, ptr %9, i64 40 + %194 = load i8, ptr %177, align 8, !tbaa !20 + %195 = load i8, ptr %176, align 1, !tbaa !26 + %196 = or i8 %195, 8 + call void @blake3_xof_many(ptr noundef nonnull %9, ptr noundef nonnull %193, i8 noundef zeroext %194, i64 noundef %.044.i25, i8 noundef zeroext %196, ptr noundef %.0.i27, i64 noundef %191) #10 + br label %197 + +197: ; preds = %192, %190 + %198 = and i64 %.043.i26, 63 + %.not50.i29 = icmp eq i64 %198, 0 + br i1 %.not50.i29, label %output_root_bytes.exit30, label %199 + +199: ; preds = %197 + %200 = and i64 %.043.i26, -64 + %201 = getelementptr inbounds nuw i8, ptr %.0.i27, i64 %200 + %202 = add nuw nsw i64 %191, %.044.i25 + %203 = getelementptr inbounds nuw i8, ptr %9, i64 40 + %204 = load i8, ptr %177, align 8, !tbaa !20 + %205 = load i8, ptr %176, align 1, !tbaa !26 + %206 = or i8 %205, 8 + call void @blake3_compress_xof(ptr noundef nonnull %9, ptr noundef nonnull %203, i8 noundef zeroext %204, i64 noundef %202, i8 noundef zeroext %206, ptr noundef nonnull %5) #10 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %201, ptr nonnull align 16 %5, i64 %198, i1 false) br label %output_root_bytes.exit30 -output_root_bytes.exit30: ; preds = %199, %201 +output_root_bytes.exit30: ; preds = %197, %199 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %5) #10 call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %9) #10 - br label %209 + br label %207 -209: ; preds = %4, %output_root_bytes.exit30, %output_root_bytes.exit +207: ; preds = %4, %output_root_bytes.exit30, %output_root_bytes.exit ret void } diff --git a/bench/openjdk/optimized/hb-ot-name.ll b/bench/openjdk/optimized/hb-ot-name.ll index 01c1fee9722..28c003744d1 100644 --- a/bench/openjdk/optimized/hb-ot-name.ll +++ b/bench/openjdk/optimized/hb-ot-name.ll @@ -2125,136 +2125,129 @@ define linkonce_odr hidden noundef zeroext i1 @_ZNK3AAT4ltag8sanitizeEP21hb_sani 13: ; preds = %2 %14 = load i8, ptr %0, align 1 - %15 = zext i8 %14 to i32 - %16 = shl nuw i32 %15, 24 - %17 = getelementptr inbounds nuw i8, ptr %0, i64 1 + %15 = getelementptr inbounds nuw i8, ptr %0, i64 1 + %16 = load i8, ptr %15, align 1 + %17 = getelementptr inbounds nuw i8, ptr %0, i64 2 %18 = load i8, ptr %17, align 1 - %19 = zext i8 %18 to i32 - %20 = shl nuw nsw i32 %19, 16 - %21 = or disjoint i32 %20, %16 - %22 = getelementptr inbounds nuw i8, ptr %0, i64 2 - %23 = load i8, ptr %22, align 1 - %24 = zext i8 %23 to i32 - %25 = shl nuw nsw i32 %24, 8 - %26 = or disjoint i32 %21, %25 - %27 = getelementptr inbounds nuw i8, ptr %0, i64 3 - %28 = load i8, ptr %27, align 1 - %29 = zext i8 %28 to i32 - %30 = or disjoint i32 %26, %29 - %.not21 = icmp eq i32 %30, 0 - br i1 %.not21, label %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit.thread, label %31 - -31: ; preds = %13 - %32 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %33 = load i8, ptr %32, align 1 - %34 = zext i8 %33 to i32 - %35 = shl nuw i32 %34, 24 - %36 = getelementptr inbounds nuw i8, ptr %0, i64 9 - %37 = load i8, ptr %36, align 1 - %38 = zext i8 %37 to i32 - %39 = shl nuw nsw i32 %38, 16 - %40 = getelementptr inbounds nuw i8, ptr %0, i64 10 - %41 = load i8, ptr %40, align 1 - %42 = zext i8 %41 to i32 - %43 = getelementptr inbounds nuw i8, ptr %0, i64 11 - %44 = load i8, ptr %43, align 1 - %45 = zext i8 %44 to i32 - %46 = or disjoint i32 %39, %35 - %47 = or disjoint i32 %46, %45 - %48 = shl nuw nsw i32 %42, 10 - %49 = shl i32 %47, 2 - %50 = or disjoint i32 %49, %48 - %51 = icmp ugt i8 %33, 63 - br i1 %51, label %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit.thread, label %52 - -52: ; preds = %31 - %53 = load ptr, ptr %12, align 8 - %54 = ptrtoint ptr %53 to i64 - %55 = sub i64 %54, %6 - %56 = trunc i64 %55 to i32 - %.not20.i = icmp ugt i32 %50, %56 + %19 = getelementptr inbounds nuw i8, ptr %0, i64 3 + %20 = load i8, ptr %19, align 1 + %21 = or i8 %16, %14 + %22 = or i8 %21, %18 + %23 = or i8 %22, %20 + %24 = icmp eq i8 %23, 0 + br i1 %24, label %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit.thread, label %25 + +25: ; preds = %13 + %26 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %27 = load i8, ptr %26, align 1 + %28 = zext i8 %27 to i32 + %29 = shl nuw i32 %28, 24 + %30 = getelementptr inbounds nuw i8, ptr %0, i64 9 + %31 = load i8, ptr %30, align 1 + %32 = zext i8 %31 to i32 + %33 = shl nuw nsw i32 %32, 16 + %34 = getelementptr inbounds nuw i8, ptr %0, i64 10 + %35 = load i8, ptr %34, align 1 + %36 = zext i8 %35 to i32 + %37 = getelementptr inbounds nuw i8, ptr %0, i64 11 + %38 = load i8, ptr %37, align 1 + %39 = zext i8 %38 to i32 + %40 = or disjoint i32 %33, %29 + %41 = or disjoint i32 %40, %39 + %42 = shl nuw nsw i32 %36, 10 + %43 = shl i32 %41, 2 + %44 = or disjoint i32 %43, %42 + %45 = icmp ugt i8 %27, 63 + br i1 %45, label %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit.thread, label %46 + +46: ; preds = %25 + %47 = load ptr, ptr %12, align 8 + %48 = ptrtoint ptr %47 to i64 + %49 = sub i64 %48, %6 + %50 = trunc i64 %49 to i32 + %.not20.i = icmp ugt i32 %44, %50 br i1 %.not20.i, label %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit.thread, label %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit -_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit: ; preds = %52 - %57 = getelementptr inbounds nuw i8, ptr %1, i64 28 - %58 = load i32, ptr %57, align 4 - %59 = sub i32 %58, %50 - store i32 %59, ptr %57, align 4 - %60 = icmp sgt i32 %59, 0 - br i1 %60, label %61, label %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit.thread +_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit: ; preds = %46 + %51 = getelementptr inbounds nuw i8, ptr %1, i64 28 + %52 = load i32, ptr %51, align 4 + %53 = sub i32 %52, %44 + store i32 %53, ptr %51, align 4 + %54 = icmp sgt i32 %53, 0 + br i1 %54, label %55, label %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit.thread -61: ; preds = %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit - %62 = load i8, ptr %32, align 1 - %63 = zext i8 %62 to i32 - %64 = shl nuw i32 %63, 24 - %65 = load i8, ptr %36, align 1 - %66 = zext i8 %65 to i32 - %67 = shl nuw nsw i32 %66, 16 - %68 = or disjoint i32 %67, %64 - %69 = load i8, ptr %40, align 1 - %70 = zext i8 %69 to i32 - %71 = shl nuw nsw i32 %70, 8 - %72 = or disjoint i32 %68, %71 - %73 = load i8, ptr %43, align 1 - %74 = zext i8 %73 to i32 - %75 = or disjoint i32 %72, %74 - %.not33 = icmp eq i32 %75, 0 +55: ; preds = %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit + %56 = load i8, ptr %26, align 1 + %57 = zext i8 %56 to i32 + %58 = shl nuw i32 %57, 24 + %59 = load i8, ptr %30, align 1 + %60 = zext i8 %59 to i32 + %61 = shl nuw nsw i32 %60, 16 + %62 = or disjoint i32 %61, %58 + %63 = load i8, ptr %34, align 1 + %64 = zext i8 %63 to i32 + %65 = shl nuw nsw i32 %64, 8 + %66 = or disjoint i32 %62, %65 + %67 = load i8, ptr %37, align 1 + %68 = zext i8 %67 to i32 + %69 = or disjoint i32 %66, %68 + %.not33 = icmp eq i32 %69, 0 br i1 %.not33, label %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit.thread, label %.lr.ph.preheader -.lr.ph.preheader: ; preds = %61 - %wide.trip.count = zext i32 %75 to i64 +.lr.ph.preheader: ; preds = %55 + %wide.trip.count = zext i32 %69 to i64 br label %.lr.ph -76: ; preds = %_ZN21hb_sanitize_context_t8dispatchIN3AAT13FTStringRangeEJPKNS1_4ltagEEEEDTcl9_dispatchfp_cv11hb_priorityILj16EE_Espclsr3stdE7forwardIT0_Efp0_EEERKT_DpOS8_.exit +70: ; preds = %_ZN21hb_sanitize_context_t8dispatchIN3AAT13FTStringRangeEJPKNS1_4ltagEEEEDTcl9_dispatchfp_cv11hb_priorityILj16EE_Espclsr3stdE7forwardIT0_Efp0_EEERKT_DpOS8_.exit %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 %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit.thread, label %.lr.ph, !llvm.loop !15 -.lr.ph: ; preds = %.lr.ph.preheader, %76 - %77 = phi i32 [ %59, %.lr.ph.preheader ], [ %103, %76 ] - %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %76 ] - %78 = getelementptr inbounds nuw [1 x %"struct.AAT::FTStringRange"], ptr %3, i64 0, i64 %indvars.iv - %79 = getelementptr inbounds nuw i8, ptr %78, i64 4 - %80 = ptrtoint ptr %79 to i64 - %81 = sub i64 %80, %7 - %.not.i.i.i = icmp ugt i64 %81, %11 - br i1 %.not.i.i.i, label %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit.thread, label %82 - -82: ; preds = %.lr.ph - %83 = load i8, ptr %78, align 1 - %84 = zext i8 %83 to i64 - %85 = shl nuw nsw i64 %84, 8 - %86 = getelementptr inbounds nuw i8, ptr %78, i64 1 - %87 = load i8, ptr %86, align 1 - %88 = zext i8 %87 to i64 - %89 = getelementptr inbounds nuw i8, ptr %0, i64 %85 - %90 = getelementptr inbounds nuw i8, ptr %89, i64 %88 - %91 = getelementptr inbounds nuw i8, ptr %78, i64 2 - %92 = load i8, ptr %91, align 1 - %93 = zext i8 %92 to i32 - %94 = shl nuw nsw i32 %93, 8 - %95 = getelementptr inbounds nuw i8, ptr %78, i64 3 - %96 = load i8, ptr %95, align 1 - %97 = zext i8 %96 to i32 - %98 = or disjoint i32 %94, %97 - %99 = ptrtoint ptr %90 to i64 - %100 = sub i64 %99, %7 - %.not.i.i.i.i.i.i = icmp ugt i64 %100, %11 - %101 = sub i64 %54, %99 - %102 = trunc i64 %101 to i32 - %.not16.i.i.i.i.i.i = icmp ugt i32 %98, %102 +.lr.ph: ; preds = %.lr.ph.preheader, %70 + %71 = phi i32 [ %53, %.lr.ph.preheader ], [ %97, %70 ] + %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %70 ] + %72 = getelementptr inbounds nuw [1 x %"struct.AAT::FTStringRange"], ptr %3, i64 0, i64 %indvars.iv + %73 = getelementptr inbounds nuw i8, ptr %72, i64 4 + %74 = ptrtoint ptr %73 to i64 + %75 = sub i64 %74, %7 + %.not.i.i.i = icmp ugt i64 %75, %11 + br i1 %.not.i.i.i, label %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit.thread, label %76 + +76: ; preds = %.lr.ph + %77 = load i8, ptr %72, align 1 + %78 = zext i8 %77 to i64 + %79 = shl nuw nsw i64 %78, 8 + %80 = getelementptr inbounds nuw i8, ptr %72, i64 1 + %81 = load i8, ptr %80, align 1 + %82 = zext i8 %81 to i64 + %83 = getelementptr inbounds nuw i8, ptr %0, i64 %79 + %84 = getelementptr inbounds nuw i8, ptr %83, i64 %82 + %85 = getelementptr inbounds nuw i8, ptr %72, i64 2 + %86 = load i8, ptr %85, align 1 + %87 = zext i8 %86 to i32 + %88 = shl nuw nsw i32 %87, 8 + %89 = getelementptr inbounds nuw i8, ptr %72, i64 3 + %90 = load i8, ptr %89, align 1 + %91 = zext i8 %90 to i32 + %92 = or disjoint i32 %88, %91 + %93 = ptrtoint ptr %84 to i64 + %94 = sub i64 %93, %7 + %.not.i.i.i.i.i.i = icmp ugt i64 %94, %11 + %95 = sub i64 %48, %93 + %96 = trunc i64 %95 to i32 + %.not16.i.i.i.i.i.i = icmp ugt i32 %92, %96 %or.cond = select i1 %.not.i.i.i.i.i.i, i1 true, i1 %.not16.i.i.i.i.i.i br i1 %or.cond, label %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit.thread, label %_ZN21hb_sanitize_context_t8dispatchIN3AAT13FTStringRangeEJPKNS1_4ltagEEEEDTcl9_dispatchfp_cv11hb_priorityILj16EE_Espclsr3stdE7forwardIT0_Efp0_EEERKT_DpOS8_.exit -_ZN21hb_sanitize_context_t8dispatchIN3AAT13FTStringRangeEJPKNS1_4ltagEEEEDTcl9_dispatchfp_cv11hb_priorityILj16EE_Espclsr3stdE7forwardIT0_Efp0_EEERKT_DpOS8_.exit: ; preds = %82 - %103 = sub i32 %77, %98 - store i32 %103, ptr %57, align 4 - %104 = icmp sgt i32 %103, 0 - br i1 %104, label %76, label %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit.thread +_ZN21hb_sanitize_context_t8dispatchIN3AAT13FTStringRangeEJPKNS1_4ltagEEEEDTcl9_dispatchfp_cv11hb_priorityILj16EE_Espclsr3stdE7forwardIT0_Efp0_EEERKT_DpOS8_.exit: ; preds = %76 + %97 = sub i32 %71, %92 + store i32 %97, ptr %51, align 4 + %98 = icmp sgt i32 %97, 0 + br i1 %98, label %70, label %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit.thread -_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit.thread: ; preds = %82, %.lr.ph, %76, %_ZN21hb_sanitize_context_t8dispatchIN3AAT13FTStringRangeEJPKNS1_4ltagEEEEDTcl9_dispatchfp_cv11hb_priorityILj16EE_Espclsr3stdE7forwardIT0_Efp0_EEERKT_DpOS8_.exit, %61, %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit, %31, %52, %13, %2 - %105 = phi i1 [ false, %13 ], [ false, %2 ], [ false, %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit ], [ false, %31 ], [ false, %52 ], [ true, %61 ], [ false, %82 ], [ false, %.lr.ph ], [ true, %76 ], [ false, %_ZN21hb_sanitize_context_t8dispatchIN3AAT13FTStringRangeEJPKNS1_4ltagEEEEDTcl9_dispatchfp_cv11hb_priorityILj16EE_Espclsr3stdE7forwardIT0_Efp0_EEERKT_DpOS8_.exit ] - ret i1 %105 +_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit.thread: ; preds = %76, %.lr.ph, %70, %_ZN21hb_sanitize_context_t8dispatchIN3AAT13FTStringRangeEJPKNS1_4ltagEEEEDTcl9_dispatchfp_cv11hb_priorityILj16EE_Espclsr3stdE7forwardIT0_Efp0_EEERKT_DpOS8_.exit, %55, %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit, %25, %46, %13, %2 + %99 = phi i1 [ false, %13 ], [ false, %2 ], [ false, %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit ], [ false, %25 ], [ false, %46 ], [ true, %55 ], [ false, %76 ], [ false, %.lr.ph ], [ true, %70 ], [ false, %_ZN21hb_sanitize_context_t8dispatchIN3AAT13FTStringRangeEJPKNS1_4ltagEEEEDTcl9_dispatchfp_cv11hb_priorityILj16EE_Espclsr3stdE7forwardIT0_Efp0_EEERKT_DpOS8_.exit ] + ret i1 %99 } declare ptr @hb_language_from_string(ptr noundef, i32 noundef) local_unnamed_addr #4 diff --git a/bench/openjdk/optimized/utf8.ll b/bench/openjdk/optimized/utf8.ll index bc4c9932b6d..ced8e56a715 100644 --- a/bench/openjdk/optimized/utf8.ll +++ b/bench/openjdk/optimized/utf8.ll @@ -930,8 +930,8 @@ define hidden noundef zeroext i1 @_ZN4UTF813is_legal_utf8EPKhib(ptr noundef read %.not = icmp slt i32 %.075.lcssa, %1 br i1 %.not, label %.lr.ph90, label %._crit_edge91 -.lr.ph90: ; preds = %._crit_edge, %99 - %.188 = phi i32 [ %100, %99 ], [ %.075.lcssa, %._crit_edge ] +.lr.ph90: ; preds = %._crit_edge, %98 + %.188 = phi i32 [ %99, %98 ], [ %.075.lcssa, %._crit_edge ] %30 = sext i32 %.188 to i64 %31 = getelementptr inbounds i8, ptr %0, i64 %30 %32 = load i8, ptr %31, align 1 @@ -940,7 +940,7 @@ define hidden noundef zeroext i1 @_ZN4UTF813is_legal_utf8EPKhib(ptr noundef read 34: ; preds = %.lr.ph90 %35 = icmp sgt i8 %32, -1 - br i1 %35, label %99, label %36 + br i1 %35, label %98, label %36 36: ; preds = %34 %37 = add nsw i32 %.188, 5 @@ -979,7 +979,7 @@ _ZN4UTF826is_supplementary_characterEPKh.exit: ; preds = %53 %58 = getelementptr inbounds nuw i8, ptr %31, i64 5 %59 = load i8, ptr %58, align 1 %60 = icmp slt i8 %59, -64 - br i1 %60, label %99, label %.thread + br i1 %60, label %98, label %.thread _ZN4UTF826is_supplementary_characterEPKh.exit.thread: ; preds = %36 %61 = lshr i8 %32, 4 @@ -997,71 +997,70 @@ _ZN4UTF826is_supplementary_characterEPKh.exit.thread: ; preds = %36 62: ; preds = %_ZN4UTF826is_supplementary_characterEPKh.exit.thread, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread %63 = and i8 %32, 31 %64 = zext nneg i8 %63 to i32 - %65 = shl nuw nsw i32 %64, 6 - %66 = add nsw i32 %.188, 1 - %67 = icmp slt i32 %66, %1 - br i1 %67, label %68, label %._crit_edge91 - -68: ; preds = %62 - %69 = sext i32 %66 to i64 - %70 = getelementptr inbounds i8, ptr %0, i64 %69 - %71 = load i8, ptr %70, align 1 - %72 = zext i8 %71 to i32 - %73 = and i32 %72, 192 - %74 = icmp eq i32 %73, 128 - br i1 %74, label %75, label %._crit_edge91 - -75: ; preds = %68 - %76 = and i32 %72, 63 - %77 = or disjoint i32 %76, %65 - %78 = icmp eq i32 %77, 0 - %or.cond = select i1 %2, i1 true, i1 %78 - %79 = icmp samesign ugt i8 %63, 1 - %or.cond5 = select i1 %or.cond, i1 true, i1 %79 - br i1 %or.cond5, label %99, label %._crit_edge91 + %65 = add nsw i32 %.188, 1 + %66 = icmp slt i32 %65, %1 + br i1 %66, label %67, label %._crit_edge91 + +67: ; preds = %62 + %68 = sext i32 %65 to i64 + %69 = getelementptr inbounds i8, ptr %0, i64 %68 + %70 = load i8, ptr %69, align 1 + %71 = zext i8 %70 to i32 + %72 = and i32 %71, 192 + %73 = icmp eq i32 %72, 128 + br i1 %73, label %74, label %._crit_edge91 + +74: ; preds = %67 + %75 = and i32 %71, 63 + %76 = or i32 %75, %64 + %77 = icmp eq i32 %76, 0 + %or.cond = select i1 %2, i1 true, i1 %77 + %78 = icmp samesign ugt i8 %63, 1 + %or.cond5 = select i1 %or.cond, i1 true, i1 %78 + br i1 %or.cond5, label %98, label %._crit_edge91 .thread: ; preds = %53, %49, %45, %40, %_ZN4UTF826is_supplementary_characterEPKh.exit, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread %.tr = zext i8 %32 to i32 - %80 = shl nuw nsw i32 %.tr, 12 - %81 = add nsw i32 %.188, 2 - %82 = icmp slt i32 %81, %1 - br i1 %82, label %83, label %._crit_edge91 - -83: ; preds = %.thread - %84 = getelementptr i8, ptr %31, i64 1 - %85 = load i8, ptr %84, align 1 - %86 = zext i8 %85 to i32 - %87 = and i32 %86, 192 - %88 = icmp eq i32 %87, 128 - br i1 %88, label %89, label %._crit_edge91 - -89: ; preds = %83 - %90 = sext i32 %81 to i64 - %91 = getelementptr inbounds i8, ptr %0, i64 %90 - %92 = load i8, ptr %91, align 1 - %93 = icmp slt i8 %92, -64 - br i1 %93, label %94, label %._crit_edge91 - -94: ; preds = %89 - %95 = shl nuw nsw i32 %86, 6 - %96 = and i32 %95, 2048 - %.masked = and i32 %80, 61440 - %97 = or disjoint i32 %96, %.masked - %98 = icmp ne i32 %97, 0 - %or.cond8 = select i1 %2, i1 true, i1 %98 - br i1 %or.cond8, label %99, label %._crit_edge91 + %79 = shl nuw nsw i32 %.tr, 12 + %80 = add nsw i32 %.188, 2 + %81 = icmp slt i32 %80, %1 + br i1 %81, label %82, label %._crit_edge91 + +82: ; preds = %.thread + %83 = getelementptr i8, ptr %31, i64 1 + %84 = load i8, ptr %83, align 1 + %85 = zext i8 %84 to i32 + %86 = and i32 %85, 192 + %87 = icmp eq i32 %86, 128 + br i1 %87, label %88, label %._crit_edge91 + +88: ; preds = %82 + %89 = sext i32 %80 to i64 + %90 = getelementptr inbounds i8, ptr %0, i64 %89 + %91 = load i8, ptr %90, align 1 + %92 = icmp slt i8 %91, -64 + br i1 %92, label %93, label %._crit_edge91 + +93: ; preds = %88 + %94 = shl nuw nsw i32 %85, 6 + %95 = and i32 %94, 2048 + %.masked = and i32 %79, 61440 + %96 = or disjoint i32 %95, %.masked + %97 = icmp ne i32 %96, 0 + %or.cond8 = select i1 %2, i1 true, i1 %97 + br i1 %or.cond8, label %98, label %._crit_edge91 default.unreachable: ; preds = %_ZN4UTF826is_supplementary_characterEPKh.exit.thread unreachable -99: ; preds = %_ZN4UTF826is_supplementary_characterEPKh.exit, %75, %94, %34 - %.2 = phi i32 [ %.188, %34 ], [ %81, %94 ], [ %66, %75 ], [ %37, %_ZN4UTF826is_supplementary_characterEPKh.exit ] - %100 = add nsw i32 %.2, 1 - %.not117 = icmp slt i32 %100, %1 +98: ; preds = %_ZN4UTF826is_supplementary_characterEPKh.exit, %74, %93, %34 + %.2 = phi i32 [ %.188, %34 ], [ %80, %93 ], [ %65, %74 ], [ %37, %_ZN4UTF826is_supplementary_characterEPKh.exit ] + %99 = add nsw i32 %.2, 1 + %.not117 = icmp slt i32 %99, %1 br i1 %.not117, label %.lr.ph90, label %._crit_edge91, !llvm.loop !17 -._crit_edge91: ; preds = %.lr.ph90, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread, %75, %68, %62, %94, %89, %83, %.thread, %99, %._crit_edge - %.lcssa = phi i1 [ true, %._crit_edge ], [ true, %99 ], [ false, %.thread ], [ false, %83 ], [ false, %89 ], [ false, %94 ], [ false, %62 ], [ false, %68 ], [ false, %75 ], [ false, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread ], [ false, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread ], [ false, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread ], [ false, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread ], [ false, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread ], [ false, %.lr.ph90 ] +._crit_edge91: ; preds = %.lr.ph90, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread, %74, %67, %62, %93, %88, %82, %.thread, %98, %._crit_edge + %.lcssa = phi i1 [ true, %._crit_edge ], [ true, %98 ], [ false, %.thread ], [ false, %82 ], [ false, %88 ], [ false, %93 ], [ false, %62 ], [ false, %67 ], [ false, %74 ], [ false, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread ], [ false, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread ], [ false, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread ], [ false, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread ], [ false, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread ], [ false, %.lr.ph90 ] ret i1 %.lcssa } diff --git a/bench/openssl/optimized/d1_lib.ll b/bench/openssl/optimized/d1_lib.ll index 884a28d37b1..4b504e70327 100644 --- a/bench/openssl/optimized/d1_lib.ll +++ b/bench/openssl/optimized/d1_lib.ll @@ -1029,14 +1029,14 @@ define range(i32 -1, 2) i32 @DTLSv1_listen(ptr noundef %0, ptr noundef %1) local tail call void @CRYPTO_free(ptr noundef nonnull %31, ptr noundef nonnull @.str.2, i32 noundef 472) #9 br label %.thread -._crit_edge: ; preds = %294, %.preheader +._crit_edge: ; preds = %290, %.preheader %67 = call i32 @BIO_test_flags(ptr noundef nonnull %20, i32 noundef 8) #9 %.not161 = icmp eq i32 %67, 0 %spec.select = sext i1 %.not161 to i32 - br label %322 + br label %318 -68: ; preds = %.lr.ph, %294 - %69 = phi i32 [ %37, %.lr.ph ], [ %295, %294 ] +68: ; preds = %.lr.ph, %290 + %69 = phi i32 [ %37, %.lr.ph ], [ %291, %290 ] %70 = icmp samesign ult i32 %69, 13 br i1 %70, label %71, label %72 @@ -1044,7 +1044,7 @@ define range(i32 -1, 2) i32 @DTLSv1_listen(ptr noundef %0, ptr noundef %1) local call void @ERR_new() #9 call void @ERR_set_debug(ptr noundef nonnull @.str.2, i32 noundef 508, ptr noundef nonnull @__func__.DTLSv1_listen) #9 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 20, i32 noundef 298, ptr noundef null) #9 - br label %322 + br label %318 72: ; preds = %68 %73 = load i8, ptr %31, align 1, !tbaa !109 @@ -1072,7 +1072,7 @@ define range(i32 -1, 2) i32 @DTLSv1_listen(ptr noundef %0, ptr noundef %1) local call void @ERR_new() #9 call void @ERR_set_debug(ptr noundef nonnull @.str.2, i32 noundef 525, ptr noundef nonnull @__func__.DTLSv1_listen) #9 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 20, i32 noundef 244, ptr noundef null) #9 - br label %322 + br label %318 86: ; preds = %84 %.not122 = icmp eq i8 %74, -2 @@ -1082,7 +1082,7 @@ define range(i32 -1, 2) i32 @DTLSv1_listen(ptr noundef %0, ptr noundef %1) local call void @ERR_new() #9 call void @ERR_set_debug(ptr noundef nonnull @.str.2, i32 noundef 534, ptr noundef nonnull @__func__.DTLSv1_listen) #9 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 20, i32 noundef 116, ptr noundef null) #9 - br label %322 + br label %318 88: ; preds = %86 %89 = load i64, ptr %40, align 1 @@ -1101,7 +1101,7 @@ PACKET_copy_bytes.exit.thread: ; preds = %88 call void @ERR_new() #9 call void @ERR_set_debug(ptr noundef nonnull @.str.2, i32 noundef 541, ptr noundef nonnull @__func__.DTLSv1_listen) #9 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 20, i32 noundef 159, ptr noundef null) #9 - br label %322 + br label %318 98: ; preds = %88 %99 = and i64 %89, 65535 @@ -1112,7 +1112,7 @@ PACKET_copy_bytes.exit.thread: ; preds = %88 call void @ERR_new() #9 call void @ERR_set_debug(ptr noundef nonnull @.str.2, i32 noundef 551, ptr noundef nonnull @__func__.DTLSv1_listen) #9 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 20, i32 noundef 244, ptr noundef null) #9 - br label %322 + br label %318 101: ; preds = %98 %.not.i.i183 = icmp eq i64 %95, 0 @@ -1151,424 +1151,419 @@ PACKET_copy_bytes.exit.thread: ; preds = %88 127: ; preds = %118 %128 = load i8, ptr %52, align 1, !tbaa !109 - %129 = zext i8 %128 to i64 - %130 = shl nuw nsw i64 %129, 16 - %131 = load i8, ptr %53, align 1, !tbaa !109 - %132 = zext i8 %131 to i64 - %133 = shl nuw nsw i64 %132, 8 - %134 = or disjoint i64 %133, %130 - %135 = load i8, ptr %54, align 1, !tbaa !109 - %136 = zext i8 %135 to i64 - %137 = or disjoint i64 %134, %136 - %138 = add nsw i64 %95, -9 - %139 = icmp samesign ult i64 %138, 3 - br i1 %139, label %PACKET_get_1.exit185.thread, label %140 - -140: ; preds = %127 - %141 = load i8, ptr %55, align 1, !tbaa !109 + %129 = load i8, ptr %53, align 1, !tbaa !109 + %130 = load i8, ptr %54, align 1, !tbaa !109 + %131 = add nsw i64 %95, -9 + %132 = icmp samesign ult i64 %131, 3 + br i1 %132, label %PACKET_get_1.exit185.thread, label %133 + +133: ; preds = %127 + %134 = load i8, ptr %55, align 1, !tbaa !109 + %135 = zext i8 %134 to i64 + %136 = shl nuw nsw i64 %135, 16 + %137 = load i8, ptr %56, align 1, !tbaa !109 + %138 = zext i8 %137 to i64 + %139 = shl nuw nsw i64 %138, 8 + %140 = or disjoint i64 %139, %136 + %141 = load i8, ptr %57, align 1, !tbaa !109 %142 = zext i8 %141 to i64 - %143 = shl nuw nsw i64 %142, 16 - %144 = load i8, ptr %56, align 1, !tbaa !109 - %145 = zext i8 %144 to i64 - %146 = shl nuw nsw i64 %145, 8 - %147 = or disjoint i64 %146, %143 - %148 = load i8, ptr %57, align 1, !tbaa !109 - %149 = zext i8 %148 to i64 - %150 = or disjoint i64 %147, %149 - %151 = add nsw i64 %95, -12 - %.not131 = icmp eq i64 %151, %150 - br i1 %.not131, label %152, label %PACKET_get_1.exit185.thread - -PACKET_get_1.exit185.thread: ; preds = %140, %127, %118, %105, %102, %101 + %143 = or disjoint i64 %140, %142 + %144 = add nsw i64 %95, -12 + %.not131 = icmp eq i64 %144, %143 + br i1 %.not131, label %145, label %PACKET_get_1.exit185.thread + +PACKET_get_1.exit185.thread: ; preds = %133, %127, %118, %105, %102, %101 call void @ERR_new() #9 call void @ERR_set_debug(ptr noundef nonnull @.str.2, i32 noundef 566, ptr noundef nonnull @__func__.DTLSv1_listen) #9 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 20, i32 noundef 159, ptr noundef null) #9 - br label %322 + br label %318 -152: ; preds = %140 +145: ; preds = %133 %.not132 = icmp eq i8 %103, 1 - br i1 %.not132, label %154, label %153 + br i1 %.not132, label %147, label %146 -153: ; preds = %152 +146: ; preds = %145 call void @ERR_new() #9 call void @ERR_set_debug(ptr noundef nonnull @.str.2, i32 noundef 571, ptr noundef nonnull @__func__.DTLSv1_listen) #9 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 20, i32 noundef 244, ptr noundef null) #9 - br label %322 + br label %318 -154: ; preds = %152 - %155 = icmp samesign ugt i32 %124, 2 - br i1 %155, label %156, label %157 +147: ; preds = %145 + %148 = icmp samesign ugt i32 %124, 2 + br i1 %148, label %149, label %150 -156: ; preds = %154 +149: ; preds = %147 call void @ERR_new() #9 call void @ERR_set_debug(ptr noundef nonnull @.str.2, i32 noundef 577, ptr noundef nonnull @__func__.DTLSv1_listen) #9 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 20, i32 noundef 402, ptr noundef null) #9 - br label %322 + br label %318 -157: ; preds = %154 - %.not133 = icmp ne i64 %137, 0 - %158 = icmp samesign ugt i64 %150, %115 - %or.cond342 = select i1 %.not133, i1 true, i1 %158 - br i1 %or.cond342, label %159, label %160 +150: ; preds = %147 + %151 = or i8 %129, %128 + %152 = or i8 %151, %130 + %153 = icmp ne i8 %152, 0 + %154 = icmp samesign ugt i64 %143, %115 + %or.cond342 = select i1 %153, i1 true, i1 %154 + br i1 %or.cond342, label %155, label %156 -159: ; preds = %157 +155: ; preds = %150 call void @ERR_new() #9 call void @ERR_set_debug(ptr noundef nonnull @.str.2, i32 noundef 590, ptr noundef nonnull @__func__.DTLSv1_listen) #9 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 20, i32 noundef 401, ptr noundef null) #9 - br label %322 + br label %318 -160: ; preds = %157 - %161 = load ptr, ptr %41, align 8, !tbaa !110 - %.not134 = icmp eq ptr %161, null - br i1 %.not134, label %166, label %162 +156: ; preds = %150 + %157 = load ptr, ptr %41, align 8, !tbaa !110 + %.not134 = icmp eq ptr %157, null + br i1 %.not134, label %162, label %158 -162: ; preds = %160 - %163 = load i32, ptr %26, align 8, !tbaa !99 - %164 = add nuw nsw i64 %150, 12 - %165 = load ptr, ptr %43, align 8, !tbaa !111 - call void %161(i32 noundef 0, i32 noundef %163, i32 noundef 22, ptr noundef nonnull %46, i64 noundef %164, ptr noundef nonnull %0, ptr noundef %165) #9 - br label %166 +158: ; preds = %156 + %159 = load i32, ptr %26, align 8, !tbaa !99 + %160 = add nuw nsw i64 %143, 12 + %161 = load ptr, ptr %43, align 8, !tbaa !111 + call void %157(i32 noundef 0, i32 noundef %159, i32 noundef 22, ptr noundef nonnull %46, i64 noundef %160, ptr noundef nonnull %0, ptr noundef %161) #9 + br label %162 -166: ; preds = %162, %160 - %167 = icmp samesign ult i64 %150, 2 - br i1 %167, label %168, label %169 +162: ; preds = %158, %156 + %163 = icmp samesign ult i64 %143, 2 + br i1 %163, label %164, label %165 -168: ; preds = %166 +164: ; preds = %162 call void @ERR_new() #9 call void @ERR_set_debug(ptr noundef nonnull @.str.2, i32 noundef 600, ptr noundef nonnull @__func__.DTLSv1_listen) #9 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 20, i32 noundef 159, ptr noundef null) #9 - br label %322 - -169: ; preds = %166 - %170 = load i8, ptr %58, align 1, !tbaa !109 - %171 = zext i8 %170 to i32 - %172 = shl nuw nsw i32 %171, 8 - %173 = load i8, ptr %59, align 1, !tbaa !109 - %174 = zext i8 %173 to i32 - %175 = or disjoint i32 %172, %174 + br label %318 + +165: ; preds = %162 + %166 = load i8, ptr %58, align 1, !tbaa !109 + %167 = zext i8 %166 to i32 + %168 = shl nuw nsw i32 %167, 8 + %169 = load i8, ptr %59, align 1, !tbaa !109 + %170 = zext i8 %169 to i32 + %171 = or disjoint i32 %168, %170 + %172 = icmp eq i32 %171, 256 + %173 = select i1 %172, i32 65280, i32 %171 + %174 = load ptr, ptr %60, align 8, !tbaa !78 + %175 = load i32, ptr %174, align 8, !tbaa !98 %176 = icmp eq i32 %175, 256 - %177 = select i1 %176, i32 65280, i32 %175 - %178 = load ptr, ptr %60, align 8, !tbaa !78 - %179 = load i32, ptr %178, align 8, !tbaa !98 - %180 = icmp eq i32 %179, 256 - %spec.select162 = select i1 %180, i32 65280, i32 %179 - %181 = icmp ule i32 %177, %spec.select162 - %.not136 = icmp eq i32 %179, 131071 - %or.cond343 = or i1 %.not136, %181 - br i1 %or.cond343, label %183, label %182 - -182: ; preds = %169 + %spec.select162 = select i1 %176, i32 65280, i32 %175 + %177 = icmp ule i32 %173, %spec.select162 + %.not136 = icmp eq i32 %175, 131071 + %or.cond343 = or i1 %.not136, %177 + br i1 %or.cond343, label %179, label %178 + +178: ; preds = %165 call void @ERR_new() #9 call void @ERR_set_debug(ptr noundef nonnull @.str.2, i32 noundef 609, ptr noundef nonnull @__func__.DTLSv1_listen) #9 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 20, i32 noundef 267, ptr noundef null) #9 - br label %322 - -183: ; preds = %169 - %184 = add nsw i64 %150, -2 - %or.cond344 = icmp samesign ult i64 %184, 33 - br i1 %or.cond344, label %PACKET_forward.exit.thread, label %185 - -185: ; preds = %183 - %186 = load i8, ptr %61, align 1, !tbaa !109 - %187 = add nsw i64 %150, -35 - %188 = zext i8 %186 to i64 - %189 = icmp samesign ult i64 %187, %188 - br i1 %189, label %PACKET_forward.exit.thread, label %190 - -190: ; preds = %185 - %191 = getelementptr inbounds nuw i8, ptr %62, i64 %188 - %.not.i.i.i206 = icmp eq i64 %187, %188 - br i1 %.not.i.i.i206, label %PACKET_forward.exit.thread, label %192 - -192: ; preds = %190 - %193 = load i8, ptr %191, align 1, !tbaa !109 - %194 = xor i64 %188, -1 - %195 = add nsw i64 %187, %194 - %196 = zext i8 %193 to i64 - %197 = icmp samesign ult i64 %195, %196 - br i1 %197, label %PACKET_forward.exit.thread, label %198 - -PACKET_forward.exit.thread: ; preds = %192, %190, %185, %183 + br label %318 + +179: ; preds = %165 + %180 = add nsw i64 %143, -2 + %or.cond344 = icmp samesign ult i64 %180, 33 + br i1 %or.cond344, label %PACKET_forward.exit.thread, label %181 + +181: ; preds = %179 + %182 = load i8, ptr %61, align 1, !tbaa !109 + %183 = add nsw i64 %143, -35 + %184 = zext i8 %182 to i64 + %185 = icmp samesign ult i64 %183, %184 + br i1 %185, label %PACKET_forward.exit.thread, label %186 + +186: ; preds = %181 + %187 = getelementptr inbounds nuw i8, ptr %62, i64 %184 + %.not.i.i.i206 = icmp eq i64 %183, %184 + br i1 %.not.i.i.i206, label %PACKET_forward.exit.thread, label %188 + +188: ; preds = %186 + %189 = load i8, ptr %187, align 1, !tbaa !109 + %190 = xor i64 %184, -1 + %191 = add nsw i64 %183, %190 + %192 = zext i8 %189 to i64 + %193 = icmp samesign ult i64 %191, %192 + br i1 %193, label %PACKET_forward.exit.thread, label %194 + +PACKET_forward.exit.thread: ; preds = %188, %186, %181, %179 call void @ERR_new() #9 call void @ERR_set_debug(ptr noundef nonnull @.str.2, i32 noundef 620, ptr noundef nonnull @__func__.DTLSv1_listen) #9 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 20, i32 noundef 159, ptr noundef null) #9 - br label %322 + br label %318 -198: ; preds = %192 - %199 = getelementptr inbounds nuw i8, ptr %191, i64 1 - %200 = icmp eq i8 %193, 0 - br i1 %200, label %.thread332, label %201 +194: ; preds = %188 + %195 = getelementptr inbounds nuw i8, ptr %187, i64 1 + %196 = icmp eq i8 %189, 0 + br i1 %196, label %.thread332, label %197 -201: ; preds = %198 - %202 = load ptr, ptr %63, align 8, !tbaa !112 - %203 = getelementptr inbounds nuw i8, ptr %202, i64 216 - %204 = load ptr, ptr %203, align 8, !tbaa !113 - %205 = icmp eq ptr %204, null - br i1 %205, label %206, label %207 +197: ; preds = %194 + %198 = load ptr, ptr %63, align 8, !tbaa !112 + %199 = getelementptr inbounds nuw i8, ptr %198, i64 216 + %200 = load ptr, ptr %199, align 8, !tbaa !113 + %201 = icmp eq ptr %200, null + br i1 %201, label %202, label %203 -206: ; preds = %201 +202: ; preds = %197 call void @ERR_new() #9 call void @ERR_set_debug(ptr noundef nonnull @.str.2, i32 noundef 635, ptr noundef nonnull @__func__.DTLSv1_listen) #9 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 20, i32 noundef 403, ptr noundef null) #9 - br label %322 + br label %318 -207: ; preds = %201 - %208 = zext i8 %193 to i32 - %209 = call i32 %204(ptr noundef nonnull %0, ptr noundef nonnull %199, i32 noundef %208) #9 - %210 = icmp eq i32 %209, 0 - br i1 %210, label %.thread332, label %297 +203: ; preds = %197 + %204 = zext i8 %189 to i32 + %205 = call i32 %200(ptr noundef nonnull %0, ptr noundef nonnull %195, i32 noundef %204) #9 + %206 = icmp eq i32 %205, 0 + br i1 %206, label %.thread332, label %293 -.thread332: ; preds = %198, %207 +.thread332: ; preds = %194, %203 call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %6) #9 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #9 - %211 = load ptr, ptr %63, align 8, !tbaa !112 - %212 = getelementptr inbounds nuw i8, ptr %211, i64 208 - %213 = load ptr, ptr %212, align 8, !tbaa !128 - %214 = icmp eq ptr %213, null - br i1 %214, label %220, label %215 - -215: ; preds = %.thread332 - %216 = call i32 %213(ptr noundef nonnull %0, ptr noundef nonnull %3, ptr noundef nonnull %5) #9 - %217 = icmp eq i32 %216, 0 - %218 = load i32, ptr %5, align 4 - %219 = icmp ugt i32 %218, 255 - %or.cond7 = select i1 %217, i1 true, i1 %219 - br i1 %or.cond7, label %220, label %221 - -220: ; preds = %215, %.thread332 + %207 = load ptr, ptr %63, align 8, !tbaa !112 + %208 = getelementptr inbounds nuw i8, ptr %207, i64 208 + %209 = load ptr, ptr %208, align 8, !tbaa !128 + %210 = icmp eq ptr %209, null + br i1 %210, label %216, label %211 + +211: ; preds = %.thread332 + %212 = call i32 %209(ptr noundef nonnull %0, ptr noundef nonnull %3, ptr noundef nonnull %5) #9 + %213 = icmp eq i32 %212, 0 + %214 = load i32, ptr %5, align 4 + %215 = icmp ugt i32 %214, 255 + %or.cond7 = select i1 %213, i1 true, i1 %215 + br i1 %or.cond7, label %216, label %217 + +216: ; preds = %211, %.thread332 call void @ERR_new() #9 call void @ERR_set_debug(ptr noundef nonnull @.str.2, i32 noundef 668, ptr noundef nonnull @__func__.DTLSv1_listen) #9 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 20, i32 noundef 400, ptr noundef null) #9 br label %.thread337 -221: ; preds = %215 - %222 = load ptr, ptr %60, align 8, !tbaa !78 - %223 = load i32, ptr %222, align 8, !tbaa !98 - %224 = icmp eq i32 %223, 131071 - br i1 %224, label %228, label %225 - -225: ; preds = %221 - %226 = load i32, ptr %26, align 8, !tbaa !99 - %227 = zext i32 %226 to i64 - br label %228 - -228: ; preds = %221, %225 - %229 = phi i64 [ %227, %225 ], [ 65279, %221 ] - %230 = call i32 @ssl_get_max_send_fragment(ptr noundef nonnull %0) #9 - %231 = add i32 %230, 13 - %232 = zext i32 %231 to i64 - %233 = call i32 @WPACKET_init_static_len(ptr noundef nonnull %6, ptr noundef nonnull %34, i64 noundef %232, i64 noundef 0) #9 - %.not140 = icmp eq i32 %233, 0 - br i1 %.not140, label %264, label %234 - -234: ; preds = %228 - %235 = call i32 @WPACKET_put_bytes__(ptr noundef nonnull %6, i64 noundef 22, i64 noundef 1) #9 - %.not141 = icmp eq i32 %235, 0 - br i1 %.not141, label %264, label %236 +217: ; preds = %211 + %218 = load ptr, ptr %60, align 8, !tbaa !78 + %219 = load i32, ptr %218, align 8, !tbaa !98 + %220 = icmp eq i32 %219, 131071 + br i1 %220, label %224, label %221 + +221: ; preds = %217 + %222 = load i32, ptr %26, align 8, !tbaa !99 + %223 = zext i32 %222 to i64 + br label %224 + +224: ; preds = %217, %221 + %225 = phi i64 [ %223, %221 ], [ 65279, %217 ] + %226 = call i32 @ssl_get_max_send_fragment(ptr noundef nonnull %0) #9 + %227 = add i32 %226, 13 + %228 = zext i32 %227 to i64 + %229 = call i32 @WPACKET_init_static_len(ptr noundef nonnull %6, ptr noundef nonnull %34, i64 noundef %228, i64 noundef 0) #9 + %.not140 = icmp eq i32 %229, 0 + br i1 %.not140, label %260, label %230 + +230: ; preds = %224 + %231 = call i32 @WPACKET_put_bytes__(ptr noundef nonnull %6, i64 noundef 22, i64 noundef 1) #9 + %.not141 = icmp eq i32 %231, 0 + br i1 %.not141, label %260, label %232 + +232: ; preds = %230 + %233 = call i32 @WPACKET_put_bytes__(ptr noundef nonnull %6, i64 noundef %225, i64 noundef 2) #9 + %.not142 = icmp eq i32 %233, 0 + br i1 %.not142, label %260, label %234 + +234: ; preds = %232 + %235 = call i32 @WPACKET_memcpy(ptr noundef nonnull %6, ptr noundef nonnull %4, i64 noundef 8) #9 + %.not143 = icmp eq i32 %235, 0 + br i1 %.not143, label %260, label %236 236: ; preds = %234 - %237 = call i32 @WPACKET_put_bytes__(ptr noundef nonnull %6, i64 noundef %229, i64 noundef 2) #9 - %.not142 = icmp eq i32 %237, 0 - br i1 %.not142, label %264, label %238 + %237 = call i32 @WPACKET_start_sub_packet_len__(ptr noundef nonnull %6, i64 noundef 2) #9 + %.not144 = icmp eq i32 %237, 0 + br i1 %.not144, label %260, label %238 238: ; preds = %236 - %239 = call i32 @WPACKET_memcpy(ptr noundef nonnull %6, ptr noundef nonnull %4, i64 noundef 8) #9 - %.not143 = icmp eq i32 %239, 0 - br i1 %.not143, label %264, label %240 + %239 = call i32 @WPACKET_put_bytes__(ptr noundef nonnull %6, i64 noundef 3, i64 noundef 1) #9 + %.not145 = icmp eq i32 %239, 0 + br i1 %.not145, label %260, label %240 240: ; preds = %238 - %241 = call i32 @WPACKET_start_sub_packet_len__(ptr noundef nonnull %6, i64 noundef 2) #9 - %.not144 = icmp eq i32 %241, 0 - br i1 %.not144, label %264, label %242 + %241 = call i32 @WPACKET_put_bytes__(ptr noundef nonnull %6, i64 noundef 0, i64 noundef 3) #9 + %.not146 = icmp eq i32 %241, 0 + br i1 %.not146, label %260, label %242 242: ; preds = %240 - %243 = call i32 @WPACKET_put_bytes__(ptr noundef nonnull %6, i64 noundef 3, i64 noundef 1) #9 - %.not145 = icmp eq i32 %243, 0 - br i1 %.not145, label %264, label %244 + %243 = call i32 @WPACKET_put_bytes__(ptr noundef nonnull %6, i64 noundef 0, i64 noundef 2) #9 + %.not147 = icmp eq i32 %243, 0 + br i1 %.not147, label %260, label %244 244: ; preds = %242 %245 = call i32 @WPACKET_put_bytes__(ptr noundef nonnull %6, i64 noundef 0, i64 noundef 3) #9 - %.not146 = icmp eq i32 %245, 0 - br i1 %.not146, label %264, label %246 + %.not148 = icmp eq i32 %245, 0 + br i1 %.not148, label %260, label %246 246: ; preds = %244 - %247 = call i32 @WPACKET_put_bytes__(ptr noundef nonnull %6, i64 noundef 0, i64 noundef 2) #9 - %.not147 = icmp eq i32 %247, 0 - br i1 %.not147, label %264, label %248 + %247 = call i32 @WPACKET_start_sub_packet_len__(ptr noundef nonnull %6, i64 noundef 3) #9 + %.not149 = icmp eq i32 %247, 0 + br i1 %.not149, label %260, label %248 248: ; preds = %246 - %249 = call i32 @WPACKET_put_bytes__(ptr noundef nonnull %6, i64 noundef 0, i64 noundef 3) #9 - %.not148 = icmp eq i32 %249, 0 - br i1 %.not148, label %264, label %250 - -250: ; preds = %248 - %251 = call i32 @WPACKET_start_sub_packet_len__(ptr noundef nonnull %6, i64 noundef 3) #9 - %.not149 = icmp eq i32 %251, 0 - br i1 %.not149, label %264, label %252 - -252: ; preds = %250 - %253 = load i32, ptr %5, align 4, !tbaa !108 - %254 = zext i32 %253 to i64 - %255 = call i32 @dtls_raw_hello_verify_request(ptr noundef nonnull %6, ptr noundef nonnull %3, i64 noundef %254) #9 - %.not150 = icmp eq i32 %255, 0 - br i1 %.not150, label %264, label %256 - -256: ; preds = %252 - %257 = call i32 @WPACKET_close(ptr noundef nonnull %6) #9 - %.not151 = icmp eq i32 %257, 0 - br i1 %.not151, label %264, label %258 + %249 = load i32, ptr %5, align 4, !tbaa !108 + %250 = zext i32 %249 to i64 + %251 = call i32 @dtls_raw_hello_verify_request(ptr noundef nonnull %6, ptr noundef nonnull %3, i64 noundef %250) #9 + %.not150 = icmp eq i32 %251, 0 + br i1 %.not150, label %260, label %252 + +252: ; preds = %248 + %253 = call i32 @WPACKET_close(ptr noundef nonnull %6) #9 + %.not151 = icmp eq i32 %253, 0 + br i1 %.not151, label %260, label %254 + +254: ; preds = %252 + %255 = call i32 @WPACKET_close(ptr noundef nonnull %6) #9 + %.not152 = icmp eq i32 %255, 0 + br i1 %.not152, label %260, label %256 + +256: ; preds = %254 + %257 = call i32 @WPACKET_get_total_written(ptr noundef nonnull %6, ptr noundef nonnull %7) #9 + %.not153 = icmp eq i32 %257, 0 + br i1 %.not153, label %260, label %258 258: ; preds = %256 - %259 = call i32 @WPACKET_close(ptr noundef nonnull %6) #9 - %.not152 = icmp eq i32 %259, 0 - br i1 %.not152, label %264, label %260 - -260: ; preds = %258 - %261 = call i32 @WPACKET_get_total_written(ptr noundef nonnull %6, ptr noundef nonnull %7) #9 - %.not153 = icmp eq i32 %261, 0 - br i1 %.not153, label %264, label %262 + %259 = call i32 @WPACKET_finish(ptr noundef nonnull %6) #9 + %.not154 = icmp eq i32 %259, 0 + br i1 %.not154, label %260, label %261 -262: ; preds = %260 - %263 = call i32 @WPACKET_finish(ptr noundef nonnull %6) #9 - %.not154 = icmp eq i32 %263, 0 - br i1 %.not154, label %264, label %265 - -264: ; preds = %262, %260, %258, %256, %252, %250, %248, %246, %244, %242, %240, %238, %236, %234, %228 +260: ; preds = %258, %256, %254, %252, %248, %246, %244, %242, %240, %238, %236, %234, %232, %230, %224 call void @ERR_new() #9 call void @ERR_set_debug(ptr noundef nonnull @.str.2, i32 noundef 732, ptr noundef nonnull @__func__.DTLSv1_listen) #9 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 20, i32 noundef 786691, ptr noundef null) #9 call void @WPACKET_cleanup(ptr noundef nonnull %6) #9 br label %.thread337 -265: ; preds = %262 +261: ; preds = %258 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %64, ptr noundef nonnull align 1 dereferenceable(3) %65, i64 3, i1 false) - %266 = load ptr, ptr %41, align 8, !tbaa !110 - %.not155 = icmp eq ptr %266, null - br i1 %.not155, label %269, label %267 + %262 = load ptr, ptr %41, align 8, !tbaa !110 + %.not155 = icmp eq ptr %262, null + br i1 %.not155, label %265, label %263 -267: ; preds = %265 - %268 = load ptr, ptr %43, align 8, !tbaa !111 - call void %266(i32 noundef 1, i32 noundef 0, i32 noundef 256, ptr noundef nonnull %31, i64 noundef 13, ptr noundef nonnull %0, ptr noundef %268) #9 - br label %269 +263: ; preds = %261 + %264 = load ptr, ptr %43, align 8, !tbaa !111 + call void %262(i32 noundef 1, i32 noundef 0, i32 noundef 256, ptr noundef nonnull %31, i64 noundef 13, ptr noundef nonnull %0, ptr noundef %264) #9 + br label %265 -269: ; preds = %267, %265 - %270 = call ptr @BIO_ADDR_new() #9 - %271 = icmp eq ptr %270, null - br i1 %271, label %272, label %273 +265: ; preds = %263, %261 + %266 = call ptr @BIO_ADDR_new() #9 + %267 = icmp eq ptr %266, null + br i1 %267, label %268, label %269 -272: ; preds = %269 +268: ; preds = %265 call void @ERR_new() #9 call void @ERR_set_debug(ptr noundef nonnull @.str.2, i32 noundef 756, ptr noundef nonnull @__func__.DTLSv1_listen) #9 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 20, i32 noundef 524320, ptr noundef null) #9 br label %.thread337 +269: ; preds = %265 + %270 = call i64 @BIO_ctrl(ptr noundef nonnull %20, i32 noundef 46, i64 noundef 0, ptr noundef nonnull %266) #9 + %271 = trunc i64 %270 to i32 + %272 = icmp sgt i32 %271, 0 + br i1 %272, label %273, label %275 + 273: ; preds = %269 - %274 = call i64 @BIO_ctrl(ptr noundef nonnull %20, i32 noundef 46, i64 noundef 0, ptr noundef nonnull %270) #9 - %275 = trunc i64 %274 to i32 - %276 = icmp sgt i32 %275, 0 - br i1 %276, label %277, label %279 - -277: ; preds = %273 - %278 = call i64 @BIO_ctrl(ptr noundef nonnull %21, i32 noundef 44, i64 noundef 0, ptr noundef nonnull %270) #9 - br label %279 - -279: ; preds = %277, %273 - call void @BIO_ADDR_free(ptr noundef nonnull %270) #9 - %280 = load i64, ptr %7, align 8, !tbaa !102 - %281 = trunc i64 %280 to i32 - %282 = call i32 @BIO_write(ptr noundef nonnull %21, ptr noundef nonnull %34, i32 noundef %281) #9 - %283 = load i64, ptr %7, align 8, !tbaa !102 - %284 = trunc i64 %283 to i32 - %285 = icmp slt i32 %282, %284 - br i1 %285, label %286, label %288 - -286: ; preds = %279 - %287 = call i32 @BIO_test_flags(ptr noundef nonnull %21, i32 noundef 8) #9 - %.not157 = icmp eq i32 %287, 0 + %274 = call i64 @BIO_ctrl(ptr noundef nonnull %21, i32 noundef 44, i64 noundef 0, ptr noundef nonnull %266) #9 + br label %275 + +275: ; preds = %273, %269 + call void @BIO_ADDR_free(ptr noundef nonnull %266) #9 + %276 = load i64, ptr %7, align 8, !tbaa !102 + %277 = trunc i64 %276 to i32 + %278 = call i32 @BIO_write(ptr noundef nonnull %21, ptr noundef nonnull %34, i32 noundef %277) #9 + %279 = load i64, ptr %7, align 8, !tbaa !102 + %280 = trunc i64 %279 to i32 + %281 = icmp slt i32 %278, %280 + br i1 %281, label %282, label %284 + +282: ; preds = %275 + %283 = call i32 @BIO_test_flags(ptr noundef nonnull %21, i32 noundef 8) #9 + %.not157 = icmp eq i32 %283, 0 %..096 = sext i1 %.not157 to i32 br label %.thread337 -288: ; preds = %279 - %289 = call i64 @BIO_ctrl(ptr noundef nonnull %21, i32 noundef 11, i64 noundef 0, ptr noundef null) #9 - %290 = trunc i64 %289 to i32 - %291 = icmp slt i32 %290, 1 - br i1 %291, label %292, label %294 +284: ; preds = %275 + %285 = call i64 @BIO_ctrl(ptr noundef nonnull %21, i32 noundef 11, i64 noundef 0, ptr noundef null) #9 + %286 = trunc i64 %285 to i32 + %287 = icmp slt i32 %286, 1 + br i1 %287, label %288, label %290 -292: ; preds = %288 - %293 = call i32 @BIO_test_flags(ptr noundef nonnull %21, i32 noundef 8) #9 - %.not156 = icmp eq i32 %293, 0 +288: ; preds = %284 + %289 = call i32 @BIO_test_flags(ptr noundef nonnull %21, i32 noundef 8) #9 + %.not156 = icmp eq i32 %289, 0 %..096164 = sext i1 %.not156 to i32 br label %.thread337 -.thread337: ; preds = %220, %272, %264, %286, %292 - %.298.ph = phi i32 [ %..096164, %292 ], [ %..096, %286 ], [ -1, %264 ], [ 0, %272 ], [ -1, %220 ] +.thread337: ; preds = %216, %268, %260, %282, %288 + %.298.ph = phi i32 [ %..096164, %288 ], [ %..096, %282 ], [ -1, %260 ], [ 0, %268 ], [ -1, %216 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #9 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %6) #9 - br label %322 + br label %318 -294: ; preds = %288 +290: ; preds = %284 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #9 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %6) #9 store i32 0, ptr %36, align 4, !tbaa !108 - %295 = call i32 @BIO_read(ptr noundef nonnull %20, ptr noundef nonnull %31, i32 noundef 16397) #9 - %296 = icmp slt i32 %295, 1 - br i1 %296, label %._crit_edge, label %68, !llvm.loop !129 - -297: ; preds = %207 - %298 = getelementptr inbounds nuw i8, ptr %0, i64 1264 - %299 = load ptr, ptr %298, align 8, !tbaa !77 - %300 = getelementptr inbounds nuw i8, ptr %299, i64 272 - store i16 1, ptr %300, align 8, !tbaa !130 - %301 = getelementptr inbounds nuw i8, ptr %299, i64 268 - store i16 1, ptr %301, align 4, !tbaa !131 - %302 = getelementptr inbounds nuw i8, ptr %299, i64 270 - store i16 1, ptr %302, align 2, !tbaa !132 - %303 = getelementptr inbounds nuw i8, ptr %0, i64 3192 - %304 = load ptr, ptr %303, align 8, !tbaa !133 - %305 = getelementptr inbounds nuw i8, ptr %304, i64 176 - %306 = load ptr, ptr %305, align 8, !tbaa !134 - %307 = getelementptr inbounds nuw i8, ptr %0, i64 3208 - %308 = load ptr, ptr %307, align 8, !tbaa !90 - %309 = call i32 %306(ptr noundef %308) #9 - %310 = call i64 @SSL_set_options(ptr noundef nonnull %0, i64 noundef 8192) #9 + %291 = call i32 @BIO_read(ptr noundef nonnull %20, ptr noundef nonnull %31, i32 noundef 16397) #9 + %292 = icmp slt i32 %291, 1 + br i1 %292, label %._crit_edge, label %68, !llvm.loop !129 + +293: ; preds = %203 + %294 = getelementptr inbounds nuw i8, ptr %0, i64 1264 + %295 = load ptr, ptr %294, align 8, !tbaa !77 + %296 = getelementptr inbounds nuw i8, ptr %295, i64 272 + store i16 1, ptr %296, align 8, !tbaa !130 + %297 = getelementptr inbounds nuw i8, ptr %295, i64 268 + store i16 1, ptr %297, align 4, !tbaa !131 + %298 = getelementptr inbounds nuw i8, ptr %295, i64 270 + store i16 1, ptr %298, align 2, !tbaa !132 + %299 = getelementptr inbounds nuw i8, ptr %0, i64 3192 + %300 = load ptr, ptr %299, align 8, !tbaa !133 + %301 = getelementptr inbounds nuw i8, ptr %300, i64 176 + %302 = load ptr, ptr %301, align 8, !tbaa !134 + %303 = getelementptr inbounds nuw i8, ptr %0, i64 3208 + %304 = load ptr, ptr %303, align 8, !tbaa !90 + %305 = call i32 %302(ptr noundef %304) #9 + %306 = call i64 @SSL_set_options(ptr noundef nonnull %0, i64 noundef 8192) #9 call void @ossl_statem_set_hello_verify_done(ptr noundef nonnull %0) #9 - %311 = call i64 @BIO_ctrl(ptr noundef nonnull %20, i32 noundef 46, i64 noundef 0, ptr noundef %1) #9 - %312 = trunc i64 %311 to i32 - %313 = icmp slt i32 %312, 1 - br i1 %313, label %314, label %315 + %307 = call i64 @BIO_ctrl(ptr noundef nonnull %20, i32 noundef 46, i64 noundef 0, ptr noundef %1) #9 + %308 = trunc i64 %307 to i32 + %309 = icmp slt i32 %308, 1 + br i1 %309, label %310, label %311 -314: ; preds = %297 +310: ; preds = %293 call void @BIO_ADDR_clear(ptr noundef %1) #9 - br label %315 + br label %311 -315: ; preds = %314, %297 - %316 = getelementptr inbounds nuw i8, ptr %0, i64 3216 - %317 = load ptr, ptr %316, align 8, !tbaa !135 - %318 = call i32 @BIO_write(ptr noundef %317, ptr noundef nonnull %31, i32 noundef %69) #9 - %.not159 = icmp eq i32 %318, %69 - br i1 %.not159, label %320, label %319 +311: ; preds = %310, %293 + %312 = getelementptr inbounds nuw i8, ptr %0, i64 3216 + %313 = load ptr, ptr %312, align 8, !tbaa !135 + %314 = call i32 @BIO_write(ptr noundef %313, ptr noundef nonnull %31, i32 noundef %69) #9 + %.not159 = icmp eq i32 %314, %69 + br i1 %.not159, label %316, label %315 -319: ; preds = %315 +315: ; preds = %311 call void @ERR_new() #9 call void @ERR_set_debug(ptr noundef nonnull @.str.2, i32 noundef 825, ptr noundef nonnull @__func__.DTLSv1_listen) #9 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 20, i32 noundef 786691, ptr noundef null) #9 - br label %322 + br label %318 -320: ; preds = %315 - %321 = call i32 @ssl_set_new_record_layer(ptr noundef nonnull %0, i32 noundef 131071, i32 noundef 0, i32 noundef 0, ptr noundef null, i64 noundef 0, ptr noundef null, i64 noundef 0, ptr noundef null, i64 noundef 0, ptr noundef null, i64 noundef 0, ptr noundef null, i64 noundef 0, i32 noundef 0, ptr noundef null, ptr noundef null, ptr noundef null) #9 - %.not160 = icmp eq i32 %321, 0 +316: ; preds = %311 + %317 = call i32 @ssl_set_new_record_layer(ptr noundef nonnull %0, i32 noundef 131071, i32 noundef 0, i32 noundef 0, ptr noundef null, i64 noundef 0, ptr noundef null, i64 noundef 0, ptr noundef null, i64 noundef 0, ptr noundef null, i64 noundef 0, ptr noundef null, i64 noundef 0, i32 noundef 0, ptr noundef null, ptr noundef null, ptr noundef null) #9 + %.not160 = icmp eq i32 %317, 0 %.166 = select i1 %.not160, i32 -1, i32 1 - br label %322 + br label %318 -322: ; preds = %.thread337, %._crit_edge, %320, %319, %206, %PACKET_forward.exit.thread, %182, %168, %159, %156, %153, %PACKET_get_1.exit185.thread, %100, %PACKET_copy_bytes.exit.thread, %87, %85, %71 - %.197 = phi i32 [ 0, %71 ], [ 0, %85 ], [ 0, %87 ], [ 0, %100 ], [ 0, %PACKET_get_1.exit185.thread ], [ 0, %153 ], [ 0, %156 ], [ 0, %159 ], [ 0, %182 ], [ -1, %319 ], [ -1, %206 ], [ 0, %PACKET_forward.exit.thread ], [ 0, %168 ], [ 0, %PACKET_copy_bytes.exit.thread ], [ %spec.select, %._crit_edge ], [ %.166, %320 ], [ %.298.ph, %.thread337 ] +318: ; preds = %.thread337, %._crit_edge, %316, %315, %202, %PACKET_forward.exit.thread, %178, %164, %155, %149, %146, %PACKET_get_1.exit185.thread, %100, %PACKET_copy_bytes.exit.thread, %87, %85, %71 + %.197 = phi i32 [ 0, %71 ], [ 0, %85 ], [ 0, %87 ], [ 0, %100 ], [ 0, %PACKET_get_1.exit185.thread ], [ 0, %146 ], [ 0, %149 ], [ 0, %155 ], [ 0, %178 ], [ -1, %315 ], [ -1, %202 ], [ 0, %PACKET_forward.exit.thread ], [ 0, %164 ], [ 0, %PACKET_copy_bytes.exit.thread ], [ %spec.select, %._crit_edge ], [ %.166, %316 ], [ %.298.ph, %.thread337 ] call void @BIO_ADDR_free(ptr noundef null) #9 call void @CRYPTO_free(ptr noundef nonnull %31, ptr noundef nonnull @.str.2, i32 noundef 848) #9 call void @CRYPTO_free(ptr noundef nonnull %34, ptr noundef nonnull @.str.2, i32 noundef 849) #9 br label %.thread -.thread: ; preds = %2, %9, %30, %17, %322, %66, %29, %24 - %.0 = phi i32 [ -1, %29 ], [ -1, %66 ], [ %.197, %322 ], [ -1, %24 ], [ -1, %17 ], [ -1, %30 ], [ -1, %9 ], [ -1, %2 ] +.thread: ; preds = %2, %9, %30, %17, %318, %66, %29, %24 + %.0 = phi i32 [ -1, %29 ], [ -1, %66 ], [ %.197, %318 ], [ -1, %24 ], [ -1, %17 ], [ -1, %30 ], [ -1, %9 ], [ -1, %2 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #9 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #9 call void @llvm.lifetime.end.p0(i64 255, ptr nonnull %3) #9 diff --git a/bench/openssl/optimized/statem_srvr.ll b/bench/openssl/optimized/statem_srvr.ll index 4abe507d445..8fdd300f992 100644 --- a/bench/openssl/optimized/statem_srvr.ll +++ b/bench/openssl/optimized/statem_srvr.ll @@ -8139,66 +8139,63 @@ define internal fastcc void @ssl_check_for_safari(ptr noundef %0, ptr noundef re %.sroa.0.0.copyload = load ptr, ptr %4, align 8, !tbaa !162 %5 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload, i64 2 %6 = load i8, ptr %5, align 1, !tbaa !193 - %7 = zext i8 %6 to i32 - %8 = shl nuw nsw i32 %7, 8 - %9 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload, i64 3 - %10 = load i8, ptr %9, align 1, !tbaa !193 - %11 = zext i8 %10 to i32 - %12 = or disjoint i32 %8, %11 - %13 = and i64 %.sroa.10.0.copyload, -2 - %14 = icmp eq i64 %13, 4 - br i1 %14, label %PACKET_forward.exit.thread, label %15 - -15: ; preds = %3 - %16 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload, i64 4 + %7 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload, i64 3 + %8 = load i8, ptr %7, align 1, !tbaa !193 + %9 = and i64 %.sroa.10.0.copyload, -2 + %10 = icmp eq i64 %9, 4 + br i1 %10, label %PACKET_forward.exit.thread, label %11 + +11: ; preds = %3 + %12 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload, i64 4 + %13 = load i8, ptr %12, align 1, !tbaa !193 + %14 = zext i8 %13 to i64 + %15 = shl nuw nsw i64 %14, 8 + %16 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload, i64 5 %17 = load i8, ptr %16, align 1, !tbaa !193 %18 = zext i8 %17 to i64 - %19 = shl nuw nsw i64 %18, 8 - %20 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload, i64 5 - %21 = load i8, ptr %20, align 1, !tbaa !193 - %22 = zext i8 %21 to i64 - %23 = or disjoint i64 %19, %22 - %24 = add i64 %.sroa.10.0.copyload, -6 - %25 = icmp ult i64 %24, %23 - br i1 %25, label %PACKET_forward.exit.thread, label %PACKET_get_length_prefixed_2.exit + %19 = or disjoint i64 %15, %18 + %20 = add i64 %.sroa.10.0.copyload, -6 + %21 = icmp ult i64 %20, %19 + br i1 %21, label %PACKET_forward.exit.thread, label %PACKET_get_length_prefixed_2.exit + +PACKET_get_length_prefixed_2.exit: ; preds = %11 + %22 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload, i64 6 + %23 = getelementptr inbounds nuw i8, ptr %22, i64 %19 + %24 = sub nuw i64 %20, %19 + %25 = or i8 %8, %6 + %26 = icmp eq i8 %25, 0 + br i1 %26, label %27, label %PACKET_forward.exit.thread + +27: ; preds = %PACKET_get_length_prefixed_2.exit + %28 = tail call i32 @SSL_client_version(ptr noundef %0) #12 + %.mask = and i32 %28, -256 + %29 = icmp eq i32 %.mask, 768 + br i1 %29, label %30, label %34 -PACKET_get_length_prefixed_2.exit: ; preds = %15 - %26 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload, i64 6 - %27 = getelementptr inbounds nuw i8, ptr %26, i64 %23 - %28 = sub nuw i64 %24, %23 - %.not6 = icmp eq i32 %12, 0 - br i1 %.not6, label %29, label %PACKET_forward.exit.thread - -29: ; preds = %PACKET_get_length_prefixed_2.exit - %30 = tail call i32 @SSL_client_version(ptr noundef %0) #12 - %.mask = and i32 %30, -256 - %31 = icmp eq i32 %.mask, 768 - br i1 %31, label %32, label %36 - -32: ; preds = %29 - %33 = tail call i32 @SSL_client_version(ptr noundef %0) #12 - %34 = icmp sgt i32 %33, 770 - %35 = select i1 %34, i64 34, i64 18 - br label %36 +30: ; preds = %27 + %31 = tail call i32 @SSL_client_version(ptr noundef %0) #12 + %32 = icmp sgt i32 %31, 770 + %33 = select i1 %32, i64 34, i64 18 + br label %34 -36: ; preds = %29, %32 - %37 = phi i64 [ %35, %32 ], [ 18, %29 ] - %.not.i = icmp eq i64 %28, %37 - br i1 %.not.i, label %38, label %PACKET_equal.exit +34: ; preds = %27, %30 + %35 = phi i64 [ %33, %30 ], [ 18, %27 ] + %.not.i = icmp eq i64 %24, %35 + br i1 %.not.i, label %36, label %PACKET_equal.exit -38: ; preds = %36 - %39 = tail call i32 @CRYPTO_memcmp(ptr noundef nonnull %27, ptr noundef nonnull @ssl_check_for_safari.kSafariExtensionsBlock, i64 noundef %28) #12 - %40 = icmp eq i32 %39, 0 - %41 = zext i1 %40 to i8 +36: ; preds = %34 + %37 = tail call i32 @CRYPTO_memcmp(ptr noundef nonnull %23, ptr noundef nonnull @ssl_check_for_safari.kSafariExtensionsBlock, i64 noundef %24) #12 + %38 = icmp eq i32 %37, 0 + %39 = zext i1 %38 to i8 br label %PACKET_equal.exit -PACKET_equal.exit: ; preds = %36, %38 - %.0.i10 = phi i8 [ %41, %38 ], [ 0, %36 ] - %42 = getelementptr inbounds nuw i8, ptr %0, i64 1244 - store i8 %.0.i10, ptr %42, align 4, !tbaa !289 +PACKET_equal.exit: ; preds = %34, %36 + %.0.i10 = phi i8 [ %39, %36 ], [ 0, %34 ] + %40 = getelementptr inbounds nuw i8, ptr %0, i64 1244 + store i8 %.0.i10, ptr %40, align 4, !tbaa !289 br label %PACKET_forward.exit.thread -PACKET_forward.exit.thread: ; preds = %2, %15, %3, %PACKET_get_length_prefixed_2.exit, %PACKET_equal.exit +PACKET_forward.exit.thread: ; preds = %2, %11, %3, %PACKET_get_length_prefixed_2.exit, %PACKET_equal.exit ret void } diff --git a/bench/php/optimized/pcre2_auto_possess.ll b/bench/php/optimized/pcre2_auto_possess.ll index 729a0ba92b3..f112a95b104 100644 --- a/bench/php/optimized/pcre2_auto_possess.ll +++ b/bench/php/optimized/pcre2_auto_possess.ll @@ -380,25 +380,25 @@ get_repeat_base.exit: ; preds = %11, %13, %15 33: ; preds = %26, %29, %5 %.0196 = phi i8 [ %6, %5 ], [ %6, %26 ], [ %30, %29 ] %.0194 = phi ptr [ %9, %5 ], [ %.1195, %26 ], [ %32, %29 ] - switch i8 %.0196, label %338 [ - i8 6, label %339 - i8 7, label %339 - i8 8, label %339 - i8 9, label %339 - i8 10, label %339 - i8 11, label %339 - i8 12, label %339 - i8 13, label %339 - i8 17, label %339 - i8 18, label %339 - i8 19, label %339 - i8 20, label %339 - i8 21, label %339 - i8 22, label %339 - i8 23, label %339 - i8 24, label %339 - i8 25, label %339 - i8 26, label %339 + switch i8 %.0196, label %335 [ + i8 6, label %336 + i8 7, label %336 + i8 8, label %336 + i8 9, label %336 + i8 10, label %336 + i8 11, label %336 + i8 12, label %336 + i8 13, label %336 + i8 17, label %336 + i8 18, label %336 + i8 19, label %336 + i8 20, label %336 + i8 21, label %336 + i8 22, label %336 + i8 23, label %336 + i8 24, label %336 + i8 25, label %336 + i8 26, label %336 i8 29, label %.thread i8 31, label %.thread i8 113, label %296 @@ -542,7 +542,7 @@ get_repeat_base.exit: ; preds = %11, %13, %15 store i32 %.0190, ptr %131, align 4, !tbaa !4 %132 = getelementptr inbounds nuw i8, ptr %4, i64 12 store i32 -1, ptr %132, align 4, !tbaa !4 - br label %339 + br label %336 133: ; preds = %33 br label %.thread211.thread @@ -718,12 +718,12 @@ get_repeat_base.exit: ; preds = %11, %13, %15 262: ; preds = %259 %263 = getelementptr inbounds nuw i8, ptr %4, i64 12 store i32 -1, ptr %263, align 4, !tbaa !4 - br label %339 + br label %336 264: ; preds = %259 %265 = getelementptr inbounds nuw i8, ptr %4, i64 16 store i32 -1, ptr %265, align 4, !tbaa !4 - br label %339 + br label %336 266: ; preds = %33, %33 %267 = load i8, ptr %.0194, align 1, !tbaa !18 @@ -740,7 +740,7 @@ get_repeat_base.exit: ; preds = %11, %13, %15 %274 = getelementptr inbounds nuw i8, ptr %4, i64 12 store i32 %273, ptr %274, align 4, !tbaa !4 %275 = getelementptr inbounds nuw i8, ptr %.0194, i64 2 - br label %339 + br label %336 276: ; preds = %266 %277 = getelementptr inbounds nuw i8, ptr %.0194, i64 1 @@ -766,7 +766,7 @@ get_repeat_base.exit: ; preds = %11, %13, %15 %288 = zext i8 %287 to i32 %289 = getelementptr inbounds nuw i8, ptr %4, i64 12 store i32 %288, ptr %289, align 4, !tbaa !4 - br label %339 + br label %336 290: ; preds = %282 %.0189.ptr = getelementptr inbounds nuw i8, ptr %4, i64 %.0189.idx @@ -781,7 +781,7 @@ get_repeat_base.exit: ; preds = %11, %13, %15 %294 = icmp eq i8 %.0196, 16 %295 = select i1 %294, i32 29, i32 31 store i32 %295, ptr %4, align 4, !tbaa !4 - br label %339 + br label %336 296: ; preds = %33, %33, %33, %33 %297 = and i8 %.0196, -2 @@ -807,7 +807,7 @@ get_repeat_base.exit: ; preds = %11, %13, %15 310: ; preds = %308, %298 %.0192 = phi ptr [ %307, %298 ], [ %309, %308 ] %311 = load i8, ptr %.0192, align 1, !tbaa !18 - switch i8 %311, label %328 [ + switch i8 %311, label %325 [ i8 98, label %312 i8 99, label %312 i8 102, label %312 @@ -825,47 +825,44 @@ get_repeat_base.exit: ; preds = %11, %13, %15 312: ; preds = %310, %310, %310, %310, %310, %310 store i32 1, ptr %8, align 4, !tbaa !4 %313 = getelementptr inbounds nuw i8, ptr %.0192, i64 1 - br label %328 + br label %325 314: ; preds = %310, %310, %310 %315 = getelementptr inbounds nuw i8, ptr %.0192, i64 1 - br label %328 + br label %325 316: ; preds = %310, %310, %310 %317 = getelementptr inbounds nuw i8, ptr %.0192, i64 1 %318 = load i8, ptr %317, align 1, !tbaa !18 - %319 = zext i8 %318 to i32 - %320 = shl nuw nsw i32 %319, 8 - %321 = getelementptr inbounds nuw i8, ptr %.0192, i64 2 - %322 = load i8, ptr %321, align 1, !tbaa !18 - %323 = zext i8 %322 to i32 - %324 = or disjoint i32 %320, %323 - %325 = icmp eq i32 %324, 0 - %326 = zext i1 %325 to i32 - store i32 %326, ptr %8, align 4, !tbaa !4 - %327 = getelementptr inbounds nuw i8, ptr %.0192, i64 5 - br label %328 - -328: ; preds = %316, %314, %312, %310 - %.1193 = phi ptr [ %.0192, %310 ], [ %327, %316 ], [ %315, %314 ], [ %313, %312 ] - %329 = ptrtoint ptr %.1193 to i64 - %330 = ptrtoint ptr %.0194 to i64 - %331 = sub i64 %329, %330 - %332 = trunc i64 %331 to i32 - %333 = getelementptr inbounds nuw i8, ptr %4, i64 8 - store i32 %332, ptr %333, align 4, !tbaa !4 - %334 = ptrtoint ptr %.0192 to i64 - %335 = sub i64 %329, %334 - %336 = trunc i64 %335 to i32 - %337 = getelementptr inbounds nuw i8, ptr %4, i64 12 - store i32 %336, ptr %337, align 4, !tbaa !4 - br label %339 - -338: ; preds = %33 - br label %339 - -339: ; preds = %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %262, %264, %338, %328, %293, %283, %268, %130 - %.0191 = phi ptr [ null, %338 ], [ %.1193, %328 ], [ %275, %268 ], [ %281, %283 ], [ %281, %293 ], [ %.3, %130 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.4, %264 ], [ %.4, %262 ] + %319 = getelementptr inbounds nuw i8, ptr %.0192, i64 2 + %320 = load i8, ptr %319, align 1, !tbaa !18 + %321 = or i8 %320, %318 + %322 = icmp eq i8 %321, 0 + %323 = zext i1 %322 to i32 + store i32 %323, ptr %8, align 4, !tbaa !4 + %324 = getelementptr inbounds nuw i8, ptr %.0192, i64 5 + br label %325 + +325: ; preds = %316, %314, %312, %310 + %.1193 = phi ptr [ %.0192, %310 ], [ %324, %316 ], [ %315, %314 ], [ %313, %312 ] + %326 = ptrtoint ptr %.1193 to i64 + %327 = ptrtoint ptr %.0194 to i64 + %328 = sub i64 %326, %327 + %329 = trunc i64 %328 to i32 + %330 = getelementptr inbounds nuw i8, ptr %4, i64 8 + store i32 %329, ptr %330, align 4, !tbaa !4 + %331 = ptrtoint ptr %.0192 to i64 + %332 = sub i64 %326, %331 + %333 = trunc i64 %332 to i32 + %334 = getelementptr inbounds nuw i8, ptr %4, i64 12 + store i32 %333, ptr %334, align 4, !tbaa !4 + br label %336 + +335: ; preds = %33 + br label %336 + +336: ; preds = %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %262, %264, %335, %325, %293, %283, %268, %130 + %.0191 = phi ptr [ null, %335 ], [ %.1193, %325 ], [ %275, %268 ], [ %281, %283 ], [ %281, %293 ], [ %.3, %130 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.4, %264 ], [ %.4, %262 ] ret ptr %.0191 } diff --git a/bench/php/optimized/pcre2_study.ll b/bench/php/optimized/pcre2_study.ll index 8f9ab17c556..4d6b933f2e3 100644 --- a/bench/php/optimized/pcre2_study.ll +++ b/bench/php/optimized/pcre2_study.ll @@ -485,7 +485,7 @@ thread-pre-split: ; preds = %5 29: ; preds = %thread-pre-split, %.thread470 %30 = phi i8 [ %.pr, %thread-pre-split ], [ 121, %.thread470 ] %.0301 = phi i32 [ 1, %thread-pre-split ], [ %.2303558, %.thread470 ] - %.0269 = phi ptr [ %1, %thread-pre-split ], [ %748, %.thread470 ] + %.0269 = phi ptr [ %1, %thread-pre-split ], [ %745, %.thread470 ] %31 = getelementptr inbounds nuw i8, ptr %.0269, i64 1 %32 = getelementptr inbounds nuw i8, ptr %.0269, i64 3 switch i8 %30, label %.backedge.preheader [ @@ -2067,30 +2067,27 @@ study_char_list.exit: ; preds = %.loopexit83.i, %559 732: ; preds = %.loopexit494, %.loopexit494, %.loopexit494 %733 = getelementptr inbounds nuw i8, ptr %.11461, i64 1 %734 = load i8, ptr %733, align 1, !tbaa !17 - %735 = zext i8 %734 to i32 - %736 = shl nuw nsw i32 %735, 8 - %737 = getelementptr inbounds nuw i8, ptr %.11461, i64 2 - %738 = load i8, ptr %737, align 1, !tbaa !17 - %739 = zext i8 %738 to i32 - %740 = or disjoint i32 %736, %739 - %.not595 = icmp eq i32 %740, 0 + %735 = getelementptr inbounds nuw i8, ptr %.11461, i64 2 + %736 = load i8, ptr %735, align 1, !tbaa !17 + %737 = or i8 %736, %734 + %.not595 = icmp eq i8 %737, 0 %spec.select322.idx = select i1 %.not595, i64 5, i64 0 %spec.select322 = getelementptr inbounds nuw i8, ptr %.11461, i64 %spec.select322.idx br i1 %.not595, label %.backedge.backedge, label %.thread470 .thread470: ; preds = %.loopexit494, %.backedge, %143, %732, %377, %338, %299, %68, %43, %356, %.preheader.i360, %348, %317, %.preheader.i337, %309, %278, %.preheader.i, %270, %254, %259, %243, %248, %.loopexit567, %.loopexit568 %.2303558 = phi i32 [ %.0301, %43 ], [ %.0301, %356 ], [ %.0301, %.preheader.i360 ], [ %.0301, %348 ], [ %.0301, %317 ], [ %.0301, %.preheader.i337 ], [ %.0301, %309 ], [ %.0301, %278 ], [ %.0301, %.preheader.i ], [ %.0301, %270 ], [ %.0301, %254 ], [ %.0301, %259 ], [ %.0301, %243 ], [ %.0301, %248 ], [ %.0301, %.loopexit567 ], [ %.0301, %.loopexit568 ], [ %.0301, %68 ], [ %.0301, %299 ], [ %.0301, %338 ], [ %.0301, %377 ], [ %.0301, %143 ], [ 2, %.backedge ], [ %.0301, %.loopexit494 ], [ %.0301, %732 ] - %741 = load i8, ptr %31, align 1, !tbaa !17 - %742 = zext i8 %741 to i64 - %743 = shl nuw nsw i64 %742, 8 - %744 = getelementptr inbounds nuw i8, ptr %.0269, i64 2 - %745 = load i8, ptr %744, align 1, !tbaa !17 - %746 = zext i8 %745 to i64 - %747 = getelementptr inbounds nuw i8, ptr %.0269, i64 %743 - %748 = getelementptr inbounds nuw i8, ptr %747, i64 %746 - %749 = load i8, ptr %748, align 1, !tbaa !17 - %750 = icmp eq i8 %749, 121 - br i1 %750, label %29, label %.thread479 + %738 = load i8, ptr %31, align 1, !tbaa !17 + %739 = zext i8 %738 to i64 + %740 = shl nuw nsw i64 %739, 8 + %741 = getelementptr inbounds nuw i8, ptr %.0269, i64 2 + %742 = load i8, ptr %741, align 1, !tbaa !17 + %743 = zext i8 %742 to i64 + %744 = getelementptr inbounds nuw i8, ptr %.0269, i64 %740 + %745 = getelementptr inbounds nuw i8, ptr %744, i64 %743 + %746 = load i8, ptr %745, align 1, !tbaa !17 + %747 = icmp eq i8 %746, 121 + br i1 %747, label %29, label %.thread479 .thread479.loopexit602: ; preds = %530, %385, %186, %186, %186, %143, %.backedge %.0.ph = phi i32 [ 3, %.backedge ], [ %144, %143 ], [ %188, %186 ], [ %188, %186 ], [ %188, %186 ], [ 0, %385 ], [ 0, %530 ] diff --git a/bench/qemu/optimized/fdt.ll b/bench/qemu/optimized/fdt.ll index 921aa89e2ef..dbc513e1b04 100644 --- a/bench/qemu/optimized/fdt.ll +++ b/bench/qemu/optimized/fdt.ll @@ -26,7 +26,7 @@ define dso_local range(i32 -19, 2147483647) i32 @fdt_ro_probe_(ptr noundef %0) l %20 = ptrtoint ptr %0 to i64 %21 = and i64 %20, 7 %.not = icmp eq i64 %21, 0 - br i1 %.not, label %22, label %102 + br i1 %.not, label %22, label %95 22: ; preds = %1 %23 = load i8, ptr %0, align 1 @@ -46,7 +46,7 @@ define dso_local range(i32 -19, 2147483647) i32 @fdt_ro_probe_(ptr noundef %0) l %37 = load i8, ptr %36, align 1 %38 = zext i8 %37 to i32 %39 = or disjoint i32 %35, %38 - switch i32 %39, label %102 [ + switch i32 %39, label %95 [ i32 -804389139, label %40 i32 804389138, label %80 ] @@ -71,7 +71,7 @@ define dso_local range(i32 -19, 2147483647) i32 @fdt_ro_probe_(ptr noundef %0) l %57 = zext i8 %56 to i32 %58 = or disjoint i32 %54, %57 %59 = icmp ult i32 %58, 2 - br i1 %59, label %102, label %60 + br i1 %59, label %95, label %60 60: ; preds = %40 %61 = getelementptr inbounds nuw i8, ptr %0, i64 24 @@ -93,37 +93,30 @@ define dso_local range(i32 -19, 2147483647) i32 @fdt_ro_probe_(ptr noundef %0) l %77 = zext i8 %76 to i32 %78 = or disjoint i32 %74, %77 %79 = icmp ugt i32 %78, 17 - br i1 %79, label %102, label %100 + br i1 %79, label %95, label %93 80: ; preds = %22 %81 = getelementptr inbounds nuw i8, ptr %0, i64 36 %82 = load i8, ptr %81, align 1 - %83 = zext i8 %82 to i32 - %84 = shl nuw i32 %83, 24 - %85 = getelementptr inbounds nuw i8, ptr %0, i64 37 + %83 = getelementptr inbounds nuw i8, ptr %0, i64 37 + %84 = load i8, ptr %83, align 1 + %85 = getelementptr inbounds nuw i8, ptr %0, i64 38 %86 = load i8, ptr %85, align 1 - %87 = zext i8 %86 to i32 - %88 = shl nuw nsw i32 %87, 16 - %89 = or disjoint i32 %88, %84 - %90 = getelementptr inbounds nuw i8, ptr %0, i64 38 - %91 = load i8, ptr %90, align 1 - %92 = zext i8 %91 to i32 - %93 = shl nuw nsw i32 %92, 8 - %94 = or disjoint i32 %89, %93 - %95 = getelementptr inbounds nuw i8, ptr %0, i64 39 - %96 = load i8, ptr %95, align 1 - %97 = zext i8 %96 to i32 - %98 = or disjoint i32 %94, %97 - %99 = icmp eq i32 %98, 0 - br i1 %99, label %102, label %100 - -100: ; preds = %80, %60 - %101 = icmp ult i32 %19, 2147483647 - %. = select i1 %101, i32 %19, i32 -8 - br label %102 - -102: ; preds = %22, %100, %80, %60, %40, %1 - %.0 = phi i32 [ -19, %1 ], [ -10, %40 ], [ -10, %60 ], [ -7, %80 ], [ %., %100 ], [ -9, %22 ] + %87 = getelementptr inbounds nuw i8, ptr %0, i64 39 + %88 = load i8, ptr %87, align 1 + %89 = or i8 %84, %82 + %90 = or i8 %89, %86 + %91 = or i8 %90, %88 + %92 = icmp eq i8 %91, 0 + br i1 %92, label %95, label %93 + +93: ; preds = %80, %60 + %94 = icmp ult i32 %19, 2147483647 + %. = select i1 %94, i32 %19, i32 -8 + br label %95 + +95: ; preds = %22, %93, %80, %60, %40, %1 + %.0 = phi i32 [ -19, %1 ], [ -10, %40 ], [ -10, %60 ], [ -7, %80 ], [ %., %93 ], [ -9, %22 ] ret i32 %.0 } diff --git a/bench/qemu/optimized/fdt_sw.ll b/bench/qemu/optimized/fdt_sw.ll index 9c0a278c54c..2f34381d9b6 100644 --- a/bench/qemu/optimized/fdt_sw.ll +++ b/bench/qemu/optimized/fdt_sw.ll @@ -98,11 +98,11 @@ define dso_local range(i32 -13, 1) i32 @fdt_resize(ptr noundef readonly captures %.not.i = icmp eq i32 %20, 804389138 %..i = select i1 %.not.i, i32 0, i32 -9 %.0.i = select i1 %21, i32 -7, i32 %..i - br i1 %.not.i, label %22, label %133 + br i1 %.not.i, label %22, label %127 22: ; preds = %3 %23 = icmp slt i32 %2, 0 - br i1 %23, label %133, label %24 + br i1 %23, label %127, label %24 24: ; preds = %22 %25 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -181,12 +181,12 @@ define dso_local range(i32 -13, 1) i32 @fdt_resize(ptr noundef readonly captures %98 = zext i8 %97 to i64 %99 = or disjoint i64 %95, %98 %100 = icmp samesign ugt i64 %81, %99 - br i1 %100, label %133, label %101 + br i1 %100, label %127, label %101 101: ; preds = %24 %102 = zext nneg i32 %2 to i64 %103 = icmp samesign ugt i64 %81, %102 - br i1 %103, label %133, label %104 + br i1 %103, label %127, label %104 104: ; preds = %101 %105 = getelementptr inbounds nuw i8, ptr %0, i64 %99 @@ -213,31 +213,24 @@ define dso_local range(i32 -13, 1) i32 @fdt_resize(ptr noundef readonly captures store i32 %rev.i.i, ptr %113, align 4 %114 = getelementptr inbounds nuw i8, ptr %1, i64 12 %115 = load i8, ptr %114, align 1 - %116 = zext i8 %115 to i32 - %117 = shl nuw i32 %116, 24 - %118 = getelementptr inbounds nuw i8, ptr %1, i64 13 + %116 = getelementptr inbounds nuw i8, ptr %1, i64 13 + %117 = load i8, ptr %116, align 1 + %118 = getelementptr inbounds nuw i8, ptr %1, i64 14 %119 = load i8, ptr %118, align 1 - %120 = zext i8 %119 to i32 - %121 = shl nuw nsw i32 %120, 16 - %122 = or disjoint i32 %121, %117 - %123 = getelementptr inbounds nuw i8, ptr %1, i64 14 - %124 = load i8, ptr %123, align 1 - %125 = zext i8 %124 to i32 - %126 = shl nuw nsw i32 %125, 8 - %127 = or disjoint i32 %122, %126 - %128 = getelementptr inbounds nuw i8, ptr %1, i64 15 - %129 = load i8, ptr %128, align 1 - %130 = zext i8 %129 to i32 - %131 = or disjoint i32 %127, %130 - %.not45 = icmp eq i32 %131, 0 - br i1 %.not45, label %133, label %132 - -132: ; preds = %112 + %120 = getelementptr inbounds nuw i8, ptr %1, i64 15 + %121 = load i8, ptr %120, align 1 + %122 = or i8 %117, %115 + %123 = or i8 %122, %119 + %124 = or i8 %123, %121 + %125 = icmp eq i8 %124, 0 + br i1 %125, label %127, label %126 + +126: ; preds = %112 store i32 %rev.i.i, ptr %114, align 4 - br label %133 + br label %127 -133: ; preds = %112, %132, %101, %24, %22, %3 - %.1 = phi i32 [ %.0.i, %3 ], [ -3, %22 ], [ -13, %24 ], [ -3, %101 ], [ 0, %132 ], [ 0, %112 ] +127: ; preds = %112, %126, %101, %24, %22, %3 + %.1 = phi i32 [ %.0.i, %3 ], [ -3, %22 ], [ -13, %24 ], [ -3, %101 ], [ 0, %126 ], [ 0, %112 ] ret i32 %.1 } @@ -269,86 +262,79 @@ define dso_local range(i32 -9, 1) i32 @fdt_add_reservemap_entry(ptr noundef capt 21: ; preds = %3 %22 = getelementptr inbounds nuw i8, ptr %0, i64 12 %23 = load i8, ptr %22, align 1 - %24 = zext i8 %23 to i32 - %25 = shl nuw i32 %24, 24 - %26 = getelementptr inbounds nuw i8, ptr %0, i64 13 + %24 = getelementptr inbounds nuw i8, ptr %0, i64 13 + %25 = load i8, ptr %24, align 1 + %26 = getelementptr inbounds nuw i8, ptr %0, i64 14 %27 = load i8, ptr %26, align 1 - %28 = zext i8 %27 to i32 - %29 = shl nuw nsw i32 %28, 16 - %30 = or disjoint i32 %29, %25 - %31 = getelementptr inbounds nuw i8, ptr %0, i64 14 - %32 = load i8, ptr %31, align 1 - %33 = zext i8 %32 to i32 - %34 = shl nuw nsw i32 %33, 8 - %35 = or disjoint i32 %30, %34 - %36 = getelementptr inbounds nuw i8, ptr %0, i64 15 - %37 = load i8, ptr %36, align 1 - %38 = zext i8 %37 to i32 - %39 = or disjoint i32 %35, %38 - %.not5.i = icmp eq i32 %39, 0 - br i1 %.not5.i, label %fdt_sw_probe_memrsv_.exit.thread, label %fdt_sw_probe_memrsv_.exit.thread18 + %28 = getelementptr inbounds nuw i8, ptr %0, i64 15 + %29 = load i8, ptr %28, align 1 + %30 = or i8 %25, %23 + %31 = or i8 %30, %27 + %32 = or i8 %31, %29 + %33 = icmp eq i8 %32, 0 + br i1 %33, label %fdt_sw_probe_memrsv_.exit.thread, label %fdt_sw_probe_memrsv_.exit.thread18 fdt_sw_probe_memrsv_.exit: ; preds = %3 - %40 = icmp eq i32 %20, -804389139 - %.0.i.i = select i1 %40, i32 -7, i32 -9 + %34 = icmp eq i32 %20, -804389139 + %.0.i.i = select i1 %34, i32 -7, i32 -9 br label %fdt_sw_probe_memrsv_.exit.thread18 fdt_sw_probe_memrsv_.exit.thread: ; preds = %21 - %41 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %42 = load i8, ptr %41, align 1 - %43 = zext i8 %42 to i32 - %44 = shl nuw i32 %43, 24 - %45 = getelementptr inbounds nuw i8, ptr %0, i64 9 - %46 = load i8, ptr %45, align 1 - %47 = zext i8 %46 to i32 - %48 = shl nuw nsw i32 %47, 16 - %49 = or disjoint i32 %48, %44 - %50 = getelementptr inbounds nuw i8, ptr %0, i64 10 - %51 = load i8, ptr %50, align 1 - %52 = zext i8 %51 to i32 - %53 = shl nuw nsw i32 %52, 8 - %54 = or disjoint i32 %49, %53 - %55 = getelementptr inbounds nuw i8, ptr %0, i64 11 + %35 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %36 = load i8, ptr %35, align 1 + %37 = zext i8 %36 to i32 + %38 = shl nuw i32 %37, 24 + %39 = getelementptr inbounds nuw i8, ptr %0, i64 9 + %40 = load i8, ptr %39, align 1 + %41 = zext i8 %40 to i32 + %42 = shl nuw nsw i32 %41, 16 + %43 = or disjoint i32 %42, %38 + %44 = getelementptr inbounds nuw i8, ptr %0, i64 10 + %45 = load i8, ptr %44, align 1 + %46 = zext i8 %45 to i32 + %47 = shl nuw nsw i32 %46, 8 + %48 = or disjoint i32 %43, %47 + %49 = getelementptr inbounds nuw i8, ptr %0, i64 11 + %50 = load i8, ptr %49, align 1 + %51 = zext i8 %50 to i32 + %52 = or disjoint i32 %48, %51 + %53 = sext i32 %52 to i64 + %54 = add nsw i64 %53, 16 + %55 = getelementptr inbounds nuw i8, ptr %0, i64 4 %56 = load i8, ptr %55, align 1 - %57 = zext i8 %56 to i32 - %58 = or disjoint i32 %54, %57 - %59 = sext i32 %58 to i64 - %60 = add nsw i64 %59, 16 - %61 = getelementptr inbounds nuw i8, ptr %0, i64 4 - %62 = load i8, ptr %61, align 1 - %63 = zext i8 %62 to i64 - %64 = shl nuw nsw i64 %63, 24 - %65 = getelementptr inbounds nuw i8, ptr %0, i64 5 - %66 = load i8, ptr %65, align 1 - %67 = zext i8 %66 to i64 - %68 = shl nuw nsw i64 %67, 16 - %69 = or disjoint i64 %68, %64 - %70 = getelementptr inbounds nuw i8, ptr %0, i64 6 - %71 = load i8, ptr %70, align 1 - %72 = zext i8 %71 to i64 - %73 = shl nuw nsw i64 %72, 8 - %74 = or disjoint i64 %69, %73 - %75 = getelementptr inbounds nuw i8, ptr %0, i64 7 - %76 = load i8, ptr %75, align 1 - %77 = zext i8 %76 to i64 - %78 = or disjoint i64 %74, %77 - %79 = icmp ugt i64 %60, %78 - br i1 %79, label %fdt_sw_probe_memrsv_.exit.thread18, label %80 - -80: ; preds = %fdt_sw_probe_memrsv_.exit.thread - %81 = getelementptr inbounds i8, ptr %0, i64 %59 - %82 = tail call noundef i64 @llvm.bswap.i64(i64 %1) - store i64 %82, ptr %81, align 8 - %83 = tail call noundef i64 @llvm.bswap.i64(i64 %2) - %84 = getelementptr inbounds nuw i8, ptr %81, i64 8 - store i64 %83, ptr %84, align 8 - %85 = trunc nuw i64 %60 to i32 - %rev.i.i = tail call noundef i32 @llvm.bswap.i32(i32 %85) - store i32 %rev.i.i, ptr %41, align 4 + %57 = zext i8 %56 to i64 + %58 = shl nuw nsw i64 %57, 24 + %59 = getelementptr inbounds nuw i8, ptr %0, i64 5 + %60 = load i8, ptr %59, align 1 + %61 = zext i8 %60 to i64 + %62 = shl nuw nsw i64 %61, 16 + %63 = or disjoint i64 %62, %58 + %64 = getelementptr inbounds nuw i8, ptr %0, i64 6 + %65 = load i8, ptr %64, align 1 + %66 = zext i8 %65 to i64 + %67 = shl nuw nsw i64 %66, 8 + %68 = or disjoint i64 %63, %67 + %69 = getelementptr inbounds nuw i8, ptr %0, i64 7 + %70 = load i8, ptr %69, align 1 + %71 = zext i8 %70 to i64 + %72 = or disjoint i64 %68, %71 + %73 = icmp ugt i64 %54, %72 + br i1 %73, label %fdt_sw_probe_memrsv_.exit.thread18, label %74 + +74: ; preds = %fdt_sw_probe_memrsv_.exit.thread + %75 = getelementptr inbounds i8, ptr %0, i64 %53 + %76 = tail call noundef i64 @llvm.bswap.i64(i64 %1) + store i64 %76, ptr %75, align 8 + %77 = tail call noundef i64 @llvm.bswap.i64(i64 %2) + %78 = getelementptr inbounds nuw i8, ptr %75, i64 8 + store i64 %77, ptr %78, align 8 + %79 = trunc nuw i64 %54 to i32 + %rev.i.i = tail call noundef i32 @llvm.bswap.i32(i32 %79) + store i32 %rev.i.i, ptr %35, align 4 br label %fdt_sw_probe_memrsv_.exit.thread18 -fdt_sw_probe_memrsv_.exit.thread18: ; preds = %fdt_sw_probe_memrsv_.exit, %21, %fdt_sw_probe_memrsv_.exit.thread, %80 - %.1 = phi i32 [ 0, %80 ], [ %.0.i.i, %fdt_sw_probe_memrsv_.exit ], [ -3, %fdt_sw_probe_memrsv_.exit.thread ], [ -7, %21 ] +fdt_sw_probe_memrsv_.exit.thread18: ; preds = %fdt_sw_probe_memrsv_.exit, %21, %fdt_sw_probe_memrsv_.exit.thread, %74 + %.1 = phi i32 [ 0, %74 ], [ %.0.i.i, %fdt_sw_probe_memrsv_.exit ], [ -3, %fdt_sw_probe_memrsv_.exit.thread ], [ -7, %21 ] ret i32 %.1 } @@ -377,98 +363,91 @@ define dso_local range(i32 -9, 1) i32 @fdt_finish_reservemap(ptr noundef capture 19: ; preds = %1 %20 = getelementptr inbounds nuw i8, ptr %0, i64 12 %21 = load i8, ptr %20, align 1 - %22 = zext i8 %21 to i32 - %23 = shl nuw i32 %22, 24 - %24 = getelementptr inbounds nuw i8, ptr %0, i64 13 + %22 = getelementptr inbounds nuw i8, ptr %0, i64 13 + %23 = load i8, ptr %22, align 1 + %24 = getelementptr inbounds nuw i8, ptr %0, i64 14 %25 = load i8, ptr %24, align 1 - %26 = zext i8 %25 to i32 - %27 = shl nuw nsw i32 %26, 16 - %28 = or disjoint i32 %27, %23 - %29 = getelementptr inbounds nuw i8, ptr %0, i64 14 - %30 = load i8, ptr %29, align 1 - %31 = zext i8 %30 to i32 - %32 = shl nuw nsw i32 %31, 8 - %33 = or disjoint i32 %28, %32 - %34 = getelementptr inbounds nuw i8, ptr %0, i64 15 - %35 = load i8, ptr %34, align 1 - %36 = zext i8 %35 to i32 - %37 = or disjoint i32 %33, %36 - %.not5.i.i = icmp eq i32 %37, 0 - br i1 %.not5.i.i, label %fdt_sw_probe_memrsv_.exit.thread.i, label %fdt_add_reservemap_entry.exit.thread + %26 = getelementptr inbounds nuw i8, ptr %0, i64 15 + %27 = load i8, ptr %26, align 1 + %28 = or i8 %23, %21 + %29 = or i8 %28, %25 + %30 = or i8 %29, %27 + %31 = icmp eq i8 %30, 0 + br i1 %31, label %fdt_sw_probe_memrsv_.exit.thread.i, label %fdt_add_reservemap_entry.exit.thread fdt_sw_probe_memrsv_.exit.i: ; preds = %1 - %38 = icmp eq i32 %18, -804389139 - %.0.i.i.i = select i1 %38, i32 -7, i32 -9 + %32 = icmp eq i32 %18, -804389139 + %.0.i.i.i = select i1 %32, i32 -7, i32 -9 br label %fdt_add_reservemap_entry.exit.thread fdt_sw_probe_memrsv_.exit.thread.i: ; preds = %19 - %39 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %40 = load i8, ptr %39, align 1 - %41 = zext i8 %40 to i32 - %42 = shl nuw i32 %41, 24 - %43 = getelementptr inbounds nuw i8, ptr %0, i64 9 - %44 = load i8, ptr %43, align 1 - %45 = zext i8 %44 to i32 - %46 = shl nuw nsw i32 %45, 16 - %47 = or disjoint i32 %46, %42 - %48 = getelementptr inbounds nuw i8, ptr %0, i64 10 - %49 = load i8, ptr %48, align 1 - %50 = zext i8 %49 to i32 - %51 = shl nuw nsw i32 %50, 8 - %52 = or disjoint i32 %47, %51 - %53 = getelementptr inbounds nuw i8, ptr %0, i64 11 + %33 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %34 = load i8, ptr %33, align 1 + %35 = zext i8 %34 to i32 + %36 = shl nuw i32 %35, 24 + %37 = getelementptr inbounds nuw i8, ptr %0, i64 9 + %38 = load i8, ptr %37, align 1 + %39 = zext i8 %38 to i32 + %40 = shl nuw nsw i32 %39, 16 + %41 = or disjoint i32 %40, %36 + %42 = getelementptr inbounds nuw i8, ptr %0, i64 10 + %43 = load i8, ptr %42, align 1 + %44 = zext i8 %43 to i32 + %45 = shl nuw nsw i32 %44, 8 + %46 = or disjoint i32 %41, %45 + %47 = getelementptr inbounds nuw i8, ptr %0, i64 11 + %48 = load i8, ptr %47, align 1 + %49 = zext i8 %48 to i32 + %50 = or disjoint i32 %46, %49 + %51 = sext i32 %50 to i64 + %52 = add nsw i64 %51, 16 + %53 = getelementptr inbounds nuw i8, ptr %0, i64 4 %54 = load i8, ptr %53, align 1 - %55 = zext i8 %54 to i32 - %56 = or disjoint i32 %52, %55 - %57 = sext i32 %56 to i64 - %58 = add nsw i64 %57, 16 - %59 = getelementptr inbounds nuw i8, ptr %0, i64 4 - %60 = load i8, ptr %59, align 1 - %61 = zext i8 %60 to i64 - %62 = shl nuw nsw i64 %61, 24 - %63 = getelementptr inbounds nuw i8, ptr %0, i64 5 - %64 = load i8, ptr %63, align 1 - %65 = zext i8 %64 to i64 - %66 = shl nuw nsw i64 %65, 16 - %67 = or disjoint i64 %66, %62 - %68 = getelementptr inbounds nuw i8, ptr %0, i64 6 - %69 = load i8, ptr %68, align 1 - %70 = zext i8 %69 to i64 - %71 = shl nuw nsw i64 %70, 8 - %72 = or disjoint i64 %67, %71 - %73 = getelementptr inbounds nuw i8, ptr %0, i64 7 - %74 = load i8, ptr %73, align 1 - %75 = zext i8 %74 to i64 - %76 = or disjoint i64 %72, %75 - %77 = icmp ugt i64 %58, %76 - br i1 %77, label %fdt_add_reservemap_entry.exit.thread, label %78 - -78: ; preds = %fdt_sw_probe_memrsv_.exit.thread.i - %79 = getelementptr inbounds i8, ptr %0, i64 %57 - %80 = trunc nuw i64 %58 to i32 - %rev.i.i.i = tail call noundef i32 @llvm.bswap.i32(i32 %80) - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %79, i8 0, i64 16, i1 false) - store i32 %rev.i.i.i, ptr %39, align 4 - %81 = load i8, ptr %59, align 1 - %82 = zext i8 %81 to i32 - %83 = shl nuw i32 %82, 24 - %84 = load i8, ptr %63, align 1 - %85 = zext i8 %84 to i32 - %86 = shl nuw nsw i32 %85, 16 - %87 = or disjoint i32 %86, %83 - %88 = load i8, ptr %68, align 1 - %89 = zext i8 %88 to i32 - %90 = shl nuw nsw i32 %89, 8 - %91 = or disjoint i32 %87, %90 - %92 = load i8, ptr %73, align 1 - %93 = zext i8 %92 to i32 - %94 = or disjoint i32 %91, %93 - %rev.i.i = tail call noundef i32 @llvm.bswap.i32(i32 %94) + %55 = zext i8 %54 to i64 + %56 = shl nuw nsw i64 %55, 24 + %57 = getelementptr inbounds nuw i8, ptr %0, i64 5 + %58 = load i8, ptr %57, align 1 + %59 = zext i8 %58 to i64 + %60 = shl nuw nsw i64 %59, 16 + %61 = or disjoint i64 %60, %56 + %62 = getelementptr inbounds nuw i8, ptr %0, i64 6 + %63 = load i8, ptr %62, align 1 + %64 = zext i8 %63 to i64 + %65 = shl nuw nsw i64 %64, 8 + %66 = or disjoint i64 %61, %65 + %67 = getelementptr inbounds nuw i8, ptr %0, i64 7 + %68 = load i8, ptr %67, align 1 + %69 = zext i8 %68 to i64 + %70 = or disjoint i64 %66, %69 + %71 = icmp ugt i64 %52, %70 + br i1 %71, label %fdt_add_reservemap_entry.exit.thread, label %72 + +72: ; preds = %fdt_sw_probe_memrsv_.exit.thread.i + %73 = getelementptr inbounds i8, ptr %0, i64 %51 + %74 = trunc nuw i64 %52 to i32 + %rev.i.i.i = tail call noundef i32 @llvm.bswap.i32(i32 %74) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %73, i8 0, i64 16, i1 false) + store i32 %rev.i.i.i, ptr %33, align 4 + %75 = load i8, ptr %53, align 1 + %76 = zext i8 %75 to i32 + %77 = shl nuw i32 %76, 24 + %78 = load i8, ptr %57, align 1 + %79 = zext i8 %78 to i32 + %80 = shl nuw nsw i32 %79, 16 + %81 = or disjoint i32 %80, %77 + %82 = load i8, ptr %62, align 1 + %83 = zext i8 %82 to i32 + %84 = shl nuw nsw i32 %83, 8 + %85 = or disjoint i32 %81, %84 + %86 = load i8, ptr %67, align 1 + %87 = zext i8 %86 to i32 + %88 = or disjoint i32 %85, %87 + %rev.i.i = tail call noundef i32 @llvm.bswap.i32(i32 %88) store i32 %rev.i.i, ptr %20, align 4 br label %fdt_add_reservemap_entry.exit.thread -fdt_add_reservemap_entry.exit.thread: ; preds = %19, %fdt_sw_probe_memrsv_.exit.thread.i, %fdt_sw_probe_memrsv_.exit.i, %78 - %.0 = phi i32 [ 0, %78 ], [ -7, %19 ], [ -3, %fdt_sw_probe_memrsv_.exit.thread.i ], [ %.0.i.i.i, %fdt_sw_probe_memrsv_.exit.i ] +fdt_add_reservemap_entry.exit.thread: ; preds = %19, %fdt_sw_probe_memrsv_.exit.thread.i, %fdt_sw_probe_memrsv_.exit.i, %72 + %.0 = phi i32 [ 0, %72 ], [ -7, %19 ], [ -3, %fdt_sw_probe_memrsv_.exit.thread.i ], [ %.0.i.i.i, %fdt_sw_probe_memrsv_.exit.i ] ret i32 %.0 } diff --git a/bench/recastnavigation/optimized/imguiRenderGL.ll b/bench/recastnavigation/optimized/imguiRenderGL.ll index 0b347692172..96bd5e8fbc0 100644 --- a/bench/recastnavigation/optimized/imguiRenderGL.ll +++ b/bench/recastnavigation/optimized/imguiRenderGL.ll @@ -2511,16 +2511,13 @@ define dso_local range(i32 0, 2) i32 @stbtt_IsGlyphEmpty(ptr noundef readonly ca %.val = load i8, ptr %80, align 1 %81 = getelementptr i8, ptr %80, i64 1 %.val7 = load i8, ptr %81, align 1 - %82 = zext i8 %.val to i16 - %83 = shl nuw i16 %82, 8 - %84 = zext i8 %.val7 to i16 - %85 = or disjoint i16 %83, %84 - %86 = icmp eq i16 %85, 0 - %87 = zext i1 %86 to i32 + %82 = or i8 %.val7, %.val + %83 = icmp eq i8 %82, 0 + %84 = zext i1 %83 to i32 br label %_ZL20stbtt__GetGlyfOffsetPK14stbtt_fontinfoi.exit.thread _ZL20stbtt__GetGlyfOffsetPK14stbtt_fontinfoi.exit.thread: ; preds = %75, %5, %2, %78 - %.0 = phi i32 [ %87, %78 ], [ 1, %2 ], [ 1, %5 ], [ 1, %75 ] + %.0 = phi i32 [ %84, %78 ], [ 1, %2 ], [ 1, %5 ], [ 1, %75 ] ret i32 %.0 } @@ -2677,105 +2674,102 @@ define dso_local range(i32 -32768, 32768) i32 @stbtt_GetGlyphKernAdvance(ptr nou %.val32 = load i8, ptr %11, align 1 %12 = getelementptr i8, ptr %9, i64 3 %.val33 = load i8, ptr %12, align 1 - %13 = zext i8 %.val32 to i16 - %14 = shl nuw i16 %13, 8 - %15 = zext i8 %.val33 to i16 - %16 = or disjoint i16 %14, %15 - %17 = icmp eq i16 %16, 0 - br i1 %17, label %.loopexit, label %18 - -18: ; preds = %10 - %19 = getelementptr inbounds nuw i8, ptr %9, i64 8 - %.val30 = load i8, ptr %19, align 1 - %20 = getelementptr i8, ptr %9, i64 9 - %.val31 = load i8, ptr %20, align 1 - %21 = zext i8 %.val30 to i16 - %22 = shl nuw i16 %21, 8 - %23 = zext i8 %.val31 to i16 - %24 = or disjoint i16 %22, %23 - %.not27 = icmp eq i16 %24, 1 - br i1 %.not27, label %25, label %.loopexit - -25: ; preds = %18 - %26 = getelementptr inbounds nuw i8, ptr %9, i64 10 - %.val = load i8, ptr %26, align 1 - %27 = getelementptr i8, ptr %9, i64 11 - %.val29 = load i8, ptr %27, align 1 - %28 = zext i8 %.val to i32 - %29 = shl nuw nsw i32 %28, 8 - %30 = zext i8 %.val29 to i32 - %31 = or disjoint i32 %29, %30 - %32 = shl i32 %1, 16 - %33 = or i32 %32, %2 - %.not2836 = icmp eq i32 %31, 0 - br i1 %.not2836, label %.loopexit, label %.lr.ph - -.lr.ph: ; preds = %25 - %34 = add nsw i32 %31, -1 - %35 = getelementptr inbounds nuw i8, ptr %9, i64 18 - br label %36 - -36: ; preds = %.lr.ph, %75 - %.02238 = phi i32 [ %34, %.lr.ph ], [ %.1, %75 ] - %.02337 = phi i32 [ 0, %.lr.ph ], [ %.124, %75 ] - %37 = add nsw i32 %.02238, %.02337 - %38 = ashr i32 %37, 1 - %39 = mul nsw i32 %38, 6 - %40 = sext i32 %39 to i64 - %41 = getelementptr inbounds i8, ptr %35, i64 %40 - %42 = load i8, ptr %41, align 1 - %43 = zext i8 %42 to i32 - %44 = shl nuw i32 %43, 24 - %45 = getelementptr inbounds nuw i8, ptr %41, i64 1 - %46 = load i8, ptr %45, align 1 - %47 = zext i8 %46 to i32 - %48 = shl nuw nsw i32 %47, 16 - %49 = or disjoint i32 %48, %44 - %50 = getelementptr inbounds nuw i8, ptr %41, i64 2 - %51 = load i8, ptr %50, align 1 - %52 = zext i8 %51 to i32 - %53 = shl nuw nsw i32 %52, 8 - %54 = or disjoint i32 %49, %53 - %55 = getelementptr inbounds nuw i8, ptr %41, i64 3 - %56 = load i8, ptr %55, align 1 - %57 = zext i8 %56 to i32 - %58 = or disjoint i32 %54, %57 - %59 = icmp ult i32 %33, %58 - br i1 %59, label %60, label %62 - -60: ; preds = %36 - %61 = add nsw i32 %38, -1 - br label %75 + %13 = or i8 %.val33, %.val32 + %14 = icmp eq i8 %13, 0 + br i1 %14, label %.loopexit, label %15 + +15: ; preds = %10 + %16 = getelementptr inbounds nuw i8, ptr %9, i64 8 + %.val30 = load i8, ptr %16, align 1 + %17 = getelementptr i8, ptr %9, i64 9 + %.val31 = load i8, ptr %17, align 1 + %18 = zext i8 %.val30 to i16 + %19 = shl nuw i16 %18, 8 + %20 = zext i8 %.val31 to i16 + %21 = or disjoint i16 %19, %20 + %.not27 = icmp eq i16 %21, 1 + br i1 %.not27, label %22, label %.loopexit -62: ; preds = %36 - %63 = icmp ugt i32 %33, %58 - br i1 %63, label %64, label %66 +22: ; preds = %15 + %23 = getelementptr inbounds nuw i8, ptr %9, i64 10 + %.val = load i8, ptr %23, align 1 + %24 = getelementptr i8, ptr %9, i64 11 + %.val29 = load i8, ptr %24, align 1 + %25 = zext i8 %.val to i32 + %26 = shl nuw nsw i32 %25, 8 + %27 = zext i8 %.val29 to i32 + %28 = or disjoint i32 %26, %27 + %29 = shl i32 %1, 16 + %30 = or i32 %29, %2 + %.not2836 = icmp eq i32 %28, 0 + br i1 %.not2836, label %.loopexit, label %.lr.ph -64: ; preds = %62 - %65 = add nsw i32 %38, 1 - br label %75 +.lr.ph: ; preds = %22 + %31 = add nsw i32 %28, -1 + %32 = getelementptr inbounds nuw i8, ptr %9, i64 18 + br label %33 -66: ; preds = %62 - %67 = getelementptr inbounds nuw i8, ptr %9, i64 22 - %68 = getelementptr inbounds i8, ptr %67, i64 %40 - %.val34 = load i8, ptr %68, align 1 - %69 = getelementptr i8, ptr %68, i64 1 - %.val35 = load i8, ptr %69, align 1 - %70 = zext i8 %.val34 to i16 - %71 = shl nuw i16 %70, 8 - %72 = zext i8 %.val35 to i16 - %73 = or disjoint i16 %71, %72 - %74 = sext i16 %73 to i32 +33: ; preds = %.lr.ph, %72 + %.02238 = phi i32 [ %31, %.lr.ph ], [ %.1, %72 ] + %.02337 = phi i32 [ 0, %.lr.ph ], [ %.124, %72 ] + %34 = add nsw i32 %.02238, %.02337 + %35 = ashr i32 %34, 1 + %36 = mul nsw i32 %35, 6 + %37 = sext i32 %36 to i64 + %38 = getelementptr inbounds i8, ptr %32, i64 %37 + %39 = load i8, ptr %38, align 1 + %40 = zext i8 %39 to i32 + %41 = shl nuw i32 %40, 24 + %42 = getelementptr inbounds nuw i8, ptr %38, i64 1 + %43 = load i8, ptr %42, align 1 + %44 = zext i8 %43 to i32 + %45 = shl nuw nsw i32 %44, 16 + %46 = or disjoint i32 %45, %41 + %47 = getelementptr inbounds nuw i8, ptr %38, i64 2 + %48 = load i8, ptr %47, align 1 + %49 = zext i8 %48 to i32 + %50 = shl nuw nsw i32 %49, 8 + %51 = or disjoint i32 %46, %50 + %52 = getelementptr inbounds nuw i8, ptr %38, i64 3 + %53 = load i8, ptr %52, align 1 + %54 = zext i8 %53 to i32 + %55 = or disjoint i32 %51, %54 + %56 = icmp ult i32 %30, %55 + br i1 %56, label %57, label %59 + +57: ; preds = %33 + %58 = add nsw i32 %35, -1 + br label %72 + +59: ; preds = %33 + %60 = icmp ugt i32 %30, %55 + br i1 %60, label %61, label %63 + +61: ; preds = %59 + %62 = add nsw i32 %35, 1 + br label %72 + +63: ; preds = %59 + %64 = getelementptr inbounds nuw i8, ptr %9, i64 22 + %65 = getelementptr inbounds i8, ptr %64, i64 %37 + %.val34 = load i8, ptr %65, align 1 + %66 = getelementptr i8, ptr %65, i64 1 + %.val35 = load i8, ptr %66, align 1 + %67 = zext i8 %.val34 to i16 + %68 = shl nuw i16 %67, 8 + %69 = zext i8 %.val35 to i16 + %70 = or disjoint i16 %68, %69 + %71 = sext i16 %70 to i32 br label %.loopexit -75: ; preds = %64, %60 - %.124 = phi i32 [ %.02337, %60 ], [ %65, %64 ] - %.1 = phi i32 [ %61, %60 ], [ %.02238, %64 ] +72: ; preds = %61, %57 + %.124 = phi i32 [ %.02337, %57 ], [ %62, %61 ] + %.1 = phi i32 [ %58, %57 ], [ %.02238, %61 ] %.not28 = icmp sgt i32 %.124, %.1 - br i1 %.not28, label %.loopexit, label %36, !llvm.loop !16 + br i1 %.not28, label %.loopexit, label %33, !llvm.loop !16 -.loopexit: ; preds = %75, %25, %18, %10, %3, %66 - %.0 = phi i32 [ %74, %66 ], [ 0, %3 ], [ 0, %10 ], [ 0, %18 ], [ 0, %25 ], [ 0, %75 ] +.loopexit: ; preds = %72, %22, %15, %10, %3, %63 + %.0 = phi i32 [ %71, %63 ], [ 0, %3 ], [ 0, %10 ], [ 0, %15 ], [ 0, %22 ], [ 0, %72 ] ret i32 %.0 } @@ -2797,105 +2791,102 @@ define dso_local range(i32 -32768, 32768) i32 @stbtt_GetCodepointKernAdvance(ptr %.val32.i = load i8, ptr %13, align 1 %14 = getelementptr i8, ptr %12, i64 3 %.val33.i = load i8, ptr %14, align 1 - %15 = zext i8 %.val32.i to i16 - %16 = shl nuw i16 %15, 8 - %17 = zext i8 %.val33.i to i16 - %18 = or disjoint i16 %16, %17 - %19 = icmp eq i16 %18, 0 - br i1 %19, label %stbtt_GetGlyphKernAdvance.exit, label %20 - -20: ; preds = %6 - %21 = getelementptr inbounds nuw i8, ptr %12, i64 8 - %.val30.i = load i8, ptr %21, align 1 - %22 = getelementptr i8, ptr %12, i64 9 - %.val31.i = load i8, ptr %22, align 1 - %23 = zext i8 %.val30.i to i16 - %24 = shl nuw i16 %23, 8 - %25 = zext i8 %.val31.i to i16 - %26 = or disjoint i16 %24, %25 - %.not27.i = icmp eq i16 %26, 1 - br i1 %.not27.i, label %27, label %stbtt_GetGlyphKernAdvance.exit - -27: ; preds = %20 - %28 = getelementptr inbounds nuw i8, ptr %12, i64 10 - %.val.i = load i8, ptr %28, align 1 - %29 = getelementptr i8, ptr %12, i64 11 - %.val29.i = load i8, ptr %29, align 1 - %30 = zext i8 %.val.i to i32 - %31 = shl nuw nsw i32 %30, 8 - %32 = zext i8 %.val29.i to i32 - %33 = or disjoint i32 %31, %32 - %34 = shl i32 %7, 16 - %35 = or i32 %34, %8 - %.not2836.i = icmp eq i32 %33, 0 + %15 = or i8 %.val33.i, %.val32.i + %16 = icmp eq i8 %15, 0 + br i1 %16, label %stbtt_GetGlyphKernAdvance.exit, label %17 + +17: ; preds = %6 + %18 = getelementptr inbounds nuw i8, ptr %12, i64 8 + %.val30.i = load i8, ptr %18, align 1 + %19 = getelementptr i8, ptr %12, i64 9 + %.val31.i = load i8, ptr %19, align 1 + %20 = zext i8 %.val30.i to i16 + %21 = shl nuw i16 %20, 8 + %22 = zext i8 %.val31.i to i16 + %23 = or disjoint i16 %21, %22 + %.not27.i = icmp eq i16 %23, 1 + br i1 %.not27.i, label %24, label %stbtt_GetGlyphKernAdvance.exit + +24: ; preds = %17 + %25 = getelementptr inbounds nuw i8, ptr %12, i64 10 + %.val.i = load i8, ptr %25, align 1 + %26 = getelementptr i8, ptr %12, i64 11 + %.val29.i = load i8, ptr %26, align 1 + %27 = zext i8 %.val.i to i32 + %28 = shl nuw nsw i32 %27, 8 + %29 = zext i8 %.val29.i to i32 + %30 = or disjoint i32 %28, %29 + %31 = shl i32 %7, 16 + %32 = or i32 %31, %8 + %.not2836.i = icmp eq i32 %30, 0 br i1 %.not2836.i, label %stbtt_GetGlyphKernAdvance.exit, label %.lr.ph.i -.lr.ph.i: ; preds = %27 - %36 = add nsw i32 %33, -1 - %37 = getelementptr inbounds nuw i8, ptr %12, i64 18 - br label %38 - -38: ; preds = %77, %.lr.ph.i - %.02238.i = phi i32 [ %36, %.lr.ph.i ], [ %.1.i, %77 ] - %.02337.i = phi i32 [ 0, %.lr.ph.i ], [ %.124.i, %77 ] - %39 = add nsw i32 %.02337.i, %.02238.i - %40 = ashr i32 %39, 1 - %41 = mul nsw i32 %40, 6 - %42 = sext i32 %41 to i64 - %43 = getelementptr inbounds i8, ptr %37, i64 %42 - %44 = load i8, ptr %43, align 1 - %45 = zext i8 %44 to i32 - %46 = shl nuw i32 %45, 24 - %47 = getelementptr inbounds nuw i8, ptr %43, i64 1 - %48 = load i8, ptr %47, align 1 - %49 = zext i8 %48 to i32 - %50 = shl nuw nsw i32 %49, 16 - %51 = or disjoint i32 %50, %46 - %52 = getelementptr inbounds nuw i8, ptr %43, i64 2 - %53 = load i8, ptr %52, align 1 - %54 = zext i8 %53 to i32 - %55 = shl nuw nsw i32 %54, 8 - %56 = or disjoint i32 %51, %55 - %57 = getelementptr inbounds nuw i8, ptr %43, i64 3 - %58 = load i8, ptr %57, align 1 - %59 = zext i8 %58 to i32 - %60 = or disjoint i32 %56, %59 - %61 = icmp ult i32 %35, %60 - br i1 %61, label %62, label %64 +.lr.ph.i: ; preds = %24 + %33 = add nsw i32 %30, -1 + %34 = getelementptr inbounds nuw i8, ptr %12, i64 18 + br label %35 + +35: ; preds = %74, %.lr.ph.i + %.02238.i = phi i32 [ %33, %.lr.ph.i ], [ %.1.i, %74 ] + %.02337.i = phi i32 [ 0, %.lr.ph.i ], [ %.124.i, %74 ] + %36 = add nsw i32 %.02337.i, %.02238.i + %37 = ashr i32 %36, 1 + %38 = mul nsw i32 %37, 6 + %39 = sext i32 %38 to i64 + %40 = getelementptr inbounds i8, ptr %34, i64 %39 + %41 = load i8, ptr %40, align 1 + %42 = zext i8 %41 to i32 + %43 = shl nuw i32 %42, 24 + %44 = getelementptr inbounds nuw i8, ptr %40, i64 1 + %45 = load i8, ptr %44, align 1 + %46 = zext i8 %45 to i32 + %47 = shl nuw nsw i32 %46, 16 + %48 = or disjoint i32 %47, %43 + %49 = getelementptr inbounds nuw i8, ptr %40, i64 2 + %50 = load i8, ptr %49, align 1 + %51 = zext i8 %50 to i32 + %52 = shl nuw nsw i32 %51, 8 + %53 = or disjoint i32 %48, %52 + %54 = getelementptr inbounds nuw i8, ptr %40, i64 3 + %55 = load i8, ptr %54, align 1 + %56 = zext i8 %55 to i32 + %57 = or disjoint i32 %53, %56 + %58 = icmp ult i32 %32, %57 + br i1 %58, label %59, label %61 -62: ; preds = %38 - %63 = add nsw i32 %40, -1 - br label %77 +59: ; preds = %35 + %60 = add nsw i32 %37, -1 + br label %74 -64: ; preds = %38 - %65 = icmp ugt i32 %35, %60 - br i1 %65, label %66, label %68 +61: ; preds = %35 + %62 = icmp ugt i32 %32, %57 + br i1 %62, label %63, label %65 -66: ; preds = %64 - %67 = add nsw i32 %40, 1 - br label %77 +63: ; preds = %61 + %64 = add nsw i32 %37, 1 + br label %74 -68: ; preds = %64 - %69 = getelementptr inbounds nuw i8, ptr %12, i64 22 - %70 = getelementptr inbounds i8, ptr %69, i64 %42 - %.val34.i = load i8, ptr %70, align 1 - %71 = getelementptr i8, ptr %70, i64 1 - %.val35.i = load i8, ptr %71, align 1 - %72 = zext i8 %.val34.i to i16 - %73 = shl nuw i16 %72, 8 - %74 = zext i8 %.val35.i to i16 - %75 = or disjoint i16 %73, %74 - %76 = sext i16 %75 to i32 +65: ; preds = %61 + %66 = getelementptr inbounds nuw i8, ptr %12, i64 22 + %67 = getelementptr inbounds i8, ptr %66, i64 %39 + %.val34.i = load i8, ptr %67, align 1 + %68 = getelementptr i8, ptr %67, i64 1 + %.val35.i = load i8, ptr %68, align 1 + %69 = zext i8 %.val34.i to i16 + %70 = shl nuw i16 %69, 8 + %71 = zext i8 %.val35.i to i16 + %72 = or disjoint i16 %70, %71 + %73 = sext i16 %72 to i32 br label %stbtt_GetGlyphKernAdvance.exit -77: ; preds = %66, %62 - %.124.i = phi i32 [ %.02337.i, %62 ], [ %67, %66 ] - %.1.i = phi i32 [ %63, %62 ], [ %.02238.i, %66 ] +74: ; preds = %63, %59 + %.124.i = phi i32 [ %.02337.i, %59 ], [ %64, %63 ] + %.1.i = phi i32 [ %60, %59 ], [ %.02238.i, %63 ] %.not28.i = icmp sgt i32 %.124.i, %.1.i - br i1 %.not28.i, label %stbtt_GetGlyphKernAdvance.exit, label %38, !llvm.loop !16 + br i1 %.not28.i, label %stbtt_GetGlyphKernAdvance.exit, label %35, !llvm.loop !16 -stbtt_GetGlyphKernAdvance.exit: ; preds = %77, %68, %27, %20, %6, %3 - %.0 = phi i32 [ 0, %3 ], [ %76, %68 ], [ 0, %6 ], [ 0, %20 ], [ 0, %27 ], [ 0, %77 ] +stbtt_GetGlyphKernAdvance.exit: ; preds = %74, %65, %24, %17, %6, %3 + %.0 = phi i32 [ 0, %3 ], [ %73, %65 ], [ 0, %6 ], [ 0, %17 ], [ 0, %24 ], [ 0, %74 ] ret i32 %.0 } diff --git a/bench/rust-analyzer-rs/optimized/36cskjvhktchzlnh.ll b/bench/rust-analyzer-rs/optimized/36cskjvhktchzlnh.ll index 6f0fce51b51..52e05f1df68 100644 --- a/bench/rust-analyzer-rs/optimized/36cskjvhktchzlnh.ll +++ b/bench/rust-analyzer-rs/optimized/36cskjvhktchzlnh.ll @@ -734,13 +734,13 @@ switch.lookup: %.sroa.411.0.insert.ext = zext i8 %.sroa.411.1 to i64 %.sroa.411.0.insert.shift = shl nuw nsw i64 %.sroa.411.0.insert.ext, 8 %61 = or disjoint i64 %.sroa.411.0.insert.shift, %.sroa.010.0 - %62 = or disjoint i64 %.sroa.613.0.insert.shift, %.sroa.010.0 - %or.cond.i = icmp eq i64 %62, 0 - %.sroa.616.17.insert.insert.i = select i1 %or.cond.i, i64 5121, i64 %61 + %62 = or i64 %.sroa.010.0, %.sroa.613.0.insert.ext + %63 = icmp eq i64 %62, 0 + %.sroa.616.17.insert.insert.i = select i1 %63, i64 5121, i64 %61 %.sroa.616.20.insert.insert.i = or disjoint i64 %.sroa.616.17.insert.insert.i, %.sroa.613.0.insert.shift tail call void @"_ZN10hir_expand5attrs8unescape28_$u7b$$u7b$closure$u7d$$u7d$17h877eda1c80a7d153E.llvm.15988534848567551436"(ptr noalias noundef nonnull readonly align 8 dereferenceable(40) %.val, i64 noundef %60, i64 noundef %59, i64 %.sroa.616.20.insert.insert.i) - %63 = icmp eq ptr %.sroa.0.1.ph3645, %4 - br i1 %63, label %.thread, label %7 + %64 = icmp eq ptr %.sroa.0.1.ph3645, %4 + br i1 %64, label %.thread, label %7 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/rust-analyzer-rs/optimized/5ac99zaxn7b9r9xv.ll b/bench/rust-analyzer-rs/optimized/5ac99zaxn7b9r9xv.ll index 9508447fc59..000e5ef0829 100644 --- a/bench/rust-analyzer-rs/optimized/5ac99zaxn7b9r9xv.ll +++ b/bench/rust-analyzer-rs/optimized/5ac99zaxn7b9r9xv.ll @@ -696,13 +696,13 @@ switch.lookup: %.sroa.411.0.insert.ext = zext i8 %.sroa.411.1 to i64 %.sroa.411.0.insert.shift = shl nuw nsw i64 %.sroa.411.0.insert.ext, 8 %61 = or disjoint i64 %.sroa.411.0.insert.shift, %.sroa.010.0 - %62 = or disjoint i64 %.sroa.613.0.insert.shift, %.sroa.010.0 - %or.cond.i = icmp eq i64 %62, 0 - %.sroa.616.17.insert.insert.i = select i1 %or.cond.i, i64 5121, i64 %61 + %62 = or i64 %.sroa.010.0, %.sroa.613.0.insert.ext + %63 = icmp eq i64 %62, 0 + %.sroa.616.17.insert.insert.i = select i1 %63, i64 5121, i64 %61 %.sroa.616.20.insert.insert.i = or disjoint i64 %.sroa.616.17.insert.insert.i, %.sroa.613.0.insert.shift tail call void @"_ZN6syntax3ast9token_ext60_$LT$impl$u20$syntax..ast..generated..tokens..ByteString$GT$5value28_$u7b$$u7b$closure$u7d$$u7d$17h23cce49a6197486aE.llvm.11162169574061779932"(ptr noalias noundef nonnull readonly align 8 dereferenceable(40) %.val, i64 noundef %60, i64 noundef %59, i64 %.sroa.616.20.insert.insert.i) - %63 = icmp eq ptr %.sroa.0.1.ph3645, %4 - br i1 %63, label %.thread, label %7 + %64 = icmp eq ptr %.sroa.0.1.ph3645, %4 + br i1 %64, label %.thread, label %7 } ; Function Attrs: nonlazybind uwtable @@ -830,13 +830,13 @@ switch.lookup: %.sroa.411.0.insert.ext = zext i8 %.sroa.411.1 to i64 %.sroa.411.0.insert.shift = shl nuw nsw i64 %.sroa.411.0.insert.ext, 8 %61 = or disjoint i64 %.sroa.411.0.insert.shift, %.sroa.010.0 - %62 = or disjoint i64 %.sroa.613.0.insert.shift, %.sroa.010.0 - %or.cond.i = icmp eq i64 %62, 0 - %.sroa.616.17.insert.insert.i = select i1 %or.cond.i, i64 5121, i64 %61 + %62 = or i64 %.sroa.010.0, %.sroa.613.0.insert.ext + %63 = icmp eq i64 %62, 0 + %.sroa.616.17.insert.insert.i = select i1 %63, i64 5121, i64 %61 %.sroa.616.20.insert.insert.i = or disjoint i64 %.sroa.616.17.insert.insert.i, %.sroa.613.0.insert.shift tail call void @"_ZN6syntax3ast9token_ext56_$LT$impl$u20$syntax..ast..generated..tokens..String$GT$5value28_$u7b$$u7b$closure$u7d$$u7d$17h5d159828f4408856E.llvm.11162169574061779932"(ptr noalias noundef nonnull readonly align 8 dereferenceable(40) %.val, i64 noundef %60, i64 noundef %59, i64 %.sroa.616.20.insert.insert.i) - %63 = icmp eq ptr %.sroa.0.1.ph3645, %4 - br i1 %63, label %.thread, label %7 + %64 = icmp eq ptr %.sroa.0.1.ph3645, %4 + br i1 %64, label %.thread, label %7 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/rust-analyzer-rs/optimized/hf9vzunhg9aziex.ll b/bench/rust-analyzer-rs/optimized/hf9vzunhg9aziex.ll index 4867d638b16..6b5d2e863ad 100644 --- a/bench/rust-analyzer-rs/optimized/hf9vzunhg9aziex.ll +++ b/bench/rust-analyzer-rs/optimized/hf9vzunhg9aziex.ll @@ -1486,17 +1486,17 @@ switch.lookup: unreachable "_ZN17ra_ap_rustc_lexer8unescape16unescape_unicode28_$u7b$$u7b$closure$u7d$$u7d$17h44cd810d16c81c50E.exit": ; preds = %79 - %83 = or disjoint i64 %.sroa.613.0.insert.shift, %.sroa.010.0 - %or.cond.i = icmp eq i64 %83, 0 - %.sroa.616.17.insert.insert.i = select i1 %or.cond.i, i64 5121, i64 %64 + %83 = or i64 %.sroa.010.0, %.sroa.613.0.insert.ext + %84 = icmp eq i64 %83, 0 + %.sroa.616.17.insert.insert.i = select i1 %84, i64 5121, i64 %64 %.sroa.616.20.insert.insert.i = or disjoint i64 %.sroa.616.17.insert.insert.i, %.sroa.613.0.insert.shift - %84 = extractvalue { i32, i1 } %77, 0 - %85 = extractvalue { i32, i1 } %80, 0 - %86 = getelementptr inbounds nuw i8, ptr %74, i64 32 - %87 = load ptr, ptr %86, align 8, !invariant.load !11, !noalias !245, !nonnull !11 - tail call void %87(ptr noundef nonnull align 1 %73, i32 noundef %84, i32 noundef %85, i64 %.sroa.616.20.insert.insert.i), !noalias !245 - %88 = icmp eq ptr %.sroa.0.1.ph3645, %5 - br i1 %88, label %.thread, label %10 + %85 = extractvalue { i32, i1 } %77, 0 + %86 = extractvalue { i32, i1 } %80, 0 + %87 = getelementptr inbounds nuw i8, ptr %74, i64 32 + %88 = load ptr, ptr %87, align 8, !invariant.load !11, !noalias !245, !nonnull !11 + tail call void %88(ptr noundef nonnull align 1 %73, i32 noundef %85, i32 noundef %86, i64 %.sroa.616.20.insert.insert.i), !noalias !245 + %89 = icmp eq ptr %.sroa.0.1.ph3645, %5 + br i1 %89, label %.thread, label %10 } ; Function Attrs: nonlazybind uwtable @@ -1861,17 +1861,17 @@ switch.lookup: unreachable "_ZN17ra_ap_rustc_lexer8unescape16unescape_unicode28_$u7b$$u7b$closure$u7d$$u7d$17h0b321f92e754c416E.exit": ; preds = %79 - %83 = or disjoint i64 %.sroa.613.0.insert.shift, %.sroa.010.0 - %or.cond.i = icmp eq i64 %83, 0 - %.sroa.616.17.insert.insert.i = select i1 %or.cond.i, i64 5121, i64 %64 + %83 = or i64 %.sroa.010.0, %.sroa.613.0.insert.ext + %84 = icmp eq i64 %83, 0 + %.sroa.616.17.insert.insert.i = select i1 %84, i64 5121, i64 %64 %.sroa.616.20.insert.insert.i = or disjoint i64 %.sroa.616.17.insert.insert.i, %.sroa.613.0.insert.shift - %84 = extractvalue { i32, i1 } %77, 0 - %85 = extractvalue { i32, i1 } %80, 0 - %86 = getelementptr inbounds nuw i8, ptr %74, i64 32 - %87 = load ptr, ptr %86, align 8, !invariant.load !11, !noalias !257, !nonnull !11 - tail call void %87(ptr noundef nonnull align 1 %73, i32 noundef %84, i32 noundef %85, i64 %.sroa.616.20.insert.insert.i), !noalias !257 - %88 = icmp eq ptr %.sroa.0.1.ph3645, %5 - br i1 %88, label %.thread, label %10 + %85 = extractvalue { i32, i1 } %77, 0 + %86 = extractvalue { i32, i1 } %80, 0 + %87 = getelementptr inbounds nuw i8, ptr %74, i64 32 + %88 = load ptr, ptr %87, align 8, !invariant.load !11, !noalias !257, !nonnull !11 + tail call void %88(ptr noundef nonnull align 1 %73, i32 noundef %85, i32 noundef %86, i64 %.sroa.616.20.insert.insert.i), !noalias !257 + %89 = icmp eq ptr %.sroa.0.1.ph3645, %5 + br i1 %89, label %.thread, label %10 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/rust-analyzer-rs/optimized/hknx1qr3lu9291s.ll b/bench/rust-analyzer-rs/optimized/hknx1qr3lu9291s.ll index 0da7e39fbc0..64346ab9ede 100644 --- a/bench/rust-analyzer-rs/optimized/hknx1qr3lu9291s.ll +++ b/bench/rust-analyzer-rs/optimized/hknx1qr3lu9291s.ll @@ -9132,7 +9132,7 @@ define hidden void @_ZN17ra_ap_rustc_lexer8unescape16unescape_unicode17h616df343 %119 = zext nneg i8 %118 to i32 %120 = or disjoint i32 %117, %119 %121 = icmp samesign ugt i8 %104, -17 - br i1 %121, label %122, label %.thread310 + br i1 %121, label %122, label %.thread309 122: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i57.i" %123 = getelementptr inbounds nuw i8, ptr %97, i64 3 @@ -9151,13 +9151,13 @@ define hidden void @_ZN17ra_ap_rustc_lexer8unescape16unescape_unicode17h616df343 %134 = icmp eq i32 %132, 10 br i1 %134, label %265, label %146 -.thread310: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i57.i" +.thread309: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i57.i" %135 = shl nuw nsw i32 %108, 12 %136 = or disjoint i32 %120, %135 %137 = icmp eq i32 %136, 10 br i1 %137, label %265, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i.i.thread" -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i.i.thread": ; preds = %.thread310 +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i.i.thread": ; preds = %.thread309 %138 = getelementptr inbounds nuw i8, ptr %97, i64 3 store ptr %138, ptr %6, align 8, !alias.scope !2999, !noalias !2977 br label %.thread107.i.i @@ -9166,9 +9166,9 @@ define hidden void @_ZN17ra_ap_rustc_lexer8unescape16unescape_unicode17h616df343 %139 = shl nuw nsw i32 %108, 6 %140 = or disjoint i32 %139, %112 %141 = icmp eq i32 %140, 10 - br i1 %141, label %265, label %.thread43 + br i1 %141, label %265, label %.thread42 -.thread43: ; preds = %.thread +.thread42: ; preds = %.thread %142 = getelementptr inbounds nuw i8, ptr %97, i64 2 store ptr %142, ptr %6, align 8, !alias.scope !3006, !noalias !2977 br label %.thread107.i.i @@ -9202,9 +9202,9 @@ define hidden void @_ZN17ra_ap_rustc_lexer8unescape16unescape_unicode17h616df343 %.not.i.i = icmp eq i32 %157, 1114112 br i1 %.not.i.i, label %.thread.i.i, label %.thread107.i.i -.thread107.i.i: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i.i.thread", %.thread43, %146, %.thread297.i - %158 = phi ptr [ %149, %146 ], [ %144, %.thread297.i ], [ %142, %.thread43 ], [ %138, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i.i.thread" ] - %.sroa.4.0.i.ph110.i.i = phi i32 [ %157, %146 ], [ %145, %.thread297.i ], [ %140, %.thread43 ], [ %136, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i.i.thread" ] +.thread107.i.i: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i.i.thread", %.thread42, %146, %.thread297.i + %158 = phi ptr [ %149, %146 ], [ %144, %.thread297.i ], [ %142, %.thread42 ], [ %138, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i.i.thread" ] + %.sroa.4.0.i.ph110.i.i = phi i32 [ %157, %146 ], [ %145, %.thread297.i ], [ %140, %.thread42 ], [ %136, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i.i.thread" ] switch i32 %.sroa.4.0.i.ph110.i.i, label %.thread.i.i [ i32 34, label %_ZN17ra_ap_rustc_lexer8unescape11scan_escape17h87456e89320ca408E.exit.i i32 110, label %159 @@ -9435,7 +9435,7 @@ _ZN17ra_ap_rustc_lexer8unescape11scan_escape17h87456e89320ca408E.exit.i: ; preds %264 = and i64 %.sroa.11.1.i.i, 65280 br label %.loopexit.i -265: ; preds = %.thread310, %.thread, %.thread295.i, %122 +265: ; preds = %.thread309, %.thread, %.thread295.i, %122 call void @llvm.experimental.noalias.scope.decl(metadata !3060) br label %.lr.ph.i.i.i @@ -9859,7 +9859,7 @@ _ZN17ra_ap_rustc_lexer8unescape23unescape_non_raw_common17h36c7e5b6e9fb45b9E.exi tail call void @llvm.experimental.noalias.scope.decl(metadata !3107) %439 = getelementptr inbounds i8, ptr %0, i64 %1 %440 = and i8 %2, -2 - %switch45 = icmp eq i8 %440, 4 + %switch44 = icmp eq i8 %440, 4 %441 = icmp eq i64 %1, 0 br i1 %441, label %_ZN17ra_ap_rustc_lexer8unescape16check_raw_common17h8da38201a3e9dce2E.exit, label %.lr.ph.i11 @@ -9963,7 +9963,7 @@ _ZN17ra_ap_rustc_lexer8unescape23unescape_non_raw_common17h36c7e5b6e9fb45b9E.exi %.sroa.0.1.ph3646.i = phi ptr [ %.sroa.0.1.ph36.i, %.thread39.i ], [ %.sroa.0.1.ph3647.i, %493 ] %.sroa.4.0.i.ph3743.i = phi i32 [ %.sroa.4.0.i.ph37.i, %.thread39.i ], [ %.sroa.4.0.i.ph3744.i, %493 ] %499 = phi i64 [ %492, %.thread39.i ], [ %495, %493 ] - %or.cond.not.i = and i1 %switch45, %.not49.i + %or.cond.not.i = and i1 %switch44, %.not49.i %.20.i = zext i1 %or.cond.not.i to i64 %.sroa.411.0..i = select i1 %or.cond.not.i, i8 19, i8 %.sroa.411.052.i %.0..sroa.613.0.i = select i1 %or.cond.not.i, i32 %.sroa.613.053.i, i32 %.sroa.4.0.i.ph3743.i @@ -10075,7 +10075,7 @@ _ZN17ra_ap_rustc_lexer8unescape23unescape_non_raw_common17h36c7e5b6e9fb45b9E.exi %544 = zext nneg i8 %543 to i32 %545 = or disjoint i32 %542, %544 %546 = icmp samesign ugt i8 %535, -33 - br i1 %546, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i40", label %.thread12.i + br i1 %546, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i39", label %.thread12.i .thread12.thread.i: ; preds = %533 %547 = zext nneg i8 %535 to i32 @@ -10083,7 +10083,7 @@ _ZN17ra_ap_rustc_lexer8unescape23unescape_non_raw_common17h36c7e5b6e9fb45b9E.exi %549 = add i64 %.neg28.i, %548 br label %577 -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i40": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit13.i.i23" +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i39": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit13.i.i23" %550 = icmp ne ptr %540, %524 tail call void @llvm.assume(i1 %550) %551 = getelementptr inbounds nuw i8, ptr %.sroa.0.031.i, i64 3 @@ -10097,7 +10097,7 @@ _ZN17ra_ap_rustc_lexer8unescape23unescape_non_raw_common17h36c7e5b6e9fb45b9E.exi %559 = icmp samesign ugt i8 %535, -17 br i1 %559, label %560, label %.thread12.i -560: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i40" +560: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i39" %561 = icmp ne ptr %551, %524 tail call void @llvm.assume(i1 %561) %562 = getelementptr inbounds nuw i8, ptr %.sroa.0.031.i, i64 4 @@ -10109,12 +10109,12 @@ _ZN17ra_ap_rustc_lexer8unescape23unescape_non_raw_common17h36c7e5b6e9fb45b9E.exi %568 = zext nneg i8 %567 to i32 %569 = or disjoint i32 %566, %568 %570 = or disjoint i32 %569, %565 - %.not.i41 = icmp eq i32 %570, 1114112 - br i1 %.not.i41, label %_ZN17ra_ap_rustc_lexer8unescape16check_raw_common17h8da38201a3e9dce2E.exit, label %.thread12.i + %.not.i40 = icmp eq i32 %570, 1114112 + br i1 %.not.i40, label %_ZN17ra_ap_rustc_lexer8unescape16check_raw_common17h8da38201a3e9dce2E.exit, label %.thread12.i -.thread12.i: ; preds = %560, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i40", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit13.i.i23" - %.sroa.4.0.i.ph17.i = phi i32 [ %570, %560 ], [ %558, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i40" ], [ %545, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit13.i.i23" ] - %.sroa.0.1.ph16.i = phi ptr [ %562, %560 ], [ %551, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i40" ], [ %540, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit13.i.i23" ] +.thread12.i: ; preds = %560, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i39", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit13.i.i23" + %.sroa.4.0.i.ph17.i = phi i32 [ %570, %560 ], [ %558, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i39" ], [ %545, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit13.i.i23" ] + %.sroa.0.1.ph16.i = phi ptr [ %562, %560 ], [ %551, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i39" ], [ %540, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit13.i.i23" ] %571 = ptrtoint ptr %.sroa.0.1.ph16.i to i64 %.neg.i24 = sub i64 %571, %526 %572 = add i64 %.neg.i24, %1 @@ -10136,7 +10136,7 @@ _ZN17ra_ap_rustc_lexer8unescape23unescape_non_raw_common17h36c7e5b6e9fb45b9E.exi %579 = add i64 %578, -1 %580 = icmp eq i32 %.sroa.4.0.i.ph1724.i, 13 %spec.select = zext i1 %580 to i64 - %spec.select451 = select i1 %580, i32 %.sroa.613.033.i, i32 %.sroa.4.0.i.ph1724.i + %spec.select450 = select i1 %580, i32 %.sroa.613.033.i, i32 %.sroa.4.0.i.ph1724.i br label %581 581: ; preds = %577, %.thread19.i @@ -10144,7 +10144,7 @@ _ZN17ra_ap_rustc_lexer8unescape23unescape_non_raw_common17h36c7e5b6e9fb45b9E.exi %.sroa.0.1.ph1625.i = phi ptr [ %.sroa.0.1.ph16.i, %.thread19.i ], [ %.sroa.0.1.ph1627.i, %577 ] %583 = phi i64 [ %576, %.thread19.i ], [ %579, %577 ] %.sroa.010.0.i31 = phi i64 [ 0, %.thread19.i ], [ %spec.select, %577 ] - %.sroa.613.1.i33 = phi i32 [ %.sroa.4.0.i.ph17.i, %.thread19.i ], [ %spec.select451, %577 ] + %.sroa.613.1.i33 = phi i32 [ %.sroa.4.0.i.ph17.i, %.thread19.i ], [ %spec.select450, %577 ] %.sroa.613.0.insert.ext.i34 = zext i32 %.sroa.613.1.i33 to i64 %.sroa.613.0.insert.shift.i35 = shl nuw i64 %.sroa.613.0.insert.ext.i34, 32 %584 = or disjoint i64 %.sroa.010.0.i31, 1280 @@ -10193,16 +10193,16 @@ _ZN17ra_ap_rustc_lexer8unescape23unescape_non_raw_common17h36c7e5b6e9fb45b9E.exi unreachable "_ZN17ra_ap_rustc_lexer8unescape16unescape_unicode28_$u7b$$u7b$closure$u7d$$u7d$17hda57bf2f24e928a2E.exit.i": ; preds = %596 - %600 = or disjoint i64 %.sroa.613.0.insert.shift.i35, %.sroa.010.0.i31 - %or.cond.i.i39 = icmp eq i64 %600, 0 - %.sroa.616.17.insert.insert.i.i = select i1 %or.cond.i.i39, i64 5121, i64 %584 + %600 = or i64 %.sroa.010.0.i31, %.sroa.613.0.insert.ext.i34 + %601 = icmp eq i64 %600, 0 + %.sroa.616.17.insert.insert.i.i = select i1 %601, i64 5121, i64 %584 %.sroa.616.20.insert.insert.i.i = or disjoint i64 %.sroa.616.17.insert.insert.i.i, %.sroa.613.0.insert.shift.i35 - %601 = extractvalue { i32, i1 } %594, 0 - %602 = extractvalue { i32, i1 } %597, 0 - %603 = load ptr, ptr %532, align 8, !invariant.load !4, !noalias !3125, !nonnull !4 - tail call void %603(ptr noundef nonnull align 1 %529, i32 noundef %601, i32 noundef %602, i64 %.sroa.616.20.insert.insert.i.i), !noalias !3125 - %604 = icmp eq ptr %.sroa.0.1.ph1625.i, %524 - br i1 %604, label %_ZN17ra_ap_rustc_lexer8unescape16check_raw_common17h8da38201a3e9dce2E.exit, label %533 + %602 = extractvalue { i32, i1 } %594, 0 + %603 = extractvalue { i32, i1 } %597, 0 + %604 = load ptr, ptr %532, align 8, !invariant.load !4, !noalias !3125, !nonnull !4 + tail call void %604(ptr noundef nonnull align 1 %529, i32 noundef %602, i32 noundef %603, i64 %.sroa.616.20.insert.insert.i.i), !noalias !3125 + %605 = icmp eq ptr %.sroa.0.1.ph1625.i, %524 + br i1 %605, label %_ZN17ra_ap_rustc_lexer8unescape16check_raw_common17h8da38201a3e9dce2E.exit, label %533 _ZN17ra_ap_rustc_lexer8unescape16check_raw_common17h8da38201a3e9dce2E.exit: ; preds = %"_ZN17ra_ap_rustc_lexer8unescape16unescape_unicode28_$u7b$$u7b$closure$u7d$$u7d$17hda57bf2f24e928a2E.exit.i", %560, %"_ZN6syntax3ast9token_ext8IsString19escaped_char_ranges28_$u7b$$u7b$closure$u7d$$u7d$17ha5f2fdd8ffabc931E.exit.i18", %476, %523, %438, %_ZN17ra_ap_rustc_lexer8unescape23unescape_non_raw_common17h36c7e5b6e9fb45b9E.exit, %"_ZN6syntax3ast9token_ext8IsString19escaped_char_ranges28_$u7b$$u7b$closure$u7d$$u7d$17ha5f2fdd8ffabc931E.exit" ret void diff --git a/bench/spike/optimized/fdt.ll b/bench/spike/optimized/fdt.ll index c2ad8056dd5..507d9ccc6e3 100644 --- a/bench/spike/optimized/fdt.ll +++ b/bench/spike/optimized/fdt.ll @@ -40,7 +40,7 @@ define range(i32 -10, 2147483647) i32 @fdt_ro_probe_(ptr noundef readonly captur %34 = load i8, ptr %33, align 1, !tbaa !3 %35 = zext i8 %34 to i32 %36 = or disjoint i32 %32, %35 - switch i32 %36, label %99 [ + switch i32 %36, label %92 [ i32 -804389139, label %37 i32 804389138, label %77 ] @@ -65,7 +65,7 @@ define range(i32 -10, 2147483647) i32 @fdt_ro_probe_(ptr noundef readonly captur %54 = zext i8 %53 to i32 %55 = or disjoint i32 %51, %54 %56 = icmp ult i32 %55, 2 - br i1 %56, label %99, label %57 + br i1 %56, label %92, label %57 57: ; preds = %37 %58 = getelementptr inbounds nuw i8, ptr %0, i64 24 @@ -87,37 +87,30 @@ define range(i32 -10, 2147483647) i32 @fdt_ro_probe_(ptr noundef readonly captur %74 = zext i8 %73 to i32 %75 = or disjoint i32 %71, %74 %76 = icmp ugt i32 %75, 17 - br i1 %76, label %99, label %97 + br i1 %76, label %92, label %90 77: ; preds = %1 %78 = getelementptr inbounds nuw i8, ptr %0, i64 36 %79 = load i8, ptr %78, align 1, !tbaa !3 - %80 = zext i8 %79 to i32 - %81 = shl nuw i32 %80, 24 - %82 = getelementptr inbounds nuw i8, ptr %0, i64 37 + %80 = getelementptr inbounds nuw i8, ptr %0, i64 37 + %81 = load i8, ptr %80, align 1, !tbaa !3 + %82 = getelementptr inbounds nuw i8, ptr %0, i64 38 %83 = load i8, ptr %82, align 1, !tbaa !3 - %84 = zext i8 %83 to i32 - %85 = shl nuw nsw i32 %84, 16 - %86 = or disjoint i32 %85, %81 - %87 = getelementptr inbounds nuw i8, ptr %0, i64 38 - %88 = load i8, ptr %87, align 1, !tbaa !3 - %89 = zext i8 %88 to i32 - %90 = shl nuw nsw i32 %89, 8 - %91 = or disjoint i32 %86, %90 - %92 = getelementptr inbounds nuw i8, ptr %0, i64 39 - %93 = load i8, ptr %92, align 1, !tbaa !3 - %94 = zext i8 %93 to i32 - %95 = or disjoint i32 %91, %94 - %96 = icmp eq i32 %95, 0 - br i1 %96, label %99, label %97 - -97: ; preds = %77, %57 - %98 = icmp ult i32 %19, 2147483647 - %. = select i1 %98, i32 %19, i32 -8 - br label %99 - -99: ; preds = %1, %97, %77, %57, %37 - %.0 = phi i32 [ -10, %37 ], [ -10, %57 ], [ -7, %77 ], [ %., %97 ], [ -9, %1 ] + %84 = getelementptr inbounds nuw i8, ptr %0, i64 39 + %85 = load i8, ptr %84, align 1, !tbaa !3 + %86 = or i8 %81, %79 + %87 = or i8 %86, %83 + %88 = or i8 %87, %85 + %89 = icmp eq i8 %88, 0 + br i1 %89, label %92, label %90 + +90: ; preds = %77, %57 + %91 = icmp ult i32 %19, 2147483647 + %. = select i1 %91, i32 %19, i32 -8 + br label %92 + +92: ; preds = %1, %90, %77, %57, %37 + %.0 = phi i32 [ -10, %37 ], [ -10, %57 ], [ -7, %77 ], [ %., %90 ], [ -9, %1 ] ret i32 %.0 } diff --git a/bench/spike/optimized/fdt_ro.ll b/bench/spike/optimized/fdt_ro.ll index 11cb19be373..6230b59c3d0 100644 --- a/bench/spike/optimized/fdt_ro.ll +++ b/bench/spike/optimized/fdt_ro.ll @@ -658,9 +658,9 @@ define i32 @fdt_num_mem_rsv(ptr noundef readonly captures(none) %0) local_unname %48 = getelementptr inbounds nuw i8, ptr %46, i64 %47 br label %.split -.split: ; preds = %.split.preheader, %92 - %indvars.iv = phi i64 [ 0, %.split.preheader ], [ %indvars.iv.next, %92 ] - %49 = phi i32 [ %18, %.split.preheader ], [ %95, %92 ] +.split: ; preds = %.split.preheader, %77 + %indvars.iv = phi i64 [ 0, %.split.preheader ], [ %indvars.iv.next, %77 ] + %49 = phi i32 [ %18, %.split.preheader ], [ %80, %77 ] %50 = sext i32 %49 to i64 %51 = icmp ult i64 %37, %50 br i1 %51, label %fdt_mem_rsv.exit.thread.split, label %52 @@ -668,59 +668,44 @@ define i32 @fdt_num_mem_rsv(ptr noundef readonly captures(none) %0) local_unname 52: ; preds = %.split %53 = getelementptr inbounds nuw %struct.fdt_reserve_entry, ptr %48, i64 %indvars.iv, i32 1 %54 = load i8, ptr %53, align 1, !tbaa !3 - %55 = zext i8 %54 to i64 - %56 = shl nuw i64 %55, 56 - %57 = getelementptr inbounds nuw i8, ptr %53, i64 1 + %55 = getelementptr inbounds nuw i8, ptr %53, i64 1 + %56 = load i8, ptr %55, align 1, !tbaa !3 + %57 = getelementptr inbounds nuw i8, ptr %53, i64 2 %58 = load i8, ptr %57, align 1, !tbaa !3 - %59 = zext i8 %58 to i64 - %60 = shl nuw nsw i64 %59, 48 - %61 = or disjoint i64 %60, %56 - %62 = getelementptr inbounds nuw i8, ptr %53, i64 2 - %63 = load i8, ptr %62, align 1, !tbaa !3 - %64 = zext i8 %63 to i64 - %65 = shl nuw nsw i64 %64, 40 - %66 = or disjoint i64 %61, %65 - %67 = getelementptr inbounds nuw i8, ptr %53, i64 3 + %59 = getelementptr inbounds nuw i8, ptr %53, i64 3 + %60 = load i8, ptr %59, align 1, !tbaa !3 + %61 = getelementptr inbounds nuw i8, ptr %53, i64 4 + %62 = load i8, ptr %61, align 1, !tbaa !3 + %63 = getelementptr inbounds nuw i8, ptr %53, i64 5 + %64 = load i8, ptr %63, align 1, !tbaa !3 + %65 = getelementptr inbounds nuw i8, ptr %53, i64 6 + %66 = load i8, ptr %65, align 1, !tbaa !3 + %67 = getelementptr inbounds nuw i8, ptr %53, i64 7 %68 = load i8, ptr %67, align 1, !tbaa !3 - %69 = zext i8 %68 to i64 - %70 = shl nuw nsw i64 %69, 32 - %71 = or disjoint i64 %66, %70 - %72 = getelementptr inbounds nuw i8, ptr %53, i64 4 - %73 = load i8, ptr %72, align 1, !tbaa !3 - %74 = zext i8 %73 to i64 - %75 = shl nuw nsw i64 %74, 24 - %76 = or disjoint i64 %71, %75 - %77 = getelementptr inbounds nuw i8, ptr %53, i64 5 - %78 = load i8, ptr %77, align 1, !tbaa !3 - %79 = zext i8 %78 to i64 - %80 = shl nuw nsw i64 %79, 16 - %81 = or disjoint i64 %76, %80 - %82 = getelementptr inbounds nuw i8, ptr %53, i64 6 - %83 = load i8, ptr %82, align 1, !tbaa !3 - %84 = zext i8 %83 to i64 - %85 = shl nuw nsw i64 %84, 8 - %86 = or i64 %81, %85 - %87 = getelementptr inbounds nuw i8, ptr %53, i64 7 - %88 = load i8, ptr %87, align 1, !tbaa !3 - %89 = zext i8 %88 to i64 - %90 = or i64 %86, %89 - %91 = icmp eq i64 %90, 0 - br i1 %91, label %fdt_mem_rsv.exit.thread.split.split.loop.exit, label %92 - -92: ; preds = %52 + %69 = or i8 %56, %54 + %70 = or i8 %69, %58 + %71 = or i8 %70, %60 + %72 = or i8 %71, %62 + %73 = or i8 %72, %64 + %74 = or i8 %73, %66 + %75 = or i8 %74, %68 + %76 = icmp eq i8 %75, 0 + br i1 %76, label %fdt_mem_rsv.exit.thread.split.split.loop.exit, label %77 + +77: ; preds = %52 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %93 = trunc nsw i64 %indvars.iv.next to i32 - %94 = shl i32 %93, 4 - %95 = add i32 %18, %94 - %96 = icmp ult i32 %95, %18 - br i1 %96, label %fdt_mem_rsv.exit.thread.split, label %.split, !llvm.loop !10 + %78 = trunc nsw i64 %indvars.iv.next to i32 + %79 = shl i32 %78, 4 + %80 = add i32 %18, %79 + %81 = icmp ult i32 %80, %18 + br i1 %81, label %fdt_mem_rsv.exit.thread.split, label %.split, !llvm.loop !10 fdt_mem_rsv.exit.thread.split.split.loop.exit: ; preds = %52 - %97 = trunc nuw nsw i64 %indvars.iv to i32 + %82 = trunc nuw nsw i64 %indvars.iv to i32 br label %fdt_mem_rsv.exit.thread.split -fdt_mem_rsv.exit.thread.split: ; preds = %.split, %92, %fdt_mem_rsv.exit.thread.split.split.loop.exit - %.0.split.ph = phi i32 [ %97, %fdt_mem_rsv.exit.thread.split.split.loop.exit ], [ -8, %92 ], [ -8, %.split ] +fdt_mem_rsv.exit.thread.split: ; preds = %.split, %77, %fdt_mem_rsv.exit.thread.split.split.loop.exit + %.0.split.ph = phi i32 [ %82, %fdt_mem_rsv.exit.thread.split.split.loop.exit ], [ -8, %77 ], [ -8, %.split ] ret i32 %.0.split.ph } @@ -3153,13 +3138,13 @@ define i32 @fdt_check_full(ptr noundef %0, i64 noundef %1) local_unnamed_addr #0 store i32 0, ptr %4, align 4, !tbaa !6 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #9 %6 = icmp ult i64 %1, 28 - br i1 %6, label %.loopexit, label %7 + br i1 %6, label %fdt_num_mem_rsv.exit.thread, label %7 7: ; preds = %2 %8 = tail call i32 @fdt_check_header(ptr noundef %0) #9 store i32 %8, ptr %3, align 4, !tbaa !6 %.not = icmp eq i32 %8, 0 - br i1 %.not, label %9, label %.loopexit + br i1 %.not, label %9, label %fdt_num_mem_rsv.exit.thread 9: ; preds = %7 %10 = getelementptr inbounds nuw i8, ptr %0, i64 4 @@ -3181,73 +3166,143 @@ define i32 @fdt_check_full(ptr noundef %0, i64 noundef %1) local_unnamed_addr #0 %26 = zext i8 %25 to i64 %27 = or disjoint i64 %23, %26 %28 = icmp ult i64 %1, %27 - br i1 %28, label %.loopexit, label %29 + br i1 %28, label %fdt_num_mem_rsv.exit.thread, label %29 29: ; preds = %9 - %30 = tail call i32 @fdt_num_mem_rsv(ptr noundef nonnull %0) - %31 = icmp slt i32 %30, 0 - br i1 %31, label %.loopexit, label %.preheader - -.preheader: ; preds = %29 - %32 = call i32 @fdt_next_tag(ptr noundef nonnull %0, i32 noundef 0, ptr noundef nonnull %4) #9 - %33 = load i32, ptr %4, align 4, !tbaa !6 - %34 = icmp slt i32 %33, 0 - br i1 %34, label %.loopexit, label %.lr.ph - -.lr.ph: ; preds = %.preheader, %50 - %35 = phi i32 [ %53, %50 ], [ %33, %.preheader ] - %36 = phi i32 [ %52, %50 ], [ %32, %.preheader ] - %37 = phi i32 [ %51, %50 ], [ 0, %.preheader ] - %.01828 = phi i32 [ %.1, %50 ], [ 0, %.preheader ] - switch i32 %36, label %.loopexit [ - i32 4, label %50 - i32 9, label %38 - i32 1, label %39 - i32 2, label %42 - i32 3, label %46 + %30 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %31 = load i8, ptr %30, align 1, !tbaa !3 + %32 = zext i8 %31 to i32 + %33 = shl nuw i32 %32, 24 + %34 = getelementptr inbounds nuw i8, ptr %0, i64 17 + %35 = load i8, ptr %34, align 1, !tbaa !3 + %36 = zext i8 %35 to i32 + %37 = shl nuw nsw i32 %36, 16 + %38 = or disjoint i32 %37, %33 + %39 = getelementptr inbounds nuw i8, ptr %0, i64 18 + %40 = load i8, ptr %39, align 1, !tbaa !3 + %41 = zext i8 %40 to i32 + %42 = shl nuw nsw i32 %41, 8 + %43 = or disjoint i32 %38, %42 + %44 = getelementptr inbounds nuw i8, ptr %0, i64 19 + %45 = load i8, ptr %44, align 1, !tbaa !3 + %46 = zext i8 %45 to i32 + %47 = or disjoint i32 %43, %46 + %48 = add nsw i64 %27, -16 + %49 = zext i8 %35 to i64 + %50 = shl nuw nsw i64 %49, 16 + %51 = getelementptr inbounds nuw i8, ptr %0, i64 %50 + %52 = zext i8 %31 to i64 + %53 = shl nuw nsw i64 %52, 24 + %54 = getelementptr inbounds nuw i8, ptr %51, i64 %53 + %55 = zext i8 %40 to i64 + %56 = shl nuw nsw i64 %55, 8 + %57 = getelementptr inbounds nuw i8, ptr %54, i64 %56 + %58 = zext i8 %45 to i64 + %59 = getelementptr inbounds nuw i8, ptr %57, i64 %58 + br label %.split.i + +.split.i: ; preds = %91, %29 + %indvars.iv.i = phi i64 [ 0, %29 ], [ %indvars.iv.next.i, %91 ] + %60 = phi i32 [ %47, %29 ], [ %94, %91 ] + %61 = sext i32 %60 to i64 + %62 = icmp ult i64 %48, %61 + br i1 %62, label %fdt_num_mem_rsv.exit.thread, label %63 + +63: ; preds = %.split.i + %64 = getelementptr inbounds nuw %struct.fdt_reserve_entry, ptr %59, i64 %indvars.iv.i, i32 1 + %65 = load i8, ptr %64, align 1, !tbaa !3 + %66 = getelementptr inbounds nuw i8, ptr %64, i64 1 + %67 = load i8, ptr %66, align 1, !tbaa !3 + %68 = getelementptr inbounds nuw i8, ptr %64, i64 2 + %69 = load i8, ptr %68, align 1, !tbaa !3 + %70 = getelementptr inbounds nuw i8, ptr %64, i64 3 + %71 = load i8, ptr %70, align 1, !tbaa !3 + %72 = getelementptr inbounds nuw i8, ptr %64, i64 4 + %73 = load i8, ptr %72, align 1, !tbaa !3 + %74 = getelementptr inbounds nuw i8, ptr %64, i64 5 + %75 = load i8, ptr %74, align 1, !tbaa !3 + %76 = getelementptr inbounds nuw i8, ptr %64, i64 6 + %77 = load i8, ptr %76, align 1, !tbaa !3 + %78 = getelementptr inbounds nuw i8, ptr %64, i64 7 + %79 = load i8, ptr %78, align 1, !tbaa !3 + %80 = or i8 %67, %65 + %81 = or i8 %80, %69 + %82 = or i8 %81, %71 + %83 = or i8 %82, %73 + %84 = or i8 %83, %75 + %85 = or i8 %84, %77 + %86 = or i8 %85, %79 + %87 = icmp eq i8 %86, 0 + br i1 %87, label %fdt_num_mem_rsv.exit.preheader, label %91 + +fdt_num_mem_rsv.exit.preheader: ; preds = %63 + %88 = call i32 @fdt_next_tag(ptr noundef nonnull %0, i32 noundef 0, ptr noundef nonnull %4) #9 + %89 = load i32, ptr %4, align 4, !tbaa !6 + %90 = icmp slt i32 %89, 0 + br i1 %90, label %fdt_num_mem_rsv.exit.thread, label %.lr.ph + +91: ; preds = %63 + %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 + %92 = trunc nsw i64 %indvars.iv.next.i to i32 + %93 = shl i32 %92, 4 + %94 = add i32 %93, %47 + %95 = icmp ult i32 %94, %47 + br i1 %95, label %fdt_num_mem_rsv.exit.thread, label %.split.i, !llvm.loop !10 + +.lr.ph: ; preds = %fdt_num_mem_rsv.exit.preheader, %fdt_num_mem_rsv.exit + %96 = phi i32 [ %113, %fdt_num_mem_rsv.exit ], [ %89, %fdt_num_mem_rsv.exit.preheader ] + %97 = phi i32 [ %112, %fdt_num_mem_rsv.exit ], [ %88, %fdt_num_mem_rsv.exit.preheader ] + %98 = phi i32 [ %111, %fdt_num_mem_rsv.exit ], [ 0, %fdt_num_mem_rsv.exit.preheader ] + %.01830 = phi i32 [ %.1, %fdt_num_mem_rsv.exit ], [ 0, %fdt_num_mem_rsv.exit.preheader ] + switch i32 %97, label %fdt_num_mem_rsv.exit.thread [ + i32 4, label %fdt_num_mem_rsv.exit + i32 9, label %99 + i32 1, label %100 + i32 2, label %103 + i32 3, label %107 ] -38: ; preds = %.lr.ph - %.not25 = icmp eq i32 %.01828, 0 +99: ; preds = %.lr.ph + %.not25 = icmp eq i32 %.01830, 0 %. = select i1 %.not25, i32 0, i32 -11 - br label %.loopexit + br label %fdt_num_mem_rsv.exit.thread -39: ; preds = %.lr.ph - %40 = add i32 %.01828, 1 - %41 = icmp slt i32 %40, 0 - br i1 %41, label %.loopexit, label %50 +100: ; preds = %.lr.ph + %101 = add i32 %.01830, 1 + %102 = icmp slt i32 %101, 0 + br i1 %102, label %fdt_num_mem_rsv.exit.thread, label %fdt_num_mem_rsv.exit -42: ; preds = %.lr.ph - %43 = icmp eq i32 %.01828, 0 - br i1 %43, label %.loopexit, label %44 +103: ; preds = %.lr.ph + %104 = icmp eq i32 %.01830, 0 + br i1 %104, label %fdt_num_mem_rsv.exit.thread, label %105 -44: ; preds = %42 - %45 = add i32 %.01828, -1 - br label %50 +105: ; preds = %103 + %106 = add i32 %.01830, -1 + br label %fdt_num_mem_rsv.exit -46: ; preds = %.lr.ph - %47 = call ptr @fdt_getprop_by_offset(ptr noundef nonnull %0, i32 noundef %37, ptr noundef nonnull %5, ptr noundef nonnull %3) - %.not24 = icmp eq ptr %47, null - br i1 %.not24, label %48, label %._crit_edge +107: ; preds = %.lr.ph + %108 = call ptr @fdt_getprop_by_offset(ptr noundef nonnull %0, i32 noundef %98, ptr noundef nonnull %5, ptr noundef nonnull %3) + %.not24 = icmp eq ptr %108, null + br i1 %.not24, label %109, label %.fdt_num_mem_rsv.exit_crit_edge -._crit_edge: ; preds = %46 +.fdt_num_mem_rsv.exit_crit_edge: ; preds = %107 %.pre = load i32, ptr %4, align 4, !tbaa !6 - br label %50 - -48: ; preds = %46 - %49 = load i32, ptr %3, align 4, !tbaa !6 - br label %.loopexit - -50: ; preds = %._crit_edge, %39, %44, %.lr.ph - %51 = phi i32 [ %.pre, %._crit_edge ], [ %35, %44 ], [ %35, %39 ], [ %35, %.lr.ph ] - %.1 = phi i32 [ %.01828, %._crit_edge ], [ %45, %44 ], [ %40, %39 ], [ %.01828, %.lr.ph ] - %52 = call i32 @fdt_next_tag(ptr noundef nonnull %0, i32 noundef %51, ptr noundef nonnull %4) #9 - %53 = load i32, ptr %4, align 4, !tbaa !6 - %54 = icmp slt i32 %53, 0 - br i1 %54, label %.loopexit, label %.lr.ph - -.loopexit: ; preds = %50, %39, %42, %.lr.ph, %.preheader, %38, %29, %9, %7, %2, %48 - %.0 = phi i32 [ %49, %48 ], [ -8, %2 ], [ %8, %7 ], [ -8, %9 ], [ %30, %29 ], [ %., %38 ], [ %33, %.preheader ], [ %53, %50 ], [ -11, %39 ], [ -11, %42 ], [ -13, %.lr.ph ] + br label %fdt_num_mem_rsv.exit + +109: ; preds = %107 + %110 = load i32, ptr %3, align 4, !tbaa !6 + br label %fdt_num_mem_rsv.exit.thread + +fdt_num_mem_rsv.exit: ; preds = %.fdt_num_mem_rsv.exit_crit_edge, %100, %105, %.lr.ph + %111 = phi i32 [ %.pre, %.fdt_num_mem_rsv.exit_crit_edge ], [ %96, %105 ], [ %96, %100 ], [ %96, %.lr.ph ] + %.1 = phi i32 [ %.01830, %.fdt_num_mem_rsv.exit_crit_edge ], [ %106, %105 ], [ %101, %100 ], [ %.01830, %.lr.ph ] + %112 = call i32 @fdt_next_tag(ptr noundef nonnull %0, i32 noundef %111, ptr noundef nonnull %4) #9 + %113 = load i32, ptr %4, align 4, !tbaa !6 + %114 = icmp slt i32 %113, 0 + br i1 %114, label %fdt_num_mem_rsv.exit.thread, label %.lr.ph + +fdt_num_mem_rsv.exit.thread: ; preds = %.split.i, %91, %fdt_num_mem_rsv.exit, %100, %103, %.lr.ph, %fdt_num_mem_rsv.exit.preheader, %99, %9, %7, %2, %109 + %.0 = phi i32 [ %110, %109 ], [ -8, %2 ], [ %8, %7 ], [ -8, %9 ], [ %., %99 ], [ %89, %fdt_num_mem_rsv.exit.preheader ], [ %113, %fdt_num_mem_rsv.exit ], [ -11, %100 ], [ -11, %103 ], [ -13, %.lr.ph ], [ -8, %91 ], [ -8, %.split.i ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #9 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #9 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #9 diff --git a/bench/spike/optimized/fdt_sw.ll b/bench/spike/optimized/fdt_sw.ll index 3fc530f3256..99c42a16014 100644 --- a/bench/spike/optimized/fdt_sw.ll +++ b/bench/spike/optimized/fdt_sw.ll @@ -98,7 +98,7 @@ define range(i32 -13, 1) i32 @fdt_resize(ptr noundef readonly captures(address) %.not.i = icmp eq i32 %20, 804389138 %..i = select i1 %.not.i, i32 0, i32 -9 %.0.i = select i1 %21, i32 -7, i32 %..i - br i1 %.not.i, label %22, label %131 + br i1 %.not.i, label %22, label %125 22: ; preds = %3 %23 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -177,12 +177,12 @@ define range(i32 -13, 1) i32 @fdt_resize(ptr noundef readonly captures(address) %96 = zext i8 %95 to i64 %97 = or disjoint i64 %93, %96 %98 = icmp samesign ugt i64 %79, %97 - br i1 %98, label %131, label %99 + br i1 %98, label %125, label %99 99: ; preds = %22 %100 = sext i32 %2 to i64 %101 = icmp ugt i64 %79, %100 - br i1 %101, label %131, label %102 + br i1 %101, label %125, label %102 102: ; preds = %99 %103 = getelementptr inbounds nuw i8, ptr %0, i64 %97 @@ -209,31 +209,24 @@ define range(i32 -13, 1) i32 @fdt_resize(ptr noundef readonly captures(address) store i32 %rev.i.i, ptr %111, align 4, !tbaa !10 %112 = getelementptr inbounds nuw i8, ptr %1, i64 12 %113 = load i8, ptr %112, align 1, !tbaa !14 - %114 = zext i8 %113 to i32 - %115 = shl nuw i32 %114, 24 - %116 = getelementptr inbounds nuw i8, ptr %1, i64 13 + %114 = getelementptr inbounds nuw i8, ptr %1, i64 13 + %115 = load i8, ptr %114, align 1, !tbaa !14 + %116 = getelementptr inbounds nuw i8, ptr %1, i64 14 %117 = load i8, ptr %116, align 1, !tbaa !14 - %118 = zext i8 %117 to i32 - %119 = shl nuw nsw i32 %118, 16 - %120 = or disjoint i32 %119, %115 - %121 = getelementptr inbounds nuw i8, ptr %1, i64 14 - %122 = load i8, ptr %121, align 1, !tbaa !14 - %123 = zext i8 %122 to i32 - %124 = shl nuw nsw i32 %123, 8 - %125 = or disjoint i32 %120, %124 - %126 = getelementptr inbounds nuw i8, ptr %1, i64 15 - %127 = load i8, ptr %126, align 1, !tbaa !14 - %128 = zext i8 %127 to i32 - %129 = or disjoint i32 %125, %128 - %.not45 = icmp eq i32 %129, 0 - br i1 %.not45, label %131, label %130 - -130: ; preds = %110 + %118 = getelementptr inbounds nuw i8, ptr %1, i64 15 + %119 = load i8, ptr %118, align 1, !tbaa !14 + %120 = or i8 %115, %113 + %121 = or i8 %120, %117 + %122 = or i8 %121, %119 + %123 = icmp eq i8 %122, 0 + br i1 %123, label %125, label %124 + +124: ; preds = %110 store i32 %rev.i.i, ptr %112, align 4, !tbaa !13 - br label %131 + br label %125 -131: ; preds = %110, %130, %99, %22, %3 - %.1 = phi i32 [ %.0.i, %3 ], [ -13, %22 ], [ -3, %99 ], [ 0, %130 ], [ 0, %110 ] +125: ; preds = %110, %124, %99, %22, %3 + %.1 = phi i32 [ %.0.i, %3 ], [ -13, %22 ], [ -3, %99 ], [ 0, %124 ], [ 0, %110 ] ret i32 %.1 } @@ -265,86 +258,79 @@ define range(i32 -9, 1) i32 @fdt_add_reservemap_entry(ptr noundef captures(none) 21: ; preds = %3 %22 = getelementptr inbounds nuw i8, ptr %0, i64 12 %23 = load i8, ptr %22, align 1, !tbaa !14 - %24 = zext i8 %23 to i32 - %25 = shl nuw i32 %24, 24 - %26 = getelementptr inbounds nuw i8, ptr %0, i64 13 + %24 = getelementptr inbounds nuw i8, ptr %0, i64 13 + %25 = load i8, ptr %24, align 1, !tbaa !14 + %26 = getelementptr inbounds nuw i8, ptr %0, i64 14 %27 = load i8, ptr %26, align 1, !tbaa !14 - %28 = zext i8 %27 to i32 - %29 = shl nuw nsw i32 %28, 16 - %30 = or disjoint i32 %29, %25 - %31 = getelementptr inbounds nuw i8, ptr %0, i64 14 - %32 = load i8, ptr %31, align 1, !tbaa !14 - %33 = zext i8 %32 to i32 - %34 = shl nuw nsw i32 %33, 8 - %35 = or disjoint i32 %30, %34 - %36 = getelementptr inbounds nuw i8, ptr %0, i64 15 - %37 = load i8, ptr %36, align 1, !tbaa !14 - %38 = zext i8 %37 to i32 - %39 = or disjoint i32 %35, %38 - %.not5.i = icmp eq i32 %39, 0 - br i1 %.not5.i, label %fdt_sw_probe_memrsv_.exit.thread, label %fdt_sw_probe_memrsv_.exit.thread18 + %28 = getelementptr inbounds nuw i8, ptr %0, i64 15 + %29 = load i8, ptr %28, align 1, !tbaa !14 + %30 = or i8 %25, %23 + %31 = or i8 %30, %27 + %32 = or i8 %31, %29 + %33 = icmp eq i8 %32, 0 + br i1 %33, label %fdt_sw_probe_memrsv_.exit.thread, label %fdt_sw_probe_memrsv_.exit.thread18 fdt_sw_probe_memrsv_.exit: ; preds = %3 - %40 = icmp eq i32 %20, -804389139 - %.0.i.i = select i1 %40, i32 -7, i32 -9 + %34 = icmp eq i32 %20, -804389139 + %.0.i.i = select i1 %34, i32 -7, i32 -9 br label %fdt_sw_probe_memrsv_.exit.thread18 fdt_sw_probe_memrsv_.exit.thread: ; preds = %21 - %41 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %42 = load i8, ptr %41, align 1, !tbaa !14 - %43 = zext i8 %42 to i32 - %44 = shl nuw i32 %43, 24 - %45 = getelementptr inbounds nuw i8, ptr %0, i64 9 - %46 = load i8, ptr %45, align 1, !tbaa !14 - %47 = zext i8 %46 to i32 - %48 = shl nuw nsw i32 %47, 16 - %49 = or disjoint i32 %48, %44 - %50 = getelementptr inbounds nuw i8, ptr %0, i64 10 - %51 = load i8, ptr %50, align 1, !tbaa !14 - %52 = zext i8 %51 to i32 - %53 = shl nuw nsw i32 %52, 8 - %54 = or disjoint i32 %49, %53 - %55 = getelementptr inbounds nuw i8, ptr %0, i64 11 + %35 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %36 = load i8, ptr %35, align 1, !tbaa !14 + %37 = zext i8 %36 to i32 + %38 = shl nuw i32 %37, 24 + %39 = getelementptr inbounds nuw i8, ptr %0, i64 9 + %40 = load i8, ptr %39, align 1, !tbaa !14 + %41 = zext i8 %40 to i32 + %42 = shl nuw nsw i32 %41, 16 + %43 = or disjoint i32 %42, %38 + %44 = getelementptr inbounds nuw i8, ptr %0, i64 10 + %45 = load i8, ptr %44, align 1, !tbaa !14 + %46 = zext i8 %45 to i32 + %47 = shl nuw nsw i32 %46, 8 + %48 = or disjoint i32 %43, %47 + %49 = getelementptr inbounds nuw i8, ptr %0, i64 11 + %50 = load i8, ptr %49, align 1, !tbaa !14 + %51 = zext i8 %50 to i32 + %52 = or disjoint i32 %48, %51 + %53 = sext i32 %52 to i64 + %54 = add nsw i64 %53, 16 + %55 = getelementptr inbounds nuw i8, ptr %0, i64 4 %56 = load i8, ptr %55, align 1, !tbaa !14 - %57 = zext i8 %56 to i32 - %58 = or disjoint i32 %54, %57 - %59 = sext i32 %58 to i64 - %60 = add nsw i64 %59, 16 - %61 = getelementptr inbounds nuw i8, ptr %0, i64 4 - %62 = load i8, ptr %61, align 1, !tbaa !14 - %63 = zext i8 %62 to i64 - %64 = shl nuw nsw i64 %63, 24 - %65 = getelementptr inbounds nuw i8, ptr %0, i64 5 - %66 = load i8, ptr %65, align 1, !tbaa !14 - %67 = zext i8 %66 to i64 - %68 = shl nuw nsw i64 %67, 16 - %69 = or disjoint i64 %68, %64 - %70 = getelementptr inbounds nuw i8, ptr %0, i64 6 - %71 = load i8, ptr %70, align 1, !tbaa !14 - %72 = zext i8 %71 to i64 - %73 = shl nuw nsw i64 %72, 8 - %74 = or disjoint i64 %69, %73 - %75 = getelementptr inbounds nuw i8, ptr %0, i64 7 - %76 = load i8, ptr %75, align 1, !tbaa !14 - %77 = zext i8 %76 to i64 - %78 = or disjoint i64 %74, %77 - %79 = icmp ugt i64 %60, %78 - br i1 %79, label %fdt_sw_probe_memrsv_.exit.thread18, label %80 - -80: ; preds = %fdt_sw_probe_memrsv_.exit.thread - %81 = getelementptr inbounds i8, ptr %0, i64 %59 - %82 = tail call noundef i64 @llvm.bswap.i64(i64 %1) - store i64 %82, ptr %81, align 8, !tbaa !15 - %83 = tail call noundef i64 @llvm.bswap.i64(i64 %2) - %84 = getelementptr inbounds nuw i8, ptr %81, i64 8 - store i64 %83, ptr %84, align 8, !tbaa !18 - %85 = trunc nuw i64 %60 to i32 - %rev.i.i = tail call noundef i32 @llvm.bswap.i32(i32 %85) - store i32 %rev.i.i, ptr %41, align 4, !tbaa !12 + %57 = zext i8 %56 to i64 + %58 = shl nuw nsw i64 %57, 24 + %59 = getelementptr inbounds nuw i8, ptr %0, i64 5 + %60 = load i8, ptr %59, align 1, !tbaa !14 + %61 = zext i8 %60 to i64 + %62 = shl nuw nsw i64 %61, 16 + %63 = or disjoint i64 %62, %58 + %64 = getelementptr inbounds nuw i8, ptr %0, i64 6 + %65 = load i8, ptr %64, align 1, !tbaa !14 + %66 = zext i8 %65 to i64 + %67 = shl nuw nsw i64 %66, 8 + %68 = or disjoint i64 %63, %67 + %69 = getelementptr inbounds nuw i8, ptr %0, i64 7 + %70 = load i8, ptr %69, align 1, !tbaa !14 + %71 = zext i8 %70 to i64 + %72 = or disjoint i64 %68, %71 + %73 = icmp ugt i64 %54, %72 + br i1 %73, label %fdt_sw_probe_memrsv_.exit.thread18, label %74 + +74: ; preds = %fdt_sw_probe_memrsv_.exit.thread + %75 = getelementptr inbounds i8, ptr %0, i64 %53 + %76 = tail call noundef i64 @llvm.bswap.i64(i64 %1) + store i64 %76, ptr %75, align 8, !tbaa !15 + %77 = tail call noundef i64 @llvm.bswap.i64(i64 %2) + %78 = getelementptr inbounds nuw i8, ptr %75, i64 8 + store i64 %77, ptr %78, align 8, !tbaa !18 + %79 = trunc nuw i64 %54 to i32 + %rev.i.i = tail call noundef i32 @llvm.bswap.i32(i32 %79) + store i32 %rev.i.i, ptr %35, align 4, !tbaa !12 br label %fdt_sw_probe_memrsv_.exit.thread18 -fdt_sw_probe_memrsv_.exit.thread18: ; preds = %fdt_sw_probe_memrsv_.exit, %21, %fdt_sw_probe_memrsv_.exit.thread, %80 - %.1 = phi i32 [ 0, %80 ], [ %.0.i.i, %fdt_sw_probe_memrsv_.exit ], [ -3, %fdt_sw_probe_memrsv_.exit.thread ], [ -7, %21 ] +fdt_sw_probe_memrsv_.exit.thread18: ; preds = %fdt_sw_probe_memrsv_.exit, %21, %fdt_sw_probe_memrsv_.exit.thread, %74 + %.1 = phi i32 [ 0, %74 ], [ %.0.i.i, %fdt_sw_probe_memrsv_.exit ], [ -3, %fdt_sw_probe_memrsv_.exit.thread ], [ -7, %21 ] ret i32 %.1 } @@ -373,98 +359,91 @@ define range(i32 -9, 1) i32 @fdt_finish_reservemap(ptr noundef captures(none) %0 19: ; preds = %1 %20 = getelementptr inbounds nuw i8, ptr %0, i64 12 %21 = load i8, ptr %20, align 1, !tbaa !14 - %22 = zext i8 %21 to i32 - %23 = shl nuw i32 %22, 24 - %24 = getelementptr inbounds nuw i8, ptr %0, i64 13 + %22 = getelementptr inbounds nuw i8, ptr %0, i64 13 + %23 = load i8, ptr %22, align 1, !tbaa !14 + %24 = getelementptr inbounds nuw i8, ptr %0, i64 14 %25 = load i8, ptr %24, align 1, !tbaa !14 - %26 = zext i8 %25 to i32 - %27 = shl nuw nsw i32 %26, 16 - %28 = or disjoint i32 %27, %23 - %29 = getelementptr inbounds nuw i8, ptr %0, i64 14 - %30 = load i8, ptr %29, align 1, !tbaa !14 - %31 = zext i8 %30 to i32 - %32 = shl nuw nsw i32 %31, 8 - %33 = or disjoint i32 %28, %32 - %34 = getelementptr inbounds nuw i8, ptr %0, i64 15 - %35 = load i8, ptr %34, align 1, !tbaa !14 - %36 = zext i8 %35 to i32 - %37 = or disjoint i32 %33, %36 - %.not5.i.i = icmp eq i32 %37, 0 - br i1 %.not5.i.i, label %fdt_sw_probe_memrsv_.exit.thread.i, label %fdt_add_reservemap_entry.exit.thread + %26 = getelementptr inbounds nuw i8, ptr %0, i64 15 + %27 = load i8, ptr %26, align 1, !tbaa !14 + %28 = or i8 %23, %21 + %29 = or i8 %28, %25 + %30 = or i8 %29, %27 + %31 = icmp eq i8 %30, 0 + br i1 %31, label %fdt_sw_probe_memrsv_.exit.thread.i, label %fdt_add_reservemap_entry.exit.thread fdt_sw_probe_memrsv_.exit.i: ; preds = %1 - %38 = icmp eq i32 %18, -804389139 - %.0.i.i.i = select i1 %38, i32 -7, i32 -9 + %32 = icmp eq i32 %18, -804389139 + %.0.i.i.i = select i1 %32, i32 -7, i32 -9 br label %fdt_add_reservemap_entry.exit.thread fdt_sw_probe_memrsv_.exit.thread.i: ; preds = %19 - %39 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %40 = load i8, ptr %39, align 1, !tbaa !14 - %41 = zext i8 %40 to i32 - %42 = shl nuw i32 %41, 24 - %43 = getelementptr inbounds nuw i8, ptr %0, i64 9 - %44 = load i8, ptr %43, align 1, !tbaa !14 - %45 = zext i8 %44 to i32 - %46 = shl nuw nsw i32 %45, 16 - %47 = or disjoint i32 %46, %42 - %48 = getelementptr inbounds nuw i8, ptr %0, i64 10 - %49 = load i8, ptr %48, align 1, !tbaa !14 - %50 = zext i8 %49 to i32 - %51 = shl nuw nsw i32 %50, 8 - %52 = or disjoint i32 %47, %51 - %53 = getelementptr inbounds nuw i8, ptr %0, i64 11 + %33 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %34 = load i8, ptr %33, align 1, !tbaa !14 + %35 = zext i8 %34 to i32 + %36 = shl nuw i32 %35, 24 + %37 = getelementptr inbounds nuw i8, ptr %0, i64 9 + %38 = load i8, ptr %37, align 1, !tbaa !14 + %39 = zext i8 %38 to i32 + %40 = shl nuw nsw i32 %39, 16 + %41 = or disjoint i32 %40, %36 + %42 = getelementptr inbounds nuw i8, ptr %0, i64 10 + %43 = load i8, ptr %42, align 1, !tbaa !14 + %44 = zext i8 %43 to i32 + %45 = shl nuw nsw i32 %44, 8 + %46 = or disjoint i32 %41, %45 + %47 = getelementptr inbounds nuw i8, ptr %0, i64 11 + %48 = load i8, ptr %47, align 1, !tbaa !14 + %49 = zext i8 %48 to i32 + %50 = or disjoint i32 %46, %49 + %51 = sext i32 %50 to i64 + %52 = add nsw i64 %51, 16 + %53 = getelementptr inbounds nuw i8, ptr %0, i64 4 %54 = load i8, ptr %53, align 1, !tbaa !14 - %55 = zext i8 %54 to i32 - %56 = or disjoint i32 %52, %55 - %57 = sext i32 %56 to i64 - %58 = add nsw i64 %57, 16 - %59 = getelementptr inbounds nuw i8, ptr %0, i64 4 - %60 = load i8, ptr %59, align 1, !tbaa !14 - %61 = zext i8 %60 to i64 - %62 = shl nuw nsw i64 %61, 24 - %63 = getelementptr inbounds nuw i8, ptr %0, i64 5 - %64 = load i8, ptr %63, align 1, !tbaa !14 - %65 = zext i8 %64 to i64 - %66 = shl nuw nsw i64 %65, 16 - %67 = or disjoint i64 %66, %62 - %68 = getelementptr inbounds nuw i8, ptr %0, i64 6 - %69 = load i8, ptr %68, align 1, !tbaa !14 - %70 = zext i8 %69 to i64 - %71 = shl nuw nsw i64 %70, 8 - %72 = or disjoint i64 %67, %71 - %73 = getelementptr inbounds nuw i8, ptr %0, i64 7 - %74 = load i8, ptr %73, align 1, !tbaa !14 - %75 = zext i8 %74 to i64 - %76 = or disjoint i64 %72, %75 - %77 = icmp ugt i64 %58, %76 - br i1 %77, label %fdt_add_reservemap_entry.exit.thread, label %78 - -78: ; preds = %fdt_sw_probe_memrsv_.exit.thread.i - %79 = getelementptr inbounds i8, ptr %0, i64 %57 - %80 = trunc nuw i64 %58 to i32 - %rev.i.i.i = tail call noundef i32 @llvm.bswap.i32(i32 %80) - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %79, i8 0, i64 16, i1 false) - store i32 %rev.i.i.i, ptr %39, align 4, !tbaa !12 - %81 = load i8, ptr %59, align 1, !tbaa !14 - %82 = zext i8 %81 to i32 - %83 = shl nuw i32 %82, 24 - %84 = load i8, ptr %63, align 1, !tbaa !14 - %85 = zext i8 %84 to i32 - %86 = shl nuw nsw i32 %85, 16 - %87 = or disjoint i32 %86, %83 - %88 = load i8, ptr %68, align 1, !tbaa !14 - %89 = zext i8 %88 to i32 - %90 = shl nuw nsw i32 %89, 8 - %91 = or disjoint i32 %87, %90 - %92 = load i8, ptr %73, align 1, !tbaa !14 - %93 = zext i8 %92 to i32 - %94 = or disjoint i32 %91, %93 - %rev.i.i = tail call noundef i32 @llvm.bswap.i32(i32 %94) + %55 = zext i8 %54 to i64 + %56 = shl nuw nsw i64 %55, 24 + %57 = getelementptr inbounds nuw i8, ptr %0, i64 5 + %58 = load i8, ptr %57, align 1, !tbaa !14 + %59 = zext i8 %58 to i64 + %60 = shl nuw nsw i64 %59, 16 + %61 = or disjoint i64 %60, %56 + %62 = getelementptr inbounds nuw i8, ptr %0, i64 6 + %63 = load i8, ptr %62, align 1, !tbaa !14 + %64 = zext i8 %63 to i64 + %65 = shl nuw nsw i64 %64, 8 + %66 = or disjoint i64 %61, %65 + %67 = getelementptr inbounds nuw i8, ptr %0, i64 7 + %68 = load i8, ptr %67, align 1, !tbaa !14 + %69 = zext i8 %68 to i64 + %70 = or disjoint i64 %66, %69 + %71 = icmp ugt i64 %52, %70 + br i1 %71, label %fdt_add_reservemap_entry.exit.thread, label %72 + +72: ; preds = %fdt_sw_probe_memrsv_.exit.thread.i + %73 = getelementptr inbounds i8, ptr %0, i64 %51 + %74 = trunc nuw i64 %52 to i32 + %rev.i.i.i = tail call noundef i32 @llvm.bswap.i32(i32 %74) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %73, i8 0, i64 16, i1 false) + store i32 %rev.i.i.i, ptr %33, align 4, !tbaa !12 + %75 = load i8, ptr %53, align 1, !tbaa !14 + %76 = zext i8 %75 to i32 + %77 = shl nuw i32 %76, 24 + %78 = load i8, ptr %57, align 1, !tbaa !14 + %79 = zext i8 %78 to i32 + %80 = shl nuw nsw i32 %79, 16 + %81 = or disjoint i32 %80, %77 + %82 = load i8, ptr %62, align 1, !tbaa !14 + %83 = zext i8 %82 to i32 + %84 = shl nuw nsw i32 %83, 8 + %85 = or disjoint i32 %81, %84 + %86 = load i8, ptr %67, align 1, !tbaa !14 + %87 = zext i8 %86 to i32 + %88 = or disjoint i32 %85, %87 + %rev.i.i = tail call noundef i32 @llvm.bswap.i32(i32 %88) store i32 %rev.i.i, ptr %20, align 4, !tbaa !13 br label %fdt_add_reservemap_entry.exit.thread -fdt_add_reservemap_entry.exit.thread: ; preds = %19, %fdt_sw_probe_memrsv_.exit.thread.i, %fdt_sw_probe_memrsv_.exit.i, %78 - %.0 = phi i32 [ 0, %78 ], [ -7, %19 ], [ -3, %fdt_sw_probe_memrsv_.exit.thread.i ], [ %.0.i.i.i, %fdt_sw_probe_memrsv_.exit.i ] +fdt_add_reservemap_entry.exit.thread: ; preds = %19, %fdt_sw_probe_memrsv_.exit.thread.i, %fdt_sw_probe_memrsv_.exit.i, %72 + %.0 = phi i32 [ 0, %72 ], [ -7, %19 ], [ -3, %fdt_sw_probe_memrsv_.exit.thread.i ], [ %.0.i.i.i, %fdt_sw_probe_memrsv_.exit.i ] ret i32 %.0 } diff --git a/bench/wireshark/optimized/netscaler.ll b/bench/wireshark/optimized/netscaler.ll index 1bda74b79d6..714f28c5751 100644 --- a/bench/wireshark/optimized/netscaler.ll +++ b/bench/wireshark/optimized/netscaler.ll @@ -1103,8 +1103,8 @@ define internal noundef zeroext i1 @nstrace_read_v20(ptr noundef readonly captur %21 = icmp ult i32 %.0984, %.0990 br i1 %21, label %.lr.ph, label %._crit_edge -.lr.ph: ; preds = %20, %1376 - %.19851300 = phi i32 [ %.3987, %1376 ], [ %.0984, %20 ] +.lr.ph: ; preds = %20, %1379 + %.19851300 = phi i32 [ %.3987, %1379 ], [ %.0984, %20 ] %22 = zext i32 %.19851300 to i64 %23 = getelementptr i8, ptr %10, i64 %22 %24 = load i8, ptr %23, align 1 @@ -3446,7 +3446,7 @@ nstrace_ensure_buflen.exit1129: ; preds = %1295 %1308 = add i64 %1307, %1306 store i64 %1308, ptr %15, align 8 store i64 %1308, ptr %16, align 8 - br label %1376 + br label %1379 1309: ; preds = %.lr.ph %.val1080 = load i32, ptr %13, align 4 @@ -3523,12 +3523,12 @@ nstrace_ensure_buflen.exit1131: ; preds = %1309 1352: ; preds = %1346, %1330 %1353 = phi i32 [ %1351, %1346 ], [ %1345, %1330 ] %1354 = add i32 %1353, %.19851300 - br label %1376 + br label %1379 1355: ; preds = %.lr.ph %.inv = icmp ult i32 %.19851300, 4096 %.0990. = select i1 %.inv, i32 4096, i32 %.0990 - br label %1376 + br label %1379 1356: ; preds = %.lr.ph %.val1082 = load i32, ptr %13, align 4 @@ -3553,17 +3553,16 @@ nstrace_ensure_buflen.exit1135: ; preds = %1356 1365: ; preds = %1361 %.not1059 = icmp eq i8 %1363, 0 - br i1 %.not1059, label %.thread1152, label %1373 + br i1 %.not1059, label %.thread1152, label %1376 .thread1143: ; preds = %1361 %1366 = getelementptr inbounds nuw i8, ptr %23, i64 2 %1367 = load i8, ptr %1366, align 1 %1368 = zext i8 %1367 to i32 - %1369 = shl nuw nsw i32 %1368, 7 - %1370 = and i32 %1364, 127 - %1371 = or disjoint i32 %1369, %1370 - %.not10591144 = icmp eq i32 %1371, 0 - br i1 %.not10591144, label %.thread1152, label %1373 + %1369 = and i32 %1364, 127 + %1370 = or i32 %1369, %1368 + %1371 = icmp eq i32 %1370, 0 + br i1 %1371, label %.thread1152, label %1373 .thread1152: ; preds = %1365, %.thread1143 store i32 -13, ptr %2, align 4 @@ -3571,59 +3570,64 @@ nstrace_ensure_buflen.exit1135: ; preds = %1356 store ptr %1372, ptr %3, align 8 br label %.critedge -1373: ; preds = %.thread1143, %1365 - %1374 = phi i32 [ %1364, %1365 ], [ %1371, %.thread1143 ] - %1375 = add i32 %1374, %.19851300 +1373: ; preds = %.thread1143 + %1374 = shl nuw nsw i32 %1368, 7 + %1375 = or disjoint i32 %1374, %1369 br label %1376 -1376: ; preds = %1373, %1352, %1302, %1355 - %.3987 = phi i32 [ %1375, %1373 ], [ %1354, %1352 ], [ %1297, %1302 ], [ %.0990., %1355 ] - %1377 = icmp ult i32 %.3987, %.0990 - br i1 %1377, label %.lr.ph, label %._crit_edge, !llvm.loop !12 - -._crit_edge: ; preds = %1376, %20 - %1378 = zext i32 %.0990 to i64 - %1379 = load i64, ptr %18, align 8 - %1380 = add i64 %1379, %1378 - store i64 %1380, ptr %18, align 8 - %1381 = load i64, ptr %19, align 8 - %1382 = sub i64 %1381, %1380 - %spec.select1156 = tail call i64 @llvm.umin.i64(i64 %1382, i64 8192) +1376: ; preds = %1373, %1365 + %1377 = phi i32 [ %1375, %1373 ], [ %1364, %1365 ] + %1378 = add i32 %1377, %.19851300 + br label %1379 + +1379: ; preds = %1376, %1352, %1302, %1355 + %.3987 = phi i32 [ %1378, %1376 ], [ %1354, %1352 ], [ %1297, %1302 ], [ %.0990., %1355 ] + %1380 = icmp ult i32 %.3987, %.0990 + br i1 %1380, label %.lr.ph, label %._crit_edge, !llvm.loop !12 + +._crit_edge: ; preds = %1379, %20 + %1381 = zext i32 %.0990 to i64 + %1382 = load i64, ptr %18, align 8 + %1383 = add i64 %1382, %1381 + store i64 %1383, ptr %18, align 8 + %1384 = load i64, ptr %19, align 8 + %1385 = sub i64 %1384, %1383 + %spec.select1156 = tail call i64 @llvm.umin.i64(i64 %1385, i64 8192) %spec.select = trunc nuw nsw i64 %spec.select1156 to i32 - %.not = icmp eq i64 %1381, %1380 - br i1 %.not, label %.critedge, label %1383 - -1383: ; preds = %._crit_edge - %1384 = load ptr, ptr %6, align 8 - %1385 = load ptr, ptr %1384, align 8 - %1386 = getelementptr inbounds nuw i8, ptr %1384, i64 8 - %1387 = load i32, ptr %1386, align 8 - %1388 = load ptr, ptr %0, align 8 - %1389 = tail call i32 @file_read(ptr noundef %1385, i32 noundef %1387, ptr noundef %1388) - %1390 = icmp slt i32 %1389, 0 - br i1 %1390, label %1391, label %1394 - -1391: ; preds = %1383 - %1392 = load ptr, ptr %0, align 8 - %1393 = tail call i32 @file_error(ptr noundef %1392, ptr noundef %3) - store i32 %1393, ptr %2, align 4 + %.not = icmp eq i64 %1384, %1383 + br i1 %.not, label %.critedge, label %1386 + +1386: ; preds = %._crit_edge + %1387 = load ptr, ptr %6, align 8 + %1388 = load ptr, ptr %1387, align 8 + %1389 = getelementptr inbounds nuw i8, ptr %1387, i64 8 + %1390 = load i32, ptr %1389, align 8 + %1391 = load ptr, ptr %0, align 8 + %1392 = tail call i32 @file_read(ptr noundef %1388, i32 noundef %1390, ptr noundef %1391) + %1393 = icmp slt i32 %1392, 0 + br i1 %1393, label %1394, label %1397 + +1394: ; preds = %1386 + %1395 = load ptr, ptr %0, align 8 + %1396 = tail call i32 @file_error(ptr noundef %1395, ptr noundef %3) + store i32 %1396, ptr %2, align 4 br label %.critedge -1394: ; preds = %1383 - %1395 = icmp eq i32 %1389, 0 - br i1 %1395, label %1396, label %nstrace_read_page.exit +1397: ; preds = %1386 + %1398 = icmp eq i32 %1392, 0 + br i1 %1398, label %1399, label %nstrace_read_page.exit -1396: ; preds = %1394 +1399: ; preds = %1397 store i32 0, ptr %2, align 4 br label %.critedge -nstrace_read_page.exit: ; preds = %1394 - %1397 = getelementptr inbounds nuw i8, ptr %1384, i64 28 - store i32 %1389, ptr %1397, align 4 +nstrace_read_page.exit: ; preds = %1397 + %1400 = getelementptr inbounds nuw i8, ptr %1387, i64 28 + store i32 %1392, ptr %1400, align 4 br label %20, !llvm.loop !13 -.critedge: ; preds = %._crit_edge, %1396, %1391, %1328, %nstrace_ensure_buflen.exit1129, %1286, %.thread1152, %nstrace_ensure_buflen.exit1135, %nstrace_ensure_buflen.exit1131, %nstrace_ensure_buflen.exit, %1181, %1197, %1245, %1265, %1094, %1110, %1155, %1175, %1005, %1021, %1068, %1088, %919, %935, %979, %999, %833, %849, %893, %913, %750, %766, %807, %827, %667, %683, %724, %744, %587, %603, %641, %661, %491, %507, %561, %581, %398, %414, %465, %485, %303, %319, %372, %392, %211, %227, %277, %297, %118, %134, %185, %205, %28, %44, %92, %112 - %.3 = phi i1 [ false, %28 ], [ false, %44 ], [ false, %92 ], [ true, %112 ], [ false, %118 ], [ false, %134 ], [ false, %185 ], [ true, %205 ], [ false, %211 ], [ false, %227 ], [ false, %277 ], [ true, %297 ], [ false, %303 ], [ false, %319 ], [ false, %372 ], [ true, %392 ], [ false, %398 ], [ false, %414 ], [ false, %465 ], [ true, %485 ], [ false, %491 ], [ false, %507 ], [ false, %561 ], [ true, %581 ], [ false, %587 ], [ false, %603 ], [ false, %641 ], [ true, %661 ], [ false, %667 ], [ false, %683 ], [ false, %724 ], [ true, %744 ], [ false, %750 ], [ false, %766 ], [ false, %807 ], [ true, %827 ], [ false, %833 ], [ false, %849 ], [ false, %893 ], [ true, %913 ], [ false, %919 ], [ false, %935 ], [ false, %979 ], [ true, %999 ], [ false, %1005 ], [ false, %1021 ], [ false, %1068 ], [ true, %1088 ], [ false, %1094 ], [ false, %1110 ], [ false, %1155 ], [ true, %1175 ], [ false, %1181 ], [ false, %1197 ], [ false, %1245 ], [ true, %1265 ], [ false, %nstrace_ensure_buflen.exit ], [ false, %nstrace_ensure_buflen.exit1131 ], [ false, %nstrace_ensure_buflen.exit1135 ], [ false, %.thread1152 ], [ false, %1286 ], [ false, %nstrace_ensure_buflen.exit1129 ], [ false, %1328 ], [ false, %1391 ], [ false, %1396 ], [ false, %._crit_edge ] +.critedge: ; preds = %._crit_edge, %1399, %1394, %1328, %nstrace_ensure_buflen.exit1129, %1286, %.thread1152, %nstrace_ensure_buflen.exit1135, %nstrace_ensure_buflen.exit1131, %nstrace_ensure_buflen.exit, %1181, %1197, %1245, %1265, %1094, %1110, %1155, %1175, %1005, %1021, %1068, %1088, %919, %935, %979, %999, %833, %849, %893, %913, %750, %766, %807, %827, %667, %683, %724, %744, %587, %603, %641, %661, %491, %507, %561, %581, %398, %414, %465, %485, %303, %319, %372, %392, %211, %227, %277, %297, %118, %134, %185, %205, %28, %44, %92, %112 + %.3 = phi i1 [ false, %28 ], [ false, %44 ], [ false, %92 ], [ true, %112 ], [ false, %118 ], [ false, %134 ], [ false, %185 ], [ true, %205 ], [ false, %211 ], [ false, %227 ], [ false, %277 ], [ true, %297 ], [ false, %303 ], [ false, %319 ], [ false, %372 ], [ true, %392 ], [ false, %398 ], [ false, %414 ], [ false, %465 ], [ true, %485 ], [ false, %491 ], [ false, %507 ], [ false, %561 ], [ true, %581 ], [ false, %587 ], [ false, %603 ], [ false, %641 ], [ true, %661 ], [ false, %667 ], [ false, %683 ], [ false, %724 ], [ true, %744 ], [ false, %750 ], [ false, %766 ], [ false, %807 ], [ true, %827 ], [ false, %833 ], [ false, %849 ], [ false, %893 ], [ true, %913 ], [ false, %919 ], [ false, %935 ], [ false, %979 ], [ true, %999 ], [ false, %1005 ], [ false, %1021 ], [ false, %1068 ], [ true, %1088 ], [ false, %1094 ], [ false, %1110 ], [ false, %1155 ], [ true, %1175 ], [ false, %1181 ], [ false, %1197 ], [ false, %1245 ], [ true, %1265 ], [ false, %nstrace_ensure_buflen.exit ], [ false, %nstrace_ensure_buflen.exit1131 ], [ false, %nstrace_ensure_buflen.exit1135 ], [ false, %.thread1152 ], [ false, %1286 ], [ false, %nstrace_ensure_buflen.exit1129 ], [ false, %1328 ], [ false, %1394 ], [ false, %1399 ], [ false, %._crit_edge ] ret i1 %.3 } diff --git a/bench/wireshark/optimized/packet-atm.ll b/bench/wireshark/optimized/packet-atm.ll index 69fde9141ed..c7a75197d51 100644 --- a/bench/wireshark/optimized/packet-atm.ll +++ b/bench/wireshark/optimized/packet-atm.ll @@ -1374,7 +1374,7 @@ define internal fastcc i32 @dissect_atm_common(ptr noundef %0, ptr noundef %1, p switch i8 %196, label %.thread.i [ i8 6, label %197 i8 4, label %203 - i8 2, label %262 + i8 2, label %259 ] 197: ; preds = %195 @@ -1428,128 +1428,125 @@ define internal fastcc i32 @dissect_atm_common(ptr noundef %0, ptr noundef %1, p br i1 %226, label %.thread205.i, label %227 227: ; preds = %225 - %228 = zext i8 %220 to i16 - %229 = zext i8 %217 to i16 - %230 = shl nuw i16 %229, 8 - %231 = or disjoint i16 %230, %228 - %232 = icmp eq i16 %231, 0 - br i1 %232, label %233, label %237 - -233: ; preds = %227 - %234 = load i32, ptr @hf_atm_padding, align 4 - %235 = call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %234, ptr noundef %0, i32 noundef 0, i32 noundef 2, i32 noundef 0) - %236 = call ptr @tvb_new_subset_remaining(ptr noundef %0, i32 noundef 2) + %228 = or i8 %220, %217 + %229 = icmp eq i8 %228, 0 + br i1 %229, label %230, label %234 + +230: ; preds = %227 + %231 = load i32, ptr @hf_atm_padding, align 4 + %232 = call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %231, ptr noundef %0, i32 noundef 0, i32 noundef 2, i32 noundef 0) + %233 = call ptr @tvb_new_subset_remaining(ptr noundef %0, i32 noundef 2) br label %.thread205.i -237: ; preds = %227 - br i1 %224, label %238, label %._crit_edge.i +234: ; preds = %227 + br i1 %224, label %235, label %._crit_edge.i -._crit_edge.i: ; preds = %237 +._crit_edge.i: ; preds = %234 %.phi.trans.insert.i = getelementptr inbounds nuw i8, ptr %7, i64 4 %.pre.i = load i8, ptr %.phi.trans.insert.i, align 1 - br label %246 + br label %243 -238: ; preds = %237 - %239 = getelementptr inbounds nuw i8, ptr %7, i64 3 - %240 = load i8, ptr %239, align 1 - switch i8 %240, label %241 [ +235: ; preds = %234 + %236 = getelementptr inbounds nuw i8, ptr %7, i64 3 + %237 = load i8, ptr %236, align 1 + switch i8 %237, label %238 [ i8 -52, label %.thread205.i i8 -114, label %.thread205.i ] -241: ; preds = %238 - %242 = icmp eq i8 %240, 0 - %243 = getelementptr inbounds nuw i8, ptr %7, i64 4 - %244 = load i8, ptr %243, align 1 - %245 = icmp eq i8 %244, -128 - %or.cond15.i = select i1 %242, i1 %245, i1 false - br i1 %or.cond15.i, label %.thread205.i, label %246 - -246: ; preds = %241, %._crit_edge.i - %247 = phi i8 [ %.pre.i, %._crit_edge.i ], [ %244, %241 ] - %248 = icmp eq i8 %247, 3 - br i1 %248, label %249, label %257 - -249: ; preds = %246 - %250 = getelementptr inbounds nuw i8, ptr %7, i64 5 - %251 = load i8, ptr %250, align 1 - switch i8 %251, label %252 [ +238: ; preds = %235 + %239 = icmp eq i8 %237, 0 + %240 = getelementptr inbounds nuw i8, ptr %7, i64 4 + %241 = load i8, ptr %240, align 1 + %242 = icmp eq i8 %241, -128 + %or.cond15.i = select i1 %239, i1 %242, i1 false + br i1 %or.cond15.i, label %.thread205.i, label %243 + +243: ; preds = %238, %._crit_edge.i + %244 = phi i8 [ %.pre.i, %._crit_edge.i ], [ %241, %238 ] + %245 = icmp eq i8 %244, 3 + br i1 %245, label %246, label %254 + +246: ; preds = %243 + %247 = getelementptr inbounds nuw i8, ptr %7, i64 5 + %248 = load i8, ptr %247, align 1 + switch i8 %248, label %249 [ i8 -52, label %.thread205.i i8 -114, label %.thread205.i ] -252: ; preds = %249 - %253 = icmp eq i8 %251, 0 - %254 = getelementptr inbounds nuw i8, ptr %7, i64 6 - %255 = load i8, ptr %254, align 1 - %256 = icmp eq i8 %255, -128 - %or.cond23.i = select i1 %253, i1 %256, i1 false - br i1 %or.cond23.i, label %.thread205.i, label %257 - -257: ; preds = %252, %246 - %258 = and i8 %217, -16 - switch i8 %258, label %261 [ +249: ; preds = %246 + %250 = icmp eq i8 %248, 0 + %251 = getelementptr inbounds nuw i8, ptr %7, i64 6 + %252 = load i8, ptr %251, align 1 + %253 = icmp eq i8 %252, -128 + %or.cond23.i = select i1 %250, i1 %253, i1 false + br i1 %or.cond23.i, label %.thread205.i, label %254 + +254: ; preds = %249, %243 + %255 = and i8 %217, -16 + switch i8 %255, label %258 [ i8 64, label %.thread205.i i8 96, label %.thread205.i ] -.thread205.i: ; preds = %257, %257, %252, %249, %249, %241, %238, %238, %233, %225, %215 - %llc_handle.sink.i = phi ptr [ @eth_maybefcs_handle, %233 ], [ @llc_handle, %215 ], [ @ppp_handle, %225 ], [ @fr_handle, %238 ], [ @fr_handle, %238 ], [ @fr_handle, %241 ], [ @fr_handle, %249 ], [ @fr_handle, %249 ], [ @fr_handle, %252 ], [ @ip_handle, %257 ], [ @ip_handle, %257 ] - %.0.sink.i = phi ptr [ %236, %233 ], [ %.0.i, %215 ], [ %.0.i, %225 ], [ %.0.i, %238 ], [ %.0.i, %238 ], [ %.0.i, %241 ], [ %.0.i, %249 ], [ %.0.i, %249 ], [ %.0.i, %252 ], [ %.0.i, %257 ], [ %.0.i, %257 ] - %259 = load ptr, ptr %llc_handle.sink.i, align 8 - %260 = call i32 @call_dissector(ptr noundef %259, ptr noundef %.0.sink.i, ptr noundef %1, ptr noundef %2) +.thread205.i: ; preds = %254, %254, %249, %246, %246, %238, %235, %235, %230, %225, %215 + %llc_handle.sink.i = phi ptr [ @eth_maybefcs_handle, %230 ], [ @llc_handle, %215 ], [ @ppp_handle, %225 ], [ @fr_handle, %235 ], [ @fr_handle, %235 ], [ @fr_handle, %238 ], [ @fr_handle, %246 ], [ @fr_handle, %246 ], [ @fr_handle, %249 ], [ @ip_handle, %254 ], [ @ip_handle, %254 ] + %.0.sink.i = phi ptr [ %233, %230 ], [ %.0.i, %215 ], [ %.0.i, %225 ], [ %.0.i, %235 ], [ %.0.i, %235 ], [ %.0.i, %238 ], [ %.0.i, %246 ], [ %.0.i, %246 ], [ %.0.i, %249 ], [ %.0.i, %254 ], [ %.0.i, %254 ] + %256 = load ptr, ptr %llc_handle.sink.i, align 8 + %257 = call i32 @call_dissector(ptr noundef %256, ptr noundef %.0.sink.i, ptr noundef %1, ptr noundef %2) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #11 br label %dissect_reassembled_pdu.exit -261: ; preds = %257 +258: ; preds = %254 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #11 br label %.thread.i -262: ; preds = %195 - %263 = load i32, ptr @hf_atm_cid, align 4 - %264 = getelementptr inbounds nuw i8, ptr %4, i64 12 - %265 = load i8, ptr %264, align 4 - %266 = zext i8 %265 to i32 - %267 = tail call ptr @proto_tree_add_uint(ptr noundef %.0, i32 noundef %263, ptr noundef %0, i32 noundef 0, i32 noundef 0, i32 noundef %266) - %268 = load i16, ptr %186, align 4 - %269 = zext i16 %268 to i32 - %270 = load i16, ptr %190, align 2 - %271 = zext i16 %270 to i32 - %272 = load i8, ptr %264, align 4 - %273 = zext i8 %272 to i32 - tail call void (ptr, ptr, ...) @proto_item_append_text(ptr noundef %.050, ptr noundef nonnull @.str.344, i32 noundef %269, i32 noundef %271, i32 noundef %273) - %274 = load i32, ptr %4, align 4 - %275 = and i32 %274, 8 - %.not188.i = icmp eq i32 %275, 0 - br i1 %.not188.i, label %276, label %.thread.i - -276: ; preds = %262 - %277 = and i32 %274, 4 - %.not189.i = icmp eq i32 %277, 0 - br i1 %.not189.i, label %278, label %280 - -278: ; preds = %276 - %279 = tail call ptr @tvb_new_subset_remaining(ptr noundef %0, i32 noundef 4) - br label %280 - -280: ; preds = %278, %276 - %.3.i = phi ptr [ %279, %278 ], [ %0, %276 ] - %281 = load ptr, ptr @atm_type_aal2_table, align 8 - %282 = getelementptr inbounds nuw i8, ptr %4, i64 5 - %283 = load i8, ptr %282, align 1 - %284 = zext i8 %283 to i32 - %285 = tail call i32 @dissector_try_uint(ptr noundef %281, i32 noundef %284, ptr noundef %.3.i, ptr noundef %1, ptr noundef %2) - %.not190.not.i = icmp eq i32 %285, 0 +259: ; preds = %195 + %260 = load i32, ptr @hf_atm_cid, align 4 + %261 = getelementptr inbounds nuw i8, ptr %4, i64 12 + %262 = load i8, ptr %261, align 4 + %263 = zext i8 %262 to i32 + %264 = tail call ptr @proto_tree_add_uint(ptr noundef %.0, i32 noundef %260, ptr noundef %0, i32 noundef 0, i32 noundef 0, i32 noundef %263) + %265 = load i16, ptr %186, align 4 + %266 = zext i16 %265 to i32 + %267 = load i16, ptr %190, align 2 + %268 = zext i16 %267 to i32 + %269 = load i8, ptr %261, align 4 + %270 = zext i8 %269 to i32 + tail call void (ptr, ptr, ...) @proto_item_append_text(ptr noundef %.050, ptr noundef nonnull @.str.344, i32 noundef %266, i32 noundef %268, i32 noundef %270) + %271 = load i32, ptr %4, align 4 + %272 = and i32 %271, 8 + %.not188.i = icmp eq i32 %272, 0 + br i1 %.not188.i, label %273, label %.thread.i + +273: ; preds = %259 + %274 = and i32 %271, 4 + %.not189.i = icmp eq i32 %274, 0 + br i1 %.not189.i, label %275, label %277 + +275: ; preds = %273 + %276 = tail call ptr @tvb_new_subset_remaining(ptr noundef %0, i32 noundef 4) + br label %277 + +277: ; preds = %275, %273 + %.3.i = phi ptr [ %276, %275 ], [ %0, %273 ] + %278 = load ptr, ptr @atm_type_aal2_table, align 8 + %279 = getelementptr inbounds nuw i8, ptr %4, i64 5 + %280 = load i8, ptr %279, align 1 + %281 = zext i8 %280 to i32 + %282 = tail call i32 @dissector_try_uint(ptr noundef %278, i32 noundef %281, ptr noundef %.3.i, ptr noundef %1, ptr noundef %2) + %.not190.not.i = icmp eq i32 %282, 0 br i1 %.not190.not.i, label %.thread.i, label %dissect_reassembled_pdu.exit -.thread.i: ; preds = %280, %262, %261, %212, %203, %197, %195 - %.1199.i = phi ptr [ %.3.i, %280 ], [ %.0.i, %261 ], [ %.0.i, %195 ], [ %.0.i, %262 ], [ %.0.i, %203 ], [ %.0.i, %212 ], [ %.0.i, %197 ] - %286 = call i32 @call_data_dissector(ptr noundef %.1199.i, ptr noundef %1, ptr noundef %2) +.thread.i: ; preds = %277, %259, %258, %212, %203, %197, %195 + %.1199.i = phi ptr [ %.3.i, %277 ], [ %.0.i, %258 ], [ %.0.i, %195 ], [ %.0.i, %259 ], [ %.0.i, %203 ], [ %.0.i, %212 ], [ %.0.i, %197 ] + %283 = call i32 @call_data_dissector(ptr noundef %.1199.i, ptr noundef %1, ptr noundef %2) br label %dissect_reassembled_pdu.exit -dissect_reassembled_pdu.exit: ; preds = %.thread.i, %280, %.thread205.i, %206, %200, %184, %65 - %287 = call i32 @tvb_reported_length(ptr noundef %0) - ret i32 %287 +dissect_reassembled_pdu.exit: ; preds = %.thread.i, %277, %.thread205.i, %206, %200, %184, %65 + %284 = call i32 @tvb_reported_length(ptr noundef %0) + ret i32 %284 } ; Function Attrs: null_pointer_is_valid diff --git a/bench/wireshark/optimized/packet-knet.ll b/bench/wireshark/optimized/packet-knet.ll index f60f1f8c841..5be4a0c30bb 100644 --- a/bench/wireshark/optimized/packet-knet.ll +++ b/bench/wireshark/optimized/packet-knet.ll @@ -239,94 +239,91 @@ define internal i32 @dissect_knet_udp(ptr noundef %0, ptr noundef readonly captu br i1 %48, label %.lr.ph, label %.critedge .lr.ph: ; preds = %46, %dissect_knet_message.exit - %.040 = phi i32 [ %100, %dissect_knet_message.exit ], [ 0, %46 ] - %.139 = phi i32 [ %99, %dissect_knet_message.exit ], [ %.035, %46 ] + %.040 = phi i32 [ %98, %dissect_knet_message.exit ], [ 0, %46 ] + %.139 = phi i32 [ %97, %dissect_knet_message.exit ], [ %.035, %46 ] %49 = shl i32 %.139, 3 %50 = add i32 %49, 12 %51 = tail call zeroext i8 @tvb_get_bits8(ptr noundef %0, i32 noundef %50, i32 noundef 4) - %52 = zext i8 %51 to i32 - %53 = shl nuw nsw i32 %52, 8 - %54 = tail call zeroext i8 @tvb_get_bits8(ptr noundef %0, i32 noundef %49, i32 noundef 8) - %55 = zext i8 %54 to i32 - %56 = or disjoint i32 %53, %55 - %.not36 = icmp eq i32 %56, 0 - br i1 %.not36, label %.critedge, label %57 - -57: ; preds = %.lr.ph + %52 = tail call zeroext i8 @tvb_get_bits8(ptr noundef %0, i32 noundef %49, i32 noundef 8) + %53 = or i8 %52, %51 + %54 = icmp eq i8 %53, 0 + br i1 %54, label %.critedge, label %55 + +55: ; preds = %.lr.ph call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) - %58 = load i32, ptr @hf_knet_message_tree, align 4 - %59 = tail call ptr @proto_tree_add_item(ptr noundef %12, i32 noundef %58, ptr noundef %0, i32 noundef %.139, i32 noundef -1, i32 noundef 0) - %60 = load i32, ptr @ett_knet_message, align 4 - %61 = tail call ptr @proto_item_add_subtree(ptr noundef %59, i32 noundef %60) - %62 = tail call zeroext i8 @tvb_get_bits8(ptr noundef %0, i32 noundef %50, i32 noundef 4) - %63 = zext i8 %62 to i32 - %64 = shl nuw nsw i32 %63, 8 - %65 = tail call zeroext i8 @tvb_get_bits8(ptr noundef %0, i32 noundef %49, i32 noundef 8) - %66 = zext i8 %65 to i32 - %67 = or disjoint i32 %64, %66 - %.not.i38 = icmp eq ptr %61, null - br i1 %.not.i38, label %.dissect_content_length.exit_crit_edge, label %68 - -.dissect_content_length.exit_crit_edge: ; preds = %57 + %56 = load i32, ptr @hf_knet_message_tree, align 4 + %57 = tail call ptr @proto_tree_add_item(ptr noundef %12, i32 noundef %56, ptr noundef %0, i32 noundef %.139, i32 noundef -1, i32 noundef 0) + %58 = load i32, ptr @ett_knet_message, align 4 + %59 = tail call ptr @proto_item_add_subtree(ptr noundef %57, i32 noundef %58) + %60 = tail call zeroext i8 @tvb_get_bits8(ptr noundef %0, i32 noundef %50, i32 noundef 4) + %61 = zext i8 %60 to i32 + %62 = shl nuw nsw i32 %61, 8 + %63 = tail call zeroext i8 @tvb_get_bits8(ptr noundef %0, i32 noundef %49, i32 noundef 8) + %64 = zext i8 %63 to i32 + %65 = or disjoint i32 %62, %64 + %.not.i38 = icmp eq ptr %59, null + br i1 %.not.i38, label %.dissect_content_length.exit_crit_edge, label %66 + +.dissect_content_length.exit_crit_edge: ; preds = %55 %.pre = add i32 %.139, 1 br label %dissect_content_length.exit -68: ; preds = %57 - %69 = load i32, ptr @hf_knet_msg_flags, align 4 - %70 = add i32 %.139, 1 - %71 = tail call ptr @proto_tree_add_item(ptr noundef nonnull %61, i32 noundef %69, ptr noundef %0, i32 noundef %70, i32 noundef 1, i32 noundef 0) - %72 = load i32, ptr @ett_knet_message_flags, align 4 - %73 = tail call ptr @proto_item_add_subtree(ptr noundef %71, i32 noundef %72) - %74 = load i32, ptr @hf_knet_msg_fs, align 4 - %75 = tail call ptr @proto_tree_add_item(ptr noundef %73, i32 noundef %74, ptr noundef %0, i32 noundef %70, i32 noundef 1, i32 noundef 0) - %76 = load i32, ptr @hf_knet_msg_ff, align 4 - %77 = tail call ptr @proto_tree_add_item(ptr noundef %73, i32 noundef %76, ptr noundef %0, i32 noundef %70, i32 noundef 1, i32 noundef 0) - %78 = load i32, ptr @hf_knet_msg_inorder, align 4 - %79 = tail call ptr @proto_tree_add_item(ptr noundef %73, i32 noundef %78, ptr noundef %0, i32 noundef %70, i32 noundef 1, i32 noundef 0) - %80 = load i32, ptr @hf_knet_msg_reliable, align 4 - %81 = tail call ptr @proto_tree_add_item(ptr noundef %73, i32 noundef %80, ptr noundef %0, i32 noundef %70, i32 noundef 1, i32 noundef 0) - %82 = load i32, ptr @hf_knet_content_length, align 4 - %83 = tail call ptr @proto_tree_add_uint(ptr noundef nonnull %61, i32 noundef %82, ptr noundef %0, i32 noundef %.139, i32 noundef 2, i32 noundef %67) +66: ; preds = %55 + %67 = load i32, ptr @hf_knet_msg_flags, align 4 + %68 = add i32 %.139, 1 + %69 = tail call ptr @proto_tree_add_item(ptr noundef nonnull %59, i32 noundef %67, ptr noundef %0, i32 noundef %68, i32 noundef 1, i32 noundef 0) + %70 = load i32, ptr @ett_knet_message_flags, align 4 + %71 = tail call ptr @proto_item_add_subtree(ptr noundef %69, i32 noundef %70) + %72 = load i32, ptr @hf_knet_msg_fs, align 4 + %73 = tail call ptr @proto_tree_add_item(ptr noundef %71, i32 noundef %72, ptr noundef %0, i32 noundef %68, i32 noundef 1, i32 noundef 0) + %74 = load i32, ptr @hf_knet_msg_ff, align 4 + %75 = tail call ptr @proto_tree_add_item(ptr noundef %71, i32 noundef %74, ptr noundef %0, i32 noundef %68, i32 noundef 1, i32 noundef 0) + %76 = load i32, ptr @hf_knet_msg_inorder, align 4 + %77 = tail call ptr @proto_tree_add_item(ptr noundef %71, i32 noundef %76, ptr noundef %0, i32 noundef %68, i32 noundef 1, i32 noundef 0) + %78 = load i32, ptr @hf_knet_msg_reliable, align 4 + %79 = tail call ptr @proto_tree_add_item(ptr noundef %71, i32 noundef %78, ptr noundef %0, i32 noundef %68, i32 noundef 1, i32 noundef 0) + %80 = load i32, ptr @hf_knet_content_length, align 4 + %81 = tail call ptr @proto_tree_add_uint(ptr noundef nonnull %59, i32 noundef %80, ptr noundef %0, i32 noundef %.139, i32 noundef 2, i32 noundef %65) br label %dissect_content_length.exit -dissect_content_length.exit: ; preds = %.dissect_content_length.exit_crit_edge, %68 - %.pre-phi = phi i32 [ %.pre, %.dissect_content_length.exit_crit_edge ], [ %70, %68 ] - %84 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %.pre-phi) - %85 = and i8 %84, 16 - %.not.i37 = icmp eq i8 %85, 0 - br i1 %.not.i37, label %dissect_knet_message.exit, label %86 - -86: ; preds = %dissect_content_length.exit - %87 = add i32 %.139, 2 - %88 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %87) - %.not.i.i = icmp sgt i8 %88, -1 +dissect_content_length.exit: ; preds = %.dissect_content_length.exit_crit_edge, %66 + %.pre-phi = phi i32 [ %.pre, %.dissect_content_length.exit_crit_edge ], [ %68, %66 ] + %82 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %.pre-phi) + %83 = and i8 %82, 16 + %.not.i37 = icmp eq i8 %83, 0 + br i1 %.not.i37, label %dissect_knet_message.exit, label %84 + +84: ; preds = %dissect_content_length.exit + %85 = add i32 %.139, 2 + %86 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %85) + %.not.i.i = icmp sgt i8 %86, -1 %spec.select.i.i = select i1 %.not.i.i, i32 1, i32 2 - %89 = load i32, ptr @hf_knet_msg_reliable_message_number, align 4 - %90 = tail call ptr @proto_tree_add_item(ptr noundef %61, i32 noundef %89, ptr noundef %0, i32 noundef %87, i32 noundef %spec.select.i.i, i32 noundef -2147483648) - %91 = add i32 %spec.select.i.i, %.139 + %87 = load i32, ptr @hf_knet_msg_reliable_message_number, align 4 + %88 = tail call ptr @proto_tree_add_item(ptr noundef %59, i32 noundef %87, ptr noundef %0, i32 noundef %85, i32 noundef %spec.select.i.i, i32 noundef -2147483648) + %89 = add i32 %spec.select.i.i, %.139 br label %dissect_knet_message.exit -dissect_knet_message.exit: ; preds = %dissect_content_length.exit, %86 - %92 = phi i32 [ %91, %86 ], [ %.139, %dissect_content_length.exit ] - %93 = add i32 %92, 2 - store i32 %93, ptr %5, align 4 - %94 = sub i32 %67, %.139 - %95 = add i32 %94, %93 - tail call void @proto_item_set_len(ptr noundef %59, i32 noundef %95) - %96 = icmp ne i32 %.040, 0 - %97 = call fastcc i32 @dissect_messageid(ptr noundef %0, ptr noundef nonnull %5, ptr noundef %61, ptr noundef readonly %1, i1 noundef zeroext %96) - %98 = load i32, ptr %5, align 4 - tail call fastcc void @dissect_payload(ptr noundef %0, i32 noundef %98, i32 noundef %97, ptr noundef %61, i32 noundef %67) +dissect_knet_message.exit: ; preds = %dissect_content_length.exit, %84 + %90 = phi i32 [ %89, %84 ], [ %.139, %dissect_content_length.exit ] + %91 = add i32 %90, 2 + store i32 %91, ptr %5, align 4 + %92 = sub i32 %65, %.139 + %93 = add i32 %92, %91 + tail call void @proto_item_set_len(ptr noundef %57, i32 noundef %93) + %94 = icmp ne i32 %.040, 0 + %95 = call fastcc i32 @dissect_messageid(ptr noundef %0, ptr noundef nonnull %5, ptr noundef %59, ptr noundef readonly %1, i1 noundef zeroext %94) + %96 = load i32, ptr %5, align 4 + tail call fastcc void @dissect_payload(ptr noundef %0, i32 noundef %96, i32 noundef %95, ptr noundef %59, i32 noundef %65) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) - %99 = add i32 %93, %67 - %100 = add i32 %.040, 1 - %101 = tail call i32 @tvb_reported_length_remaining(ptr noundef %0, i32 noundef %99) - %102 = icmp sgt i32 %101, 2 - br i1 %102, label %.lr.ph, label %.critedge, !llvm.loop !6 + %97 = add i32 %91, %65 + %98 = add i32 %.040, 1 + %99 = tail call i32 @tvb_reported_length_remaining(ptr noundef %0, i32 noundef %97) + %100 = icmp sgt i32 %99, 2 + br i1 %100, label %.lr.ph, label %.critedge, !llvm.loop !6 .critedge: ; preds = %.lr.ph, %dissect_knet_message.exit, %46 - %103 = tail call i32 @tvb_captured_length(ptr noundef %0) - ret i32 %103 + %101 = tail call i32 @tvb_captured_length(ptr noundef %0) + ret i32 %101 } ; Function Attrs: null_pointer_is_valid sspstrong uwtable diff --git a/bench/wireshark/optimized/packet-opensafety.ll b/bench/wireshark/optimized/packet-opensafety.ll index 74327e1bdf3..08386e08cb7 100644 --- a/bench/wireshark/optimized/packet-opensafety.ll +++ b/bench/wireshark/optimized/packet-opensafety.ll @@ -1769,14 +1769,14 @@ findFrame1Position.exit.thread291: ; preds = %76 store i32 %59, ptr %10, align 4 br label %.backedge -.backedge: ; preds = %294, %301, %findFrame1Position.exit.thread291, %167, %169, %178, %226, %197, %290 - %92 = phi i32 [ %59, %findFrame1Position.exit.thread291 ], [ %179, %178 ], [ %storemerge, %197 ], [ %227, %226 ], [ %293, %290 ], [ %168, %167 ], [ %170, %169 ], [ %302, %301 ], [ %298, %294 ] - %.0250.be = phi i8 [ %.0250324, %findFrame1Position.exit.thread291 ], [ %.0250324, %178 ], [ %.0250324, %197 ], [ %.0250324, %226 ], [ %.0250324, %290 ], [ %.0250324, %167 ], [ %.0250324, %169 ], [ 1, %301 ], [ 1, %294 ] - %.0246.be = phi i1 [ %.0246325, %findFrame1Position.exit.thread291 ], [ %.0246325, %178 ], [ %.0246325, %197 ], [ %.0246325, %226 ], [ %.0246325, %290 ], [ %.0246325, %167 ], [ %.0246325, %169 ], [ true, %301 ], [ true, %294 ] - %.0240.be = phi i1 [ %.0240326, %findFrame1Position.exit.thread291 ], [ %.0240326, %178 ], [ %.0240326, %197 ], [ %spec.select277, %226 ], [ %.1241, %290 ], [ %.0240326, %167 ], [ %.0240326, %169 ], [ %.1241, %301 ], [ %.1241, %294 ] - %.0236.be = phi i8 [ %.0236328, %findFrame1Position.exit.thread291 ], [ %.0236328, %178 ], [ %.0236328, %197 ], [ %.0236328, %226 ], [ %.0236328, %290 ], [ %.0236328, %167 ], [ %.0236328, %169 ], [ %.6304, %301 ], [ %.6304, %294 ] - %.0233.be = phi i32 [ %.0233329, %findFrame1Position.exit.thread291 ], [ %.0233329, %178 ], [ %.0233329, %197 ], [ %.0233329, %226 ], [ %.0233329, %290 ], [ %.0233329, %167 ], [ %.0233329, %169 ], [ %59, %301 ], [ %59, %294 ] - %.0231.be = phi i8 [ %.0231330, %findFrame1Position.exit.thread291 ], [ %.0231330, %178 ], [ %.0231330, %197 ], [ %.0231330, %226 ], [ %.0231330, %290 ], [ %.0231330, %167 ], [ %.0231330, %169 ], [ %286, %301 ], [ %286, %294 ] +.backedge: ; preds = %291, %298, %findFrame1Position.exit.thread291, %167, %169, %178, %223, %197, %287 + %92 = phi i32 [ %59, %findFrame1Position.exit.thread291 ], [ %179, %178 ], [ %storemerge, %197 ], [ %224, %223 ], [ %290, %287 ], [ %168, %167 ], [ %170, %169 ], [ %299, %298 ], [ %295, %291 ] + %.0250.be = phi i8 [ %.0250324, %findFrame1Position.exit.thread291 ], [ %.0250324, %178 ], [ %.0250324, %197 ], [ %.0250324, %223 ], [ %.0250324, %287 ], [ %.0250324, %167 ], [ %.0250324, %169 ], [ 1, %298 ], [ 1, %291 ] + %.0246.be = phi i1 [ %.0246325, %findFrame1Position.exit.thread291 ], [ %.0246325, %178 ], [ %.0246325, %197 ], [ %.0246325, %223 ], [ %.0246325, %287 ], [ %.0246325, %167 ], [ %.0246325, %169 ], [ true, %298 ], [ true, %291 ] + %.0240.be = phi i1 [ %.0240326, %findFrame1Position.exit.thread291 ], [ %.0240326, %178 ], [ %.0240326, %197 ], [ %spec.select277, %223 ], [ %.1241, %287 ], [ %.0240326, %167 ], [ %.0240326, %169 ], [ %.1241, %298 ], [ %.1241, %291 ] + %.0236.be = phi i8 [ %.0236328, %findFrame1Position.exit.thread291 ], [ %.0236328, %178 ], [ %.0236328, %197 ], [ %.0236328, %223 ], [ %.0236328, %287 ], [ %.0236328, %167 ], [ %.0236328, %169 ], [ %.6304, %298 ], [ %.6304, %291 ] + %.0233.be = phi i32 [ %.0233329, %findFrame1Position.exit.thread291 ], [ %.0233329, %178 ], [ %.0233329, %197 ], [ %.0233329, %223 ], [ %.0233329, %287 ], [ %.0233329, %167 ], [ %.0233329, %169 ], [ %59, %298 ], [ %59, %291 ] + %.0231.be = phi i8 [ %.0231330, %findFrame1Position.exit.thread291 ], [ %.0231330, %178 ], [ %.0231330, %197 ], [ %.0231330, %223 ], [ %.0231330, %287 ], [ %.0231330, %167 ], [ %.0231330, %169 ], [ %283, %298 ], [ %283, %291 ] %93 = icmp ult i32 %92, %13 br i1 %93, label %44, label %._crit_edge333, !llvm.loop !13 @@ -1994,214 +1994,211 @@ findFrame1Position.exit286: ; preds = %143, %144, %150 ._crit_edge355: ; preds = %.thread362 %.pre358 = add nuw nsw i32 %96, %182 %.pre360 = add nuw nsw i32 %.pre358, 1 - br label %228 + br label %225 211: ; preds = %198 %212 = add nuw nsw i32 %96, %.pre357 %213 = call zeroext i8 @tvb_get_uint8(ptr noundef %.0226, i32 noundef %212) - %214 = zext i8 %213 to i32 - %215 = add nuw nsw i32 %212, 1 - %216 = call zeroext i8 @tvb_get_uint8(ptr noundef %.0226, i32 noundef %215) - %217 = shl i8 %216, 6 - %218 = zext i8 %217 to i32 - %219 = shl nuw nsw i32 %218, 2 - %220 = or disjoint i32 %219, %214 - %221 = icmp eq i32 %220, 0 - %spec.select277 = select i1 %221, i1 true, i1 %.0240326 - %222 = add nuw nsw i32 %97, %.pre357 - %223 = call zeroext i8 @tvb_get_uint8(ptr noundef %.0226, i32 noundef %222) - %224 = and i8 %223, -4 - %225 = icmp eq i8 %224, -40 - br i1 %225, label %226, label %228 - -226: ; preds = %211 - %227 = add i32 %57, 2 - store i32 %227, ptr %10, align 4 + %214 = add nuw nsw i32 %212, 1 + %215 = call zeroext i8 @tvb_get_uint8(ptr noundef %.0226, i32 noundef %214) + %216 = shl i8 %215, 6 + %217 = or i8 %216, %213 + %218 = icmp eq i8 %217, 0 + %spec.select277 = select i1 %218, i1 true, i1 %.0240326 + %219 = add nuw nsw i32 %97, %.pre357 + %220 = call zeroext i8 @tvb_get_uint8(ptr noundef %.0226, i32 noundef %219) + %221 = and i8 %220, -4 + %222 = icmp eq i8 %221, -40 + br i1 %222, label %223, label %225 + +223: ; preds = %211 + %224 = add i32 %57, 2 + store i32 %224, ptr %10, align 4 br label %.backedge -228: ; preds = %._crit_edge355, %211 - %.pre-phi361 = phi i32 [ %.pre360, %._crit_edge355 ], [ %215, %211 ] +225: ; preds = %._crit_edge355, %211 + %.pre-phi361 = phi i32 [ %.pre360, %._crit_edge355 ], [ %214, %211 ] %.pre-phi359 = phi i32 [ %.pre358, %._crit_edge355 ], [ %212, %211 ] %.1241 = phi i1 [ %.0240326, %._crit_edge355 ], [ %spec.select277, %211 ] - %229 = call zeroext i8 @tvb_get_uint8(ptr noundef %.0226, i32 noundef %.pre-phi359) + %226 = call zeroext i8 @tvb_get_uint8(ptr noundef %.0226, i32 noundef %.pre-phi359) + %227 = zext i8 %226 to i32 + %228 = call zeroext i8 @tvb_get_uint8(ptr noundef %.0226, i32 noundef %.pre-phi361) + %229 = shl i8 %228, 6 %230 = zext i8 %229 to i32 - %231 = call zeroext i8 @tvb_get_uint8(ptr noundef %.0226, i32 noundef %.pre-phi361) - %232 = shl i8 %231, 6 - %233 = zext i8 %232 to i32 - %234 = shl nuw nsw i32 %233, 2 - %235 = or disjoint i32 %234, %230 - %236 = load ptr, ptr @global_filter_list, align 8 - %.not268 = icmp eq ptr %236, null - br i1 %.not268, label %.thread297, label %237 - -237: ; preds = %228 - %238 = call i32 @wmem_list_count(ptr noundef nonnull %236) - %.not269 = icmp eq i32 %238, 0 - br i1 %.not269, label %.thread297, label %239 - -239: ; preds = %237 - %240 = load ptr, ptr @global_filter_list, align 8 - %241 = zext nneg i32 %235 to i64 - %242 = inttoptr i64 %241 to ptr - %243 = call ptr @wmem_list_find(ptr noundef %240, ptr noundef %242) - %244 = load i8, ptr @global_show_only_node_in_filter, align 1, !range !6, !noundef !7 + %231 = shl nuw nsw i32 %230, 2 + %232 = or disjoint i32 %231, %227 + %233 = load ptr, ptr @global_filter_list, align 8 + %.not268 = icmp eq ptr %233, null + br i1 %.not268, label %.thread297, label %234 + +234: ; preds = %225 + %235 = call i32 @wmem_list_count(ptr noundef nonnull %233) + %.not269 = icmp eq i32 %235, 0 + br i1 %.not269, label %.thread297, label %236 + +236: ; preds = %234 + %237 = load ptr, ptr @global_filter_list, align 8 + %238 = zext nneg i32 %232 to i64 + %239 = inttoptr i64 %238 to ptr + %240 = call ptr @wmem_list_find(ptr noundef %237, ptr noundef %239) + %241 = load i8, ptr @global_show_only_node_in_filter, align 1, !range !6, !noundef !7 + %242 = trunc nuw i8 %241 to i1 + %243 = icmp eq ptr %240, null + %or.cond278 = xor i1 %243, %242 + br i1 %or.cond278, label %.thread297, label %287 + +.thread297: ; preds = %236, %234, %225 + %244 = load i8, ptr @global_display_intergap_data, align 1, !range !6, !noundef !7 %245 = trunc nuw i8 %244 to i1 - %246 = icmp eq ptr %243, null - %or.cond278 = xor i1 %246, %245 - br i1 %or.cond278, label %.thread297, label %290 - -.thread297: ; preds = %239, %237, %228 - %247 = load i8, ptr @global_display_intergap_data, align 1, !range !6, !noundef !7 - %248 = trunc nuw i8 %247 to i1 %.not270 = icmp ne i32 %.0233329, %57 - %or.cond368.not = select i1 %248, i1 %.not270, i1 false - br i1 %or.cond368.not, label %249, label %254 - -249: ; preds = %.thread297 - %250 = sub i32 %57, %.0233329 - %251 = call ptr @tvb_new_subset_length_caplen(ptr noundef %.0226, i32 noundef %.0233329, i32 noundef %250, i32 noundef %21) - %252 = load ptr, ptr @data_dissector, align 8 - %253 = call i32 @call_dissector(ptr noundef %252, ptr noundef %251, ptr noundef %6, ptr noundef %7) - br label %254 - -254: ; preds = %249, %.thread297 - %255 = call ptr @tvb_new_subset_length_caplen(ptr noundef %.0226, i32 noundef %57, i32 noundef %58, i32 noundef %21) - call void @add_new_data_source(ptr noundef %6, ptr noundef %255, ptr noundef nonnull @.str.352) - br i1 %.not271, label %257, label %.thread301 - -.thread301: ; preds = %254 - %256 = load ptr, ptr %43, align 8 - call void @col_set_str(ptr noundef %256, i32 noundef 35, ptr noundef %0) - br label %264 - -257: ; preds = %254 - br i1 %.0246325, label %264, label %258 - -258: ; preds = %257 - br i1 %.not265.not, label %261, label %259 - -259: ; preds = %258 - %260 = call i32 @call_dissector(ptr noundef %.0225, ptr noundef %.0226, ptr noundef %6, ptr noundef %7) + %or.cond368.not = select i1 %245, i1 %.not270, i1 false + br i1 %or.cond368.not, label %246, label %251 + +246: ; preds = %.thread297 + %247 = sub i32 %57, %.0233329 + %248 = call ptr @tvb_new_subset_length_caplen(ptr noundef %.0226, i32 noundef %.0233329, i32 noundef %247, i32 noundef %21) + %249 = load ptr, ptr @data_dissector, align 8 + %250 = call i32 @call_dissector(ptr noundef %249, ptr noundef %248, ptr noundef %6, ptr noundef %7) + br label %251 + +251: ; preds = %246, %.thread297 + %252 = call ptr @tvb_new_subset_length_caplen(ptr noundef %.0226, i32 noundef %57, i32 noundef %58, i32 noundef %21) + call void @add_new_data_source(ptr noundef %6, ptr noundef %252, ptr noundef nonnull @.str.352) + br i1 %.not271, label %254, label %.thread301 + +.thread301: ; preds = %251 + %253 = load ptr, ptr %43, align 8 + call void @col_set_str(ptr noundef %253, i32 noundef 35, ptr noundef %0) + br label %261 + +254: ; preds = %251 + br i1 %.0246325, label %261, label %255 + +255: ; preds = %254 + br i1 %.not265.not, label %258, label %256 + +256: ; preds = %255 + %257 = call i32 @call_dissector(ptr noundef %.0225, ptr noundef %.0226, ptr noundef %6, ptr noundef %7) %.pre.pre.pre = load i32, ptr %10, align 4 %.pre350.pre.pre = load i32, ptr %11, align 4 + br label %258 + +258: ; preds = %256, %255 + %.pre350.pre = phi i32 [ %.pre350.pre.pre, %256 ], [ %58, %255 ] + %.pre.pre = phi i32 [ %.pre.pre.pre, %256 ], [ %57, %255 ] + %259 = load ptr, ptr %43, align 8 + call void @col_set_str(ptr noundef %259, i32 noundef 35, ptr noundef %0) + %260 = load ptr, ptr %43, align 8 + call void @col_clear(ptr noundef %260, i32 noundef 25) br label %261 -261: ; preds = %259, %258 - %.pre350.pre = phi i32 [ %.pre350.pre.pre, %259 ], [ %58, %258 ] - %.pre.pre = phi i32 [ %.pre.pre.pre, %259 ], [ %57, %258 ] - %262 = load ptr, ptr %43, align 8 - call void @col_set_str(ptr noundef %262, i32 noundef 35, ptr noundef %0) - %263 = load ptr, ptr %43, align 8 - call void @col_clear(ptr noundef %263, i32 noundef 25) - br label %264 - -264: ; preds = %.thread301, %261, %257 - %.pre350 = phi i32 [ %58, %257 ], [ %.pre350.pre, %261 ], [ %58, %.thread301 ] - %.pre = phi i32 [ %57, %257 ], [ %.pre.pre, %261 ], [ %57, %.thread301 ] - %.6304.in = phi i8 [ %.0236328, %257 ], [ %.0236328, %261 ], [ %4, %.thread301 ] +261: ; preds = %.thread301, %258, %254 + %.pre350 = phi i32 [ %58, %254 ], [ %.pre350.pre, %258 ], [ %58, %.thread301 ] + %.pre = phi i32 [ %57, %254 ], [ %.pre.pre, %258 ], [ %57, %.thread301 ] + %.6304.in = phi i8 [ %.0236328, %254 ], [ %.0236328, %258 ], [ %4, %.thread301 ] %.6304 = add i8 %.6304.in, 1 - br i1 %.not272, label %270, label %265 - -265: ; preds = %264 - %266 = load i32, ptr @proto_opensafety, align 4 - %267 = call ptr @proto_tree_add_item(ptr noundef nonnull %7, i32 noundef %266, ptr noundef %.0226, i32 noundef %.pre, i32 noundef %.pre350, i32 noundef 0) - %268 = load i32, ptr @ett_opensafety, align 4 - %269 = call ptr @proto_item_add_subtree(ptr noundef %267, i32 noundef %268) - br label %270 - -270: ; preds = %264, %265 - %.0224 = phi ptr [ %267, %265 ], [ null, %264 ] - %.0223 = phi ptr [ %269, %265 ], [ null, %264 ] - %271 = getelementptr inbounds nuw i8, ptr %50, i64 34 - store i8 %.0239, ptr %271, align 2 - %272 = getelementptr inbounds nuw i8, ptr %50, i64 16 - store ptr %255, ptr %272, align 8 - %273 = call i32 @tvb_raw_offset(ptr noundef %.0226) - %274 = add i32 %273, %.pre - %275 = trunc i32 %274 to i16 - %276 = getelementptr inbounds nuw i8, ptr %50, i64 12 - store i16 %275, ptr %276, align 4 - %277 = getelementptr inbounds nuw i8, ptr %50, i64 2 - store i16 %.1230, ptr %277, align 2 - %278 = getelementptr inbounds nuw i8, ptr %50, i64 4 - store i16 %.1228, ptr %278, align 4 - %279 = getelementptr inbounds nuw i8, ptr %50, i64 8 - store i32 %.pre350, ptr %279, align 8 + br i1 %.not272, label %267, label %262 + +262: ; preds = %261 + %263 = load i32, ptr @proto_opensafety, align 4 + %264 = call ptr @proto_tree_add_item(ptr noundef nonnull %7, i32 noundef %263, ptr noundef %.0226, i32 noundef %.pre, i32 noundef %.pre350, i32 noundef 0) + %265 = load i32, ptr @ett_opensafety, align 4 + %266 = call ptr @proto_item_add_subtree(ptr noundef %264, i32 noundef %265) + br label %267 + +267: ; preds = %261, %262 + %.0224 = phi ptr [ %264, %262 ], [ null, %261 ] + %.0223 = phi ptr [ %266, %262 ], [ null, %261 ] + %268 = getelementptr inbounds nuw i8, ptr %50, i64 34 + store i8 %.0239, ptr %268, align 2 + %269 = getelementptr inbounds nuw i8, ptr %50, i64 16 + store ptr %252, ptr %269, align 8 + %270 = call i32 @tvb_raw_offset(ptr noundef %.0226) + %271 = add i32 %270, %.pre + %272 = trunc i32 %271 to i16 + %273 = getelementptr inbounds nuw i8, ptr %50, i64 12 + store i16 %272, ptr %273, align 4 + %274 = getelementptr inbounds nuw i8, ptr %50, i64 2 + store i16 %.1230, ptr %274, align 2 + %275 = getelementptr inbounds nuw i8, ptr %50, i64 4 + store i16 %.1228, ptr %275, align 4 + %276 = getelementptr inbounds nuw i8, ptr %50, i64 8 + store i32 %.pre350, ptr %276, align 8 store i8 0, ptr %50, align 8 - %280 = load i8, ptr %271, align 2 - %281 = icmp eq i8 %280, -64 - br i1 %281, label %282, label %285 - -282: ; preds = %270 + %277 = load i8, ptr %268, align 2 + %278 = icmp eq i8 %277, -64 + br i1 %278, label %279, label %282 + +279: ; preds = %267 + %280 = load i8, ptr %53, align 1 + %281 = and i8 %280, -8 + store i8 %281, ptr %53, align 1 + br label %282 + +282: ; preds = %279, %267 + call fastcc void @dissect_opensafety_message(ptr noundef %50, ptr noundef %252, ptr noundef %6, ptr noundef %.0224, ptr noundef %.0223, i8 noundef zeroext %.6304, i8 noundef zeroext %.0231330) %283 = load i8, ptr %53, align 1 - %284 = and i8 %283, -8 - store i8 %284, ptr %53, align 1 - br label %285 - -285: ; preds = %282, %270 - call fastcc void @dissect_opensafety_message(ptr noundef %50, ptr noundef %255, ptr noundef %6, ptr noundef %.0224, ptr noundef %.0223, i8 noundef zeroext %.6304, i8 noundef zeroext %.0231330) - %286 = load i8, ptr %53, align 1 - br i1 %.1241, label %287, label %294 + br i1 %.1241, label %284, label %291 -287: ; preds = %285 +284: ; preds = %282 store i8 1, ptr %50, align 8 - %288 = call zeroext i8 @tvb_get_uint8(ptr noundef %.0226, i32 noundef %.pre-phi359) - %289 = call zeroext i8 @tvb_get_uint8(ptr noundef %.0226, i32 noundef %.pre-phi361) - br label %294 - -290: ; preds = %239 - %291 = load i32, ptr @proto_opensafety, align 4 - %292 = call ptr @proto_tree_add_item(ptr noundef %7, i32 noundef %291, ptr noundef %.0226, i32 noundef %57, i32 noundef %58, i32 noundef 0) - call void (ptr, ptr, ...) @proto_item_append_text(ptr noundef %292, ptr noundef nonnull @.str.351, i32 noundef %235, i32 noundef %235) - %293 = add i32 %57, 2 - store i32 %293, ptr %10, align 4 + %285 = call zeroext i8 @tvb_get_uint8(ptr noundef %.0226, i32 noundef %.pre-phi359) + %286 = call zeroext i8 @tvb_get_uint8(ptr noundef %.0226, i32 noundef %.pre-phi361) + br label %291 + +287: ; preds = %236 + %288 = load i32, ptr @proto_opensafety, align 4 + %289 = call ptr @proto_tree_add_item(ptr noundef %7, i32 noundef %288, ptr noundef %.0226, i32 noundef %57, i32 noundef %58, i32 noundef 0) + call void (ptr, ptr, ...) @proto_item_append_text(ptr noundef %289, ptr noundef nonnull @.str.351, i32 noundef %232, i32 noundef %232) + %290 = add i32 %57, 2 + store i32 %290, ptr %10, align 4 br label %.backedge -294: ; preds = %285, %287 - %295 = load i32, ptr @opensafety_tap, align 4 - call void @tap_queue_packet(i32 noundef %295, ptr noundef %6, ptr noundef %50) - %296 = load i32, ptr %11, align 4 - %297 = load i32, ptr %10, align 4 - %298 = add i32 %297, %296 - store i32 %298, ptr %10, align 4 - %299 = call i32 @tvb_captured_length_remaining(ptr noundef %.0226, i32 noundef %298) - %300 = icmp sgt i32 %299, 0 - br i1 %300, label %301, label %.backedge - -301: ; preds = %294 - %302 = add i32 %298, 1 - store i32 %302, ptr %10, align 4 +291: ; preds = %282, %284 + %292 = load i32, ptr @opensafety_tap, align 4 + call void @tap_queue_packet(i32 noundef %292, ptr noundef %6, ptr noundef %50) + %293 = load i32, ptr %11, align 4 + %294 = load i32, ptr %10, align 4 + %295 = add i32 %294, %293 + store i32 %295, ptr %10, align 4 + %296 = call i32 @tvb_captured_length_remaining(ptr noundef %.0226, i32 noundef %295) + %297 = icmp sgt i32 %296, 0 + br i1 %297, label %298, label %.backedge + +298: ; preds = %291 + %299 = add i32 %295, 1 + store i32 %299, ptr %10, align 4 br label %.backedge ._crit_edge333: ; preds = %.backedge, %44, %56, %52, %48 %.0250.lcssa.ph = phi i8 [ %.0250.be, %.backedge ], [ %.0250324, %44 ], [ %.0250324, %56 ], [ %.0250324, %52 ], [ %.0250324, %48 ] %.0233.lcssa.ph = phi i32 [ %.0233.be, %.backedge ], [ %.0233329, %44 ], [ %.0233329, %56 ], [ %.0233329, %52 ], [ %.0233329, %48 ] - %303 = trunc nuw i8 %.0250.lcssa.ph to i1 - br i1 %303, label %304, label %314 - -304: ; preds = %._crit_edge333 - %305 = load i32, ptr %10, align 4 - %306 = icmp ult i32 %305, %13 - %307 = load i8, ptr @global_display_intergap_data, align 1, !range !6 - %308 = trunc nuw i8 %307 to i1 - %or.cond282 = select i1 %306, i1 %308, i1 false - %.not273 = icmp ne i32 %.0233.lcssa.ph, %305 + %300 = trunc nuw i8 %.0250.lcssa.ph to i1 + br i1 %300, label %301, label %311 + +301: ; preds = %._crit_edge333 + %302 = load i32, ptr %10, align 4 + %303 = icmp ult i32 %302, %13 + %304 = load i8, ptr @global_display_intergap_data, align 1, !range !6 + %305 = trunc nuw i8 %304 to i1 + %or.cond282 = select i1 %303, i1 %305, i1 false + %.not273 = icmp ne i32 %.0233.lcssa.ph, %302 %or.cond283.not = and i1 %.not273, %or.cond282 - br i1 %or.cond283.not, label %309, label %314 + br i1 %or.cond283.not, label %306, label %311 -309: ; preds = %304 - %310 = sub i32 %13, %.0233.lcssa.ph - %311 = call ptr @tvb_new_subset_length_caplen(ptr noundef %.0226, i32 noundef %.0233.lcssa.ph, i32 noundef %310, i32 noundef %21) - %312 = load ptr, ptr @data_dissector, align 8 - %313 = call i32 @call_dissector(ptr noundef %312, ptr noundef %311, ptr noundef %6, ptr noundef %7) - br label %314 +306: ; preds = %301 + %307 = sub i32 %13, %.0233.lcssa.ph + %308 = call ptr @tvb_new_subset_length_caplen(ptr noundef %.0226, i32 noundef %.0233.lcssa.ph, i32 noundef %307, i32 noundef %21) + %309 = load ptr, ptr @data_dissector, align 8 + %310 = call i32 @call_dissector(ptr noundef %309, ptr noundef %308, ptr noundef %6, ptr noundef %7) + br label %311 -314: ; preds = %304, %309, %._crit_edge333 - %315 = zext nneg i8 %.0250.lcssa.ph to i32 +311: ; preds = %301, %306, %._crit_edge333 + %312 = zext nneg i8 %.0250.lcssa.ph to i32 br label %.loopexit -.loopexit: ; preds = %198, %.thread362, %24, %9, %314 - %.0 = phi i32 [ %315, %314 ], [ 0, %9 ], [ 0, %24 ], [ 0, %.thread362 ], [ 0, %198 ] +.loopexit: ; preds = %198, %.thread362, %24, %9, %311 + %.0 = phi i32 [ %312, %311 ], [ 0, %9 ], [ 0, %24 ], [ 0, %.thread362 ], [ 0, %198 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #12 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #12 ret i32 %.0 diff --git a/bench/wireshark/optimized/tvbuff.ll b/bench/wireshark/optimized/tvbuff.ll index 62b9ffaac4e..9764cf21b09 100644 --- a/bench/wireshark/optimized/tvbuff.ll +++ b/bench/wireshark/optimized/tvbuff.ll @@ -5730,22 +5730,19 @@ define i32 @tvb_unicode_strsize(ptr noundef %0, i32 noundef %1) local_unnamed_ad unreachable .preheader: ; preds = %3, %.preheader - %.0 = phi i32 [ %15, %.preheader ], [ 0, %3 ] + %.0 = phi i32 [ %11, %.preheader ], [ 0, %3 ] %8 = add i32 %.0, %1 %9 = tail call fastcc ptr @fast_ensure_contiguous(ptr noundef nonnull %0, i32 noundef %8, i32 noundef 2) %.val.i = load i8, ptr %9, align 1 %10 = getelementptr i8, ptr %9, i64 1 %.val2.i = load i8, ptr %10, align 1 - %11 = zext i8 %.val.i to i16 - %12 = shl nuw i16 %11, 8 - %13 = zext i8 %.val2.i to i16 - %14 = or disjoint i16 %12, %13 - %15 = add i32 %.0, 2 - %.not8 = icmp eq i16 %14, 0 - br i1 %.not8, label %16, label %.preheader, !llvm.loop !25 - -16: ; preds = %.preheader - ret i32 %15 + %11 = add i32 %.0, 2 + %12 = or i8 %.val2.i, %.val.i + %13 = icmp eq i8 %12, 0 + br i1 %13, label %14, label %.preheader, !llvm.loop !25 + +14: ; preds = %.preheader + ret i32 %11 } ; Function Attrs: null_pointer_is_valid sspstrong uwtable @@ -6891,44 +6888,44 @@ define ptr @tvb_get_stringz_enc(ptr noundef %0, ptr noundef %1, i32 noundef %2, %12 = trunc i32 %4 to i16 %trunc = and i16 %12, -2 switch i16 %trunc, label %13 [ - i16 86, label %219 + i16 86, label %209 i16 2, label %18 i16 4, label %.preheader.i.i i16 6, label %.preheader.i.i149 i16 8, label %.preheader - i16 10, label %72 - i16 12, label %77 - i16 14, label %82 - i16 16, label %87 - i16 18, label %92 - i16 20, label %97 - i16 22, label %102 - i16 24, label %107 - i16 26, label %112 - i16 28, label %117 - i16 30, label %122 - i16 34, label %127 - i16 36, label %132 - i16 38, label %137 - i16 40, label %142 - i16 42, label %147 - i16 60, label %152 - i16 58, label %157 - i16 48, label %162 - i16 50, label %167 - i16 62, label %172 - i16 64, label %177 - i16 66, label %182 - i16 44, label %187 - i16 76, label %187 - i16 78, label %187 - i16 52, label %188 - i16 46, label %189 - i16 56, label %194 - i16 96, label %199 - i16 54, label %204 - i16 80, label %209 - i16 82, label %214 + i16 10, label %62 + i16 12, label %67 + i16 14, label %72 + i16 16, label %77 + i16 18, label %82 + i16 20, label %87 + i16 22, label %92 + i16 24, label %97 + i16 26, label %102 + i16 28, label %107 + i16 30, label %112 + i16 34, label %117 + i16 36, label %122 + i16 38, label %127 + i16 40, label %132 + i16 42, label %137 + i16 60, label %142 + i16 58, label %147 + i16 48, label %152 + i16 50, label %157 + i16 62, label %162 + i16 64, label %167 + i16 66, label %172 + i16 44, label %177 + i16 76, label %177 + i16 78, label %177 + i16 52, label %178 + i16 46, label %179 + i16 56, label %184 + i16 96, label %189 + i16 54, label %194 + i16 80, label %199 + i16 82, label %204 ] 13: ; preds = %11 @@ -6943,7 +6940,7 @@ define ptr @tvb_get_stringz_enc(ptr noundef %0, ptr noundef %1, i32 noundef %2, tvb_get_ascii_stringz.exit: ; preds = %13, %16 %17 = tail call ptr @get_ascii_string(ptr noundef %0, ptr noundef %15, i32 noundef %14) - br label %224 + br label %214 18: ; preds = %11 %19 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) @@ -6957,535 +6954,522 @@ tvb_get_ascii_stringz.exit: ; preds = %13, %16 tvb_get_utf_8_stringz.exit: ; preds = %18, %21 %22 = tail call ptr @get_utf_8_string(ptr noundef %0, ptr noundef %20, i32 noundef %19) - br label %224 + br label %214 .preheader.i.i: ; preds = %11, %.preheader.i.i - %.0.i.i = phi i32 [ %30, %.preheader.i.i ], [ 0, %11 ] + %.0.i.i = phi i32 [ %26, %.preheader.i.i ], [ 0, %11 ] %23 = add i32 %.0.i.i, %2 %24 = tail call fastcc ptr @fast_ensure_contiguous(ptr noundef nonnull %1, i32 noundef %23, i32 noundef 2) %.val.i.i.i = load i8, ptr %24, align 1 %25 = getelementptr i8, ptr %24, i64 1 %.val2.i.i.i = load i8, ptr %25, align 1 - %26 = zext i8 %.val.i.i.i to i16 - %27 = shl nuw i16 %26, 8 - %28 = zext i8 %.val2.i.i.i to i16 - %29 = or disjoint i16 %27, %28 - %30 = add i32 %.0.i.i, 2 - %.not8.i.i = icmp eq i16 %29, 0 - br i1 %.not8.i.i, label %tvb_unicode_strsize.exit.i, label %.preheader.i.i, !llvm.loop !25 + %26 = add i32 %.0.i.i, 2 + %27 = or i8 %.val2.i.i.i, %.val.i.i.i + %28 = icmp eq i8 %27, 0 + br i1 %28, label %tvb_unicode_strsize.exit.i, label %.preheader.i.i, !llvm.loop !25 tvb_unicode_strsize.exit.i: ; preds = %.preheader.i.i - %31 = and i32 %4, -1610612736 - %32 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %30) + %29 = and i32 %4, -1610612736 + %30 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %26) %.not.i148 = icmp eq ptr %3, null - br i1 %.not.i148, label %tvb_get_utf_16_stringz.exit, label %33 + br i1 %.not.i148, label %tvb_get_utf_16_stringz.exit, label %31 -33: ; preds = %tvb_unicode_strsize.exit.i - store i32 %30, ptr %3, align 4 +31: ; preds = %tvb_unicode_strsize.exit.i + store i32 %26, ptr %3, align 4 br label %tvb_get_utf_16_stringz.exit -tvb_get_utf_16_stringz.exit: ; preds = %tvb_unicode_strsize.exit.i, %33 - %34 = tail call ptr @get_utf_16_string(ptr noundef %0, ptr noundef %32, i32 noundef %30, i32 noundef range(i32 0, -1610612735) %31) - br label %224 +tvb_get_utf_16_stringz.exit: ; preds = %tvb_unicode_strsize.exit.i, %31 + %32 = tail call ptr @get_utf_16_string(ptr noundef %0, ptr noundef %30, i32 noundef %26, i32 noundef range(i32 0, -1610612735) %29) + br label %214 .preheader.i.i149: ; preds = %11, %.preheader.i.i149 - %.0.i.i150 = phi i32 [ %42, %.preheader.i.i149 ], [ 0, %11 ] - %35 = add i32 %.0.i.i150, %2 - %36 = tail call fastcc ptr @fast_ensure_contiguous(ptr noundef nonnull %1, i32 noundef %35, i32 noundef 2) - %.val.i.i.i151 = load i8, ptr %36, align 1 - %37 = getelementptr i8, ptr %36, i64 1 - %.val2.i.i.i152 = load i8, ptr %37, align 1 - %38 = zext i8 %.val.i.i.i151 to i16 - %39 = shl nuw i16 %38, 8 - %40 = zext i8 %.val2.i.i.i152 to i16 - %41 = or disjoint i16 %39, %40 - %42 = add i32 %.0.i.i150, 2 - %.not8.i.i153 = icmp eq i16 %41, 0 - br i1 %.not8.i.i153, label %tvb_unicode_strsize.exit.i154, label %.preheader.i.i149, !llvm.loop !25 - -tvb_unicode_strsize.exit.i154: ; preds = %.preheader.i.i149 - %43 = and i32 %4, -1610612736 - %44 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %42) - %.not.i155 = icmp eq ptr %3, null - br i1 %.not.i155, label %tvb_get_ucs_2_stringz.exit, label %45 - -45: ; preds = %tvb_unicode_strsize.exit.i154 - store i32 %42, ptr %3, align 4 + %.0.i.i150 = phi i32 [ %36, %.preheader.i.i149 ], [ 0, %11 ] + %33 = add i32 %.0.i.i150, %2 + %34 = tail call fastcc ptr @fast_ensure_contiguous(ptr noundef nonnull %1, i32 noundef %33, i32 noundef 2) + %.val.i.i.i151 = load i8, ptr %34, align 1 + %35 = getelementptr i8, ptr %34, i64 1 + %.val2.i.i.i152 = load i8, ptr %35, align 1 + %36 = add i32 %.0.i.i150, 2 + %37 = or i8 %.val2.i.i.i152, %.val.i.i.i151 + %38 = icmp eq i8 %37, 0 + br i1 %38, label %tvb_unicode_strsize.exit.i153, label %.preheader.i.i149, !llvm.loop !25 + +tvb_unicode_strsize.exit.i153: ; preds = %.preheader.i.i149 + %39 = and i32 %4, -1610612736 + %40 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %36) + %.not.i154 = icmp eq ptr %3, null + br i1 %.not.i154, label %tvb_get_ucs_2_stringz.exit, label %41 + +41: ; preds = %tvb_unicode_strsize.exit.i153 + store i32 %36, ptr %3, align 4 br label %tvb_get_ucs_2_stringz.exit -tvb_get_ucs_2_stringz.exit: ; preds = %tvb_unicode_strsize.exit.i154, %45 - %46 = tail call ptr @get_ucs_2_string(ptr noundef %0, ptr noundef %44, i32 noundef %42, i32 noundef range(i32 0, -1610612735) %43) - br label %224 +tvb_get_ucs_2_stringz.exit: ; preds = %tvb_unicode_strsize.exit.i153, %41 + %42 = tail call ptr @get_ucs_2_string(ptr noundef %0, ptr noundef %40, i32 noundef %36, i32 noundef range(i32 0, -1610612735) %39) + br label %214 .preheader: ; preds = %11, %.preheader - %.0.i = phi i32 [ %66, %.preheader ], [ 0, %11 ] - %47 = add i32 %.0.i, %2 - %48 = tail call fastcc ptr @fast_ensure_contiguous(ptr noundef nonnull %1, i32 noundef %47, i32 noundef 4) + %.0.i = phi i32 [ %52, %.preheader ], [ 0, %11 ] + %43 = add i32 %.0.i, %2 + %44 = tail call fastcc ptr @fast_ensure_contiguous(ptr noundef nonnull %1, i32 noundef %43, i32 noundef 4) + %45 = load i8, ptr %44, align 1 + %46 = getelementptr i8, ptr %44, i64 1 + %47 = load i8, ptr %46, align 1 + %48 = getelementptr i8, ptr %44, i64 2 %49 = load i8, ptr %48, align 1 - %50 = zext i8 %49 to i32 - %51 = shl nuw i32 %50, 24 - %52 = getelementptr i8, ptr %48, i64 1 - %53 = load i8, ptr %52, align 1 - %54 = zext i8 %53 to i32 - %55 = shl nuw nsw i32 %54, 16 - %56 = or disjoint i32 %55, %51 - %57 = getelementptr i8, ptr %48, i64 2 - %58 = load i8, ptr %57, align 1 - %59 = zext i8 %58 to i32 - %60 = shl nuw nsw i32 %59, 8 - %61 = or disjoint i32 %56, %60 - %62 = getelementptr i8, ptr %48, i64 3 - %63 = load i8, ptr %62, align 1 - %64 = zext i8 %63 to i32 - %65 = or disjoint i32 %61, %64 - %66 = add i32 %.0.i, 4 - %.not.i156 = icmp eq i32 %65, 0 - br i1 %.not.i156, label %67, label %.preheader, !llvm.loop !30 - -67: ; preds = %.preheader - %68 = and i32 %4, -1610612736 - %69 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %66) + %50 = getelementptr i8, ptr %44, i64 3 + %51 = load i8, ptr %50, align 1 + %52 = add i32 %.0.i, 4 + %53 = or i8 %47, %45 + %54 = or i8 %53, %49 + %55 = or i8 %54, %51 + %56 = icmp eq i8 %55, 0 + br i1 %56, label %57, label %.preheader, !llvm.loop !30 + +57: ; preds = %.preheader + %58 = and i32 %4, -1610612736 + %59 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %52) %.not15.i = icmp eq ptr %3, null - br i1 %.not15.i, label %tvb_get_ucs_4_stringz.exit, label %70 + br i1 %.not15.i, label %tvb_get_ucs_4_stringz.exit, label %60 -70: ; preds = %67 - store i32 %66, ptr %3, align 4 +60: ; preds = %57 + store i32 %52, ptr %3, align 4 br label %tvb_get_ucs_4_stringz.exit -tvb_get_ucs_4_stringz.exit: ; preds = %67, %70 - %71 = tail call ptr @get_ucs_4_string(ptr noundef %0, ptr noundef %69, i32 noundef %66, i32 noundef range(i32 0, -1610612735) %68) - br label %224 +tvb_get_ucs_4_stringz.exit: ; preds = %57, %60 + %61 = tail call ptr @get_ucs_4_string(ptr noundef %0, ptr noundef %59, i32 noundef %52, i32 noundef range(i32 0, -1610612735) %58) + br label %214 + +62: ; preds = %11 + %63 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) + %64 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %63) + %.not.i155 = icmp eq ptr %3, null + br i1 %.not.i155, label %tvb_get_stringz_8859_1.exit, label %65 + +65: ; preds = %62 + store i32 %63, ptr %3, align 4 + br label %tvb_get_stringz_8859_1.exit + +tvb_get_stringz_8859_1.exit: ; preds = %62, %65 + %66 = tail call ptr @get_8859_1_string(ptr noundef %0, ptr noundef %64, i32 noundef %63) + br label %214 + +67: ; preds = %11 + %68 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) + %69 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %68) + %.not.i156 = icmp eq ptr %3, null + br i1 %.not.i156, label %tvb_get_stringz_unichar2.exit, label %70 + +70: ; preds = %67 + store i32 %68, ptr %3, align 4 + br label %tvb_get_stringz_unichar2.exit + +tvb_get_stringz_unichar2.exit: ; preds = %67, %70 + %71 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %69, i32 noundef %68, ptr noundef nonnull @charset_table_iso_8859_2) + br label %214 72: ; preds = %11 %73 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %74 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %73) %.not.i157 = icmp eq ptr %3, null - br i1 %.not.i157, label %tvb_get_stringz_8859_1.exit, label %75 + br i1 %.not.i157, label %tvb_get_stringz_unichar2.exit158, label %75 75: ; preds = %72 store i32 %73, ptr %3, align 4 - br label %tvb_get_stringz_8859_1.exit + br label %tvb_get_stringz_unichar2.exit158 -tvb_get_stringz_8859_1.exit: ; preds = %72, %75 - %76 = tail call ptr @get_8859_1_string(ptr noundef %0, ptr noundef %74, i32 noundef %73) - br label %224 +tvb_get_stringz_unichar2.exit158: ; preds = %72, %75 + %76 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %74, i32 noundef %73, ptr noundef nonnull @charset_table_iso_8859_3) + br label %214 77: ; preds = %11 %78 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %79 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %78) - %.not.i158 = icmp eq ptr %3, null - br i1 %.not.i158, label %tvb_get_stringz_unichar2.exit, label %80 + %.not.i159 = icmp eq ptr %3, null + br i1 %.not.i159, label %tvb_get_stringz_unichar2.exit160, label %80 80: ; preds = %77 store i32 %78, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit + br label %tvb_get_stringz_unichar2.exit160 -tvb_get_stringz_unichar2.exit: ; preds = %77, %80 - %81 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %79, i32 noundef %78, ptr noundef nonnull @charset_table_iso_8859_2) - br label %224 +tvb_get_stringz_unichar2.exit160: ; preds = %77, %80 + %81 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %79, i32 noundef %78, ptr noundef nonnull @charset_table_iso_8859_4) + br label %214 82: ; preds = %11 %83 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %84 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %83) - %.not.i159 = icmp eq ptr %3, null - br i1 %.not.i159, label %tvb_get_stringz_unichar2.exit160, label %85 + %.not.i161 = icmp eq ptr %3, null + br i1 %.not.i161, label %tvb_get_stringz_unichar2.exit162, label %85 85: ; preds = %82 store i32 %83, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit160 + br label %tvb_get_stringz_unichar2.exit162 -tvb_get_stringz_unichar2.exit160: ; preds = %82, %85 - %86 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %84, i32 noundef %83, ptr noundef nonnull @charset_table_iso_8859_3) - br label %224 +tvb_get_stringz_unichar2.exit162: ; preds = %82, %85 + %86 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %84, i32 noundef %83, ptr noundef nonnull @charset_table_iso_8859_5) + br label %214 87: ; preds = %11 %88 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %89 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %88) - %.not.i161 = icmp eq ptr %3, null - br i1 %.not.i161, label %tvb_get_stringz_unichar2.exit162, label %90 + %.not.i163 = icmp eq ptr %3, null + br i1 %.not.i163, label %tvb_get_stringz_unichar2.exit164, label %90 90: ; preds = %87 store i32 %88, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit162 + br label %tvb_get_stringz_unichar2.exit164 -tvb_get_stringz_unichar2.exit162: ; preds = %87, %90 - %91 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %89, i32 noundef %88, ptr noundef nonnull @charset_table_iso_8859_4) - br label %224 +tvb_get_stringz_unichar2.exit164: ; preds = %87, %90 + %91 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %89, i32 noundef %88, ptr noundef nonnull @charset_table_iso_8859_6) + br label %214 92: ; preds = %11 %93 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %94 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %93) - %.not.i163 = icmp eq ptr %3, null - br i1 %.not.i163, label %tvb_get_stringz_unichar2.exit164, label %95 + %.not.i165 = icmp eq ptr %3, null + br i1 %.not.i165, label %tvb_get_stringz_unichar2.exit166, label %95 95: ; preds = %92 store i32 %93, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit164 + br label %tvb_get_stringz_unichar2.exit166 -tvb_get_stringz_unichar2.exit164: ; preds = %92, %95 - %96 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %94, i32 noundef %93, ptr noundef nonnull @charset_table_iso_8859_5) - br label %224 +tvb_get_stringz_unichar2.exit166: ; preds = %92, %95 + %96 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %94, i32 noundef %93, ptr noundef nonnull @charset_table_iso_8859_7) + br label %214 97: ; preds = %11 %98 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %99 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %98) - %.not.i165 = icmp eq ptr %3, null - br i1 %.not.i165, label %tvb_get_stringz_unichar2.exit166, label %100 + %.not.i167 = icmp eq ptr %3, null + br i1 %.not.i167, label %tvb_get_stringz_unichar2.exit168, label %100 100: ; preds = %97 store i32 %98, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit166 + br label %tvb_get_stringz_unichar2.exit168 -tvb_get_stringz_unichar2.exit166: ; preds = %97, %100 - %101 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %99, i32 noundef %98, ptr noundef nonnull @charset_table_iso_8859_6) - br label %224 +tvb_get_stringz_unichar2.exit168: ; preds = %97, %100 + %101 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %99, i32 noundef %98, ptr noundef nonnull @charset_table_iso_8859_8) + br label %214 102: ; preds = %11 %103 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %104 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %103) - %.not.i167 = icmp eq ptr %3, null - br i1 %.not.i167, label %tvb_get_stringz_unichar2.exit168, label %105 + %.not.i169 = icmp eq ptr %3, null + br i1 %.not.i169, label %tvb_get_stringz_unichar2.exit170, label %105 105: ; preds = %102 store i32 %103, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit168 + br label %tvb_get_stringz_unichar2.exit170 -tvb_get_stringz_unichar2.exit168: ; preds = %102, %105 - %106 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %104, i32 noundef %103, ptr noundef nonnull @charset_table_iso_8859_7) - br label %224 +tvb_get_stringz_unichar2.exit170: ; preds = %102, %105 + %106 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %104, i32 noundef %103, ptr noundef nonnull @charset_table_iso_8859_9) + br label %214 107: ; preds = %11 %108 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %109 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %108) - %.not.i169 = icmp eq ptr %3, null - br i1 %.not.i169, label %tvb_get_stringz_unichar2.exit170, label %110 + %.not.i171 = icmp eq ptr %3, null + br i1 %.not.i171, label %tvb_get_stringz_unichar2.exit172, label %110 110: ; preds = %107 store i32 %108, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit170 + br label %tvb_get_stringz_unichar2.exit172 -tvb_get_stringz_unichar2.exit170: ; preds = %107, %110 - %111 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %109, i32 noundef %108, ptr noundef nonnull @charset_table_iso_8859_8) - br label %224 +tvb_get_stringz_unichar2.exit172: ; preds = %107, %110 + %111 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %109, i32 noundef %108, ptr noundef nonnull @charset_table_iso_8859_10) + br label %214 112: ; preds = %11 %113 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %114 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %113) - %.not.i171 = icmp eq ptr %3, null - br i1 %.not.i171, label %tvb_get_stringz_unichar2.exit172, label %115 + %.not.i173 = icmp eq ptr %3, null + br i1 %.not.i173, label %tvb_get_stringz_unichar2.exit174, label %115 115: ; preds = %112 store i32 %113, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit172 + br label %tvb_get_stringz_unichar2.exit174 -tvb_get_stringz_unichar2.exit172: ; preds = %112, %115 - %116 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %114, i32 noundef %113, ptr noundef nonnull @charset_table_iso_8859_9) - br label %224 +tvb_get_stringz_unichar2.exit174: ; preds = %112, %115 + %116 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %114, i32 noundef %113, ptr noundef nonnull @charset_table_iso_8859_11) + br label %214 117: ; preds = %11 %118 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %119 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %118) - %.not.i173 = icmp eq ptr %3, null - br i1 %.not.i173, label %tvb_get_stringz_unichar2.exit174, label %120 + %.not.i175 = icmp eq ptr %3, null + br i1 %.not.i175, label %tvb_get_stringz_unichar2.exit176, label %120 120: ; preds = %117 store i32 %118, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit174 + br label %tvb_get_stringz_unichar2.exit176 -tvb_get_stringz_unichar2.exit174: ; preds = %117, %120 - %121 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %119, i32 noundef %118, ptr noundef nonnull @charset_table_iso_8859_10) - br label %224 +tvb_get_stringz_unichar2.exit176: ; preds = %117, %120 + %121 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %119, i32 noundef %118, ptr noundef nonnull @charset_table_iso_8859_13) + br label %214 122: ; preds = %11 %123 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %124 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %123) - %.not.i175 = icmp eq ptr %3, null - br i1 %.not.i175, label %tvb_get_stringz_unichar2.exit176, label %125 + %.not.i177 = icmp eq ptr %3, null + br i1 %.not.i177, label %tvb_get_stringz_unichar2.exit178, label %125 125: ; preds = %122 store i32 %123, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit176 + br label %tvb_get_stringz_unichar2.exit178 -tvb_get_stringz_unichar2.exit176: ; preds = %122, %125 - %126 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %124, i32 noundef %123, ptr noundef nonnull @charset_table_iso_8859_11) - br label %224 +tvb_get_stringz_unichar2.exit178: ; preds = %122, %125 + %126 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %124, i32 noundef %123, ptr noundef nonnull @charset_table_iso_8859_14) + br label %214 127: ; preds = %11 %128 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %129 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %128) - %.not.i177 = icmp eq ptr %3, null - br i1 %.not.i177, label %tvb_get_stringz_unichar2.exit178, label %130 + %.not.i179 = icmp eq ptr %3, null + br i1 %.not.i179, label %tvb_get_stringz_unichar2.exit180, label %130 130: ; preds = %127 store i32 %128, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit178 + br label %tvb_get_stringz_unichar2.exit180 -tvb_get_stringz_unichar2.exit178: ; preds = %127, %130 - %131 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %129, i32 noundef %128, ptr noundef nonnull @charset_table_iso_8859_13) - br label %224 +tvb_get_stringz_unichar2.exit180: ; preds = %127, %130 + %131 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %129, i32 noundef %128, ptr noundef nonnull @charset_table_iso_8859_15) + br label %214 132: ; preds = %11 %133 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %134 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %133) - %.not.i179 = icmp eq ptr %3, null - br i1 %.not.i179, label %tvb_get_stringz_unichar2.exit180, label %135 + %.not.i181 = icmp eq ptr %3, null + br i1 %.not.i181, label %tvb_get_stringz_unichar2.exit182, label %135 135: ; preds = %132 store i32 %133, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit180 + br label %tvb_get_stringz_unichar2.exit182 -tvb_get_stringz_unichar2.exit180: ; preds = %132, %135 - %136 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %134, i32 noundef %133, ptr noundef nonnull @charset_table_iso_8859_14) - br label %224 +tvb_get_stringz_unichar2.exit182: ; preds = %132, %135 + %136 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %134, i32 noundef %133, ptr noundef nonnull @charset_table_iso_8859_16) + br label %214 137: ; preds = %11 %138 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %139 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %138) - %.not.i181 = icmp eq ptr %3, null - br i1 %.not.i181, label %tvb_get_stringz_unichar2.exit182, label %140 + %.not.i183 = icmp eq ptr %3, null + br i1 %.not.i183, label %tvb_get_stringz_unichar2.exit184, label %140 140: ; preds = %137 store i32 %138, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit182 + br label %tvb_get_stringz_unichar2.exit184 -tvb_get_stringz_unichar2.exit182: ; preds = %137, %140 - %141 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %139, i32 noundef %138, ptr noundef nonnull @charset_table_iso_8859_15) - br label %224 +tvb_get_stringz_unichar2.exit184: ; preds = %137, %140 + %141 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %139, i32 noundef %138, ptr noundef nonnull @charset_table_cp1250) + br label %214 142: ; preds = %11 %143 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %144 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %143) - %.not.i183 = icmp eq ptr %3, null - br i1 %.not.i183, label %tvb_get_stringz_unichar2.exit184, label %145 + %.not.i185 = icmp eq ptr %3, null + br i1 %.not.i185, label %tvb_get_stringz_unichar2.exit186, label %145 145: ; preds = %142 store i32 %143, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit184 + br label %tvb_get_stringz_unichar2.exit186 -tvb_get_stringz_unichar2.exit184: ; preds = %142, %145 - %146 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %144, i32 noundef %143, ptr noundef nonnull @charset_table_iso_8859_16) - br label %224 +tvb_get_stringz_unichar2.exit186: ; preds = %142, %145 + %146 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %144, i32 noundef %143, ptr noundef nonnull @charset_table_cp1251) + br label %214 147: ; preds = %11 %148 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %149 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %148) - %.not.i185 = icmp eq ptr %3, null - br i1 %.not.i185, label %tvb_get_stringz_unichar2.exit186, label %150 + %.not.i187 = icmp eq ptr %3, null + br i1 %.not.i187, label %tvb_get_stringz_unichar2.exit188, label %150 150: ; preds = %147 store i32 %148, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit186 + br label %tvb_get_stringz_unichar2.exit188 -tvb_get_stringz_unichar2.exit186: ; preds = %147, %150 - %151 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %149, i32 noundef %148, ptr noundef nonnull @charset_table_cp1250) - br label %224 +tvb_get_stringz_unichar2.exit188: ; preds = %147, %150 + %151 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %149, i32 noundef %148, ptr noundef nonnull @charset_table_cp1252) + br label %214 152: ; preds = %11 %153 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %154 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %153) - %.not.i187 = icmp eq ptr %3, null - br i1 %.not.i187, label %tvb_get_stringz_unichar2.exit188, label %155 + %.not.i189 = icmp eq ptr %3, null + br i1 %.not.i189, label %tvb_get_stringz_unichar2.exit190, label %155 155: ; preds = %152 store i32 %153, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit188 + br label %tvb_get_stringz_unichar2.exit190 -tvb_get_stringz_unichar2.exit188: ; preds = %152, %155 - %156 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %154, i32 noundef %153, ptr noundef nonnull @charset_table_cp1251) - br label %224 +tvb_get_stringz_unichar2.exit190: ; preds = %152, %155 + %156 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %154, i32 noundef %153, ptr noundef nonnull @charset_table_mac_roman) + br label %214 157: ; preds = %11 %158 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %159 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %158) - %.not.i189 = icmp eq ptr %3, null - br i1 %.not.i189, label %tvb_get_stringz_unichar2.exit190, label %160 + %.not.i191 = icmp eq ptr %3, null + br i1 %.not.i191, label %tvb_get_stringz_unichar2.exit192, label %160 160: ; preds = %157 store i32 %158, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit190 + br label %tvb_get_stringz_unichar2.exit192 -tvb_get_stringz_unichar2.exit190: ; preds = %157, %160 - %161 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %159, i32 noundef %158, ptr noundef nonnull @charset_table_cp1252) - br label %224 +tvb_get_stringz_unichar2.exit192: ; preds = %157, %160 + %161 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %159, i32 noundef %158, ptr noundef nonnull @charset_table_cp437) + br label %214 162: ; preds = %11 %163 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %164 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %163) - %.not.i191 = icmp eq ptr %3, null - br i1 %.not.i191, label %tvb_get_stringz_unichar2.exit192, label %165 + %.not.i193 = icmp eq ptr %3, null + br i1 %.not.i193, label %tvb_get_stringz_unichar2.exit194, label %165 165: ; preds = %162 store i32 %163, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit192 + br label %tvb_get_stringz_unichar2.exit194 -tvb_get_stringz_unichar2.exit192: ; preds = %162, %165 - %166 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %164, i32 noundef %163, ptr noundef nonnull @charset_table_mac_roman) - br label %224 +tvb_get_stringz_unichar2.exit194: ; preds = %162, %165 + %166 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %164, i32 noundef %163, ptr noundef nonnull @charset_table_cp855) + br label %214 167: ; preds = %11 %168 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %169 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %168) - %.not.i193 = icmp eq ptr %3, null - br i1 %.not.i193, label %tvb_get_stringz_unichar2.exit194, label %170 + %.not.i195 = icmp eq ptr %3, null + br i1 %.not.i195, label %tvb_get_stringz_unichar2.exit196, label %170 170: ; preds = %167 store i32 %168, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit194 + br label %tvb_get_stringz_unichar2.exit196 -tvb_get_stringz_unichar2.exit194: ; preds = %167, %170 - %171 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %169, i32 noundef %168, ptr noundef nonnull @charset_table_cp437) - br label %224 +tvb_get_stringz_unichar2.exit196: ; preds = %167, %170 + %171 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %169, i32 noundef %168, ptr noundef nonnull @charset_table_cp866) + br label %214 172: ; preds = %11 %173 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %174 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %173) - %.not.i195 = icmp eq ptr %3, null - br i1 %.not.i195, label %tvb_get_stringz_unichar2.exit196, label %175 + %.not.i197 = icmp eq ptr %3, null + br i1 %.not.i197, label %tvb_get_iso_646_stringz.exit, label %175 175: ; preds = %172 store i32 %173, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit196 + br label %tvb_get_iso_646_stringz.exit -tvb_get_stringz_unichar2.exit196: ; preds = %172, %175 - %176 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %174, i32 noundef %173, ptr noundef nonnull @charset_table_cp855) - br label %224 +tvb_get_iso_646_stringz.exit: ; preds = %172, %175 + %176 = tail call ptr @get_iso_646_string(ptr noundef %0, ptr noundef %174, i32 noundef %173, ptr noundef nonnull @charset_table_iso_646_basic) + br label %214 -177: ; preds = %11 - %178 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) - %179 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %178) - %.not.i197 = icmp eq ptr %3, null - br i1 %.not.i197, label %tvb_get_stringz_unichar2.exit198, label %180 +177: ; preds = %11, %11, %11 + tail call void (ptr, ...) @proto_report_dissector_bug(ptr noundef nonnull @.str.19) #18 + unreachable -180: ; preds = %177 - store i32 %178, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit198 +178: ; preds = %11 + tail call void (ptr, ...) @proto_report_dissector_bug(ptr noundef nonnull @.str.20) #18 + unreachable -tvb_get_stringz_unichar2.exit198: ; preds = %177, %180 - %181 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %179, i32 noundef %178, ptr noundef nonnull @charset_table_cp866) - br label %224 +179: ; preds = %11 + %180 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) + %181 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %180) + %.not.i198 = icmp eq ptr %3, null + br i1 %.not.i198, label %tvb_get_nonascii_unichar2_stringz.exit, label %182 -182: ; preds = %11 - %183 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) - %184 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %183) - %.not.i199 = icmp eq ptr %3, null - br i1 %.not.i199, label %tvb_get_iso_646_stringz.exit, label %185 +182: ; preds = %179 + store i32 %180, ptr %3, align 4 + br label %tvb_get_nonascii_unichar2_stringz.exit -185: ; preds = %182 - store i32 %183, ptr %3, align 4 - br label %tvb_get_iso_646_stringz.exit +tvb_get_nonascii_unichar2_stringz.exit: ; preds = %179, %182 + %183 = tail call ptr @get_nonascii_unichar2_string(ptr noundef %0, ptr noundef %181, i32 noundef %180, ptr noundef nonnull @charset_table_ebcdic) + br label %214 -tvb_get_iso_646_stringz.exit: ; preds = %182, %185 - %186 = tail call ptr @get_iso_646_string(ptr noundef %0, ptr noundef %184, i32 noundef %183, ptr noundef nonnull @charset_table_iso_646_basic) - br label %224 +184: ; preds = %11 + %185 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) + %186 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %185) + %.not.i199 = icmp eq ptr %3, null + br i1 %.not.i199, label %tvb_get_nonascii_unichar2_stringz.exit200, label %187 -187: ; preds = %11, %11, %11 - tail call void (ptr, ...) @proto_report_dissector_bug(ptr noundef nonnull @.str.19) #18 - unreachable +187: ; preds = %184 + store i32 %185, ptr %3, align 4 + br label %tvb_get_nonascii_unichar2_stringz.exit200 -188: ; preds = %11 - tail call void (ptr, ...) @proto_report_dissector_bug(ptr noundef nonnull @.str.20) #18 - unreachable +tvb_get_nonascii_unichar2_stringz.exit200: ; preds = %184, %187 + %188 = tail call ptr @get_nonascii_unichar2_string(ptr noundef %0, ptr noundef %186, i32 noundef %185, ptr noundef nonnull @charset_table_ebcdic_cp037) + br label %214 189: ; preds = %11 %190 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %191 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %190) - %.not.i200 = icmp eq ptr %3, null - br i1 %.not.i200, label %tvb_get_nonascii_unichar2_stringz.exit, label %192 + %.not.i201 = icmp eq ptr %3, null + br i1 %.not.i201, label %tvb_get_nonascii_unichar2_stringz.exit202, label %192 192: ; preds = %189 store i32 %190, ptr %3, align 4 - br label %tvb_get_nonascii_unichar2_stringz.exit + br label %tvb_get_nonascii_unichar2_stringz.exit202 -tvb_get_nonascii_unichar2_stringz.exit: ; preds = %189, %192 - %193 = tail call ptr @get_nonascii_unichar2_string(ptr noundef %0, ptr noundef %191, i32 noundef %190, ptr noundef nonnull @charset_table_ebcdic) - br label %224 +tvb_get_nonascii_unichar2_stringz.exit202: ; preds = %189, %192 + %193 = tail call ptr @get_nonascii_unichar2_string(ptr noundef %0, ptr noundef %191, i32 noundef %190, ptr noundef nonnull @charset_table_ebcdic_cp500) + br label %214 194: ; preds = %11 %195 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %196 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %195) - %.not.i201 = icmp eq ptr %3, null - br i1 %.not.i201, label %tvb_get_nonascii_unichar2_stringz.exit202, label %197 + %.not.i203 = icmp eq ptr %3, null + br i1 %.not.i203, label %tvb_get_t61_stringz.exit, label %197 197: ; preds = %194 store i32 %195, ptr %3, align 4 - br label %tvb_get_nonascii_unichar2_stringz.exit202 + br label %tvb_get_t61_stringz.exit -tvb_get_nonascii_unichar2_stringz.exit202: ; preds = %194, %197 - %198 = tail call ptr @get_nonascii_unichar2_string(ptr noundef %0, ptr noundef %196, i32 noundef %195, ptr noundef nonnull @charset_table_ebcdic_cp037) - br label %224 +tvb_get_t61_stringz.exit: ; preds = %194, %197 + %198 = tail call ptr @get_t61_string(ptr noundef %0, ptr noundef %196, i32 noundef %195) + br label %214 199: ; preds = %11 %200 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %201 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %200) - %.not.i203 = icmp eq ptr %3, null - br i1 %.not.i203, label %tvb_get_nonascii_unichar2_stringz.exit204, label %202 + %.not.i204 = icmp eq ptr %3, null + br i1 %.not.i204, label %tvb_get_gb18030_stringz.exit, label %202 202: ; preds = %199 store i32 %200, ptr %3, align 4 - br label %tvb_get_nonascii_unichar2_stringz.exit204 + br label %tvb_get_gb18030_stringz.exit -tvb_get_nonascii_unichar2_stringz.exit204: ; preds = %199, %202 - %203 = tail call ptr @get_nonascii_unichar2_string(ptr noundef %0, ptr noundef %201, i32 noundef %200, ptr noundef nonnull @charset_table_ebcdic_cp500) - br label %224 +tvb_get_gb18030_stringz.exit: ; preds = %199, %202 + %203 = tail call ptr @get_gb18030_string(ptr noundef %0, ptr noundef %201, i32 noundef %200) + br label %214 204: ; preds = %11 %205 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %206 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %205) %.not.i205 = icmp eq ptr %3, null - br i1 %.not.i205, label %tvb_get_t61_stringz.exit, label %207 + br i1 %.not.i205, label %tvb_get_euc_kr_stringz.exit, label %207 207: ; preds = %204 store i32 %205, ptr %3, align 4 - br label %tvb_get_t61_stringz.exit + br label %tvb_get_euc_kr_stringz.exit -tvb_get_t61_stringz.exit: ; preds = %204, %207 - %208 = tail call ptr @get_t61_string(ptr noundef %0, ptr noundef %206, i32 noundef %205) - br label %224 +tvb_get_euc_kr_stringz.exit: ; preds = %204, %207 + %208 = tail call ptr @get_euc_kr_string(ptr noundef %0, ptr noundef %206, i32 noundef %205) + br label %214 209: ; preds = %11 %210 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %211 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %210) %.not.i206 = icmp eq ptr %3, null - br i1 %.not.i206, label %tvb_get_gb18030_stringz.exit, label %212 + br i1 %.not.i206, label %tvb_get_dect_standard_8bits_stringz.exit, label %212 212: ; preds = %209 store i32 %210, ptr %3, align 4 - br label %tvb_get_gb18030_stringz.exit - -tvb_get_gb18030_stringz.exit: ; preds = %209, %212 - %213 = tail call ptr @get_gb18030_string(ptr noundef %0, ptr noundef %211, i32 noundef %210) - br label %224 - -214: ; preds = %11 - %215 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) - %216 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %215) - %.not.i207 = icmp eq ptr %3, null - br i1 %.not.i207, label %tvb_get_euc_kr_stringz.exit, label %217 - -217: ; preds = %214 - store i32 %215, ptr %3, align 4 - br label %tvb_get_euc_kr_stringz.exit - -tvb_get_euc_kr_stringz.exit: ; preds = %214, %217 - %218 = tail call ptr @get_euc_kr_string(ptr noundef %0, ptr noundef %216, i32 noundef %215) - br label %224 - -219: ; preds = %11 - %220 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) - %221 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %220) - %.not.i208 = icmp eq ptr %3, null - br i1 %.not.i208, label %tvb_get_dect_standard_8bits_stringz.exit, label %222 - -222: ; preds = %219 - store i32 %220, ptr %3, align 4 br label %tvb_get_dect_standard_8bits_stringz.exit -tvb_get_dect_standard_8bits_stringz.exit: ; preds = %219, %222 - %223 = tail call ptr @get_t61_string(ptr noundef %0, ptr noundef %221, i32 noundef %220) - br label %224 +tvb_get_dect_standard_8bits_stringz.exit: ; preds = %209, %212 + %213 = tail call ptr @get_t61_string(ptr noundef %0, ptr noundef %211, i32 noundef %210) + br label %214 -224: ; preds = %tvb_get_dect_standard_8bits_stringz.exit, %tvb_get_euc_kr_stringz.exit, %tvb_get_gb18030_stringz.exit, %tvb_get_t61_stringz.exit, %tvb_get_nonascii_unichar2_stringz.exit204, %tvb_get_nonascii_unichar2_stringz.exit202, %tvb_get_nonascii_unichar2_stringz.exit, %tvb_get_iso_646_stringz.exit, %tvb_get_stringz_unichar2.exit198, %tvb_get_stringz_unichar2.exit196, %tvb_get_stringz_unichar2.exit194, %tvb_get_stringz_unichar2.exit192, %tvb_get_stringz_unichar2.exit190, %tvb_get_stringz_unichar2.exit188, %tvb_get_stringz_unichar2.exit186, %tvb_get_stringz_unichar2.exit184, %tvb_get_stringz_unichar2.exit182, %tvb_get_stringz_unichar2.exit180, %tvb_get_stringz_unichar2.exit178, %tvb_get_stringz_unichar2.exit176, %tvb_get_stringz_unichar2.exit174, %tvb_get_stringz_unichar2.exit172, %tvb_get_stringz_unichar2.exit170, %tvb_get_stringz_unichar2.exit168, %tvb_get_stringz_unichar2.exit166, %tvb_get_stringz_unichar2.exit164, %tvb_get_stringz_unichar2.exit162, %tvb_get_stringz_unichar2.exit160, %tvb_get_stringz_unichar2.exit, %tvb_get_stringz_8859_1.exit, %tvb_get_ucs_4_stringz.exit, %tvb_get_ucs_2_stringz.exit, %tvb_get_utf_16_stringz.exit, %tvb_get_utf_8_stringz.exit, %tvb_get_ascii_stringz.exit - %.0 = phi ptr [ %17, %tvb_get_ascii_stringz.exit ], [ %218, %tvb_get_euc_kr_stringz.exit ], [ %213, %tvb_get_gb18030_stringz.exit ], [ %208, %tvb_get_t61_stringz.exit ], [ %203, %tvb_get_nonascii_unichar2_stringz.exit204 ], [ %198, %tvb_get_nonascii_unichar2_stringz.exit202 ], [ %193, %tvb_get_nonascii_unichar2_stringz.exit ], [ %186, %tvb_get_iso_646_stringz.exit ], [ %181, %tvb_get_stringz_unichar2.exit198 ], [ %176, %tvb_get_stringz_unichar2.exit196 ], [ %171, %tvb_get_stringz_unichar2.exit194 ], [ %166, %tvb_get_stringz_unichar2.exit192 ], [ %161, %tvb_get_stringz_unichar2.exit190 ], [ %156, %tvb_get_stringz_unichar2.exit188 ], [ %151, %tvb_get_stringz_unichar2.exit186 ], [ %146, %tvb_get_stringz_unichar2.exit184 ], [ %141, %tvb_get_stringz_unichar2.exit182 ], [ %136, %tvb_get_stringz_unichar2.exit180 ], [ %131, %tvb_get_stringz_unichar2.exit178 ], [ %126, %tvb_get_stringz_unichar2.exit176 ], [ %121, %tvb_get_stringz_unichar2.exit174 ], [ %116, %tvb_get_stringz_unichar2.exit172 ], [ %111, %tvb_get_stringz_unichar2.exit170 ], [ %106, %tvb_get_stringz_unichar2.exit168 ], [ %101, %tvb_get_stringz_unichar2.exit166 ], [ %96, %tvb_get_stringz_unichar2.exit164 ], [ %91, %tvb_get_stringz_unichar2.exit162 ], [ %86, %tvb_get_stringz_unichar2.exit160 ], [ %81, %tvb_get_stringz_unichar2.exit ], [ %76, %tvb_get_stringz_8859_1.exit ], [ %71, %tvb_get_ucs_4_stringz.exit ], [ %46, %tvb_get_ucs_2_stringz.exit ], [ %34, %tvb_get_utf_16_stringz.exit ], [ %22, %tvb_get_utf_8_stringz.exit ], [ %223, %tvb_get_dect_standard_8bits_stringz.exit ] +214: ; preds = %tvb_get_dect_standard_8bits_stringz.exit, %tvb_get_euc_kr_stringz.exit, %tvb_get_gb18030_stringz.exit, %tvb_get_t61_stringz.exit, %tvb_get_nonascii_unichar2_stringz.exit202, %tvb_get_nonascii_unichar2_stringz.exit200, %tvb_get_nonascii_unichar2_stringz.exit, %tvb_get_iso_646_stringz.exit, %tvb_get_stringz_unichar2.exit196, %tvb_get_stringz_unichar2.exit194, %tvb_get_stringz_unichar2.exit192, %tvb_get_stringz_unichar2.exit190, %tvb_get_stringz_unichar2.exit188, %tvb_get_stringz_unichar2.exit186, %tvb_get_stringz_unichar2.exit184, %tvb_get_stringz_unichar2.exit182, %tvb_get_stringz_unichar2.exit180, %tvb_get_stringz_unichar2.exit178, %tvb_get_stringz_unichar2.exit176, %tvb_get_stringz_unichar2.exit174, %tvb_get_stringz_unichar2.exit172, %tvb_get_stringz_unichar2.exit170, %tvb_get_stringz_unichar2.exit168, %tvb_get_stringz_unichar2.exit166, %tvb_get_stringz_unichar2.exit164, %tvb_get_stringz_unichar2.exit162, %tvb_get_stringz_unichar2.exit160, %tvb_get_stringz_unichar2.exit158, %tvb_get_stringz_unichar2.exit, %tvb_get_stringz_8859_1.exit, %tvb_get_ucs_4_stringz.exit, %tvb_get_ucs_2_stringz.exit, %tvb_get_utf_16_stringz.exit, %tvb_get_utf_8_stringz.exit, %tvb_get_ascii_stringz.exit + %.0 = phi ptr [ %17, %tvb_get_ascii_stringz.exit ], [ %208, %tvb_get_euc_kr_stringz.exit ], [ %203, %tvb_get_gb18030_stringz.exit ], [ %198, %tvb_get_t61_stringz.exit ], [ %193, %tvb_get_nonascii_unichar2_stringz.exit202 ], [ %188, %tvb_get_nonascii_unichar2_stringz.exit200 ], [ %183, %tvb_get_nonascii_unichar2_stringz.exit ], [ %176, %tvb_get_iso_646_stringz.exit ], [ %171, %tvb_get_stringz_unichar2.exit196 ], [ %166, %tvb_get_stringz_unichar2.exit194 ], [ %161, %tvb_get_stringz_unichar2.exit192 ], [ %156, %tvb_get_stringz_unichar2.exit190 ], [ %151, %tvb_get_stringz_unichar2.exit188 ], [ %146, %tvb_get_stringz_unichar2.exit186 ], [ %141, %tvb_get_stringz_unichar2.exit184 ], [ %136, %tvb_get_stringz_unichar2.exit182 ], [ %131, %tvb_get_stringz_unichar2.exit180 ], [ %126, %tvb_get_stringz_unichar2.exit178 ], [ %121, %tvb_get_stringz_unichar2.exit176 ], [ %116, %tvb_get_stringz_unichar2.exit174 ], [ %111, %tvb_get_stringz_unichar2.exit172 ], [ %106, %tvb_get_stringz_unichar2.exit170 ], [ %101, %tvb_get_stringz_unichar2.exit168 ], [ %96, %tvb_get_stringz_unichar2.exit166 ], [ %91, %tvb_get_stringz_unichar2.exit164 ], [ %86, %tvb_get_stringz_unichar2.exit162 ], [ %81, %tvb_get_stringz_unichar2.exit160 ], [ %76, %tvb_get_stringz_unichar2.exit158 ], [ %71, %tvb_get_stringz_unichar2.exit ], [ %66, %tvb_get_stringz_8859_1.exit ], [ %61, %tvb_get_ucs_4_stringz.exit ], [ %42, %tvb_get_ucs_2_stringz.exit ], [ %32, %tvb_get_utf_16_stringz.exit ], [ %22, %tvb_get_utf_8_stringz.exit ], [ %213, %tvb_get_dect_standard_8bits_stringz.exit ] ret ptr %.0 } diff --git a/bench/wolfssl/optimized/tls.ll b/bench/wolfssl/optimized/tls.ll index adad3c98f4c..807fdbfe43b 100644 --- a/bench/wolfssl/optimized/tls.ll +++ b/bench/wolfssl/optimized/tls.ll @@ -2017,7 +2017,7 @@ define range(i32 -396, 2) i32 @TLSX_SNI_GetFromBuffer(ptr noundef readonly captu 7: ; preds = %5 %8 = load i8, ptr %0, align 1, !tbaa !51 %.not = icmp eq i8 %8, 22 - br i1 %.not, label %28, label %9 + br i1 %.not, label %26, label %9 9: ; preds = %7 %10 = getelementptr inbounds nuw i8, ptr %0, i64 2 @@ -2043,239 +2043,233 @@ define range(i32 -396, 2) i32 @TLSX_SNI_GetFromBuffer(ptr noundef readonly captu %.val119 = load i8, ptr %22, align 1, !tbaa !51 %23 = getelementptr i8, ptr %0, i64 8 %.val120 = load i8, ptr %23, align 1, !tbaa !51 - %24 = zext i8 %.val119 to i16 - %25 = shl nuw i16 %24, 8 - %26 = zext i8 %.val120 to i16 - %27 = or disjoint i16 %25, %26 - %.not117 = icmp eq i16 %27, 0 - %. = select i1 %.not117, i32 -396, i32 -328 + %24 = or i8 %.val120, %.val119 + %25 = icmp eq i8 %24, 0 + %. = select i1 %25, i32 -396, i32 -328 br label %.thread165 -28: ; preds = %7 - %29 = getelementptr inbounds nuw i8, ptr %0, i64 1 - %30 = load i8, ptr %29, align 1, !tbaa !51 - %.not110 = icmp eq i8 %30, 3 - br i1 %.not110, label %31, label %.thread165 +26: ; preds = %7 + %27 = getelementptr inbounds nuw i8, ptr %0, i64 1 + %28 = load i8, ptr %27, align 1, !tbaa !51 + %.not110 = icmp eq i8 %28, 3 + br i1 %.not110, label %29, label %.thread165 -31: ; preds = %28 - %32 = getelementptr inbounds nuw i8, ptr %0, i64 2 - %33 = load i8, ptr %32, align 1, !tbaa !51 - %34 = icmp eq i8 %33, 0 - br i1 %34, label %.thread165, label %35 +29: ; preds = %26 + %30 = getelementptr inbounds nuw i8, ptr %0, i64 2 + %31 = load i8, ptr %30, align 1, !tbaa !51 + %32 = icmp eq i8 %31, 0 + br i1 %32, label %.thread165, label %33 + +33: ; preds = %29 + %34 = getelementptr inbounds nuw i8, ptr %0, i64 3 + %.val121 = load i8, ptr %34, align 1, !tbaa !51 + %35 = getelementptr i8, ptr %0, i64 4 + %.val122 = load i8, ptr %35, align 1, !tbaa !51 + %36 = zext i8 %.val121 to i32 + %37 = shl nuw nsw i32 %36, 8 + %38 = zext i8 %.val122 to i32 + %39 = or disjoint i32 %37, %38 + %40 = add nuw nsw i32 %39, 5 + %41 = icmp ugt i32 %40, %1 + br i1 %41, label %.thread165, label %42 + +42: ; preds = %33 + %43 = getelementptr inbounds nuw i8, ptr %0, i64 5 + %44 = load i8, ptr %43, align 1, !tbaa !51 + %.not111 = icmp eq i8 %44, 1 + br i1 %.not111, label %45, label %.thread165 -35: ; preds = %31 - %36 = getelementptr inbounds nuw i8, ptr %0, i64 3 - %.val121 = load i8, ptr %36, align 1, !tbaa !51 - %37 = getelementptr i8, ptr %0, i64 4 - %.val122 = load i8, ptr %37, align 1, !tbaa !51 - %38 = zext i8 %.val121 to i32 - %39 = shl nuw nsw i32 %38, 8 - %40 = zext i8 %.val122 to i32 - %41 = or disjoint i32 %39, %40 - %42 = add nuw nsw i32 %41, 5 - %43 = icmp ugt i32 %42, %1 - br i1 %43, label %.thread165, label %44 - -44: ; preds = %35 - %45 = getelementptr inbounds nuw i8, ptr %0, i64 5 - %46 = load i8, ptr %45, align 1, !tbaa !51 - %.not111 = icmp eq i8 %46, 1 - br i1 %.not111, label %47, label %.thread165 - -47: ; preds = %44 - %48 = getelementptr inbounds nuw i8, ptr %0, i64 6 - %49 = load i8, ptr %48, align 1, !tbaa !51 - %50 = zext i8 %49 to i32 - %51 = shl nuw nsw i32 %50, 16 - %52 = getelementptr inbounds nuw i8, ptr %0, i64 7 - %53 = load i8, ptr %52, align 1, !tbaa !51 - %54 = zext i8 %53 to i32 - %55 = shl nuw nsw i32 %54, 8 - %56 = or disjoint i32 %55, %51 - %57 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %58 = load i8, ptr %57, align 1, !tbaa !51 - %59 = zext i8 %58 to i32 - %60 = or disjoint i32 %56, %59 - %61 = add nuw nsw i32 %60, 9 - %62 = icmp ugt i32 %61, %1 - br i1 %62, label %.thread165, label %63 - -63: ; preds = %47 - %64 = getelementptr inbounds nuw i8, ptr %0, i64 43 - %65 = load i8, ptr %64, align 1, !tbaa !51 - %66 = zext i8 %65 to i32 - %67 = add nuw nsw i32 %66, 43 - %68 = icmp ult i32 %1, %67 - br i1 %68, label %.thread165, label %69 +45: ; preds = %42 + %46 = getelementptr inbounds nuw i8, ptr %0, i64 6 + %47 = load i8, ptr %46, align 1, !tbaa !51 + %48 = zext i8 %47 to i32 + %49 = shl nuw nsw i32 %48, 16 + %50 = getelementptr inbounds nuw i8, ptr %0, i64 7 + %51 = load i8, ptr %50, align 1, !tbaa !51 + %52 = zext i8 %51 to i32 + %53 = shl nuw nsw i32 %52, 8 + %54 = or disjoint i32 %53, %49 + %55 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %56 = load i8, ptr %55, align 1, !tbaa !51 + %57 = zext i8 %56 to i32 + %58 = or disjoint i32 %54, %57 + %59 = add nuw nsw i32 %58, 9 + %60 = icmp ugt i32 %59, %1 + br i1 %60, label %.thread165, label %61 + +61: ; preds = %45 + %62 = getelementptr inbounds nuw i8, ptr %0, i64 43 + %63 = load i8, ptr %62, align 1, !tbaa !51 + %64 = zext i8 %63 to i32 + %65 = add nuw nsw i32 %64, 43 + %66 = icmp ult i32 %1, %65 + br i1 %66, label %.thread165, label %67 + +67: ; preds = %61 + %68 = add nuw nsw i32 %64, 46 + %69 = icmp ult i32 %1, %68 + br i1 %69, label %.thread165, label %70 -69: ; preds = %63 - %70 = add nuw nsw i32 %66, 46 - %71 = icmp ult i32 %1, %70 - br i1 %71, label %.thread165, label %72 +70: ; preds = %67 + %71 = zext i8 %63 to i64 + %72 = getelementptr inbounds nuw i8, ptr %0, i64 %71 + %73 = getelementptr inbounds nuw i8, ptr %72, i64 44 + %.val123 = load i8, ptr %73, align 1, !tbaa !51 + %74 = getelementptr i8, ptr %72, i64 45 + %.val124 = load i8, ptr %74, align 1, !tbaa !51 + %75 = zext i8 %.val123 to i32 + %76 = shl nuw nsw i32 %75, 8 + %77 = zext i8 %.val124 to i32 + %78 = or disjoint i32 %76, %77 + %79 = add nuw nsw i32 %78, %68 + %.not112 = icmp ugt i32 %1, %79 + br i1 %.not112, label %80, label %.thread165 + +80: ; preds = %70 + %81 = zext nneg i32 %79 to i64 + %82 = getelementptr inbounds nuw i8, ptr %0, i64 %81 + %83 = load i8, ptr %82, align 1, !tbaa !51 + %84 = zext i8 %83 to i32 + %85 = add nuw nsw i32 %79, %84 + %86 = icmp ult i32 %1, %85 + br i1 %86, label %.thread165, label %87 + +87: ; preds = %80 + %88 = add nuw nsw i32 %79, 1 + %89 = add nuw nsw i32 %88, %84 + %90 = add nuw nsw i32 %89, 2 + %91 = icmp ult i32 %1, %90 + br i1 %91, label %.thread165, label %92 + +92: ; preds = %87 + %93 = zext nneg i32 %89 to i64 + %94 = getelementptr inbounds nuw i8, ptr %0, i64 %93 + %.val125 = load i8, ptr %94, align 1, !tbaa !51 + %95 = getelementptr i8, ptr %94, i64 1 + %.val126 = load i8, ptr %95, align 1, !tbaa !51 + %96 = zext i8 %.val125 to i16 + %97 = shl nuw i16 %96, 8 + %98 = zext i8 %.val126 to i16 + %99 = or disjoint i16 %97, %98 + %100 = zext i16 %99 to i32 + %101 = add nuw nsw i32 %90, %100 + %102 = icmp ult i32 %1, %101 + br i1 %102, label %.thread165, label %.preheader170 -72: ; preds = %69 - %73 = zext i8 %65 to i64 - %74 = getelementptr inbounds nuw i8, ptr %0, i64 %73 - %75 = getelementptr inbounds nuw i8, ptr %74, i64 44 - %.val123 = load i8, ptr %75, align 1, !tbaa !51 - %76 = getelementptr i8, ptr %74, i64 45 - %.val124 = load i8, ptr %76, align 1, !tbaa !51 - %77 = zext i8 %.val123 to i32 - %78 = shl nuw nsw i32 %77, 8 - %79 = zext i8 %.val124 to i32 - %80 = or disjoint i32 %78, %79 - %81 = add nuw nsw i32 %80, %70 - %.not112 = icmp ugt i32 %1, %81 - br i1 %.not112, label %82, label %.thread165 - -82: ; preds = %72 - %83 = zext nneg i32 %81 to i64 - %84 = getelementptr inbounds nuw i8, ptr %0, i64 %83 - %85 = load i8, ptr %84, align 1, !tbaa !51 - %86 = zext i8 %85 to i32 - %87 = add nuw nsw i32 %81, %86 - %88 = icmp ult i32 %1, %87 - br i1 %88, label %.thread165, label %89 - -89: ; preds = %82 - %90 = add nuw nsw i32 %81, 1 - %91 = add nuw nsw i32 %90, %86 - %92 = add nuw nsw i32 %91, 2 - %93 = icmp ult i32 %1, %92 - br i1 %93, label %.thread165, label %94 - -94: ; preds = %89 - %95 = zext nneg i32 %91 to i64 - %96 = getelementptr inbounds nuw i8, ptr %0, i64 %95 - %.val125 = load i8, ptr %96, align 1, !tbaa !51 - %97 = getelementptr i8, ptr %96, i64 1 - %.val126 = load i8, ptr %97, align 1, !tbaa !51 - %98 = zext i8 %.val125 to i16 - %99 = shl nuw i16 %98, 8 - %100 = zext i8 %.val126 to i16 - %101 = or disjoint i16 %99, %100 - %102 = zext i16 %101 to i32 - %103 = add nuw nsw i32 %92, %102 - %104 = icmp ult i32 %1, %103 - br i1 %104, label %.thread165, label %.preheader170 - -.preheader170: ; preds = %94 - %105 = icmp ugt i16 %101, 3 - br i1 %105, label %.lr.ph184, label %._crit_edge +.preheader170: ; preds = %92 + %103 = icmp ugt i16 %99, 3 + br i1 %103, label %.lr.ph184, label %._crit_edge .lr.ph184: ; preds = %.preheader170, %.loopexit - %.097183 = phi i32 [ %.299, %.loopexit ], [ %92, %.preheader170 ] - %.0153182 = phi i16 [ %170, %.loopexit ], [ %101, %.preheader170 ] - %106 = add i32 %.097183, 2 - %107 = zext i32 %106 to i64 - %108 = getelementptr inbounds nuw i8, ptr %0, i64 %107 - %.val129 = load i8, ptr %108, align 1, !tbaa !51 - %109 = getelementptr i8, ptr %108, i64 1 - %.val130 = load i8, ptr %109, align 1, !tbaa !51 - %110 = zext i8 %.val129 to i32 - %111 = shl nuw nsw i32 %110, 8 - %112 = zext i8 %.val130 to i32 - %113 = or disjoint i32 %111, %112 - %114 = add i32 %.097183, 4 - %115 = add i32 %113, %114 - %116 = icmp ult i32 %1, %115 - br i1 %116, label %.thread165, label %117 - -117: ; preds = %.lr.ph184 - %118 = zext i32 %.097183 to i64 - %119 = getelementptr inbounds nuw i8, ptr %0, i64 %118 - %.val127 = load i8, ptr %119, align 1, !tbaa !51 - %120 = zext i8 %.val127 to i16 - %121 = shl nuw i16 %120, 8 - %122 = getelementptr i8, ptr %119, i64 1 - %.val128 = load i8, ptr %122, align 1, !tbaa !51 - %123 = zext i8 %.val128 to i16 - %124 = or disjoint i16 %121, %123 - %.not114 = icmp eq i16 %124, 0 - br i1 %.not114, label %125, label %.loopexit - -125: ; preds = %117 - %126 = zext i32 %114 to i64 - %127 = getelementptr inbounds nuw i8, ptr %0, i64 %126 - %.val131 = load i8, ptr %127, align 1, !tbaa !51 - %128 = getelementptr i8, ptr %127, i64 1 - %.val132 = load i8, ptr %128, align 1, !tbaa !51 - %129 = zext i8 %.val131 to i16 - %130 = shl nuw i16 %129, 8 - %131 = zext i8 %.val132 to i16 - %132 = or disjoint i16 %130, %131 - %133 = add i32 %.097183, 6 - %134 = zext i16 %132 to i32 - %135 = add i32 %133, %134 - %136 = icmp ult i32 %1, %135 - br i1 %136, label %.thread165, label %.preheader - -.preheader: ; preds = %125 - %137 = icmp ugt i16 %132, 3 - br i1 %137, label %.lr.ph, label %.loopexit - -.lr.ph: ; preds = %.preheader, %159 - %.4101181 = phi i32 [ %147, %159 ], [ %133, %.preheader ] - %.0151180 = phi i16 [ %164, %159 ], [ %132, %.preheader ] - %138 = add i32 %.4101181, 1 - %139 = zext i32 %138 to i64 - %140 = getelementptr inbounds nuw i8, ptr %0, i64 %139 - %.val133 = load i8, ptr %140, align 1, !tbaa !51 - %141 = getelementptr i8, ptr %140, i64 1 - %.val134 = load i8, ptr %141, align 1, !tbaa !51 - %142 = zext i8 %.val133 to i32 - %143 = shl nuw nsw i32 %142, 8 - %144 = zext i8 %.val134 to i32 - %145 = or disjoint i32 %143, %144 - %146 = add i32 %.4101181, 3 - %147 = add i32 %145, %146 - %148 = icmp ult i32 %1, %147 - br i1 %148, label %.thread165, label %149 - -149: ; preds = %.lr.ph - %150 = zext i32 %.4101181 to i64 - %151 = getelementptr inbounds nuw i8, ptr %0, i64 %150 - %152 = load i8, ptr %151, align 1, !tbaa !51 - %.not115 = icmp eq i8 %152, %2 - br i1 %.not115, label %153, label %159 - -153: ; preds = %149 - %154 = load i32, ptr %4, align 4, !tbaa !3 - %155 = tail call range(i32 0, 65540) i32 @llvm.umin.i32(i32 range(i32 0, 65540) %145, i32 %154) - store i32 %155, ptr %4, align 4, !tbaa !3 - %156 = zext i32 %146 to i64 - %157 = getelementptr inbounds nuw i8, ptr %0, i64 %156 - %158 = zext nneg i32 %155 to i64 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %3, ptr nonnull align 1 %157, i64 %158, i1 false) + %.097183 = phi i32 [ %.299, %.loopexit ], [ %90, %.preheader170 ] + %.0153182 = phi i16 [ %166, %.loopexit ], [ %99, %.preheader170 ] + %104 = add i32 %.097183, 2 + %105 = zext i32 %104 to i64 + %106 = getelementptr inbounds nuw i8, ptr %0, i64 %105 + %.val129 = load i8, ptr %106, align 1, !tbaa !51 + %107 = getelementptr i8, ptr %106, i64 1 + %.val130 = load i8, ptr %107, align 1, !tbaa !51 + %108 = zext i8 %.val129 to i32 + %109 = shl nuw nsw i32 %108, 8 + %110 = zext i8 %.val130 to i32 + %111 = or disjoint i32 %109, %110 + %112 = add i32 %.097183, 4 + %113 = add i32 %111, %112 + %114 = icmp ult i32 %1, %113 + br i1 %114, label %.thread165, label %115 + +115: ; preds = %.lr.ph184 + %116 = zext i32 %.097183 to i64 + %117 = getelementptr inbounds nuw i8, ptr %0, i64 %116 + %.val127 = load i8, ptr %117, align 1, !tbaa !51 + %118 = getelementptr i8, ptr %117, i64 1 + %.val128 = load i8, ptr %118, align 1, !tbaa !51 + %119 = or i8 %.val128, %.val127 + %120 = icmp eq i8 %119, 0 + br i1 %120, label %121, label %.loopexit + +121: ; preds = %115 + %122 = zext i32 %112 to i64 + %123 = getelementptr inbounds nuw i8, ptr %0, i64 %122 + %.val131 = load i8, ptr %123, align 1, !tbaa !51 + %124 = getelementptr i8, ptr %123, i64 1 + %.val132 = load i8, ptr %124, align 1, !tbaa !51 + %125 = zext i8 %.val131 to i16 + %126 = shl nuw i16 %125, 8 + %127 = zext i8 %.val132 to i16 + %128 = or disjoint i16 %126, %127 + %129 = add i32 %.097183, 6 + %130 = zext i16 %128 to i32 + %131 = add i32 %129, %130 + %132 = icmp ult i32 %1, %131 + br i1 %132, label %.thread165, label %.preheader + +.preheader: ; preds = %121 + %133 = icmp ugt i16 %128, 3 + br i1 %133, label %.lr.ph, label %.loopexit + +.lr.ph: ; preds = %.preheader, %155 + %.4101181 = phi i32 [ %143, %155 ], [ %129, %.preheader ] + %.0151180 = phi i16 [ %160, %155 ], [ %128, %.preheader ] + %134 = add i32 %.4101181, 1 + %135 = zext i32 %134 to i64 + %136 = getelementptr inbounds nuw i8, ptr %0, i64 %135 + %.val133 = load i8, ptr %136, align 1, !tbaa !51 + %137 = getelementptr i8, ptr %136, i64 1 + %.val134 = load i8, ptr %137, align 1, !tbaa !51 + %138 = zext i8 %.val133 to i32 + %139 = shl nuw nsw i32 %138, 8 + %140 = zext i8 %.val134 to i32 + %141 = or disjoint i32 %139, %140 + %142 = add i32 %.4101181, 3 + %143 = add i32 %141, %142 + %144 = icmp ult i32 %1, %143 + br i1 %144, label %.thread165, label %145 + +145: ; preds = %.lr.ph + %146 = zext i32 %.4101181 to i64 + %147 = getelementptr inbounds nuw i8, ptr %0, i64 %146 + %148 = load i8, ptr %147, align 1, !tbaa !51 + %.not115 = icmp eq i8 %148, %2 + br i1 %.not115, label %149, label %155 + +149: ; preds = %145 + %150 = load i32, ptr %4, align 4, !tbaa !3 + %151 = tail call range(i32 0, 65540) i32 @llvm.umin.i32(i32 range(i32 0, 65540) %141, i32 %150) + store i32 %151, ptr %4, align 4, !tbaa !3 + %152 = zext i32 %142 to i64 + %153 = getelementptr inbounds nuw i8, ptr %0, i64 %152 + %154 = zext nneg i32 %151 to i64 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %3, ptr nonnull align 1 %153, i64 %154, i1 false) br label %.thread165 -159: ; preds = %149 - %160 = add nuw nsw i32 %145, 3 - %161 = zext i16 %.0151180 to i32 - %162 = tail call range(i32 0, 65540) i32 @llvm.umin.i32(i32 range(i32 0, 65540) %160, i32 %161) - %163 = trunc nuw i32 %162 to i16 - %164 = sub i16 %.0151180, %163 - %165 = icmp ugt i16 %164, 3 - br i1 %165, label %.lr.ph, label %.loopexit - -.loopexit: ; preds = %159, %.preheader, %117 - %.299 = phi i32 [ %115, %117 ], [ %133, %.preheader ], [ %147, %159 ] - %166 = add nuw nsw i32 %113, 4 - %167 = zext i16 %.0153182 to i32 - %168 = tail call range(i32 0, 65540) i32 @llvm.umin.i32(i32 range(i32 0, 65540) %166, i32 %167) - %169 = trunc nuw i32 %168 to i16 - %170 = sub i16 %.0153182, %169 - %171 = icmp ugt i16 %170, 3 - br i1 %171, label %.lr.ph184, label %._crit_edge, !llvm.loop !109 +155: ; preds = %145 + %156 = add nuw nsw i32 %141, 3 + %157 = zext i16 %.0151180 to i32 + %158 = tail call range(i32 0, 65540) i32 @llvm.umin.i32(i32 range(i32 0, 65540) %156, i32 %157) + %159 = trunc nuw i32 %158 to i16 + %160 = sub i16 %.0151180, %159 + %161 = icmp ugt i16 %160, 3 + br i1 %161, label %.lr.ph, label %.loopexit + +.loopexit: ; preds = %155, %.preheader, %115 + %.299 = phi i32 [ %113, %115 ], [ %129, %.preheader ], [ %143, %155 ] + %162 = add nuw nsw i32 %111, 4 + %163 = zext i16 %.0153182 to i32 + %164 = tail call range(i32 0, 65540) i32 @llvm.umin.i32(i32 range(i32 0, 65540) %162, i32 %163) + %165 = trunc nuw i32 %164 to i16 + %166 = sub i16 %.0153182, %165 + %167 = icmp ugt i16 %166, 3 + br i1 %167, label %.lr.ph184, label %._crit_edge, !llvm.loop !109 ._crit_edge: ; preds = %.loopexit, %.preheader170 - %.0153.lcssa = phi i16 [ %101, %.preheader170 ], [ %170, %.loopexit ] + %.0153.lcssa = phi i16 [ %99, %.preheader170 ], [ %166, %.loopexit ] %.not113 = icmp eq i16 %.0153.lcssa, 0 - %172 = select i1 %.not113, i32 0, i32 -328 + %168 = select i1 %.not113, i32 0, i32 -328 br label %.thread165 -.thread165: ; preds = %125, %.lr.ph184, %.lr.ph, %153, %94, %89, %82, %72, %69, %63, %47, %44, %35, %31, %28, %9, %21, %13, %5, %._crit_edge - %.0 = phi i32 [ %172, %._crit_edge ], [ -310, %5 ], [ -328, %13 ], [ %., %21 ], [ -328, %9 ], [ -328, %28 ], [ -396, %31 ], [ -310, %35 ], [ -328, %44 ], [ -328, %47 ], [ -328, %63 ], [ -328, %69 ], [ -328, %72 ], [ -328, %82 ], [ 0, %89 ], [ -328, %94 ], [ 1, %153 ], [ -328, %.lr.ph ], [ -328, %.lr.ph184 ], [ -328, %125 ] +.thread165: ; preds = %121, %.lr.ph184, %.lr.ph, %149, %92, %87, %80, %70, %67, %61, %45, %42, %33, %29, %26, %9, %21, %13, %5, %._crit_edge + %.0 = phi i32 [ %168, %._crit_edge ], [ -310, %5 ], [ -328, %13 ], [ %., %21 ], [ -328, %9 ], [ -328, %26 ], [ -396, %29 ], [ -310, %33 ], [ -328, %42 ], [ -328, %45 ], [ -328, %61 ], [ -328, %67 ], [ -328, %70 ], [ -328, %80 ], [ 0, %87 ], [ -328, %92 ], [ 1, %149 ], [ -328, %.lr.ph ], [ -328, %.lr.ph184 ], [ -328, %121 ] ret i32 %.0 } diff --git a/bench/zed-rs/optimized/38cn6p2m6864jrrxog4mr8xwk.ll b/bench/zed-rs/optimized/38cn6p2m6864jrrxog4mr8xwk.ll index 7edc9462928..544828d1882 100644 --- a/bench/zed-rs/optimized/38cn6p2m6864jrrxog4mr8xwk.ll +++ b/bench/zed-rs/optimized/38cn6p2m6864jrrxog4mr8xwk.ll @@ -2385,132 +2385,130 @@ define hidden void @_ZN10image_webp8extended20read_extended_header17ha6dcd9d79c0 %29 = add i64 %12, 4 %storemerge.i.i104 = select i1 %28, i64 %29, i64 %15 store i64 %storemerge.i.i104, ptr %11, align 8, !alias.scope !566, !noalias !567 - br i1 %28, label %31, label %41 + br i1 %28, label %31, label %39 30: ; preds = %2 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10), !noalias !539 store i8 0, ptr %0, align 8 %.sroa.456.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %19, ptr %.sroa.456.0..sroa_idx, align 8 - br label %85 + br label %83 31: ; preds = %22 %32 = getelementptr inbounds nuw i8, ptr %8, i64 1 %33 = load i16, ptr %32, align 1, !noalias !558 - %34 = zext i16 %33 to i32 - %35 = shl nuw nsw i32 %34, 8 - %36 = load i8, ptr %8, align 1, !noalias !558, !noundef !4 - %37 = zext i8 %36 to i32 - %38 = or disjoint i32 %35, %37 + %34 = load i8, ptr %8, align 1, !noalias !558, !noundef !4 call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %8), !noalias !558 - %39 = and i8 %23, -63 - %or.cond = icmp eq i8 %39, 0 - %40 = icmp eq i32 %38, 0 - %or.cond1 = and i1 %or.cond, %40 - br i1 %or.cond1, label %43, label %42 - -41: ; preds = %22 + %35 = and i8 %23, -63 + %or.cond = icmp eq i8 %35, 0 + %36 = zext i8 %34 to i16 + %37 = or i16 %33, %36 + %38 = icmp eq i16 %37, 0 + %or.cond1 = and i1 %or.cond, %38 + br i1 %or.cond1, label %41, label %40 + +39: ; preds = %22 call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %8), !noalias !558 store i8 0, ptr %0, align 8 %.sroa.469.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %27, ptr %.sroa.469.0..sroa_idx, align 8 - br label %85 + br label %83 -42: ; preds = %31 +40: ; preds = %31 store i8 5, ptr %0, align 8 - br label %85 + br label %83 -43: ; preds = %31 +41: ; preds = %31 call void @llvm.experimental.noalias.scope.decl(metadata !568) call void @llvm.lifetime.start.p0(i64 3, ptr nonnull %6), !noalias !571 call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %6, i8 0, i64 3, i1 false), !noalias !571 call void @llvm.experimental.noalias.scope.decl(metadata !573) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5), !noalias !576 %.sroa.0.0.sroa.speculated.i.i.i.i106 = call noundef i64 @llvm.umin.i64(i64 %29, i64 %15) - %44 = sub nuw i64 %15, %.sroa.0.0.sroa.speculated.i.i.i.i106 - %45 = getelementptr inbounds i8, ptr %13, i64 %.sroa.0.0.sroa.speculated.i.i.i.i106 - store ptr %45, ptr %5, align 8, !noalias !576 - %46 = getelementptr inbounds nuw i8, ptr %5, i64 8 - store i64 %44, ptr %46, align 8, !noalias !576 - %47 = call noundef ptr @"_ZN3std2io5impls60_$LT$impl$u20$std..io..Read$u20$for$u20$$RF$$u5b$u8$u5d$$GT$10read_exact17h6d118d125acd1831E.llvm.3233214882447289910"(ptr noalias noundef nonnull align 8 dereferenceable(16) %5, ptr noalias noundef nonnull align 1 %6, i64 noundef 3), !noalias !578 + %42 = sub nuw i64 %15, %.sroa.0.0.sroa.speculated.i.i.i.i106 + %43 = getelementptr inbounds i8, ptr %13, i64 %.sroa.0.0.sroa.speculated.i.i.i.i106 + store ptr %43, ptr %5, align 8, !noalias !576 + %44 = getelementptr inbounds nuw i8, ptr %5, i64 8 + store i64 %42, ptr %44, align 8, !noalias !576 + %45 = call noundef ptr @"_ZN3std2io5impls60_$LT$impl$u20$std..io..Read$u20$for$u20$$RF$$u5b$u8$u5d$$GT$10read_exact17h6d118d125acd1831E.llvm.3233214882447289910"(ptr noalias noundef nonnull align 8 dereferenceable(16) %5, ptr noalias noundef nonnull align 1 %6, i64 noundef 3), !noalias !578 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5), !noalias !576 - %48 = icmp eq ptr %47, null - %49 = add i64 %12, 7 - %storemerge.i.i107 = select i1 %48, i64 %49, i64 %15 + %46 = icmp eq ptr %45, null + %47 = add i64 %12, 7 + %storemerge.i.i107 = select i1 %46, i64 %47, i64 %15 store i64 %storemerge.i.i107, ptr %11, align 8, !alias.scope !579, !noalias !580 - br i1 %48, label %50, label %65 - -50: ; preds = %43 - %51 = getelementptr inbounds nuw i8, ptr %6, i64 1 - %52 = load i16, ptr %51, align 1, !noalias !571 - %53 = zext i16 %52 to i32 - %54 = shl nuw nsw i32 %53, 8 - %55 = load i8, ptr %6, align 1, !noalias !571, !noundef !4 - %56 = zext i8 %55 to i32 - %57 = or disjoint i32 %54, %56 + br i1 %46, label %48, label %63 + +48: ; preds = %41 + %49 = getelementptr inbounds nuw i8, ptr %6, i64 1 + %50 = load i16, ptr %49, align 1, !noalias !571 + %51 = zext i16 %50 to i32 + %52 = shl nuw nsw i32 %51, 8 + %53 = load i8, ptr %6, align 1, !noalias !571, !noundef !4 + %54 = zext i8 %53 to i32 + %55 = or disjoint i32 %52, %54 call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %6), !noalias !571 - %58 = add nuw nsw i32 %57, 1 + %56 = add nuw nsw i32 %55, 1 call void @llvm.experimental.noalias.scope.decl(metadata !581) call void @llvm.lifetime.start.p0(i64 3, ptr nonnull %4), !noalias !584 call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %4, i8 0, i64 3, i1 false), !noalias !584 call void @llvm.experimental.noalias.scope.decl(metadata !586) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3), !noalias !589 - %.sroa.0.0.sroa.speculated.i.i.i.i111 = call noundef i64 @llvm.umin.i64(i64 %49, i64 %15) - %59 = sub nuw i64 %15, %.sroa.0.0.sroa.speculated.i.i.i.i111 - %60 = getelementptr inbounds i8, ptr %13, i64 %.sroa.0.0.sroa.speculated.i.i.i.i111 - store ptr %60, ptr %3, align 8, !noalias !589 - %61 = getelementptr inbounds nuw i8, ptr %3, i64 8 - store i64 %59, ptr %61, align 8, !noalias !589 - %62 = call noundef ptr @"_ZN3std2io5impls60_$LT$impl$u20$std..io..Read$u20$for$u20$$RF$$u5b$u8$u5d$$GT$10read_exact17h6d118d125acd1831E.llvm.3233214882447289910"(ptr noalias noundef nonnull align 8 dereferenceable(16) %3, ptr noalias noundef nonnull align 1 %4, i64 noundef 3), !noalias !591 + %.sroa.0.0.sroa.speculated.i.i.i.i111 = call noundef i64 @llvm.umin.i64(i64 %47, i64 %15) + %57 = sub nuw i64 %15, %.sroa.0.0.sroa.speculated.i.i.i.i111 + %58 = getelementptr inbounds i8, ptr %13, i64 %.sroa.0.0.sroa.speculated.i.i.i.i111 + store ptr %58, ptr %3, align 8, !noalias !589 + %59 = getelementptr inbounds nuw i8, ptr %3, i64 8 + store i64 %57, ptr %59, align 8, !noalias !589 + %60 = call noundef ptr @"_ZN3std2io5impls60_$LT$impl$u20$std..io..Read$u20$for$u20$$RF$$u5b$u8$u5d$$GT$10read_exact17h6d118d125acd1831E.llvm.3233214882447289910"(ptr noalias noundef nonnull align 8 dereferenceable(16) %3, ptr noalias noundef nonnull align 1 %4, i64 noundef 3), !noalias !591 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3), !noalias !589 - %63 = icmp eq ptr %62, null - %64 = add i64 %12, 10 - %storemerge.i.i112 = select i1 %63, i64 %64, i64 %15 + %61 = icmp eq ptr %60, null + %62 = add i64 %12, 10 + %storemerge.i.i112 = select i1 %61, i64 %62, i64 %15 store i64 %storemerge.i.i112, ptr %11, align 8, !alias.scope !592, !noalias !593 - br i1 %63, label %66, label %77 + br i1 %61, label %64, label %75 -65: ; preds = %43 +63: ; preds = %41 call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %6), !noalias !571 store i8 0, ptr %0, align 8 %.sroa.481.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %47, ptr %.sroa.481.0..sroa_idx, align 8 - br label %85 + store ptr %45, ptr %.sroa.481.0..sroa_idx, align 8 + br label %83 -66: ; preds = %50 - %67 = getelementptr inbounds nuw i8, ptr %4, i64 1 - %68 = load i16, ptr %67, align 1, !noalias !584 - %69 = zext i16 %68 to i32 - %70 = shl nuw nsw i32 %69, 8 - %71 = load i8, ptr %4, align 1, !noalias !584, !noundef !4 - %72 = zext i8 %71 to i32 - %73 = or disjoint i32 %70, %72 +64: ; preds = %48 + %65 = getelementptr inbounds nuw i8, ptr %4, i64 1 + %66 = load i16, ptr %65, align 1, !noalias !584 + %67 = zext i16 %66 to i32 + %68 = shl nuw nsw i32 %67, 8 + %69 = load i8, ptr %4, align 1, !noalias !584, !noundef !4 + %70 = zext i8 %69 to i32 + %71 = or disjoint i32 %68, %70 call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %4), !noalias !584 - %74 = add nuw nsw i32 %73, 1 - %75 = call { i32, i1 } @llvm.umul.with.overflow.i32(i32 %58, i32 %74) - %76 = extractvalue { i32, i1 } %75, 1 - br i1 %76, label %84, label %78 + %72 = add nuw nsw i32 %71, 1 + %73 = call { i32, i1 } @llvm.umul.with.overflow.i32(i32 %56, i32 %72) + %74 = extractvalue { i32, i1 } %73, 1 + br i1 %74, label %82, label %76 -77: ; preds = %50 +75: ; preds = %48 call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %4), !noalias !584 store i8 0, ptr %0, align 8 %.sroa.493.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %62, ptr %.sroa.493.0..sroa_idx, align 8 - br label %85 + store ptr %60, ptr %.sroa.493.0..sroa_idx, align 8 + br label %83 -78: ; preds = %66 - %79 = lshr i8 %23, 4 - %.lobit = and i8 %79, 1 +76: ; preds = %64 + %77 = lshr i8 %23, 4 + %.lobit = and i8 %77, 1 %.lobit98 = lshr i8 %23, 5 - %80 = lshr i8 %23, 3 - %.lobit99 = and i8 %80, 1 - %81 = lshr i8 %23, 2 - %.lobit100 = and i8 %81, 1 - %82 = lshr exact i8 %23, 1 - %.lobit101 = and i8 %82, 1 - %83 = getelementptr inbounds nuw i8, ptr %0, i64 4 - store i32 %58, ptr %83, align 4 + %78 = lshr i8 %23, 3 + %.lobit99 = and i8 %78, 1 + %79 = lshr i8 %23, 2 + %.lobit100 = and i8 %79, 1 + %80 = lshr exact i8 %23, 1 + %.lobit101 = and i8 %80, 1 + %81 = getelementptr inbounds nuw i8, ptr %0, i64 4 + store i32 %56, ptr %81, align 4 %.sroa.245.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i32 %74, ptr %.sroa.245.0..sroa_idx, align 8 + store i32 %72, ptr %.sroa.245.0..sroa_idx, align 8 %.sroa.346.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 12 store i32 0, ptr %.sroa.346.0..sroa_idx, align 4 %.sroa.447.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 @@ -2524,13 +2522,13 @@ define hidden void @_ZN10image_webp8extended20read_extended_header17ha6dcd9d79c0 %.sroa.851.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 20 store i8 %.lobit101, ptr %.sroa.851.0..sroa_idx, align 4 store i8 28, ptr %0, align 8 - br label %85 + br label %83 -84: ; preds = %66 +82: ; preds = %64 store i8 8, ptr %0, align 8 - br label %85 + br label %83 -85: ; preds = %84, %78, %77, %65, %42, %41, %30 +83: ; preds = %82, %76, %75, %63, %40, %39, %30 ret void } diff --git a/bench/zed-rs/optimized/7ud3epkhjcjfe38h6hlh4jrau.ll b/bench/zed-rs/optimized/7ud3epkhjcjfe38h6hlh4jrau.ll index 920f97c2daa..0c79b559733 100644 --- a/bench/zed-rs/optimized/7ud3epkhjcjfe38h6hlh4jrau.ll +++ b/bench/zed-rs/optimized/7ud3epkhjcjfe38h6hlh4jrau.ll @@ -2089,148 +2089,146 @@ define internal fastcc void @_ZN10image_webp8extended20read_extended_header17he4 %35 = add i64 %12, 4 %storemerge.i.i104 = select i1 %34, i64 %35, i64 %15 store i64 %storemerge.i.i104, ptr %11, align 8, !alias.scope !406, !noalias !407 - br i1 %34, label %37, label %47 + br i1 %34, label %37, label %45 36: ; preds = %"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i" call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10), !noalias !368 store i8 0, ptr %0, align 8 %.sroa.456.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %22, ptr %.sroa.456.0..sroa_idx, align 8 - br label %97 + br label %95 37: ; preds = %"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i103" %38 = getelementptr inbounds nuw i8, ptr %8, i64 1 %39 = load i16, ptr %38, align 1, !noalias !392 - %40 = zext i16 %39 to i32 - %41 = shl nuw nsw i32 %40, 8 - %42 = load i8, ptr %8, align 1, !noalias !392, !noundef !22 - %43 = zext i8 %42 to i32 - %44 = or disjoint i32 %41, %43 + %40 = load i8, ptr %8, align 1, !noalias !392, !noundef !22 call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %8), !noalias !392 - %45 = and i8 %26, -63 - %or.cond = icmp eq i8 %45, 0 - %46 = icmp eq i32 %44, 0 - %or.cond1 = and i1 %or.cond, %46 - br i1 %or.cond1, label %49, label %48 + %41 = and i8 %26, -63 + %or.cond = icmp eq i8 %41, 0 + %42 = zext i8 %40 to i16 + %43 = or i16 %39, %42 + %44 = icmp eq i16 %43, 0 + %or.cond1 = and i1 %or.cond, %44 + br i1 %or.cond1, label %47, label %46 -47: ; preds = %"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i103" +45: ; preds = %"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i103" call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %8), !noalias !392 store i8 0, ptr %0, align 8 %.sroa.469.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %33, ptr %.sroa.469.0..sroa_idx, align 8 - br label %97 + br label %95 -48: ; preds = %37 +46: ; preds = %37 store i8 5, ptr %0, align 8 - br label %97 + br label %95 -49: ; preds = %37 +47: ; preds = %37 call void @llvm.experimental.noalias.scope.decl(metadata !408) call void @llvm.lifetime.start.p0(i64 3, ptr nonnull %6), !noalias !411 call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %6, i8 0, i64 3, i1 false), !noalias !411 call void @llvm.experimental.noalias.scope.decl(metadata !413) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5), !noalias !416 - %50 = call noundef i64 @_ZN4core3cmp6min_by17hc200cb174ae6de94E.llvm.6689388785225190856(i64 noundef %35, i64 noundef %15), !noalias !418 - %51 = icmp ugt i64 %50, %15 - br i1 %51, label %52, label %"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i106" + %48 = call noundef i64 @_ZN4core3cmp6min_by17hc200cb174ae6de94E.llvm.6689388785225190856(i64 noundef %35, i64 noundef %15), !noalias !418 + %49 = icmp ugt i64 %48, %15 + br i1 %49, label %50, label %"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i106" -52: ; preds = %49 - call void @_ZN4core5slice5index26slice_start_index_len_fail17h98d5080ba351a62cE(i64 noundef %50, i64 noundef %15, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7523ee657f2e5dc230e124b7b1f1e478.266.llvm.6689388785225190856) #51, !noalias !421 +50: ; preds = %47 + call void @_ZN4core5slice5index26slice_start_index_len_fail17h98d5080ba351a62cE(i64 noundef %48, i64 noundef %15, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7523ee657f2e5dc230e124b7b1f1e478.266.llvm.6689388785225190856) #51, !noalias !421 unreachable -"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i106": ; preds = %49 - %53 = sub nuw i64 %15, %50 - %54 = getelementptr inbounds i8, ptr %13, i64 %50 - store ptr %54, ptr %5, align 8, !noalias !416 - %55 = getelementptr inbounds nuw i8, ptr %5, i64 8 - store i64 %53, ptr %55, align 8, !noalias !416 - %56 = call noundef ptr @"_ZN3std2io5impls60_$LT$impl$u20$std..io..Read$u20$for$u20$$RF$$u5b$u8$u5d$$GT$10read_exact17h6d118d125acd1831E.llvm.6689388785225190856"(ptr noalias noundef nonnull align 8 dereferenceable(16) %5, ptr noalias noundef nonnull align 1 %6, i64 noundef 3), !noalias !424 +"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i106": ; preds = %47 + %51 = sub nuw i64 %15, %48 + %52 = getelementptr inbounds i8, ptr %13, i64 %48 + store ptr %52, ptr %5, align 8, !noalias !416 + %53 = getelementptr inbounds nuw i8, ptr %5, i64 8 + store i64 %51, ptr %53, align 8, !noalias !416 + %54 = call noundef ptr @"_ZN3std2io5impls60_$LT$impl$u20$std..io..Read$u20$for$u20$$RF$$u5b$u8$u5d$$GT$10read_exact17h6d118d125acd1831E.llvm.6689388785225190856"(ptr noalias noundef nonnull align 8 dereferenceable(16) %5, ptr noalias noundef nonnull align 1 %6, i64 noundef 3), !noalias !424 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5), !noalias !416 - %57 = icmp eq ptr %56, null - %58 = add i64 %12, 7 - %storemerge.i.i107 = select i1 %57, i64 %58, i64 %15 + %55 = icmp eq ptr %54, null + %56 = add i64 %12, 7 + %storemerge.i.i107 = select i1 %55, i64 %56, i64 %15 store i64 %storemerge.i.i107, ptr %11, align 8, !alias.scope !425, !noalias !426 - br i1 %57, label %59, label %77 - -59: ; preds = %"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i106" - %60 = getelementptr inbounds nuw i8, ptr %6, i64 1 - %61 = load i16, ptr %60, align 1, !noalias !411 - %62 = zext i16 %61 to i32 - %63 = shl nuw nsw i32 %62, 8 - %64 = load i8, ptr %6, align 1, !noalias !411, !noundef !22 - %65 = zext i8 %64 to i32 - %66 = or disjoint i32 %63, %65 + br i1 %55, label %57, label %75 + +57: ; preds = %"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i106" + %58 = getelementptr inbounds nuw i8, ptr %6, i64 1 + %59 = load i16, ptr %58, align 1, !noalias !411 + %60 = zext i16 %59 to i32 + %61 = shl nuw nsw i32 %60, 8 + %62 = load i8, ptr %6, align 1, !noalias !411, !noundef !22 + %63 = zext i8 %62 to i32 + %64 = or disjoint i32 %61, %63 call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %6), !noalias !411 - %67 = add nuw nsw i32 %66, 1 + %65 = add nuw nsw i32 %64, 1 call void @llvm.experimental.noalias.scope.decl(metadata !427) call void @llvm.lifetime.start.p0(i64 3, ptr nonnull %4), !noalias !430 call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %4, i8 0, i64 3, i1 false), !noalias !430 call void @llvm.experimental.noalias.scope.decl(metadata !432) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3), !noalias !435 - %68 = call noundef i64 @_ZN4core3cmp6min_by17hc200cb174ae6de94E.llvm.6689388785225190856(i64 noundef %58, i64 noundef %15), !noalias !437 - %69 = icmp ugt i64 %68, %15 - br i1 %69, label %70, label %"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i111" + %66 = call noundef i64 @_ZN4core3cmp6min_by17hc200cb174ae6de94E.llvm.6689388785225190856(i64 noundef %56, i64 noundef %15), !noalias !437 + %67 = icmp ugt i64 %66, %15 + br i1 %67, label %68, label %"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i111" -70: ; preds = %59 - call void @_ZN4core5slice5index26slice_start_index_len_fail17h98d5080ba351a62cE(i64 noundef %68, i64 noundef %15, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7523ee657f2e5dc230e124b7b1f1e478.266.llvm.6689388785225190856) #51, !noalias !440 +68: ; preds = %57 + call void @_ZN4core5slice5index26slice_start_index_len_fail17h98d5080ba351a62cE(i64 noundef %66, i64 noundef %15, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7523ee657f2e5dc230e124b7b1f1e478.266.llvm.6689388785225190856) #51, !noalias !440 unreachable -"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i111": ; preds = %59 - %71 = sub nuw i64 %15, %68 - %72 = getelementptr inbounds i8, ptr %13, i64 %68 - store ptr %72, ptr %3, align 8, !noalias !435 - %73 = getelementptr inbounds nuw i8, ptr %3, i64 8 - store i64 %71, ptr %73, align 8, !noalias !435 - %74 = call noundef ptr @"_ZN3std2io5impls60_$LT$impl$u20$std..io..Read$u20$for$u20$$RF$$u5b$u8$u5d$$GT$10read_exact17h6d118d125acd1831E.llvm.6689388785225190856"(ptr noalias noundef nonnull align 8 dereferenceable(16) %3, ptr noalias noundef nonnull align 1 %4, i64 noundef 3), !noalias !443 +"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i111": ; preds = %57 + %69 = sub nuw i64 %15, %66 + %70 = getelementptr inbounds i8, ptr %13, i64 %66 + store ptr %70, ptr %3, align 8, !noalias !435 + %71 = getelementptr inbounds nuw i8, ptr %3, i64 8 + store i64 %69, ptr %71, align 8, !noalias !435 + %72 = call noundef ptr @"_ZN3std2io5impls60_$LT$impl$u20$std..io..Read$u20$for$u20$$RF$$u5b$u8$u5d$$GT$10read_exact17h6d118d125acd1831E.llvm.6689388785225190856"(ptr noalias noundef nonnull align 8 dereferenceable(16) %3, ptr noalias noundef nonnull align 1 %4, i64 noundef 3), !noalias !443 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3), !noalias !435 - %75 = icmp eq ptr %74, null - %76 = add i64 %12, 10 - %storemerge.i.i112 = select i1 %75, i64 %76, i64 %15 + %73 = icmp eq ptr %72, null + %74 = add i64 %12, 10 + %storemerge.i.i112 = select i1 %73, i64 %74, i64 %15 store i64 %storemerge.i.i112, ptr %11, align 8, !alias.scope !444, !noalias !445 - br i1 %75, label %78, label %89 + br i1 %73, label %76, label %87 -77: ; preds = %"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i106" +75: ; preds = %"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i106" call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %6), !noalias !411 store i8 0, ptr %0, align 8 %.sroa.481.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %56, ptr %.sroa.481.0..sroa_idx, align 8 - br label %97 - -78: ; preds = %"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i111" - %79 = getelementptr inbounds nuw i8, ptr %4, i64 1 - %80 = load i16, ptr %79, align 1, !noalias !430 - %81 = zext i16 %80 to i32 - %82 = shl nuw nsw i32 %81, 8 - %83 = load i8, ptr %4, align 1, !noalias !430, !noundef !22 - %84 = zext i8 %83 to i32 - %85 = or disjoint i32 %82, %84 + store ptr %54, ptr %.sroa.481.0..sroa_idx, align 8 + br label %95 + +76: ; preds = %"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i111" + %77 = getelementptr inbounds nuw i8, ptr %4, i64 1 + %78 = load i16, ptr %77, align 1, !noalias !430 + %79 = zext i16 %78 to i32 + %80 = shl nuw nsw i32 %79, 8 + %81 = load i8, ptr %4, align 1, !noalias !430, !noundef !22 + %82 = zext i8 %81 to i32 + %83 = or disjoint i32 %80, %82 call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %4), !noalias !430 - %86 = add nuw nsw i32 %85, 1 - %87 = call { i32, i1 } @llvm.umul.with.overflow.i32(i32 %67, i32 %86) - %88 = extractvalue { i32, i1 } %87, 1 - br i1 %88, label %96, label %90 + %84 = add nuw nsw i32 %83, 1 + %85 = call { i32, i1 } @llvm.umul.with.overflow.i32(i32 %65, i32 %84) + %86 = extractvalue { i32, i1 } %85, 1 + br i1 %86, label %94, label %88 -89: ; preds = %"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i111" +87: ; preds = %"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i111" call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %4), !noalias !430 store i8 0, ptr %0, align 8 %.sroa.493.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %74, ptr %.sroa.493.0..sroa_idx, align 8 - br label %97 + store ptr %72, ptr %.sroa.493.0..sroa_idx, align 8 + br label %95 -90: ; preds = %78 - %91 = lshr i8 %26, 4 - %.lobit = and i8 %91, 1 +88: ; preds = %76 + %89 = lshr i8 %26, 4 + %.lobit = and i8 %89, 1 %.lobit98 = lshr i8 %26, 5 - %92 = lshr i8 %26, 3 - %.lobit99 = and i8 %92, 1 - %93 = lshr i8 %26, 2 - %.lobit100 = and i8 %93, 1 - %94 = lshr exact i8 %26, 1 - %.lobit101 = and i8 %94, 1 - %95 = getelementptr inbounds nuw i8, ptr %0, i64 4 - store i32 %67, ptr %95, align 4 + %90 = lshr i8 %26, 3 + %.lobit99 = and i8 %90, 1 + %91 = lshr i8 %26, 2 + %.lobit100 = and i8 %91, 1 + %92 = lshr exact i8 %26, 1 + %.lobit101 = and i8 %92, 1 + %93 = getelementptr inbounds nuw i8, ptr %0, i64 4 + store i32 %65, ptr %93, align 4 %.sroa.245.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i32 %86, ptr %.sroa.245.0..sroa_idx, align 8 + store i32 %84, ptr %.sroa.245.0..sroa_idx, align 8 %.sroa.346.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 12 store i32 0, ptr %.sroa.346.0..sroa_idx, align 4 %.sroa.447.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 @@ -2244,13 +2242,13 @@ define internal fastcc void @_ZN10image_webp8extended20read_extended_header17he4 %.sroa.851.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 20 store i8 %.lobit101, ptr %.sroa.851.0..sroa_idx, align 4 store i8 28, ptr %0, align 8 - br label %97 + br label %95 -96: ; preds = %78 +94: ; preds = %76 store i8 8, ptr %0, align 8 - br label %97 + br label %95 -97: ; preds = %96, %90, %89, %77, %48, %47, %36 +95: ; preds = %94, %88, %87, %75, %46, %45, %36 ret void } From 045fd7a440c8407c6a5c9f0eb2ba4384576cbc94 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 8 May 2025 13:25:04 +0000 Subject: [PATCH 3/3] pre-commit: Remap --- bench/abc/optimized/abc.ll | 64 +- bench/abc/optimized/cecSatG2.ll | 260 ++++---- bench/abc/optimized/giaCof.ll | 38 +- bench/abc/optimized/giaEquiv.ll | 180 ++--- bench/abc/optimized/giaPat2.ll | 376 +++++------ .../abseil-cpp/optimized/float_conversion.ll | 358 +++++----- bench/abseil-cpp/optimized/gtest-all.ll | 84 +-- bench/abseil-cpp/optimized/int128.ll | 390 +++++------ bench/fmt/optimized/format-impl-test.ll | 138 ++-- bench/freetype/optimized/sfnt.ll | 348 +++++----- bench/hdf5/optimized/H5Fsuper_cache.ll | 2 +- bench/imgui/optimized/imgui_draw.ll | 626 +++++++++--------- bench/linux/optimized/tree.ll | 424 ++++++------ bench/llvm/optimized/blake3.ll | 218 +++--- .../optimized/2eqafq69fd46y14a.ll | 566 ++++++++-------- bench/meshlab/optimized/gltf_loader.ll | 240 +++---- bench/mold/optimized/arch-m68k.ll | 60 +- bench/mold/optimized/arch-sparc64.ll | 70 +- bench/mold/optimized/blake3.ll | 272 ++++---- bench/openjdk/optimized/hb-ot-name.ll | 142 ++-- bench/openjdk/optimized/utf8.ll | 74 +-- bench/openssl/optimized/d1_lib.ll | 450 ++++++------- bench/openssl/optimized/statem_srvr.ll | 30 +- bench/php/optimized/pcre2_auto_possess.ll | 6 +- bench/php/optimized/pcre2_study.ll | 24 +- bench/qemu/optimized/fdt.ll | 4 +- bench/qemu/optimized/fdt_sw.ll | 90 +-- .../optimized/imguiRenderGL.ll | 144 ++-- .../optimized/36cskjvhktchzlnh.ll | 8 +- .../optimized/5ac99zaxn7b9r9xv.ll | 16 +- .../optimized/hf9vzunhg9aziex.ll | 36 +- .../optimized/hknx1qr3lu9291s.ll | 50 +- bench/spike/optimized/fdt.ll | 4 +- bench/spike/optimized/fdt_ro.ll | 90 +-- bench/spike/optimized/fdt_sw.ll | 88 +-- bench/wireshark/optimized/netscaler.ll | 58 +- bench/wireshark/optimized/packet-atm.ll | 164 ++--- bench/wireshark/optimized/packet-knet.ll | 126 ++-- .../wireshark/optimized/packet-opensafety.ll | 220 +++--- bench/wireshark/optimized/tvbuff.ll | 324 ++++----- bench/wolfssl/optimized/tls.ll | 138 ++-- .../optimized/38cn6p2m6864jrrxog4mr8xwk.ll | 146 ++-- .../optimized/7ud3epkhjcjfe38h6hlh4jrau.ll | 172 ++--- 43 files changed, 3659 insertions(+), 3659 deletions(-) diff --git a/bench/abc/optimized/abc.ll b/bench/abc/optimized/abc.ll index 67d8b9239b7..35cec80e037 100644 --- a/bench/abc/optimized/abc.ll +++ b/bench/abc/optimized/abc.ll @@ -54248,7 +54248,7 @@ define internal range(i32 0, 2) i32 @Abc_CommandAbc9Pms(ptr noundef readonly cap tail call void (...) @Extra_UtilGetoptReset() #32 %4 = tail call i32 @Extra_UtilGetopt(i32 noundef %1, ptr noundef %2, ptr noundef nonnull @.str.642) #32 %.not = icmp eq i32 %4, -1 - br i1 %.not, label %5, label %82 + br i1 %.not, label %5, label %84 5: ; preds = %3 %6 = getelementptr inbounds nuw i8, ptr %0, i64 288 @@ -54258,7 +54258,7 @@ define internal range(i32 0, 2) i32 @Abc_CommandAbc9Pms(ptr noundef readonly cap 9: ; preds = %5 tail call void (i32, ptr, ...) @Abc_Print(i32 noundef -1, ptr noundef nonnull @.str.3291) - br label %83 + br label %85 10: ; preds = %5 %11 = getelementptr i8, ptr %7, i64 16 @@ -54343,49 +54343,49 @@ define internal range(i32 0, 2) i32 @Abc_CommandAbc9Pms(ptr noundef readonly cap %58 = sdiv exact i64 %57, 12 %59 = trunc i64 %58 to i32 %.val3.i.i38 = load i64, ptr %25, align 4 - %60 = trunc i64 %.val3.i.i38 to i32 - %61 = and i32 %60, 536870911 - %62 = sub nsw i32 %59, %61 - %63 = lshr i32 %60, 29 - %64 = and i32 %63, 1 - %65 = or i32 %62, %64 + %61 = trunc i64 %.val3.i.i38 to i32 + %62 = and i32 %61, 536870911 + %63 = sub nsw i32 %59, %62 + %64 = lshr i32 %61, 29 + %65 = and i32 %64, 1 + %65 = or i32 %63, %64 %66 = icmp ne i32 %65, 0 %67 = zext i1 %66 to i32 %68 = add nuw nsw i32 %.043, %67 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %69 = getelementptr i8, ptr %54, i64 16 - %.val30 = load i32, ptr %69, align 8, !tbaa !47 - %70 = getelementptr i8, ptr %54, i64 72 - %.val31 = load ptr, ptr %70, align 8, !tbaa !59 - %71 = getelementptr i8, ptr %.val31, i64 4 - %.val31.val = load i32, ptr %71, align 4, !tbaa !42 - %72 = sub nsw i32 %.val31.val, %.val30 - %73 = sext i32 %72 to i64 - %74 = icmp slt i64 %indvars.iv.next, %73 - br i1 %74, label %.lr.ph, label %.critedge, !llvm.loop !856 + %71 = getelementptr i8, ptr %54, i64 16 + %.val30 = load i32, ptr %71, align 8, !tbaa !47 + %72 = getelementptr i8, ptr %54, i64 72 + %.val31 = load ptr, ptr %72, align 8, !tbaa !59 + %73 = getelementptr i8, ptr %.val31, i64 4 + %.val31.val = load i32, ptr %73, align 4, !tbaa !42 + %74 = sub nsw i32 %.val31.val, %.val30 + %75 = sext i32 %74 to i64 + %76 = icmp slt i64 %indvars.iv.next, %75 + br i1 %76, label %.lr.ph, label %.critedge, !llvm.loop !856 .critedge: ; preds = %.lr.ph, %37, %10 %.0.lcssa = phi i32 [ 0, %10 ], [ %68, %37 ], [ %.043, %.lr.ph ] %putchar = tail call i32 @putchar(i32 10) - %75 = load ptr, ptr %6, align 8, !tbaa !60 - %76 = getelementptr i8, ptr %75, i64 16 - %.val28 = load i32, ptr %76, align 8, !tbaa !47 - %77 = getelementptr i8, ptr %75, i64 72 - %.val29 = load ptr, ptr %77, align 8, !tbaa !59 - %78 = getelementptr i8, ptr %.val29, i64 4 - %.val29.val = load i32, ptr %78, align 4, !tbaa !42 - %79 = add i32 %.val28, %.0.lcssa - %80 = sub i32 %.val29.val, %79 - %81 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3299, i32 noundef %.0.lcssa, i32 noundef %80) - br label %83 + %77 = load ptr, ptr %6, align 8, !tbaa !60 + %78 = getelementptr i8, ptr %77, i64 16 + %.val28 = load i32, ptr %78, align 8, !tbaa !47 + %79 = getelementptr i8, ptr %77, i64 72 + %.val29 = load ptr, ptr %79, align 8, !tbaa !59 + %80 = getelementptr i8, ptr %.val29, i64 4 + %.val29.val = load i32, ptr %80, align 4, !tbaa !42 + %81 = add i32 %.val28, %.0.lcssa + %82 = sub i32 %.val29.val, %81 + %83 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3299, i32 noundef %.0.lcssa, i32 noundef %82) + br label %85 -82: ; preds = %3 +84: ; preds = %3 tail call void (i32, ptr, ...) @Abc_Print(i32 noundef -2, ptr noundef nonnull @.str.3300) tail call void (i32, ptr, ...) @Abc_Print(i32 noundef -2, ptr noundef nonnull @.str.3301) tail call void (i32, ptr, ...) @Abc_Print(i32 noundef -2, ptr noundef nonnull @.str.552) - br label %83 + br label %85 -83: ; preds = %82, %.critedge, %9 +85: ; preds = %84, %.critedge, %9 %.022 = phi i32 [ 1, %82 ], [ 1, %9 ], [ 0, %.critedge ] ret i32 %.022 } diff --git a/bench/abc/optimized/cecSatG2.ll b/bench/abc/optimized/cecSatG2.ll index 49eb197be51..3cf2c278f5b 100644 --- a/bench/abc/optimized/cecSatG2.ll +++ b/bench/abc/optimized/cecSatG2.ll @@ -9805,7 +9805,7 @@ define void @Cec4_ManSimulateDumpInfo(ptr noundef readonly captures(none) %0) lo %13 = getelementptr inbounds nuw i8, ptr %12, i64 104 %14 = load ptr, ptr %13, align 8, !tbaa !218 %15 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.35, ptr noundef %14) - br label %203 + br label %205 16: ; preds = %1 %17 = load ptr, ptr %2, align 8, !tbaa !69 @@ -9949,8 +9949,8 @@ Abc_TtIsConst0.exit: ; preds = %.lr.ph.i, %Abc_TtIs .lr.ph125.split.us: ; preds = %.lr.ph125 br i1 %.not61.us145, label %.critedge, label %.lr.ph149 -73: ; preds = %150 - %74 = getelementptr i8, ptr %151, i64 32 +73: ; preds = %151 + %74 = getelementptr i8, ptr %152, i64 32 %.val72.us = load ptr, ptr %74, align 8, !tbaa !94 %.not61.us = icmp eq ptr %.val72.us, null br i1 %.not61.us, label %.critedge, label %.lr.ph149, !llvm.loop !220 @@ -10006,149 +10006,149 @@ Abc_TtIsConst0.exit: ; preds = %.lr.ph.i, %Abc_TtIs %102 = icmp eq i64 %101, 0 %103 = lshr exact i64 %97, 32 %.020.i.i.us = select i1 %102, i64 %103, i64 %97 - %.0.i.i.us = select i1 %102, i32 32, i32 0 + %.020.i.i.us = select i1 %102, i32 32, i32 0 %104 = and i64 %.020.i.i.us, 65535 %105 = icmp eq i64 %104, 0 %106 = or disjoint i32 %.0.i.i.us, 16 %107 = lshr exact i64 %.020.i.i.us, 16 %.121.i.i.us = select i1 %105, i64 %107, i64 %.020.i.i.us - %.1.i.i.us = select i1 %105, i32 %106, i32 %.0.i.i.us + %.121.i.i.us = select i1 %105, i32 %106, i32 %.020.i.i.us %108 = and i64 %.121.i.i.us, 255 %109 = icmp eq i64 %108, 0 %110 = or disjoint i32 %.1.i.i.us, 8 %111 = lshr exact i64 %.121.i.i.us, 8 %.222.i.i.us = select i1 %109, i64 %111, i64 %.121.i.i.us - %.2.i.i.us = select i1 %109, i32 %110, i32 %.1.i.i.us + %.222.i.i.us = select i1 %109, i32 %110, i32 %.121.i.i.us %112 = and i64 %.222.i.i.us, 15 %113 = icmp eq i64 %112, 0 %114 = or disjoint i32 %.2.i.i.us, 4 %115 = lshr exact i64 %.222.i.i.us, 4 %.323.i.i.us = select i1 %113, i64 %115, i64 %.222.i.i.us - %.3.i.i.us = select i1 %113, i32 %114, i32 %.2.i.i.us + %.323.i.i.us = select i1 %113, i32 %114, i32 %.222.i.i.us %116 = and i64 %.323.i.i.us, 3 %117 = icmp eq i64 %116, 0 %118 = add nuw nsw i32 %.3.i.i.us, 2 %119 = lshr exact i64 %.323.i.i.us, 2 %.424.i.i.us = select i1 %117, i64 %119, i64 %.323.i.i.us - %.4.i.i.us = select i1 %117, i32 %118, i32 %.3.i.i.us + %.424.i.i.us = select i1 %117, i32 %118, i32 %.323.i.i.us %120 = trunc i64 %.424.i.i.us to i32 %121 = and i32 %120, 1 %122 = xor i32 %121, 1 - %.5.i.i.us = add i32 %.4.i.i.us, %100 - %123 = add i32 %.5.i.i.us, %122 + %.5.i.i.us = add i32 %.424.i.i.us, %100 + %.5.i.i.us = add i32 %.5.i.i.us, %122 br label %Abc_TtFindFirstBit2.exit.us -124: ; preds = %.lr.ph.i99.us +125: ; preds = %.lr.ph.i99.us %indvars.iv.next.i102.us = add nuw nsw i64 %indvars.iv.i100.us, 1 %exitcond.not.i103.us = icmp eq i64 %indvars.iv.next.i102.us, %wide.trip.count.i90 br i1 %exitcond.not.i103.us, label %Abc_TtFindFirstBit2.exit.us, label %.lr.ph.i99.us, !llvm.loop !166 -Abc_TtFindFirstBit2.exit.us: ; preds = %124, %98 +Abc_TtFindFirstBit2.exit.us: ; preds = %125, %98 %.08.i.us = phi i32 [ %123, %98 ], [ -1, %124 ] - %125 = load ptr, ptr %2, align 8, !tbaa !69 - %126 = getelementptr i8, ptr %125, i64 16 - %.val78116.us = load i32, ptr %126, align 8, !tbaa !125 - %127 = getelementptr i8, ptr %125, i64 64 - %.val79117.us = load ptr, ptr %127, align 8, !tbaa !23 - %128 = getelementptr i8, ptr %.val79117.us, i64 4 - %.val79.val118.us = load i32, ptr %128, align 4, !tbaa !16 - %129 = icmp sgt i32 %.val79.val118.us, %.val78116.us - br i1 %129, label %.lr.ph.us, label %._crit_edge.us - -._crit_edge.us: ; preds = %131, %Abc_TtFindFirstBit2.exit.us - %130 = add nsw i32 %.sroa.7.0121.us148, 1 - br label %150 - -131: ; preds = %.lr.ph.us, %131 + %126 = load ptr, ptr %2, align 8, !tbaa !69 + %127 = getelementptr i8, ptr %126, i64 16 + %.val78116.us = load i32, ptr %127, align 8, !tbaa !125 + %128 = getelementptr i8, ptr %126, i64 64 + %.val79117.us = load ptr, ptr %128, align 8, !tbaa !23 + %129 = getelementptr i8, ptr %.val79117.us, i64 4 + %.val79.val118.us = load i32, ptr %129, align 4, !tbaa !16 + %130 = icmp sgt i32 %.val79.val118.us, %.val78116.us + br i1 %130, label %.lr.ph.us, label %._crit_edge.us + +._crit_edge.us: ; preds = %132, %Abc_TtFindFirstBit2.exit.us + %131 = add nsw i32 %.sroa.7.0121.us148, 1 + br label %151 + +132: ; preds = %.lr.ph.us, %132 %indvars.iv160 = phi i64 [ 0, %.lr.ph.us ], [ %indvars.iv.next161, %131 ] - %132 = mul nuw nsw i64 %indvars.iv160, %wide.trip.count.i90 + %133 = mul nuw nsw i64 %indvars.iv160, %wide.trip.count.i90 %.059.val.us = load ptr, ptr %71, align 8, !tbaa !10 - %133 = getelementptr inbounds nuw i64, ptr %.059.val.us, i64 %132 - %134 = getelementptr inbounds i64, ptr %133, i64 %158 - %135 = load i64, ptr %134, align 8, !tbaa !12 - %136 = lshr i64 %135, %160 - %137 = trunc i64 %136 to i32 - %138 = and i32 %137, 1 - %139 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %9, ptr noundef nonnull @.str.37, i32 noundef %138) #31 + %134 = getelementptr inbounds nuw i64, ptr %.059.val.us, i64 %133 + %135 = getelementptr inbounds i64, ptr %134, i64 %159 + %136 = load i64, ptr %135, align 8, !tbaa !12 + %137 = lshr i64 %136, %161 + %138 = trunc i64 %137 to i32 + %139 = and i32 %138, 1 + %140 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %9, ptr noundef nonnull @.str.37, i32 noundef %139) #31 %indvars.iv.next161 = add nuw nsw i64 %indvars.iv160, 1 - %140 = load ptr, ptr %2, align 8, !tbaa !69 - %141 = getelementptr i8, ptr %140, i64 16 - %.val78.us = load i32, ptr %141, align 8, !tbaa !125 - %142 = getelementptr i8, ptr %140, i64 64 - %.val79.us = load ptr, ptr %142, align 8, !tbaa !23 - %143 = getelementptr i8, ptr %.val79.us, i64 4 - %.val79.val.us = load i32, ptr %143, align 4, !tbaa !16 - %144 = sub nsw i32 %.val79.val.us, %.val78.us - %145 = sext i32 %144 to i64 - %146 = icmp slt i64 %indvars.iv.next161, %145 - br i1 %146, label %131, label %._crit_edge.us, !llvm.loop !221 - -147: ; preds = %.lr.ph.i91.us + %141 = load ptr, ptr %2, align 8, !tbaa !69 + %142 = getelementptr i8, ptr %141, i64 16 + %.val78.us = load i32, ptr %142, align 8, !tbaa !125 + %143 = getelementptr i8, ptr %141, i64 64 + %.val79.us = load ptr, ptr %143, align 8, !tbaa !23 + %144 = getelementptr i8, ptr %.val79.us, i64 4 + %.val79.val.us = load i32, ptr %144, align 4, !tbaa !16 + %145 = sub nsw i32 %.val79.val.us, %.val78.us + %146 = sext i32 %145 to i64 + %147 = icmp slt i64 %indvars.iv.next161, %146 + br i1 %147, label %132, label %._crit_edge.us, !llvm.loop !221 + +148: ; preds = %.lr.ph.i91.us %indvars.iv.next.i94.us = add nuw nsw i64 %indvars.iv.i92.us, 1 %exitcond.not.i95.us = icmp eq i64 %indvars.iv.next.i94.us, %wide.trip.count.i90 br i1 %exitcond.not.i95.us, label %.loopexit.us, label %.lr.ph.i91.us, !llvm.loop !219 -148: ; preds = %.lr.ph149 - %149 = add nsw i32 %.sroa.0.0122.us147, 1 - br label %150 +149: ; preds = %.lr.ph149 + %150 = add nsw i32 %.sroa.0.0122.us147, 1 + br label %151 -150: ; preds = %148, %.loopexit.us, %._crit_edge.us - %.sroa.7.1.us = phi i32 [ %.sroa.7.0121.us148, %148 ], [ %.sroa.7.0121.us148, %.loopexit.us ], [ %130, %._crit_edge.us ] - %.sroa.0.1.us = phi i32 [ %149, %148 ], [ %.sroa.0.0122.us147, %.loopexit.us ], [ %.sroa.0.0122.us147, %._crit_edge.us ] +151: ; preds = %149, %.loopexit.us, %._crit_edge.us + %.sroa.7.1.us = phi i32 [ %.sroa.7.0121.us148, %148 ], [ %.sroa.7.0121.us148, %.loopexit.us ], [ %131, %._crit_edge.us ] + %.sroa.0.1.us = phi i32 [ %150, %148 ], [ %.sroa.0.0122.us147, %.loopexit.us ], [ %.sroa.0.0122.us147, %._crit_edge.us ] %fputc63.us = tail call i32 @fputc(i32 10, ptr nonnull %9) %indvars.iv.next164 = add nuw nsw i64 %indvars.iv163, 1 - %151 = load ptr, ptr %2, align 8, !tbaa !69 - %152 = getelementptr inbounds nuw i8, ptr %151, i64 72 - %153 = load ptr, ptr %152, align 8, !tbaa !41 - %154 = getelementptr i8, ptr %153, i64 4 - %.val.us = load i32, ptr %154, align 4, !tbaa !16 - %155 = sext i32 %.val.us to i64 - %156 = icmp slt i64 %indvars.iv.next164, %155 - br i1 %156, label %73, label %.critedge, !llvm.loop !220 - -.loopexit.us: ; preds = %147 + %152 = load ptr, ptr %2, align 8, !tbaa !69 + %153 = getelementptr inbounds nuw i8, ptr %152, i64 72 + %154 = load ptr, ptr %153, align 8, !tbaa !41 + %155 = getelementptr i8, ptr %154, i64 4 + %.val.us = load i32, ptr %155, align 4, !tbaa !16 + %156 = sext i32 %.val.us to i64 + %157 = icmp slt i64 %indvars.iv.next164, %156 + br i1 %157, label %73, label %.critedge, !llvm.loop !220 + +.loopexit.us: ; preds = %148 %fputc.us = tail call i32 @fputc(i32 45, ptr nonnull %9) - br label %150 + br label %151 .lr.ph.us: ; preds = %Abc_TtFindFirstBit2.exit.us - %157 = ashr i32 %.08.i.us, 6 - %158 = sext i32 %157 to i64 - %159 = and i32 %.08.i.us, 63 - %160 = zext nneg i32 %159 to i64 - br label %131 + %158 = ashr i32 %.08.i.us, 6 + %159 = sext i32 %158 to i64 + %160 = and i32 %.08.i.us, 63 + %161 = zext nneg i32 %160 to i64 + br label %132 .lr.ph125.split: ; preds = %.lr.ph125 br i1 %.not61.us145, label %.critedge, label %.lr.ph -161: ; preds = %183 - %162 = getelementptr i8, ptr %184, i64 32 - %.val72 = load ptr, ptr %162, align 8, !tbaa !94 +162: ; preds = %185 + %163 = getelementptr i8, ptr %186, i64 32 + %.val72 = load ptr, ptr %163, align 8, !tbaa !94 %.not61 = icmp eq ptr %.val72, null br i1 %.not61, label %.critedge, label %.lr.ph, !llvm.loop !220 -.lr.ph: ; preds = %.lr.ph125.split, %161 +.lr.ph: ; preds = %.lr.ph125.split, %162 %indvars.iv = phi i64 [ %indvars.iv.next, %161 ], [ 0, %.lr.ph125.split ] %.sroa.0.0122140 = phi i32 [ %.sroa.0.1, %161 ], [ 0, %.lr.ph125.split ] - %163 = trunc nuw nsw i64 %indvars.iv to i32 - %164 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %9, ptr noundef nonnull @.str, i32 noundef %163) #31 - %165 = load ptr, ptr %69, align 8, !tbaa !131 - %166 = getelementptr i8, ptr %165, i64 32 - %.val70 = load ptr, ptr %166, align 8, !tbaa !94 - %167 = getelementptr i8, ptr %165, i64 72 - %.val71 = load ptr, ptr %167, align 8, !tbaa !41 - %168 = getelementptr i8, ptr %.val71, i64 8 - %.val71.val = load ptr, ptr %168, align 8, !tbaa !19 - %169 = getelementptr inbounds nuw i32, ptr %.val71.val, i64 %indvars.iv - %170 = load i32, ptr %169, align 4, !tbaa !20 - %171 = sext i32 %170 to i64 - %172 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val70, i64 %171 - %.val3.i.i = load i64, ptr %172, align 4 - %173 = trunc i64 %.val3.i.i to i32 - %174 = and i32 %173, 536870911 - %175 = sub nsw i32 %170, %174 - %176 = lshr i32 %173, 29 - %177 = and i32 %176, 1 - %178 = or i32 %175, %177 + %164 = trunc nuw nsw i64 %indvars.iv to i32 + %165 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %9, ptr noundef nonnull @.str, i32 noundef %164) #31 + %166 = load ptr, ptr %69, align 8, !tbaa !131 + %167 = getelementptr i8, ptr %166, i64 32 + %.val70 = load ptr, ptr %167, align 8, !tbaa !94 + %168 = getelementptr i8, ptr %166, i64 72 + %.val71 = load ptr, ptr %168, align 8, !tbaa !41 + %169 = getelementptr i8, ptr %.val71, i64 8 + %.val71.val = load ptr, ptr %169, align 8, !tbaa !19 + %170 = getelementptr inbounds nuw i32, ptr %.val71.val, i64 %indvars.iv + %171 = load i32, ptr %170, align 4, !tbaa !20 + %172 = sext i32 %171 to i64 + %173 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val70, i64 %172 + %.val3.i.i = load i64, ptr %173, align 4 + %174 = trunc i64 %.val3.i.i to i32 + %175 = and i32 %174, 536870911 + %176 = sub nsw i32 %171, %175 + %177 = lshr i32 %174, 29 + %178 = and i32 %177, 1 + %178 = or i32 %176, %177 %179 = icmp eq i32 %178, 0 br i1 %179, label %180, label %182 @@ -10158,57 +10158,57 @@ Abc_TtFindFirstBit2.exit.us: ; preds = %124, %98 182: ; preds = %.lr.ph %fputc = tail call i32 @fputc(i32 45, ptr nonnull %9) - br label %183 + br label %185 -183: ; preds = %182, %180 +185: ; preds = %182, %180 %.sroa.0.1 = phi i32 [ %181, %180 ], [ %.sroa.0.0122140, %182 ] %fputc63 = tail call i32 @fputc(i32 10, ptr nonnull %9) %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %184 = load ptr, ptr %2, align 8, !tbaa !69 - %185 = getelementptr inbounds nuw i8, ptr %184, i64 72 - %186 = load ptr, ptr %185, align 8, !tbaa !41 - %187 = getelementptr i8, ptr %186, i64 4 - %.val = load i32, ptr %187, align 4, !tbaa !16 - %188 = sext i32 %.val to i64 - %189 = icmp slt i64 %indvars.iv.next, %188 - br i1 %189, label %161, label %.critedge, !llvm.loop !220 - -.critedge: ; preds = %161, %183, %73, %150, %.lr.ph125.split.us, %.lr.ph125.split, %Abc_TtIsConst0.exit + %186 = load ptr, ptr %2, align 8, !tbaa !69 + %187 = getelementptr inbounds nuw i8, ptr %186, i64 72 + %188 = load ptr, ptr %187, align 8, !tbaa !41 + %189 = getelementptr i8, ptr %188, i64 4 + %.val = load i32, ptr %189, align 4, !tbaa !16 + %190 = sext i32 %.val to i64 + %191 = icmp slt i64 %indvars.iv.next, %190 + br i1 %191, label %162, label %.critedge, !llvm.loop !220 + +.critedge: ; preds = %162, %185, %73, %151, %.lr.ph125.split.us, %.lr.ph125.split, %Abc_TtIsConst0.exit %.sroa.7.0.lcssa = phi i32 [ 0, %Abc_TtIsConst0.exit ], [ 0, %.lr.ph125.split.us ], [ 0, %.lr.ph125.split ], [ %.sroa.7.1.us, %150 ], [ %.sroa.7.1.us, %73 ], [ 0, %183 ], [ 0, %161 ] %.sroa.0.0.lcssa = phi i32 [ 0, %Abc_TtIsConst0.exit ], [ 0, %.lr.ph125.split.us ], [ 0, %.lr.ph125.split ], [ %.sroa.0.1.us, %150 ], [ %.sroa.0.1.us, %73 ], [ %.sroa.0.1, %183 ], [ %.sroa.0.1, %161 ] %.val.lcssa = phi i32 [ %.val120, %Abc_TtIsConst0.exit ], [ %.val120, %.lr.ph125.split.us ], [ %.val120, %.lr.ph125.split ], [ %.val.us, %150 ], [ %.val.us, %73 ], [ %.val, %183 ], [ %.val, %161 ] - %190 = add i32 %.sroa.0.0.lcssa, %.sroa.7.0.lcssa - %191 = sub i32 %.val.lcssa, %190 - %192 = load ptr, ptr %0, align 8, !tbaa !68 - %193 = getelementptr inbounds nuw i8, ptr %192, i64 104 - %194 = load ptr, ptr %193, align 8, !tbaa !218 - %195 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.38, i32 noundef %.sroa.7.0.lcssa, i32 noundef %.sroa.0.0.lcssa, i32 noundef %191, ptr noundef %194) - %196 = tail call i32 @fclose(ptr noundef nonnull %9) - %197 = getelementptr inbounds nuw i8, ptr %62, i64 8 - %198 = load ptr, ptr %197, align 8, !tbaa !10 - %.not.i104 = icmp eq ptr %198, null - br i1 %.not.i104, label %Vec_WrdFree.exit105, label %199 - -199: ; preds = %.critedge - tail call void @free(ptr noundef nonnull %198) #31 + %192 = add i32 %.sroa.0.0.lcssa, %.sroa.7.0.lcssa + %193 = sub i32 %.val.lcssa, %192 + %194 = load ptr, ptr %0, align 8, !tbaa !68 + %195 = getelementptr inbounds nuw i8, ptr %194, i64 104 + %196 = load ptr, ptr %195, align 8, !tbaa !218 + %197 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.38, i32 noundef %.sroa.7.0.lcssa, i32 noundef %.sroa.0.0.lcssa, i32 noundef %193, ptr noundef %196) + %198 = tail call i32 @fclose(ptr noundef nonnull %9) + %199 = getelementptr inbounds nuw i8, ptr %62, i64 8 + %200 = load ptr, ptr %199, align 8, !tbaa !10 + %.not.i104 = icmp eq ptr %200, null + br i1 %.not.i104, label %Vec_WrdFree.exit105, label %201 + +201: ; preds = %.critedge + tail call void @free(ptr noundef nonnull %200) #31 br label %Vec_WrdFree.exit105 -Vec_WrdFree.exit105: ; preds = %.critedge, %199 +Vec_WrdFree.exit105: ; preds = %.critedge, %201 tail call void @free(ptr noundef nonnull %62) #31 - %200 = getelementptr inbounds nuw i8, ptr %.059, i64 8 - %201 = load ptr, ptr %200, align 8, !tbaa !10 - %.not.i106 = icmp eq ptr %201, null - br i1 %.not.i106, label %Vec_WrdFree.exit107, label %202 + %202 = getelementptr inbounds nuw i8, ptr %.059, i64 8 + %203 = load ptr, ptr %202, align 8, !tbaa !10 + %.not.i106 = icmp eq ptr %203, null + br i1 %.not.i106, label %Vec_WrdFree.exit107, label %204 -202: ; preds = %Vec_WrdFree.exit105 - tail call void @free(ptr noundef nonnull %201) #31 +204: ; preds = %Vec_WrdFree.exit105 + tail call void @free(ptr noundef nonnull %203) #31 br label %Vec_WrdFree.exit107 -Vec_WrdFree.exit107: ; preds = %Vec_WrdFree.exit105, %202 +Vec_WrdFree.exit107: ; preds = %Vec_WrdFree.exit105, %204 tail call void @free(ptr noundef nonnull %.059) #31 - br label %203 + br label %205 -203: ; preds = %Vec_WrdFree.exit107, %11 +205: ; preds = %Vec_WrdFree.exit107, %11 ret void } diff --git a/bench/abc/optimized/giaCof.ll b/bench/abc/optimized/giaCof.ll index 18938cbec4a..0dc0e02c761 100644 --- a/bench/abc/optimized/giaCof.ll +++ b/bench/abc/optimized/giaCof.ll @@ -4325,7 +4325,7 @@ define void @Gia_ManPrintDsdMatrix(ptr noundef %0, i32 noundef %1) local_unnamed %.val33.val48 = phi i32 [ %.val35.val56, %.preheader.lr.ph ], [ %.val35.val, %._crit_edge53 ] %.val3347 = phi ptr [ %.val3555, %.preheader.lr.ph ], [ %.val35, %._crit_edge53 ] %.val46 = phi i32 [ %.val3454, %.preheader.lr.ph ], [ %.val34, %._crit_edge53 ] - %.058 = phi i32 [ 0, %.preheader.lr.ph ], [ %54, %._crit_edge53 ] + %.058 = phi i32 [ 0, %.preheader.lr.ph ], [ %55, %._crit_edge53 ] %.02557 = phi i32 [ 0, %.preheader.lr.ph ], [ %.1.lcssa, %._crit_edge53 ] %19 = icmp sgt i32 %.val33.val48, %.val46 br i1 %19, label %.lr.ph52, label %._crit_edge53 @@ -4357,10 +4357,10 @@ define void @Gia_ManPrintDsdMatrix(ptr noundef %0, i32 noundef %1) local_unnamed %27 = icmp slt i32 %24, %26 br i1 %27, label %.lr.ph52.split.us, label %._crit_edge53, !llvm.loop !113 -.lr.ph52.split: ; preds = %.lr.ph52, %48 +.lr.ph52.split: ; preds = %.lr.ph52, %49 %.151 = phi i32 [ %.2, %48 ], [ %.02557, %.lr.ph52 ] %.not50 = phi i1 [ true, %48 ], [ false, %.lr.ph52 ] - %.13049 = phi i32 [ %50, %48 ], [ 0, %.lr.ph52 ] + %.13049 = phi i32 [ %51, %48 ], [ 0, %.lr.ph52 ] br i1 %.not50, label %30, label %28 28: ; preds = %.lr.ph52.split @@ -4371,7 +4371,7 @@ define void @Gia_ManPrintDsdMatrix(ptr noundef %0, i32 noundef %1) local_unnamed %31 = icmp ne i32 %.13049, %1 %32 = icmp samesign ugt i32 %.13049, %.058 %or.cond = select i1 %31, i1 %32, i1 false - br i1 %or.cond, label %33, label %48 + br i1 %or.cond, label %33, label %49 33: ; preds = %30 %34 = add nsw i32 %.151, 1 @@ -4395,30 +4395,30 @@ define void @Gia_ManPrintDsdMatrix(ptr noundef %0, i32 noundef %1) local_unnamed %. = select i1 %47, i32 46, i32 43 br label %48 -48: ; preds = %33, %30 +49: ; preds = %33, %30 %.sink = phi i32 [ 32, %30 ], [ %., %33 ] %.2 = phi i32 [ %.151, %30 ], [ %34, %33 ] - %49 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i32 noundef %.sink) - %50 = add nuw nsw i32 %.13049, 1 + %50 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i32 noundef %.sink) + %51 = add nuw nsw i32 %.13049, 1 %.val = load i32, ptr %6, align 8, !tbaa !98 %.val33 = load ptr, ptr %7, align 8, !tbaa !12 - %51 = getelementptr i8, ptr %.val33, i64 4 - %.val33.val = load i32, ptr %51, align 4, !tbaa !30 - %52 = sub nsw i32 %.val33.val, %.val - %53 = icmp slt i32 %50, %52 - br i1 %53, label %.lr.ph52.split, label %._crit_edge53, !llvm.loop !113 + %52 = getelementptr i8, ptr %.val33, i64 4 + %.val33.val = load i32, ptr %52, align 4, !tbaa !30 + %53 = sub nsw i32 %.val33.val, %.val + %54 = icmp slt i32 %51, %53 + br i1 %54, label %.lr.ph52.split, label %._crit_edge53, !llvm.loop !113 -._crit_edge53: ; preds = %48, %23, %.preheader +._crit_edge53: ; preds = %49, %23, %.preheader %.1.lcssa = phi i32 [ %.02557, %.preheader ], [ %.02557, %23 ], [ %.2, %48 ] - %54 = add nuw nsw i32 %.058, 1 + %55 = add nuw nsw i32 %.058, 1 %putchar32 = tail call i32 @putchar(i32 10) %.val34 = load i32, ptr %6, align 8, !tbaa !98 %.val35 = load ptr, ptr %7, align 8, !tbaa !12 - %55 = getelementptr i8, ptr %.val35, i64 4 - %.val35.val = load i32, ptr %55, align 4, !tbaa !30 - %56 = sub nsw i32 %.val35.val, %.val34 - %57 = icmp slt i32 %54, %56 - br i1 %57, label %.preheader, label %._crit_edge60, !llvm.loop !114 + %56 = getelementptr i8, ptr %.val35, i64 4 + %.val35.val = load i32, ptr %56, align 4, !tbaa !30 + %57 = sub nsw i32 %.val35.val, %.val34 + %58 = icmp slt i32 %55, %57 + br i1 %58, label %.preheader, label %._crit_edge60, !llvm.loop !114 ._crit_edge60: ; preds = %._crit_edge53, %._crit_edge tail call void @Gia_ManStop(ptr noundef %4) #27 diff --git a/bench/abc/optimized/giaEquiv.ll b/bench/abc/optimized/giaEquiv.ll index 2ab71482f6e..2b322a72dd7 100644 --- a/bench/abc/optimized/giaEquiv.ll +++ b/bench/abc/optimized/giaEquiv.ll @@ -7531,7 +7531,7 @@ Gia_ManEquivCountLitsAll.exit: ; preds = %8 Gia_ManEquivCountLitsAll.exit.thread: ; preds = %4, %Gia_ManEquivCountLitsAll.exit tail call void (i32, ptr, ...) @Abc_Print(i32 noundef 1, ptr noundef nonnull @.str.22) - br label %126 + br label %128 16: ; preds = %Gia_ManEquivCountLitsAll.exit %17 = tail call ptr @Gia_AigerRead(ptr noundef %1, i32 noundef 0, i32 noundef 0, i32 noundef 0) #31 @@ -7540,11 +7540,11 @@ Gia_ManEquivCountLitsAll.exit.thread: ; preds = %4, %Gia_ManEquivCou 19: ; preds = %16 tail call void (i32, ptr, ...) @Abc_Print(i32 noundef 1, ptr noundef nonnull @.str.23, ptr noundef %1) - br label %126 + br label %128 20: ; preds = %16 %.not = icmp eq i32 %2, 0 - br i1 %.not, label %82, label %21 + br i1 %.not, label %83, label %21 21: ; preds = %20 %22 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #32 @@ -7619,9 +7619,9 @@ Gia_ManEquivCountLitsAll.exit.thread: ; preds = %4, %Gia_ManEquivCou .thread: ; preds = %.thread.i, %43 tail call void @free(ptr noundef nonnull %22) #31 - br label %126 + br label %128 -45: ; preds = %.lr.ph129, %77 +45: ; preds = %.lr.ph129, %78 %.val75144 = phi i32 [ %.val75124, %.lr.ph129 ], [ %.val75, %77 ] %indvars.iv138 = phi i64 [ 0, %.lr.ph129 ], [ %indvars.iv.next139, %77 ] %.1128 = phi i32 [ 0, %.lr.ph129 ], [ %.2, %77 ] @@ -7632,7 +7632,7 @@ Gia_ManEquivCountLitsAll.exit.thread: ; preds = %4, %Gia_ManEquivCou %47 = load i32, ptr %46, align 4 %48 = and i32 %47, 268435455 %49 = icmp eq i32 %48, 268435455 - br i1 %49, label %77, label %50 + br i1 %49, label %78, label %50 50: ; preds = %45 %51 = add nsw i32 %.058127, 1 @@ -7641,7 +7641,7 @@ Gia_ManEquivCountLitsAll.exit.thread: ; preds = %4, %Gia_ManEquivCou %53 = getelementptr inbounds i32, ptr %.val76, i64 %52 %54 = load i32, ptr %53, align 4, !tbaa !32 %55 = icmp eq i32 %54, 0 - br i1 %55, label %77, label %56 + br i1 %55, label %78, label %56 56: ; preds = %50 %.val91 = load i32, ptr %36, align 8, !tbaa !90 @@ -7675,101 +7675,101 @@ Gia_ManEquivCountLitsAll.exit.thread: ; preds = %4, %Gia_ManEquivCou store i32 %75, ptr %46, align 4 %76 = add nsw i32 %.1128, 1 %.val75.pre = load i32, ptr %5, align 8, !tbaa !12 - br label %77 + br label %78 -77: ; preds = %56, %74, %50, %45 +78: ; preds = %56, %74, %50, %45 %.val75 = phi i32 [ %.val75144, %45 ], [ %.val75144, %50 ], [ %.val75.pre, %74 ], [ %.val75144, %56 ] %.165 = phi i32 [ %.064126, %45 ], [ %.064126, %50 ], [ %58, %74 ], [ %58, %56 ] %.159 = phi i32 [ %.058127, %45 ], [ %51, %50 ], [ %51, %74 ], [ %51, %56 ] %.2 = phi i32 [ %.1128, %45 ], [ %.1128, %50 ], [ %76, %74 ], [ %.1128, %56 ] %indvars.iv.next139 = add nuw nsw i64 %indvars.iv138, 1 - %78 = sext i32 %.val75 to i64 - %79 = icmp slt i64 %indvars.iv.next139, %78 - br i1 %79, label %45, label %._crit_edge, !llvm.loop !144 + %79 = sext i32 %.val75 to i64 + %80 = icmp slt i64 %indvars.iv.next139, %79 + br i1 %80, label %45, label %._crit_edge, !llvm.loop !144 -._crit_edge: ; preds = %77, %.preheader121 +._crit_edge: ; preds = %78, %.preheader121 %.1.lcssa = phi i32 [ 0, %.preheader121 ], [ %.2, %77 ] - %80 = load ptr, ptr %25, align 8, !tbaa !8 - %.not.i109 = icmp eq ptr %80, null - br i1 %.not.i109, label %81, label %.thread.i110 + %81 = load ptr, ptr %25, align 8, !tbaa !8 + %.not.i109 = icmp eq ptr %81, null + br i1 %.not.i109, label %82, label %.thread.i110 .thread.i110: ; preds = %._crit_edge - tail call void @free(ptr noundef nonnull %80) #31 - br label %81 + tail call void @free(ptr noundef nonnull %81) #31 + br label %82 -81: ; preds = %.thread.i110, %._crit_edge +82: ; preds = %.thread.i110, %._crit_edge tail call void @free(ptr noundef nonnull %22) #31 br label %.loopexit -82: ; preds = %20 - %83 = getelementptr i8, ptr %17, i64 16 - %.val89 = load i32, ptr %83, align 8, !tbaa !90 - %84 = getelementptr i8, ptr %17, i64 72 - %.val90 = load ptr, ptr %84, align 8, !tbaa !47 - %85 = getelementptr i8, ptr %.val90, i64 4 - %.val90.val = load i32, ptr %85, align 4, !tbaa !31 - %86 = sub nsw i32 %.val90.val, %.val89 - %87 = getelementptr i8, ptr %0, i64 16 - %.val87 = load i32, ptr %87, align 8, !tbaa !90 - %88 = getelementptr i8, ptr %0, i64 72 - %.val88 = load ptr, ptr %88, align 8, !tbaa !47 - %89 = getelementptr i8, ptr %.val88, i64 4 - %.val88.val = load i32, ptr %89, align 4, !tbaa !31 - %90 = sub nsw i32 %.val88.val, %.val87 - %91 = add nsw i32 %90, %14 - %.not71 = icmp eq i32 %86, %91 - br i1 %.not71, label %.preheader, label %94 - -.preheader: ; preds = %82 +83: ; preds = %20 + %84 = getelementptr i8, ptr %17, i64 16 + %.val89 = load i32, ptr %84, align 8, !tbaa !90 + %85 = getelementptr i8, ptr %17, i64 72 + %.val90 = load ptr, ptr %85, align 8, !tbaa !47 + %86 = getelementptr i8, ptr %.val90, i64 4 + %.val90.val = load i32, ptr %86, align 4, !tbaa !31 + %87 = sub nsw i32 %.val90.val, %.val89 + %88 = getelementptr i8, ptr %0, i64 16 + %.val87 = load i32, ptr %88, align 8, !tbaa !90 + %89 = getelementptr i8, ptr %0, i64 72 + %.val88 = load ptr, ptr %89, align 8, !tbaa !47 + %90 = getelementptr i8, ptr %.val88, i64 4 + %.val88.val = load i32, ptr %90, align 4, !tbaa !31 + %91 = sub nsw i32 %.val88.val, %.val87 + %92 = add nsw i32 %91, %14 + %.not71 = icmp eq i32 %87, %92 + br i1 %.not71, label %.preheader, label %95 + +.preheader: ; preds = %83 %.val131 = load i32, ptr %5, align 8, !tbaa !12 - %92 = icmp sgt i32 %.val131, 0 - br i1 %92, label %.lr.ph135, label %.loopexit + %93 = icmp sgt i32 %.val131, 0 + br i1 %93, label %.lr.ph135, label %.loopexit .lr.ph135: ; preds = %.preheader - %93 = getelementptr i8, ptr %17, i64 32 - br label %95 + %94 = getelementptr i8, ptr %17, i64 32 + br label %96 -94: ; preds = %82 - tail call void (i32, ptr, ...) @Abc_Print(i32 noundef 1, ptr noundef nonnull @.str.25, i32 noundef %86, i32 noundef %90, i32 noundef %14) +95: ; preds = %83 + tail call void (i32, ptr, ...) @Abc_Print(i32 noundef 1, ptr noundef nonnull @.str.25, i32 noundef %87, i32 noundef %91, i32 noundef %14) tail call void @Gia_ManStop(ptr noundef nonnull %17) #31 - br label %126 + br label %128 -95: ; preds = %.lr.ph135, %121 +96: ; preds = %.lr.ph135, %123 %.val146 = phi i32 [ %.val131, %.lr.ph135 ], [ %.val, %121 ] %indvars.iv141 = phi i64 [ 0, %.lr.ph135 ], [ %indvars.iv.next142, %121 ] %.4134 = phi i32 [ 0, %.lr.ph135 ], [ %.5, %121 ] %.260133 = phi i32 [ 0, %.lr.ph135 ], [ %.361, %121 ] %.val79 = load ptr, ptr %7, align 8, !tbaa !49 - %96 = getelementptr inbounds nuw %struct.Gia_Rpr_t_, ptr %.val79, i64 %indvars.iv141 - %97 = load i32, ptr %96, align 4 - %98 = and i32 %97, 268435455 - %99 = icmp eq i32 %98, 268435455 - br i1 %99, label %121, label %100 - -100: ; preds = %95 - %.val81 = load i32, ptr %87, align 8, !tbaa !90 - %.val82 = load ptr, ptr %88, align 8, !tbaa !47 - %101 = getelementptr i8, ptr %.val82, i64 4 - %.val82.val = load i32, ptr %101, align 4, !tbaa !31 - %102 = add nsw i32 %.260133, 1 - %103 = sub i32 %.260133, %.val81 - %104 = add i32 %103, %.val82.val - %.val101 = load ptr, ptr %93, align 8, !tbaa !36 - %.val102 = load ptr, ptr %84, align 8, !tbaa !47 - %105 = getelementptr i8, ptr %.val102, i64 8 - %.val102.val = load ptr, ptr %105, align 8, !tbaa !8 - %106 = sext i32 %104 to i64 - %107 = getelementptr inbounds i32, ptr %.val102.val, i64 %106 - %108 = load i32, ptr %107, align 4, !tbaa !32 - %109 = sext i32 %108 to i64 - %110 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val101, i64 %109 - %.val3.i.i112 = load i64, ptr %110, align 4 - %111 = trunc i64 %.val3.i.i112 to i32 - %112 = and i32 %111, 536870911 - %113 = sub nsw i32 %108, %112 - %114 = lshr i32 %111, 29 - %115 = and i32 %114, 1 - %116 = or i32 %113, %115 + %97 = getelementptr inbounds nuw %struct.Gia_Rpr_t_, ptr %.val79, i64 %indvars.iv141 + %98 = load i32, ptr %97, align 4 + %99 = and i32 %98, 268435455 + %100 = icmp eq i32 %99, 268435455 + br i1 %100, label %123, label %101 + +101: ; preds = %96 + %.val81 = load i32, ptr %88, align 8, !tbaa !90 + %.val82 = load ptr, ptr %89, align 8, !tbaa !47 + %102 = getelementptr i8, ptr %.val82, i64 4 + %.val82.val = load i32, ptr %102, align 4, !tbaa !31 + %103 = add nsw i32 %.260133, 1 + %104 = sub i32 %.260133, %.val81 + %105 = add i32 %104, %.val82.val + %.val101 = load ptr, ptr %94, align 8, !tbaa !36 + %.val102 = load ptr, ptr %85, align 8, !tbaa !47 + %106 = getelementptr i8, ptr %.val102, i64 8 + %.val102.val = load ptr, ptr %106, align 8, !tbaa !8 + %107 = sext i32 %105 to i64 + %108 = getelementptr inbounds i32, ptr %.val102.val, i64 %107 + %109 = load i32, ptr %108, align 4, !tbaa !32 + %110 = sext i32 %109 to i64 + %111 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val101, i64 %110 + %.val3.i.i112 = load i64, ptr %111, align 4 + %112 = trunc i64 %.val3.i.i112 to i32 + %113 = and i32 %112, 536870911 + %114 = sub nsw i32 %109, %113 + %115 = lshr i32 %112, 29 + %116 = and i32 %115, 1 + %116 = or i32 %114, %115 %117 = icmp eq i32 %116, 0 br i1 %117, label %118, label %121 @@ -7778,31 +7778,31 @@ Gia_ManEquivCountLitsAll.exit.thread: ; preds = %4, %Gia_ManEquivCou store i32 %119, ptr %96, align 4 %120 = add nsw i32 %.4134, 1 %.val.pre = load i32, ptr %5, align 8, !tbaa !12 - br label %121 + br label %123 -121: ; preds = %100, %118, %95 +123: ; preds = %101, %118, %96 %.val = phi i32 [ %.val146, %95 ], [ %.val.pre, %118 ], [ %.val146, %100 ] - %.361 = phi i32 [ %.260133, %95 ], [ %102, %118 ], [ %102, %100 ] + %.361 = phi i32 [ %.260133, %95 ], [ %103, %118 ], [ %103, %100 ] %.5 = phi i32 [ %.4134, %95 ], [ %120, %118 ], [ %.4134, %100 ] %indvars.iv.next142 = add nuw nsw i64 %indvars.iv141, 1 - %122 = sext i32 %.val to i64 - %123 = icmp slt i64 %indvars.iv.next142, %122 - br i1 %123, label %95, label %.loopexit, !llvm.loop !145 + %124 = sext i32 %.val to i64 + %125 = icmp slt i64 %indvars.iv.next142, %124 + br i1 %125, label %96, label %.loopexit, !llvm.loop !145 -.loopexit: ; preds = %121, %.preheader, %81 +.loopexit: ; preds = %123, %.preheader, %82 %.3 = phi i32 [ %.1.lcssa, %81 ], [ 0, %.preheader ], [ %.5, %121 ] %.not73 = icmp eq i32 %3, 0 - br i1 %.not73, label %125, label %124 + br i1 %.not73, label %127, label %126 -124: ; preds = %.loopexit +126: ; preds = %.loopexit tail call void (i32, ptr, ...) @Abc_Print(i32 noundef 1, ptr noundef nonnull @.str.26, i32 noundef %.3) - br label %125 + br label %127 -125: ; preds = %124, %.loopexit +127: ; preds = %126, %.loopexit tail call void @Gia_ManStop(ptr noundef nonnull %17) #31 - br label %126 + br label %128 -126: ; preds = %.thread, %125, %94, %19, %Gia_ManEquivCountLitsAll.exit.thread +128: ; preds = %.thread, %127, %95, %19, %Gia_ManEquivCountLitsAll.exit.thread ret void } diff --git a/bench/abc/optimized/giaPat2.ll b/bench/abc/optimized/giaPat2.ll index 87df748481c..ca7b6e9b9df 100644 --- a/bench/abc/optimized/giaPat2.ll +++ b/bench/abc/optimized/giaPat2.ll @@ -8680,7 +8680,7 @@ define void @Gia_GenerateCexesDumpFile(ptr noundef %0, ptr noundef readonly capt 7: ; preds = %4 %8 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.36, ptr noundef %0) - br label %164 + br label %168 9: ; preds = %4 %10 = getelementptr i8, ptr %1, i64 64 @@ -8721,12 +8721,12 @@ define void @Gia_GenerateCexesDumpFile(ptr noundef %0, ptr noundef readonly capt %23 = zext nneg i32 %.fr173 to i64 br label %.lr.ph.split.us -.lr.ph.split.us: ; preds = %.lr.ph.split.us.preheader, %37 +.lr.ph.split.us: ; preds = %.lr.ph.split.us.preheader, %38 %indvars.iv199 = phi i64 [ 0, %.lr.ph.split.us.preheader ], [ %indvars.iv.next200, %37 ] %.val84.us162.us = phi ptr [ %.val84.us156, %.lr.ph.split.us.preheader ], [ %.val84.us.us, %37 ] %.sroa.0.0108.us161.us = phi i32 [ 0, %.lr.ph.split.us.preheader ], [ %.sroa.0.1.us.us, %37 ] %.sroa.7.0109.us160.us = phi i32 [ 0, %.lr.ph.split.us.preheader ], [ %.sroa.7.1.us.us, %37 ] - %24 = phi ptr [ %.val87, %.lr.ph.split.us.preheader ], [ %63, %37 ] + %24 = phi ptr [ %.val87, %.lr.ph.split.us.preheader ], [ %64, %37 ] %25 = getelementptr i8, ptr %24, i64 8 %.val85.val.us.us = load ptr, ptr %25, align 8, !tbaa !32 %26 = getelementptr inbounds nuw i32, ptr %.val85.val.us.us, i64 %indvars.iv199 @@ -8743,128 +8743,128 @@ define void @Gia_GenerateCexesDumpFile(ptr noundef %0, ptr noundef readonly capt %36 = icmp eq i32 %35, 0 br i1 %36, label %58, label %.preheader94.us.us -37: ; preds = %62 +38: ; preds = %63 %.val84.us.us = load ptr, ptr %19, align 8, !tbaa !3 %.not.us.us = icmp eq ptr %.val84.us.us, null br i1 %.not.us.us, label %.critedge, label %.lr.ph.split.us, !llvm.loop !177 .preheader94.us.us: ; preds = %.lr.ph.split.us - %38 = mul nuw nsw i64 %indvars.iv199, %23 - %39 = trunc nuw nsw i64 %indvars.iv199 to i32 - br label %40 + %39 = mul nuw nsw i64 %indvars.iv199, %23 + %40 = trunc nuw nsw i64 %indvars.iv199 to i32 + br label %41 -40: ; preds = %.preheader94.us.us, %.critedge4.us.us +41: ; preds = %.preheader94.us.us, %.critedge4.us.us %indvars.iv194 = phi i64 [ 0, %.preheader94.us.us ], [ %indvars.iv.next195, %.critedge4.us.us ] %.val88.us.us = load ptr, ptr %22, align 8, !tbaa !95 - %41 = getelementptr inbounds nuw %struct.Vec_Int_t_, ptr %.val88.us.us, i64 %indvars.iv194 - %42 = getelementptr inbounds nuw %struct.Vec_Int_t_, ptr %41, i64 %38 + %42 = getelementptr inbounds nuw %struct.Vec_Int_t_, ptr %.val88.us.us, i64 %indvars.iv194 + %43 = getelementptr inbounds nuw %struct.Vec_Int_t_, ptr %42, i64 %39 %.val91.us.us = load ptr, ptr %10, align 8, !tbaa !34 - %43 = getelementptr i8, ptr %.val91.us.us, i64 4 - %.val91.val.us.us = load i32, ptr %43, align 4, !tbaa !30 - %44 = sext i32 %.val91.val.us.us to i64 - tail call void @llvm.memset.p0.i64(ptr align 1 %14, i8 45, i64 %44, i1 false) - %45 = getelementptr i8, ptr %42, i64 4 - %.val100.us.us = load i32, ptr %45, align 4, !tbaa !30 - %46 = icmp sgt i32 %.val100.us.us, 0 - br i1 %46, label %.lr.ph103.us.us, label %.critedge4.us.us - -.critedge4.us.us: ; preds = %48, %40 - %47 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %5, ptr noundef nonnull @.str.53, i32 noundef %39, ptr noundef %14) #27 + %44 = getelementptr i8, ptr %.val91.us.us, i64 4 + %.val91.val.us.us = load i32, ptr %44, align 4, !tbaa !30 + %45 = sext i32 %.val91.val.us.us to i64 + tail call void @llvm.memset.p0.i64(ptr align 1 %14, i8 45, i64 %45, i1 false) + %46 = getelementptr i8, ptr %43, i64 4 + %.val100.us.us = load i32, ptr %46, align 4, !tbaa !30 + %47 = icmp sgt i32 %.val100.us.us, 0 + br i1 %47, label %.lr.ph103.us.us, label %.critedge4.us.us + +.critedge4.us.us: ; preds = %49, %41 + %48 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %5, ptr noundef nonnull @.str.53, i32 noundef %40, ptr noundef %14) #27 %indvars.iv.next195 = add nuw nsw i64 %indvars.iv194, 1 %exitcond198.not = icmp eq i64 %indvars.iv.next195, %23 - br i1 %exitcond198.not, label %._crit_edge106.us.us, label %40, !llvm.loop !178 + br i1 %exitcond198.not, label %._crit_edge106.us.us, label %41, !llvm.loop !178 -48: ; preds = %.lr.ph103.us.us, %48 +49: ; preds = %.lr.ph103.us.us, %49 %indvars.iv191 = phi i64 [ 0, %.lr.ph103.us.us ], [ %indvars.iv.next192, %48 ] - %.val80.us.us = load ptr, ptr %67, align 8, !tbaa !32 - %49 = getelementptr inbounds nuw i32, ptr %.val80.us.us, i64 %indvars.iv191 - %50 = load i32, ptr %49, align 4, !tbaa !35 - %51 = trunc i32 %50 to i8 - %52 = and i8 %51, 1 - %53 = sub nuw nsw i8 49, %52 - %54 = ashr i32 %50, 1 - %55 = sext i32 %54 to i64 - %gep.us.us = getelementptr i8, ptr %invariant.gep, i64 %55 - store i8 %53, ptr %gep.us.us, align 1, !tbaa !50 + %.val80.us.us = load ptr, ptr %68, align 8, !tbaa !32 + %50 = getelementptr inbounds nuw i32, ptr %.val80.us.us, i64 %indvars.iv191 + %51 = load i32, ptr %50, align 4, !tbaa !35 + %52 = trunc i32 %51 to i8 + %53 = and i8 %52, 1 + %54 = sub nuw nsw i8 49, %53 + %55 = ashr i32 %51, 1 + %56 = sext i32 %55 to i64 + %gep.us.us = getelementptr i8, ptr %invariant.gep, i64 %56 + store i8 %54, ptr %gep.us.us, align 1, !tbaa !50 %indvars.iv.next192 = add nuw nsw i64 %indvars.iv191, 1 - %.val.us.us = load i32, ptr %45, align 4, !tbaa !30 - %56 = sext i32 %.val.us.us to i64 - %57 = icmp slt i64 %indvars.iv.next192, %56 - br i1 %57, label %48, label %.critedge4.us.us, !llvm.loop !179 - -58: ; preds = %.lr.ph.split.us - %59 = trunc nuw nsw i64 %indvars.iv199 to i32 - %60 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %5, ptr noundef nonnull @.str.49, i32 noundef %59) #27 - %61 = add nsw i32 %.sroa.0.0108.us161.us, 1 - br label %62 - -62: ; preds = %58, %._crit_edge106.us.us - %.sroa.0.1.us.us = phi i32 [ %61, %58 ], [ %.sroa.0.0108.us161.us, %._crit_edge106.us.us ] - %.sroa.7.1.us.us = phi i32 [ %.sroa.7.0109.us160.us, %58 ], [ %68, %._crit_edge106.us.us ] + %.val.us.us = load i32, ptr %46, align 4, !tbaa !30 + %57 = sext i32 %.val.us.us to i64 + %58 = icmp slt i64 %indvars.iv.next192, %57 + br i1 %58, label %49, label %.critedge4.us.us, !llvm.loop !179 + +59: ; preds = %.lr.ph.split.us + %60 = trunc nuw nsw i64 %indvars.iv199 to i32 + %61 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %5, ptr noundef nonnull @.str.49, i32 noundef %60) #27 + %62 = add nsw i32 %.sroa.0.0108.us161.us, 1 + br label %63 + +63: ; preds = %59, %._crit_edge106.us.us + %.sroa.0.1.us.us = phi i32 [ %62, %58 ], [ %.sroa.0.0108.us161.us, %._crit_edge106.us.us ] + %.sroa.7.1.us.us = phi i32 [ %.sroa.7.0109.us160.us, %58 ], [ %69, %._crit_edge106.us.us ] %indvars.iv.next200 = add nuw nsw i64 %indvars.iv199, 1 - %63 = load ptr, ptr %16, align 8, !tbaa !43 - %64 = getelementptr i8, ptr %63, i64 4 - %.val79.us.us = load i32, ptr %64, align 4, !tbaa !30 - %65 = sext i32 %.val79.us.us to i64 - %66 = icmp slt i64 %indvars.iv.next200, %65 - br i1 %66, label %37, label %.critedge, !llvm.loop !177 + %64 = load ptr, ptr %16, align 8, !tbaa !43 + %65 = getelementptr i8, ptr %64, i64 4 + %.val79.us.us = load i32, ptr %65, align 4, !tbaa !30 + %66 = sext i32 %.val79.us.us to i64 + %67 = icmp slt i64 %indvars.iv.next200, %66 + br i1 %67, label %38, label %.critedge, !llvm.loop !177 -.lr.ph103.us.us: ; preds = %40 - %67 = getelementptr i8, ptr %42, i64 8 - br label %48 +.lr.ph103.us.us: ; preds = %41 + %68 = getelementptr i8, ptr %43, i64 8 + br label %49 ._crit_edge106.us.us: ; preds = %.critedge4.us.us - %68 = add nsw i32 %.sroa.7.0109.us160.us, 1 - br label %62 + %69 = add nsw i32 %.sroa.7.0109.us160.us, 1 + br label %63 -69: ; preds = %88 +70: ; preds = %90 %.val84.us = load ptr, ptr %19, align 8, !tbaa !3 %.not.us = icmp eq ptr %.val84.us, null br i1 %.not.us, label %.critedge, label %.lr.ph.split, !llvm.loop !177 -.lr.ph.split: ; preds = %.lr.ph, %69 - %70 = phi ptr [ %89, %69 ], [ %.val87, %.lr.ph ] +.lr.ph.split: ; preds = %.lr.ph, %70 + %71 = phi ptr [ %91, %69 ], [ %.val87, %.lr.ph ] %indvars.iv188 = phi i64 [ %indvars.iv.next189, %69 ], [ 0, %.lr.ph ] %.val84.us162 = phi ptr [ %.val84.us, %69 ], [ %.val84.us156, %.lr.ph ] %.sroa.0.0108.us161 = phi i32 [ %.sroa.0.1.us, %69 ], [ 0, %.lr.ph ] %.sroa.7.0109.us160 = phi i32 [ %.sroa.7.1.us, %69 ], [ 0, %.lr.ph ] - %71 = getelementptr i8, ptr %70, i64 8 - %.val85.val.us = load ptr, ptr %71, align 8, !tbaa !32 - %72 = getelementptr inbounds nuw i32, ptr %.val85.val.us, i64 %indvars.iv188 - %73 = load i32, ptr %72, align 4, !tbaa !35 - %74 = sext i32 %73 to i64 - %75 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val84.us162, i64 %74 - %.val.i.i.us = load i64, ptr %75, align 4 - %76 = trunc i64 %.val.i.i.us to i32 - %77 = and i32 %76, 536870911 - %78 = sub nsw i32 %73, %77 - %79 = lshr i32 %76, 29 - %80 = and i32 %79, 1 - %81 = or i32 %78, %80 + %72 = getelementptr i8, ptr %71, i64 8 + %.val85.val.us = load ptr, ptr %72, align 8, !tbaa !32 + %73 = getelementptr inbounds nuw i32, ptr %.val85.val.us, i64 %indvars.iv188 + %74 = load i32, ptr %73, align 4, !tbaa !35 + %75 = sext i32 %74 to i64 + %76 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val84.us162, i64 %75 + %.val.i.i.us = load i64, ptr %76, align 4 + %77 = trunc i64 %.val.i.i.us to i32 + %78 = and i32 %77, 536870911 + %79 = sub nsw i32 %74, %78 + %80 = lshr i32 %77, 29 + %81 = and i32 %80, 1 + %81 = or i32 %79, %81 %82 = icmp eq i32 %81, 0 br i1 %82, label %84, label %.preheader94.us .preheader94.us: ; preds = %.lr.ph.split - %83 = add nsw i32 %.sroa.7.0109.us160, 1 - br label %88 + %85 = add nsw i32 %.sroa.7.0109.us160, 1 + br label %90 -84: ; preds = %.lr.ph.split - %85 = trunc nuw nsw i64 %indvars.iv188 to i32 - %86 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %5, ptr noundef nonnull @.str.49, i32 noundef %85) #27 - %87 = add nsw i32 %.sroa.0.0108.us161, 1 +86: ; preds = %.lr.ph.split + %87 = trunc nuw nsw i64 %indvars.iv188 to i32 + %88 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %5, ptr noundef nonnull @.str.49, i32 noundef %87) #27 + %89 = add nsw i32 %.sroa.0.0108.us161, 1 %.pre202 = load ptr, ptr %16, align 8, !tbaa !43 - br label %88 + br label %90 -88: ; preds = %84, %.preheader94.us - %89 = phi ptr [ %.pre202, %84 ], [ %70, %.preheader94.us ] - %.sroa.0.1.us = phi i32 [ %87, %84 ], [ %.sroa.0.0108.us161, %.preheader94.us ] - %.sroa.7.1.us = phi i32 [ %.sroa.7.0109.us160, %84 ], [ %83, %.preheader94.us ] +90: ; preds = %86, %.preheader94.us + %91 = phi ptr [ %.pre202, %84 ], [ %71, %.preheader94.us ] + %.sroa.0.1.us = phi i32 [ %89, %84 ], [ %.sroa.0.0108.us161, %.preheader94.us ] + %.sroa.7.1.us = phi i32 [ %.sroa.7.0109.us160, %84 ], [ %85, %.preheader94.us ] %indvars.iv.next189 = add nuw nsw i64 %indvars.iv188, 1 - %90 = getelementptr i8, ptr %89, i64 4 - %.val79.us = load i32, ptr %90, align 4, !tbaa !30 - %91 = sext i32 %.val79.us to i64 - %92 = icmp slt i64 %indvars.iv.next189, %91 - br i1 %92, label %69, label %.critedge, !llvm.loop !177 + %92 = getelementptr i8, ptr %91, i64 4 + %.val79.us = load i32, ptr %92, align 4, !tbaa !30 + %93 = sext i32 %.val79.us to i64 + %94 = icmp slt i64 %indvars.iv.next189, %93 + br i1 %94, label %70, label %.critedge, !llvm.loop !177 .lr.ph113.split: ; preds = %.lr.ph113 br i1 %.not.us157, label %.critedge, label %.lr.ph132 @@ -8873,7 +8873,7 @@ define void @Gia_GenerateCexesDumpFile(ptr noundef %0, ptr noundef readonly capt br i1 %21, label %.lr.ph132.split.us.preheader, label %.lr.ph132.split .lr.ph132.split.us.preheader: ; preds = %.lr.ph132 - %93 = zext nneg i32 %.fr173 to i64 + %95 = zext nneg i32 %.fr173 to i64 br label %.lr.ph132.split.us .lr.ph132.split.us: ; preds = %.lr.ph132.split.us.preheader, %107 @@ -8881,20 +8881,20 @@ define void @Gia_GenerateCexesDumpFile(ptr noundef %0, ptr noundef readonly capt %.val84131.us = phi ptr [ %.val84.us156, %.lr.ph132.split.us.preheader ], [ %.val84.us142, %107 ] %.sroa.0.0108130.us = phi i32 [ 0, %.lr.ph132.split.us.preheader ], [ %.sroa.0.1.us144, %107 ] %.sroa.7.0109129.us = phi i32 [ 0, %.lr.ph132.split.us.preheader ], [ %.sroa.7.1.us145, %107 ] - %94 = phi ptr [ %.val87, %.lr.ph132.split.us.preheader ], [ %129, %107 ] - %95 = getelementptr i8, ptr %94, i64 8 - %.val85.val.us136 = load ptr, ptr %95, align 8, !tbaa !32 - %96 = getelementptr inbounds nuw i32, ptr %.val85.val.us136, i64 %indvars.iv185 - %97 = load i32, ptr %96, align 4, !tbaa !35 - %98 = sext i32 %97 to i64 - %99 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val84131.us, i64 %98 - %.val.i.i.us137 = load i64, ptr %99, align 4 - %100 = trunc i64 %.val.i.i.us137 to i32 - %101 = and i32 %100, 536870911 - %102 = sub nsw i32 %97, %101 - %103 = lshr i32 %100, 29 - %104 = and i32 %103, 1 - %105 = or i32 %102, %104 + %96 = phi ptr [ %.val87, %.lr.ph132.split.us.preheader ], [ %132, %107 ] + %97 = getelementptr i8, ptr %96, i64 8 + %.val85.val.us136 = load ptr, ptr %97, align 8, !tbaa !32 + %98 = getelementptr inbounds nuw i32, ptr %.val85.val.us136, i64 %indvars.iv185 + %99 = load i32, ptr %98, align 4, !tbaa !35 + %100 = sext i32 %99 to i64 + %101 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val84131.us, i64 %100 + %.val.i.i.us137 = load i64, ptr %101, align 4 + %102 = trunc i64 %.val.i.i.us137 to i32 + %103 = and i32 %102, 536870911 + %104 = sub nsw i32 %99, %103 + %105 = lshr i32 %102, 29 + %106 = and i32 %105, 1 + %105 = or i32 %104, %104 %106 = icmp eq i32 %105, 0 br i1 %106, label %124, label %.preheader95.us @@ -8904,96 +8904,96 @@ define void @Gia_GenerateCexesDumpFile(ptr noundef %0, ptr noundef readonly capt br i1 %.not.us143, label %.critedge, label %.lr.ph132.split.us, !llvm.loop !177 .preheader95.us: ; preds = %.lr.ph132.split.us - %108 = mul nuw nsw i64 %indvars.iv185, %93 - %109 = trunc nuw nsw i64 %indvars.iv185 to i32 - br label %110 + %111 = mul nuw nsw i64 %indvars.iv185, %95 + %112 = trunc nuw nsw i64 %indvars.iv185 to i32 + br label %113 -110: ; preds = %.preheader95.us, %.critedge2.us +113: ; preds = %.preheader95.us, %.critedge2.us %indvars.iv182 = phi i64 [ 0, %.preheader95.us ], [ %indvars.iv.next183, %.critedge2.us ] %.val89.us = load ptr, ptr %22, align 8, !tbaa !95 - %111 = getelementptr inbounds nuw %struct.Vec_Int_t_, ptr %.val89.us, i64 %indvars.iv182 - %112 = getelementptr inbounds nuw %struct.Vec_Int_t_, ptr %111, i64 %108 - %113 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %5, ptr noundef nonnull @.str.50, i32 noundef %109) #27 - %114 = getelementptr i8, ptr %112, i64 4 - %.val78.us = load i32, ptr %114, align 4, !tbaa !30 - %115 = icmp eq i32 %.val78.us, 0 - br i1 %115, label %122, label %.preheader.us - -116: ; preds = %.lr.ph.us, %116 + %114 = getelementptr inbounds nuw %struct.Vec_Int_t_, ptr %.val89.us, i64 %indvars.iv182 + %115 = getelementptr inbounds nuw %struct.Vec_Int_t_, ptr %114, i64 %111 + %116 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %5, ptr noundef nonnull @.str.50, i32 noundef %112) #27 + %117 = getelementptr i8, ptr %115, i64 4 + %.val78.us = load i32, ptr %117, align 4, !tbaa !30 + %118 = icmp eq i32 %.val78.us, 0 + br i1 %118, label %125, label %.preheader.us + +119: ; preds = %.lr.ph.us, %119 %indvars.iv179 = phi i64 [ 0, %.lr.ph.us ], [ %indvars.iv.next180, %116 ] - %.val81.us = load ptr, ptr %134, align 8, !tbaa !32 - %117 = getelementptr inbounds nuw i32, ptr %.val81.us, i64 %indvars.iv179 - %118 = load i32, ptr %117, align 4, !tbaa !35 - %119 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %5, ptr noundef nonnull @.str.52, i32 noundef %118) #27 + %.val81.us = load ptr, ptr %137, align 8, !tbaa !32 + %120 = getelementptr inbounds nuw i32, ptr %.val81.us, i64 %indvars.iv179 + %121 = load i32, ptr %120, align 4, !tbaa !35 + %122 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %5, ptr noundef nonnull @.str.52, i32 noundef %121) #27 %indvars.iv.next180 = add nuw nsw i64 %indvars.iv179, 1 - %.val77.us = load i32, ptr %114, align 4, !tbaa !30 - %120 = sext i32 %.val77.us to i64 - %121 = icmp slt i64 %indvars.iv.next180, %120 - br i1 %121, label %116, label %.critedge2.us, !llvm.loop !180 + %.val77.us = load i32, ptr %117, align 4, !tbaa !30 + %123 = sext i32 %.val77.us to i64 + %124 = icmp slt i64 %indvars.iv.next180, %123 + br i1 %124, label %119, label %.critedge2.us, !llvm.loop !180 -122: ; preds = %110 - %123 = tail call i64 @fwrite(ptr nonnull @.str.51, i64 14, i64 1, ptr nonnull %5) +125: ; preds = %113 + %126 = tail call i64 @fwrite(ptr nonnull @.str.51, i64 14, i64 1, ptr nonnull %5) br label %.critedge2.us -.critedge2.us: ; preds = %116, %.preheader.us, %122 +.critedge2.us: ; preds = %119, %.preheader.us, %125 %fputc.us = tail call i32 @fputc(i32 10, ptr nonnull %5) %indvars.iv.next183 = add nuw nsw i64 %indvars.iv182, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next183, %93 - br i1 %exitcond.not, label %._crit_edge.us, label %110, !llvm.loop !181 - -124: ; preds = %.lr.ph132.split.us - %125 = trunc nuw nsw i64 %indvars.iv185 to i32 - %126 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %5, ptr noundef nonnull @.str.49, i32 noundef %125) #27 - %127 = add nsw i32 %.sroa.0.0108130.us, 1 - br label %128 - -128: ; preds = %124, %._crit_edge.us - %.sroa.0.1.us144 = phi i32 [ %127, %124 ], [ %.sroa.0.0108130.us, %._crit_edge.us ] - %.sroa.7.1.us145 = phi i32 [ %.sroa.7.0109129.us, %124 ], [ %135, %._crit_edge.us ] + %exitcond.not = icmp eq i64 %indvars.iv.next183, %95 + br i1 %exitcond.not, label %._crit_edge.us, label %113, !llvm.loop !181 + +127: ; preds = %.lr.ph132.split.us + %128 = trunc nuw nsw i64 %indvars.iv185 to i32 + %129 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %5, ptr noundef nonnull @.str.49, i32 noundef %128) #27 + %130 = add nsw i32 %.sroa.0.0108130.us, 1 + br label %131 + +131: ; preds = %127, %._crit_edge.us + %.sroa.0.1.us144 = phi i32 [ %130, %124 ], [ %.sroa.0.0108130.us, %._crit_edge.us ] + %.sroa.7.1.us145 = phi i32 [ %.sroa.7.0109129.us, %124 ], [ %138, %._crit_edge.us ] %indvars.iv.next186 = add nuw nsw i64 %indvars.iv185, 1 - %129 = load ptr, ptr %16, align 8, !tbaa !43 - %130 = getelementptr i8, ptr %129, i64 4 - %.val79.us146 = load i32, ptr %130, align 4, !tbaa !30 - %131 = sext i32 %.val79.us146 to i64 - %132 = icmp slt i64 %indvars.iv.next186, %131 - br i1 %132, label %107, label %.critedge, !llvm.loop !177 + %132 = load ptr, ptr %16, align 8, !tbaa !43 + %133 = getelementptr i8, ptr %132, i64 4 + %.val79.us146 = load i32, ptr %133, align 4, !tbaa !30 + %134 = sext i32 %.val79.us146 to i64 + %135 = icmp slt i64 %indvars.iv.next186, %134 + br i1 %135, label %107, label %.critedge, !llvm.loop !177 -.preheader.us: ; preds = %110 - %133 = icmp sgt i32 %.val78.us, 0 - br i1 %133, label %.lr.ph.us, label %.critedge2.us +.preheader.us: ; preds = %113 + %136 = icmp sgt i32 %.val78.us, 0 + br i1 %136, label %.lr.ph.us, label %.critedge2.us .lr.ph.us: ; preds = %.preheader.us - %134 = getelementptr i8, ptr %112, i64 8 - br label %116 + %137 = getelementptr i8, ptr %115, i64 8 + br label %119 ._crit_edge.us: ; preds = %.critedge2.us - %135 = add nsw i32 %.sroa.7.0109129.us, 1 - br label %128 + %138 = add nsw i32 %.sroa.7.0109129.us, 1 + br label %131 -136: ; preds = %155 +139: ; preds = %159 %.val84 = load ptr, ptr %19, align 8, !tbaa !3 %.not = icmp eq ptr %.val84, null br i1 %.not, label %.critedge, label %.lr.ph132.split, !llvm.loop !177 -.lr.ph132.split: ; preds = %.lr.ph132, %136 - %137 = phi ptr [ %156, %136 ], [ %.val87, %.lr.ph132 ] +.lr.ph132.split: ; preds = %.lr.ph132, %139 + %140 = phi ptr [ %160, %136 ], [ %.val87, %.lr.ph132 ] %indvars.iv = phi i64 [ %indvars.iv.next, %136 ], [ 0, %.lr.ph132 ] %.val84131 = phi ptr [ %.val84, %136 ], [ %.val84.us156, %.lr.ph132 ] %.sroa.0.0108130 = phi i32 [ %.sroa.0.1, %136 ], [ 0, %.lr.ph132 ] %.sroa.7.0109129 = phi i32 [ %.sroa.7.1, %136 ], [ 0, %.lr.ph132 ] - %138 = getelementptr i8, ptr %137, i64 8 - %.val85.val = load ptr, ptr %138, align 8, !tbaa !32 - %139 = getelementptr inbounds nuw i32, ptr %.val85.val, i64 %indvars.iv - %140 = load i32, ptr %139, align 4, !tbaa !35 - %141 = sext i32 %140 to i64 - %142 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val84131, i64 %141 - %.val.i.i = load i64, ptr %142, align 4 - %143 = trunc i64 %.val.i.i to i32 - %144 = and i32 %143, 536870911 - %145 = sub nsw i32 %140, %144 - %146 = lshr i32 %143, 29 - %147 = and i32 %146, 1 - %148 = or i32 %145, %147 + %141 = getelementptr i8, ptr %140, i64 8 + %.val85.val = load ptr, ptr %141, align 8, !tbaa !32 + %142 = getelementptr inbounds nuw i32, ptr %.val85.val, i64 %indvars.iv + %143 = load i32, ptr %142, align 4, !tbaa !35 + %144 = sext i32 %143 to i64 + %145 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val84131, i64 %144 + %.val.i.i = load i64, ptr %145, align 4 + %146 = trunc i64 %.val.i.i to i32 + %147 = and i32 %146, 536870911 + %148 = sub nsw i32 %143, %147 + %149 = lshr i32 %146, 29 + %150 = and i32 %149, 1 + %148 = or i32 %148, %147 %149 = icmp eq i32 %148, 0 br i1 %149, label %150, label %.preheader95 @@ -9002,35 +9002,35 @@ define void @Gia_GenerateCexesDumpFile(ptr noundef %0, ptr noundef readonly capt %152 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %5, ptr noundef nonnull @.str.49, i32 noundef %151) #27 %153 = add nsw i32 %.sroa.0.0108130, 1 %.pre = load ptr, ptr %16, align 8, !tbaa !43 - br label %155 + br label %159 .preheader95: ; preds = %.lr.ph132.split - %154 = add nsw i32 %.sroa.7.0109129, 1 - br label %155 + %158 = add nsw i32 %.sroa.7.0109129, 1 + br label %159 -155: ; preds = %150, %.preheader95 - %156 = phi ptr [ %.pre, %150 ], [ %137, %.preheader95 ] +159: ; preds = %150, %.preheader95 + %160 = phi ptr [ %.pre, %150 ], [ %140, %.preheader95 ] %.sroa.0.1 = phi i32 [ %153, %150 ], [ %.sroa.0.0108130, %.preheader95 ] - %.sroa.7.1 = phi i32 [ %.sroa.7.0109129, %150 ], [ %154, %.preheader95 ] + %.sroa.7.1 = phi i32 [ %.sroa.7.0109129, %150 ], [ %158, %.preheader95 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %157 = getelementptr i8, ptr %156, i64 4 - %.val79 = load i32, ptr %157, align 4, !tbaa !30 - %158 = sext i32 %.val79 to i64 - %159 = icmp slt i64 %indvars.iv.next, %158 - br i1 %159, label %136, label %.critedge, !llvm.loop !177 + %161 = getelementptr i8, ptr %160, i64 4 + %.val79 = load i32, ptr %161, align 4, !tbaa !30 + %162 = sext i32 %.val79 to i64 + %163 = icmp slt i64 %indvars.iv.next, %162 + br i1 %163, label %139, label %.critedge, !llvm.loop !177 -.critedge: ; preds = %136, %155, %107, %128, %69, %88, %37, %62, %.lr.ph113.split.us, %.lr.ph113.split, %9 +.critedge: ; preds = %139, %159, %107, %131, %70, %90, %38, %63, %.lr.ph113.split.us, %.lr.ph113.split, %9 %.sroa.0.0.lcssa = phi i32 [ 0, %9 ], [ 0, %.lr.ph113.split.us ], [ 0, %.lr.ph113.split ], [ %.sroa.0.1.us.us, %62 ], [ %.sroa.0.1.us.us, %37 ], [ %.sroa.0.1.us, %88 ], [ %.sroa.0.1.us, %69 ], [ %.sroa.0.1.us144, %128 ], [ %.sroa.0.1.us144, %107 ], [ %.sroa.0.1, %155 ], [ %.sroa.0.1, %136 ] %.sroa.7.0.lcssa = phi i32 [ 0, %9 ], [ 0, %.lr.ph113.split.us ], [ 0, %.lr.ph113.split ], [ %.sroa.7.1.us.us, %62 ], [ %.sroa.7.1.us.us, %37 ], [ %.sroa.7.1.us, %88 ], [ %.sroa.7.1.us, %69 ], [ %.sroa.7.1.us145, %128 ], [ %.sroa.7.1.us145, %107 ], [ %.sroa.7.1, %155 ], [ %.sroa.7.1, %136 ] %.val79.lcssa = phi i32 [ %.val87.val, %9 ], [ %.val87.val, %.lr.ph113.split.us ], [ %.val87.val, %.lr.ph113.split ], [ %.val79.us.us, %62 ], [ %.val79.us.us, %37 ], [ %.val79.us, %88 ], [ %.val79.us, %69 ], [ %.val79.us146, %128 ], [ %.val79.us146, %107 ], [ %.val79, %155 ], [ %.val79, %136 ] - %160 = add i32 %.sroa.7.0.lcssa, %.sroa.0.0.lcssa - %161 = sub i32 %.val79.lcssa, %160 - %162 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.54, i32 noundef %.sroa.7.0.lcssa, i32 noundef %.sroa.0.0.lcssa, i32 noundef %161, ptr noundef %0) - %163 = tail call i32 @fclose(ptr noundef nonnull %5) + %164 = add i32 %.sroa.7.0.lcssa, %.sroa.0.0.lcssa + %165 = sub i32 %.val79.lcssa, %164 + %166 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.54, i32 noundef %.sroa.7.0.lcssa, i32 noundef %.sroa.0.0.lcssa, i32 noundef %165, ptr noundef %0) + %167 = tail call i32 @fclose(ptr noundef nonnull %5) tail call void @free(ptr noundef %14) #27 - br label %164 + br label %168 -164: ; preds = %.critedge, %7 +168: ; preds = %.critedge, %7 ret void } diff --git a/bench/abseil-cpp/optimized/float_conversion.ll b/bench/abseil-cpp/optimized/float_conversion.ll index b36d9cc47b0..57e87a8ae3f 100644 --- a/bench/abseil-cpp/optimized/float_conversion.ll +++ b/bench/abseil-cpp/optimized/float_conversion.ll @@ -391,7 +391,7 @@ _ZN4absl19str_format_internal12_GLOBAL__N_111FormatFFastINS_7uint128EEEvT_iRKNS1 _ZN4absl19str_format_internal12_GLOBAL__N_17FormatFINS_7uint128EEEvT_iRKNS1_11FormatStateE.exit.i: ; preds = %_ZN4absl19str_format_internal12_GLOBAL__N_111FormatFFastINS_7uint128EEEvT_iRKNS1_11FormatStateE.exit.i.i, %79, %76 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #19 - br label %388 + br label %385 151: ; preds = %50 %152 = call fastcc noundef zeroext i1 @_ZN4absl19str_format_internal12_GLOBAL__N_113FloatToBufferILNS1_11FormatStyleE1EeEEbNS1_10DecomposedIT0_EEmPNS1_6BufferEPi(ptr noundef nonnull byval(%"struct.absl::str_format_internal::(anonymous namespace)::Decomposed") align 16 %9, i64 noundef %spec.select.i, ptr noundef %10, ptr noundef %8) @@ -399,7 +399,7 @@ _ZN4absl19str_format_internal12_GLOBAL__N_17FormatFINS_7uint128EEEvT_iRKNS1_11Fo 153: ; preds = %151 %154 = call fastcc noundef zeroext i1 @_ZN4absl19str_format_internal12_GLOBAL__N_118FallbackToSnprintfIeEEbT_RKNS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE(x86_fp80 noundef %0, ptr noundef nonnull align 4 dereferenceable(12) %1, ptr noundef %2) - br label %388 + br label %385 155: ; preds = %151 %156 = getelementptr inbounds nuw i8, ptr %1, i64 1 @@ -474,7 +474,7 @@ _ZN4absl19str_format_internal12_GLOBAL__N_113PrintExponentEicPNS1_6BufferE.exit. %196 = getelementptr inbounds nuw i8, ptr %195, i64 1 store ptr %196, ptr %159, align 8, !tbaa !37 store i8 %194, ptr %195, align 1, !tbaa !12 - br label %378 + br label %375 197: ; preds = %50 %198 = icmp eq i32 %narrow.i, 0 @@ -485,7 +485,7 @@ _ZN4absl19str_format_internal12_GLOBAL__N_113PrintExponentEicPNS1_6BufferE.exit. 201: ; preds = %197 %202 = call fastcc noundef zeroext i1 @_ZN4absl19str_format_internal12_GLOBAL__N_118FallbackToSnprintfIeEEbT_RKNS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE(x86_fp80 noundef %0, ptr noundef nonnull align 4 dereferenceable(12) %1, ptr noundef %2) - br label %388 + br label %385 203: ; preds = %197 %204 = load i32, ptr %8, align 4, !tbaa !16 @@ -575,7 +575,7 @@ _ZN4absl19str_format_internal12_GLOBAL__N_113PrintExponentEicPNS1_6BufferE.exit. .loopexit.i: ; preds = %237, %241, %231 %.not61.i = icmp eq i32 %232, 0 - br i1 %.not61.i, label %378, label %242 + br i1 %.not61.i, label %375, label %242 242: ; preds = %.loopexit.i %243 = load i8, ptr %1, align 4, !tbaa !13 @@ -634,7 +634,7 @@ _ZN4absl19str_format_internal12_GLOBAL__N_113PrintExponentEicPNS1_6BufferE.exit: %275 = getelementptr inbounds nuw i8, ptr %274, i64 1 store ptr %275, ptr %248, align 8, !tbaa !37 store i8 %273, ptr %274, align 1, !tbaa !12 - br label %378 + br label %375 276: ; preds = %50 %277 = icmp eq i8 %60, 15 @@ -652,127 +652,127 @@ _ZN4absl19str_format_internal12_GLOBAL__N_113PrintExponentEicPNS1_6BufferE.exit: %281 = load i32, ptr %51, align 4, !tbaa !15 %282 = icmp slt i32 %281, 0 %283 = add i32 %55, 64 - %.not.i65.i.i.i = icmp ne i64 %.sroa.0.0.copyload.i, 0 + %.not.i66.i.i.i = icmp ne i64 %.sroa.0.0.copyload.i, 0 %284 = icmp ne i64 %.sroa.2.0.copyload.i, 0 - %285 = select i1 %.not.i65.i.i.i, i1 true, i1 %284 + %285 = select i1 %.not.i66.i.i.i, i1 true, i1 %284 br i1 %285, label %.lr.ph.i.preheader.i.i, label %.critedge.i.i.i .lr.ph.i.preheader.i.i: ; preds = %276 %smin.i.i = call i32 @llvm.smin.i32(i32 %283, i32 -16382) br label %.lr.ph.i.i.i -.lr.ph.i.i.i: ; preds = %292, %.lr.ph.i.preheader.i.i - %.199.i.i = phi i32 [ %293, %292 ], [ %283, %.lr.ph.i.preheader.i.i ] - %.sroa.16.2.i.i = phi i64 [ %.sroa.2.0.extract.trunc.i.i36.i.i.i, %292 ], [ %.sroa.2.0.copyload.i, %.lr.ph.i.preheader.i.i ] - %.sroa.082.2.i.i = phi i64 [ %.sroa.0.0.extract.trunc.i.i34.i.i.i, %292 ], [ %.sroa.0.0.copyload.i, %.lr.ph.i.preheader.i.i ] +.lr.ph.i.i.i: ; preds = %291, %.lr.ph.i.preheader.i.i + %.199.i.i = phi i32 [ %292, %292 ], [ %283, %.lr.ph.i.preheader.i.i ] + %.sroa.16.2.i.i = phi i64 [ %.sroa.2.0.extract.trunc.i.i37.i.i.i, %292 ], [ %.sroa.2.0.copyload.i, %.lr.ph.i.preheader.i.i ] + %.sroa.082.2.i.i = phi i64 [ %.sroa.0.0.extract.trunc.i.i35.i.i.i, %292 ], [ %.sroa.0.0.copyload.i, %.lr.ph.i.preheader.i.i ] %.sroa.24.0.insert.ext.i.i.i.i = zext i64 %.sroa.16.2.i.i to i128 %.sroa.24.0.insert.shift.i.i.i.i = shl nuw i128 %.sroa.24.0.insert.ext.i.i.i.i, 64 %.sroa.03.0.insert.ext.i.i.i.i = zext i64 %.sroa.082.2.i.i to i128 %.sroa.03.0.insert.insert.i.i.i.i = or disjoint i128 %.sroa.24.0.insert.shift.i.i.i.i, %.sroa.03.0.insert.ext.i.i.i.i - %286 = icmp sgt i64 %.sroa.16.2.i.i, -1 - br i1 %286, label %287, label %.critedge.i.i.i + %.not.i27.i.i.i = icmp sgt i64 %.sroa.16.2.i.i, -1 + br i1 %.not.i27.i.i.i, label %286, label %.critedge.i.i.i -287: ; preds = %.lr.ph.i.i.i +286: ; preds = %.lr.ph.i.i.i %.not.i.i78.i = icmp sgt i32 %.199.i.i, -16382 - br i1 %.not.i.i78.i, label %292, label %288, !prof !43 - -288: ; preds = %287 - %289 = sub nuw nsw i32 -16382, %smin.i.i - %290 = zext nneg i32 %289 to i128 - %291 = lshr i128 %.sroa.03.0.insert.insert.i.i.i.i, %290 - %extract.t61 = trunc i128 %291 to i64 - %extract64 = lshr i128 %291, 64 + br i1 %.not.i.i78.i, label %291, label %287, !prof !43 + +287: ; preds = %286 + %288 = sub nuw nsw i32 -16382, %smin.i.i + %289 = zext nneg i32 %288 to i128 + %290 = lshr i128 %.sroa.03.0.insert.insert.i.i.i.i, %289 + %extract.t61 = trunc i128 %290 to i64 + %extract64 = lshr i128 %290, 64 %extract.t65 = trunc nuw i128 %extract64 to i64 br label %_ZN4absl19str_format_internal12_GLOBAL__N_116FormatANormalizeINS_7uint128EEEvNS1_18HexFloatTypeParamsEPhPT_Pi.exit.i.i -292: ; preds = %287 - %.sroa.0.0.extract.trunc.i.i34.i.i.i = shl i64 %.sroa.082.2.i.i, 1 - %.sroa.2.0.extract.shift.i.i35.i.i.i = lshr i128 %.sroa.03.0.insert.insert.i.i.i.i, 63 - %.sroa.2.0.extract.trunc.i.i36.i.i.i = trunc nuw i128 %.sroa.2.0.extract.shift.i.i35.i.i.i to i64 - %293 = add nsw i32 %.199.i.i, -1 - %.not.i.i.i.i = icmp ne i64 %.sroa.0.0.extract.trunc.i.i34.i.i.i, 0 - %294 = icmp ne i64 %.sroa.2.0.extract.trunc.i.i36.i.i.i, 0 - %295 = select i1 %.not.i.i.i.i, i1 true, i1 %294 - br i1 %295, label %.lr.ph.i.i.i, label %.critedge.i.i.i, !llvm.loop !44 - -.critedge.i.i.i: ; preds = %292, %.lr.ph.i.i.i, %276 - %.098.i.i = phi i32 [ %283, %276 ], [ %.199.i.i, %.lr.ph.i.i.i ], [ %293, %292 ] +291: ; preds = %286 + %.sroa.0.0.extract.trunc.i.i35.i.i.i = shl i64 %.sroa.082.2.i.i, 1 + %.sroa.2.0.extract.shift.i.i36.i.i.i = lshr i128 %.sroa.03.0.insert.insert.i.i.i.i, 63 + %.sroa.2.0.extract.trunc.i.i37.i.i.i = trunc nuw i128 %.sroa.2.0.extract.shift.i.i36.i.i.i to i64 + %292 = add nsw i32 %.199.i.i, -1 + %.not.i.i.i.i = icmp ne i64 %.sroa.0.0.extract.trunc.i.i35.i.i.i, 0 + %293 = icmp ne i64 %.sroa.2.0.extract.trunc.i.i37.i.i.i, 0 + %294 = select i1 %.not.i.i.i.i, i1 true, i1 %293 + br i1 %294, label %.lr.ph.i.i.i, label %.critedge.i.i.i, !llvm.loop !44 + +.critedge.i.i.i: ; preds = %291, %.lr.ph.i.i.i, %276 + %.098.i.i = phi i32 [ %283, %276 ], [ %.199.i.i, %.lr.ph.i.i.i ], [ %292, %292 ] %.sroa.16.1.i.i = phi i64 [ 0, %276 ], [ %.sroa.16.2.i.i, %.lr.ph.i.i.i ], [ 0, %292 ] %.sroa.082.1.i.i = phi i64 [ 0, %276 ], [ %.sroa.082.2.i.i, %.lr.ph.i.i.i ], [ 0, %292 ] %.sroa.22.0.insert.ext.i.i.i69.i = zext i64 %.sroa.16.1.i.i to i128 %.sroa.22.0.insert.shift.i.i.i70.i = shl nuw i128 %.sroa.22.0.insert.ext.i.i.i69.i, 64 %.sroa.01.0.insert.ext.i.i.i71.i = zext i64 %.sroa.082.1.i.i to i128 %.sroa.01.0.insert.insert.i.i.i72.i = or disjoint i128 %.sroa.22.0.insert.shift.i.i.i70.i, %.sroa.01.0.insert.ext.i.i.i71.i - %296 = lshr i64 %.sroa.16.1.i.i, 60 - %297 = trunc nuw nsw i64 %296 to i8 - %.not57.i.i.i = icmp eq i128 %.sroa.01.0.insert.insert.i.i.i72.i, 0 - %298 = add i32 %.098.i.i, -4 - %299 = select i1 %.not57.i.i.i, i32 0, i32 %298 - %300 = shl i128 %.sroa.01.0.insert.insert.i.i.i72.i, 4 - %extract.t60 = trunc i128 %300 to i64 - %extract62 = lshr i128 %300, 64 + %295 = lshr i64 %.sroa.16.1.i.i, 60 + %296 = trunc nuw nsw i64 %295 to i8 + %.not58.i.i.i = icmp eq i128 %.sroa.01.0.insert.insert.i.i.i72.i, 0 + %297 = add i32 %.098.i.i, -4 + %298 = select i1 %.not58.i.i.i, i32 0, i32 %297 + %299 = shl i128 %.sroa.01.0.insert.insert.i.i.i72.i, 4 + %extract.t60 = trunc i128 %299 to i64 + %extract62 = lshr i128 %299, 64 %extract.t63 = trunc nuw i128 %extract62 to i64 br label %_ZN4absl19str_format_internal12_GLOBAL__N_116FormatANormalizeINS_7uint128EEEvNS1_18HexFloatTypeParamsEPhPT_Pi.exit.i.i -_ZN4absl19str_format_internal12_GLOBAL__N_116FormatANormalizeINS_7uint128EEEvNS1_18HexFloatTypeParamsEPhPT_Pi.exit.i.i: ; preds = %.critedge.i.i.i, %288 +_ZN4absl19str_format_internal12_GLOBAL__N_116FormatANormalizeINS_7uint128EEEvNS1_18HexFloatTypeParamsEPhPT_Pi.exit.i.i: ; preds = %.critedge.i.i.i, %287 %.sink59.off0 = phi i64 [ %extract.t60, %.critedge.i.i.i ], [ %extract.t61, %288 ] %.sink59.off64 = phi i64 [ %extract.t63, %.critedge.i.i.i ], [ %extract.t65, %288 ] - %.0100.i.i = phi i8 [ %297, %.critedge.i.i.i ], [ 0, %288 ] - %.2.i.i = phi i32 [ %299, %.critedge.i.i.i ], [ -16382, %288 ] - br i1 %282, label %_ZN4absl19str_format_internal12_GLOBAL__N_112FormatARoundINS_7uint128EEEvbRKNS1_11FormatStateEPhPT_Pi.exit.i.i, label %301 - -301: ; preds = %_ZN4absl19str_format_internal12_GLOBAL__N_116FormatANormalizeINS_7uint128EEEvNS1_18HexFloatTypeParamsEPhPT_Pi.exit.i.i - %302 = call i64 @llvm.usub.sat.i64(i64 32, i64 %spec.select.i) - %303 = icmp ugt i32 %narrow.i, 31 - br i1 %303, label %_ZN4absl19str_format_internal12_GLOBAL__N_123MaskUpToNibbleExclusiveINS_7uint128EEET_m.exit.i.i.i, label %304 - -304: ; preds = %301 - %305 = trunc nuw nsw i64 %302 to i32 - %306 = shl nuw nsw i32 %305, 2 - %307 = sub nuw nsw i32 128, %306 - %308 = zext nneg i32 %307 to i128 - %309 = lshr i128 -1, %308 + %.0100.i.i = phi i8 [ %296, %.critedge.i.i.i ], [ 0, %288 ] + %.2.i.i = phi i32 [ %298, %.critedge.i.i.i ], [ -16382, %288 ] + br i1 %282, label %_ZN4absl19str_format_internal12_GLOBAL__N_112FormatARoundINS_7uint128EEEvbRKNS1_11FormatStateEPhPT_Pi.exit.i.i, label %300 + +300: ; preds = %_ZN4absl19str_format_internal12_GLOBAL__N_116FormatANormalizeINS_7uint128EEEvNS1_18HexFloatTypeParamsEPhPT_Pi.exit.i.i + %301 = call i64 @llvm.usub.sat.i64(i64 32, i64 %spec.select.i) + %302 = icmp ugt i32 %narrow.i, 31 + br i1 %302, label %_ZN4absl19str_format_internal12_GLOBAL__N_123MaskUpToNibbleExclusiveINS_7uint128EEET_m.exit.i.i.i, label %303 + +303: ; preds = %300 + %304 = trunc nuw nsw i64 %301 to i32 + %305 = shl nuw nsw i32 %304, 2 + %306 = sub nuw nsw i32 128, %305 + %307 = zext nneg i32 %306 to i128 + %308 = lshr i128 -1, %307 %.sroa.24.0.insert.ext.i.i.i.i.i = zext i64 %.sink59.off64 to i128 %.sroa.24.0.insert.shift.i.i.i.i.i = shl nuw i128 %.sroa.24.0.insert.ext.i.i.i.i.i, 64 - %310 = lshr i128 -18446744073709551616, %308 - %311 = trunc i128 %309 to i64 - %.sroa.0.0.extract.trunc.i.i.i39.i.i = and i64 %.sink59.off0, %311 - %.sroa.2.0.extract.shift.i.i.i40.i.i = and i128 %.sroa.24.0.insert.shift.i.i.i.i.i, %310 - %312 = add nsw i32 %306, -4 - %313 = zext nneg i32 %312 to i128 - %314 = shl i128 8, %313 + %309 = lshr i128 -18446744073709551616, %307 + %310 = trunc i128 %308 to i64 + %.sroa.0.0.extract.trunc.i.i.i39.i.i = and i64 %.sink59.off0, %310 + %.sroa.2.0.extract.shift.i.i.i40.i.i = and i128 %.sroa.24.0.insert.shift.i.i.i.i.i, %309 + %311 = add nsw i32 %305, -4 + %312 = zext nneg i32 %311 to i128 + %313 = shl i128 8, %312 %.sroa.01.0.insert.ext.i.i.i.i.i.i = zext i64 %.sroa.0.0.extract.trunc.i.i.i39.i.i to i128 %.sroa.01.0.insert.insert.i.i.i.i.i.i = or disjoint i128 %.sroa.2.0.extract.shift.i.i.i40.i.i, %.sroa.01.0.insert.ext.i.i.i.i.i.i - %.not.i.i41.i.i = icmp eq i128 %.sroa.01.0.insert.insert.i.i.i.i.i.i, %314 - br i1 %.not.i.i41.i.i, label %317, label %315 - -315: ; preds = %304 - %316 = icmp ult i128 %314, %.sroa.01.0.insert.insert.i.i.i.i.i.i - br i1 %316, label %327, label %._crit_edge.i.i.i - -317: ; preds = %304 - %318 = icmp eq i64 %302, 32 - br i1 %318, label %_ZN4absl19str_format_internal12_GLOBAL__N_120HexFloatNeedsRoundUpINS_7uint128EEEbT_mh.exit.i.i.i, label %319 - -319: ; preds = %317 - %320 = zext nneg i32 %306 to i128 - %321 = shl i128 15, %320 - %322 = trunc i128 %321 to i64 - %.sroa.0.0.extract.trunc.i.i.i.i.i.i.i = and i64 %.sink59.off0, %322 - %.sroa.2.0.extract.shift.i.i.i.i.i.i.i = and i128 %.sroa.24.0.insert.shift.i.i.i.i.i, %321 + %.not.i.i41.i.i = icmp eq i128 %.sroa.01.0.insert.insert.i.i.i.i.i.i, %313 + br i1 %.not.i.i41.i.i, label %316, label %314 + +314: ; preds = %303 + %315 = icmp ult i128 %313, %.sroa.01.0.insert.insert.i.i.i.i.i.i + br i1 %315, label %326, label %._crit_edge.i.i.i + +316: ; preds = %303 + %317 = icmp eq i64 %301, 32 + br i1 %317, label %_ZN4absl19str_format_internal12_GLOBAL__N_120HexFloatNeedsRoundUpINS_7uint128EEEbT_mh.exit.i.i.i, label %318 + +318: ; preds = %316 + %319 = zext nneg i32 %305 to i128 + %320 = shl i128 15, %319 + %321 = trunc i128 %320 to i64 + %.sroa.0.0.extract.trunc.i.i.i.i.i.i.i = and i64 %.sink59.off0, %321 + %.sroa.2.0.extract.shift.i.i.i.i.i.i.i = and i128 %.sroa.24.0.insert.shift.i.i.i.i.i, %320 %.sroa.01.0.insert.ext.i.i46.i.i.i.i = zext i64 %.sroa.0.0.extract.trunc.i.i.i.i.i.i.i to i128 %.sroa.01.0.insert.insert.i.i47.i.i.i.i = or disjoint i128 %.sroa.2.0.extract.shift.i.i.i.i.i.i.i, %.sroa.01.0.insert.ext.i.i46.i.i.i.i - %323 = lshr i128 %.sroa.01.0.insert.insert.i.i47.i.i.i.i, %320 - %324 = trunc i128 %323 to i8 + %322 = lshr i128 %.sroa.01.0.insert.insert.i.i47.i.i.i.i, %319 + %323 = trunc i128 %322 to i8 br label %_ZN4absl19str_format_internal12_GLOBAL__N_120HexFloatNeedsRoundUpINS_7uint128EEEbT_mh.exit.i.i.i -_ZN4absl19str_format_internal12_GLOBAL__N_120HexFloatNeedsRoundUpINS_7uint128EEEbT_mh.exit.i.i.i: ; preds = %319, %317 - %325 = phi i8 [ %324, %319 ], [ %.0100.i.i, %317 ] - %326 = and i8 %325, 1 - %.not.i44.i.i = icmp eq i8 %326, 0 - br i1 %.not.i44.i.i, label %._crit_edge.i.i.i, label %327 +_ZN4absl19str_format_internal12_GLOBAL__N_120HexFloatNeedsRoundUpINS_7uint128EEEbT_mh.exit.i.i.i: ; preds = %318, %316 + %324 = phi i8 [ %323, %319 ], [ %.0100.i.i, %317 ] + %325 = and i8 %324, 1 + %.not.i44.i.i = icmp eq i8 %325, 0 + br i1 %.not.i44.i.i, label %._crit_edge.i.i.i, label %326 -327: ; preds = %_ZN4absl19str_format_internal12_GLOBAL__N_120HexFloatNeedsRoundUpINS_7uint128EEEbT_mh.exit.i.i.i, %315 +326: ; preds = %_ZN4absl19str_format_internal12_GLOBAL__N_120HexFloatNeedsRoundUpINS_7uint128EEEbT_mh.exit.i.i.i, %314 %328 = icmp samesign ugt i64 %302, 31 %329 = zext nneg i32 %306 to i128 %330 = shl nuw nsw i128 1, %329 @@ -786,51 +786,51 @@ _ZN4absl19str_format_internal12_GLOBAL__N_120HexFloatNeedsRoundUpINS_7uint128EEE %.sroa.01.0.insert.ext.i.i.i20.i.i.i = zext nneg i64 %.sroa.028.0.i.i.i.i to i128 %.sroa.03.0.insert.insert.i.i.i.i.i.i = add i128 %.sroa.01.0.insert.insert.i.i.i.i.i, %.sroa.01.0.insert.ext.i.i.i20.i.i.i %.sroa.0.0.extract.trunc.i.i.i.i.i.i = trunc i128 %.sroa.03.0.insert.insert.i.i.i.i.i.i to i64 - %331 = lshr i128 %.sroa.03.0.insert.insert.i.i.i.i.i.i, 64 - %.tr.i.i.i.i.i.i = trunc nuw i128 %331 to i64 + %330 = lshr i128 %.sroa.03.0.insert.insert.i.i.i.i.i.i, 64 + %.tr.i.i.i.i.i.i = trunc nuw i128 %330 to i64 %.narrow.i.i.i.i.i.i = add i64 %.sroa.3.0.i.i.i.i, %.tr.i.i.i.i.i.i %.not.i.i.i.i77.i = icmp slt i64 %.sink59.off64, 0 - %332 = icmp sgt i64 %.narrow.i.i.i.i.i.i, -1 - %or.cond.i.i.i.i = select i1 %.not.i.i.i.i77.i, i1 %332, i1 false + %.not.i28.i.i.i.i = icmp sgt i64 %.narrow.i.i.i.i.i.i, -1 + %or.cond.i.i.i.i = select i1 %.not.i.i.i.i77.i, i1 %.not.i28.i.i.i.i, i1 false %spec.select.i.i.i.i = or i1 %328, %or.cond.i.i.i.i - %333 = zext i1 %spec.select.i.i.i.i to i8 - %334 = add nuw nsw i8 %.0100.i.i, %333 - %335 = icmp samesign ugt i8 %334, 15 - br i1 %335, label %336, label %._crit_edge.i.i.i, !prof !33 + %331 = zext i1 %spec.select.i.i.i.i to i8 + %332 = add nuw nsw i8 %.0100.i.i, %331 + %333 = icmp samesign ugt i8 %332, 15 + br i1 %333, label %334, label %._crit_edge.i.i.i, !prof !33 -336: ; preds = %327 - %337 = add nsw i32 %.2.i.i, 4 +334: ; preds = %326 + %335 = add nsw i32 %.2.i.i, 4 br label %._crit_edge.i.i.i -._crit_edge.i.i.i: ; preds = %336, %327, %_ZN4absl19str_format_internal12_GLOBAL__N_120HexFloatNeedsRoundUpINS_7uint128EEEbT_mh.exit.i.i.i, %315 - %.1101.i.i = phi i8 [ %.0100.i.i, %_ZN4absl19str_format_internal12_GLOBAL__N_120HexFloatNeedsRoundUpINS_7uint128EEEbT_mh.exit.i.i.i ], [ 1, %336 ], [ %.0100.i.i, %315 ], [ %334, %327 ] - %.3.i.i = phi i32 [ %.2.i.i, %_ZN4absl19str_format_internal12_GLOBAL__N_120HexFloatNeedsRoundUpINS_7uint128EEEbT_mh.exit.i.i.i ], [ %337, %336 ], [ %.2.i.i, %315 ], [ %.2.i.i, %327 ] +._crit_edge.i.i.i: ; preds = %334, %326, %_ZN4absl19str_format_internal12_GLOBAL__N_120HexFloatNeedsRoundUpINS_7uint128EEEbT_mh.exit.i.i.i, %314 + %.1101.i.i = phi i8 [ %.0100.i.i, %_ZN4absl19str_format_internal12_GLOBAL__N_120HexFloatNeedsRoundUpINS_7uint128EEEbT_mh.exit.i.i.i ], [ 1, %336 ], [ %.0100.i.i, %315 ], [ %332, %327 ] + %.3.i.i = phi i32 [ %.2.i.i, %_ZN4absl19str_format_internal12_GLOBAL__N_120HexFloatNeedsRoundUpINS_7uint128EEEbT_mh.exit.i.i.i ], [ %335, %336 ], [ %.2.i.i, %315 ], [ %.2.i.i, %327 ] %.sroa.22.0.copyload.i.pre.i.i.i = phi i64 [ %.sink59.off64, %_ZN4absl19str_format_internal12_GLOBAL__N_120HexFloatNeedsRoundUpINS_7uint128EEEbT_mh.exit.i.i.i ], [ 0, %336 ], [ %.sink59.off64, %315 ], [ %.narrow.i.i.i.i.i.i, %327 ] %.sroa.01.0.copyload.i.pre.i.i.i = phi i64 [ %.sink59.off0, %_ZN4absl19str_format_internal12_GLOBAL__N_120HexFloatNeedsRoundUpINS_7uint128EEEbT_mh.exit.i.i.i ], [ 0, %336 ], [ %.sink59.off0, %315 ], [ %.sroa.0.0.extract.trunc.i.i.i.i.i.i, %327 ] - %.sroa.2.0.extract.shift.i.i.i.i.i.i = lshr i128 18446744073709551615, %308 + %.sroa.2.0.extract.shift.i.i.i.i.i.i = lshr i128 18446744073709551615, %307 %.sroa.2.0.extract.trunc.i.i.i.i.i.i = trunc nuw i128 %.sroa.2.0.extract.shift.i.i.i.i.i.i to i64 - %338 = xor i64 %311, -1 + %336 = xor i64 %310, -1 br label %_ZN4absl19str_format_internal12_GLOBAL__N_123MaskUpToNibbleExclusiveINS_7uint128EEET_m.exit.i.i.i -_ZN4absl19str_format_internal12_GLOBAL__N_123MaskUpToNibbleExclusiveINS_7uint128EEET_m.exit.i.i.i: ; preds = %._crit_edge.i.i.i, %301 +_ZN4absl19str_format_internal12_GLOBAL__N_123MaskUpToNibbleExclusiveINS_7uint128EEET_m.exit.i.i.i: ; preds = %._crit_edge.i.i.i, %300 %.2102.i.i = phi i8 [ %.0100.i.i, %301 ], [ %.1101.i.i, %._crit_edge.i.i.i ] %.4.i.i = phi i32 [ %.2.i.i, %301 ], [ %.3.i.i, %._crit_edge.i.i.i ] %.sroa.22.0.copyload.i.i.i.i = phi i64 [ %.sink59.off64, %301 ], [ %.sroa.22.0.copyload.i.pre.i.i.i, %._crit_edge.i.i.i ] %.sroa.01.0.copyload.i.i.i.i = phi i64 [ %.sink59.off0, %301 ], [ %.sroa.01.0.copyload.i.pre.i.i.i, %._crit_edge.i.i.i ] %.sroa.3.0.i23.i.i.i = phi i64 [ 0, %301 ], [ %.sroa.2.0.extract.trunc.i.i.i.i.i.i, %._crit_edge.i.i.i ] - %.sroa.0.0.i.i.i.i = phi i64 [ -1, %301 ], [ %338, %._crit_edge.i.i.i ] + %.sroa.0.0.i.i.i.i = phi i64 [ -1, %301 ], [ %336, %._crit_edge.i.i.i ] %.sroa.22.0.insert.ext.i.i42.i.i = zext i64 %.sroa.3.0.i23.i.i.i to i128 - %339 = xor i128 %.sroa.22.0.insert.ext.i.i42.i.i, -1 - %.sroa.2.0.extract.shift.i.i.i73.i = shl i128 %339, 64 + %337 = xor i128 %.sroa.22.0.insert.ext.i.i42.i.i, -1 + %.sroa.2.0.extract.shift.i.i.i73.i = shl i128 %337, 64 %.sroa.24.0.insert.ext.i.i26.i.i.i = zext i64 %.sroa.22.0.copyload.i.i.i.i to i128 %.sroa.24.0.insert.shift.i.i27.i.i.i = shl nuw i128 %.sroa.24.0.insert.ext.i.i26.i.i.i, 64 %.sroa.03.0.insert.ext.i.i.i.i.i = zext i64 %.sroa.01.0.copyload.i.i.i.i to i128 %.sroa.03.0.insert.insert.i.i.i.i.i = or disjoint i128 %.sroa.24.0.insert.shift.i.i27.i.i.i, %.sroa.03.0.insert.ext.i.i.i.i.i %.sroa.01.0.insert.ext.i.i30.i.i.i = zext i64 %.sroa.0.0.i.i.i.i to i128 %.sroa.01.0.insert.insert.i.i31.i.i.i = or disjoint i128 %.sroa.2.0.extract.shift.i.i.i73.i, %.sroa.01.0.insert.ext.i.i30.i.i.i - %340 = and i128 %.sroa.01.0.insert.insert.i.i31.i.i.i, %.sroa.03.0.insert.insert.i.i.i.i.i - %.sroa.0.0.extract.trunc.i.i32.i.i.i = trunc i128 %340 to i64 - %.sroa.2.0.extract.shift.i.i33.i.i.i = lshr i128 %340, 64 + %338 = and i128 %.sroa.01.0.insert.insert.i.i31.i.i.i, %.sroa.03.0.insert.insert.i.i.i.i.i + %.sroa.0.0.extract.trunc.i.i32.i.i.i = trunc i128 %338 to i64 + %.sroa.2.0.extract.shift.i.i33.i.i.i = lshr i128 %338, 64 %.sroa.2.0.extract.trunc.i.i.i43.i.i = trunc nuw i128 %.sroa.2.0.extract.shift.i.i33.i.i.i to i64 br label %_ZN4absl19str_format_internal12_GLOBAL__N_112FormatARoundINS_7uint128EEEvbRKNS1_11FormatStateEPhPT_Pi.exit.i.i @@ -840,41 +840,41 @@ _ZN4absl19str_format_internal12_GLOBAL__N_112FormatARoundINS_7uint128EEEvbRKNS1_ %.sroa.16.4.i.i = phi i64 [ %.sroa.2.0.extract.trunc.i.i.i43.i.i, %_ZN4absl19str_format_internal12_GLOBAL__N_123MaskUpToNibbleExclusiveINS_7uint128EEET_m.exit.i.i.i ], [ %.sink59.off64, %_ZN4absl19str_format_internal12_GLOBAL__N_116FormatANormalizeINS_7uint128EEEvNS1_18HexFloatTypeParamsEPhPT_Pi.exit.i.i ] %.sroa.082.4.i.i = phi i64 [ %.sroa.0.0.extract.trunc.i.i32.i.i.i, %_ZN4absl19str_format_internal12_GLOBAL__N_123MaskUpToNibbleExclusiveINS_7uint128EEET_m.exit.i.i.i ], [ %.sink59.off0, %_ZN4absl19str_format_internal12_GLOBAL__N_116FormatANormalizeINS_7uint128EEEvNS1_18HexFloatTypeParamsEPhPT_Pi.exit.i.i ] call void @llvm.lifetime.start.p0(i64 20, ptr nonnull %4) #19 - %341 = select i1 %277, i64 0, i64 16 - %342 = getelementptr inbounds nuw i8, ptr @.str.27, i64 %341 - %343 = getelementptr inbounds nuw i8, ptr %4, i64 1 + %339 = select i1 %277, i64 0, i64 16 + %340 = getelementptr inbounds nuw i8, ptr @.str.27, i64 %339 + %341 = getelementptr inbounds nuw i8, ptr %4, i64 1 store i8 48, ptr %4, align 16, !tbaa !12 - %344 = select i1 %277, i8 88, i8 120 - %345 = getelementptr inbounds nuw i8, ptr %4, i64 2 - store i8 %344, ptr %343, align 1, !tbaa !12 - %346 = zext nneg i8 %.3103.i.i to i64 - %347 = getelementptr inbounds nuw i8, ptr %342, i64 %346 - %348 = load i8, ptr %347, align 1, !tbaa !12 - %349 = getelementptr inbounds nuw i8, ptr %4, i64 3 - store i8 %348, ptr %345, align 2, !tbaa !12 + %342 = select i1 %277, i8 88, i8 120 + %343 = getelementptr inbounds nuw i8, ptr %4, i64 2 + store i8 %342, ptr %341, align 1, !tbaa !12 + %344 = zext nneg i8 %.3103.i.i to i64 + %345 = getelementptr inbounds nuw i8, ptr %340, i64 %344 + %346 = load i8, ptr %345, align 1, !tbaa !12 + %347 = getelementptr inbounds nuw i8, ptr %4, i64 3 + store i8 %346, ptr %343, align 2, !tbaa !12 %.not.i74.i = icmp eq i32 %narrow.i, 0 %or.cond.i.i = select i1 %282, i1 true, i1 %.not.i74.i - br i1 %or.cond.i.i, label %350, label %357 + br i1 %or.cond.i.i, label %348, label %357 -350: ; preds = %_ZN4absl19str_format_internal12_GLOBAL__N_112FormatARoundINS_7uint128EEEvbRKNS1_11FormatStateEPhPT_Pi.exit.i.i +348: ; preds = %_ZN4absl19str_format_internal12_GLOBAL__N_112FormatARoundINS_7uint128EEEvbRKNS1_11FormatStateEPhPT_Pi.exit.i.i %351 = or i64 %.sroa.082.4.i.i, %.sroa.16.4.i.i %352 = icmp ne i64 %351, 0 %or.cond127.not.i.i = select i1 %282, i1 %352, i1 false br i1 %or.cond127.not.i.i, label %357, label %353 -353: ; preds = %350 +353:; preds = %348 %354 = getelementptr inbounds nuw i8, ptr %1, i64 1 %355 = load i8, ptr %354, align 1, !tbaa !4 %356 = and i8 %355, 8 %.not105.i.i = icmp eq i8 %356, 0 br i1 %.not105.i.i, label %359, label %357 -357: ; preds = %353, %350, %_ZN4absl19str_format_internal12_GLOBAL__N_112FormatARoundINS_7uint128EEEvbRKNS1_11FormatStateEPhPT_Pi.exit.i.i +357: ; preds = %353, %350, %_ZN4absl19str_format_internal12_GLOBAL__N_112FormatARoundINS_7uint128EEEvbRKNS1_11FormatStateEPhPT_Pi.exit.i.i %358 = getelementptr inbounds nuw i8, ptr %4, i64 4 store i8 46, ptr %349, align 1, !tbaa !12 - br label %359 + br label %354 -359: ; preds = %357, %353 +354: ; preds = %357, %353 %.0.i75.i = phi ptr [ %358, %357 ], [ %349, %353 ] %.sroa.2.0.insert.ext.i.i53109.i.i = zext i64 %.sroa.16.4.i.i to i128 %.sroa.2.0.insert.shift.i.i54110.i.i = shl nuw i128 %.sroa.2.0.insert.ext.i.i53109.i.i, 64 @@ -884,70 +884,70 @@ _ZN4absl19str_format_internal12_GLOBAL__N_112FormatARoundINS_7uint128EEEvbRKNS1_ br i1 %.not106113.i.i, label %_ZN4absl19str_format_internal12_GLOBAL__N_17FormatAINS_7uint128EEEvNS1_18HexFloatTypeParamsET_ibRKNS1_11FormatStateE.exit.i, label %.lr.ph.i.i .lr.ph.i.i: ; preds = %359, %.lr.ph.i.i - %.sroa.0.0.insert.insert.i.i56117.i.i = phi i128 [ %364, %.lr.ph.i.i ], [ %.sroa.0.0.insert.insert.i.i56112.i.i, %359 ] - %.1116.i.i = phi ptr [ %363, %.lr.ph.i.i ], [ %.0.i75.i, %359 ] - %.034115.i.i = phi i64 [ %365, %.lr.ph.i.i ], [ 0, %359 ] + %.sroa.0.0.insert.insert.i.i56117.i.i = phi i128 [ %361, %.lr.ph.i.i ], [ %.sroa.0.0.insert.insert.i.i56112.i.i, %359 ] + %.1116.i.i = phi ptr [ %360, %.lr.ph.i.i ], [ %.0.i75.i, %359 ] + %.034115.i.i = phi i64 [ %362, %.lr.ph.i.i ], [ 0, %359 ] %.sroa.16.0114.i.i = phi i64 [ %.sroa.2.0.extract.trunc.i.i.i76.i, %.lr.ph.i.i ], [ %.sroa.16.4.i.i, %359 ] - %360 = lshr i64 %.sroa.16.0114.i.i, 60 - %361 = getelementptr inbounds nuw i8, ptr %342, i64 %360 - %362 = load i8, ptr %361, align 1, !tbaa !12 - %363 = getelementptr inbounds nuw i8, ptr %.1116.i.i, i64 1 - store i8 %362, ptr %.1116.i.i, align 1, !tbaa !12 - %364 = shl i128 %.sroa.0.0.insert.insert.i.i56117.i.i, 4 - %.sroa.2.0.extract.shift.i.i69.i.i = lshr i128 %364, 64 + %357 = lshr i64 %.sroa.16.0114.i.i, 60 + %358 = getelementptr inbounds nuw i8, ptr %340, i64 %357 + %359 = load i8, ptr %358, align 1, !tbaa !12 + %360 = getelementptr inbounds nuw i8, ptr %.1116.i.i, i64 1 + store i8 %359, ptr %.1116.i.i, align 1, !tbaa !12 + %361 = shl i128 %.sroa.0.0.insert.insert.i.i56117.i.i, 4 + %.sroa.2.0.extract.shift.i.i69.i.i = lshr i128 %361, 64 %.sroa.2.0.extract.trunc.i.i.i76.i = trunc nuw i128 %.sroa.2.0.extract.shift.i.i69.i.i to i64 - %365 = add nuw nsw i64 %.034115.i.i, 1 - %.not106.i.i = icmp eq i128 %364, 0 + %362 = add nuw nsw i64 %.034115.i.i, 1 + %.not106.i.i = icmp eq i128 %361, 0 br i1 %.not106.i.i, label %_ZN4absl19str_format_internal12_GLOBAL__N_17FormatAINS_7uint128EEEvNS1_18HexFloatTypeParamsET_ibRKNS1_11FormatStateE.exit.i, label %.lr.ph.i.i, !llvm.loop !45 _ZN4absl19str_format_internal12_GLOBAL__N_17FormatAINS_7uint128EEEvNS1_18HexFloatTypeParamsET_ibRKNS1_11FormatStateE.exit.i: ; preds = %.lr.ph.i.i, %359 - %.034.lcssa.i.i = phi i64 [ 0, %359 ], [ %365, %.lr.ph.i.i ] - %.1.lcssa.i.i = phi ptr [ %.0.i75.i, %359 ], [ %363, %.lr.ph.i.i ] - %366 = sub i64 %spec.select.i, %.034.lcssa.i.i - %.035.i.i = select i1 %282, i64 0, i64 %366 - %367 = ptrtoint ptr %.1.lcssa.i.i to i64 - %368 = ptrtoint ptr %4 to i64 - %369 = sub i64 %367, %368 + %.034.lcssa.i.i = phi i64 [ 0, %359 ], [ %362, %.lr.ph.i.i ] + %.1.lcssa.i.i = phi ptr [ %.0.i75.i, %359 ], [ %360, %.lr.ph.i.i ] + %363 = sub i64 %spec.select.i, %.034.lcssa.i.i + %.035.i.i = select i1 %282, i64 0, i64 %363 + %364 = ptrtoint ptr %.1.lcssa.i.i to i64 + %365 = ptrtoint ptr %4 to i64 + %366 = sub i64 %364, %365 call void @llvm.lifetime.start.p0(i64 34, ptr nonnull %5) #19 - %370 = select i1 %277, i8 80, i8 112 - store i8 %370, ptr %5, align 16, !tbaa !12 - %371 = icmp sgt i32 %.5.i.i, -1 - %372 = select i1 %371, i8 43, i8 45 - %373 = getelementptr inbounds nuw i8, ptr %5, i64 1 - store i8 %372, ptr %373, align 1, !tbaa !12 - %374 = call i32 @llvm.abs.i32(i32 %.5.i.i, i1 true) - %375 = getelementptr inbounds nuw i8, ptr %5, i64 2 - %376 = call noundef ptr @_ZN4absl16numbers_internal15FastIntToBufferEiPc(i32 noundef %374, ptr noundef nonnull %375) - %377 = call noundef i64 @strlen(ptr noundef nonnull dereferenceable(1) %5) #19 - call fastcc void @_ZN4absl19str_format_internal12_GLOBAL__N_110FinalPrintERKNS1_11FormatStateESt17basic_string_viewIcSt11char_traitsIcEEmmS8_(ptr noundef nonnull readonly align 8 dereferenceable(32) %12, i64 %369, ptr nonnull %4, i64 noundef 2, i64 noundef %.035.i.i, i64 %377, ptr nonnull %5) + %367 = select i1 %277, i8 80, i8 112 + store i8 %367, ptr %5, align 16, !tbaa !12 + %368 = icmp sgt i32 %.5.i.i, -1 + %369 = select i1 %368, i8 43, i8 45 + %370 = getelementptr inbounds nuw i8, ptr %5, i64 1 + store i8 %369, ptr %370, align 1, !tbaa !12 + %371 = call i32 @llvm.abs.i32(i32 %.5.i.i, i1 true) + %372 = getelementptr inbounds nuw i8, ptr %5, i64 2 + %373 = call noundef ptr @_ZN4absl16numbers_internal15FastIntToBufferEiPc(i32 noundef %371, ptr noundef nonnull %372) + %374 = call noundef i64 @strlen(ptr noundef nonnull dereferenceable(1) %5) #19 + call fastcc void @_ZN4absl19str_format_internal12_GLOBAL__N_110FinalPrintERKNS1_11FormatStateESt17basic_string_viewIcSt11char_traitsIcEEmmS8_(ptr noundef nonnull readonly align 8 dereferenceable(32) %12, i64 %366, ptr nonnull %4, i64 noundef 2, i64 noundef %.035.i.i, i64 %374, ptr nonnull %5) call void @llvm.lifetime.end.p0(i64 34, ptr nonnull %5) #19 call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %4) #19 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #19 - br label %388 - -378: ; preds = %_ZN4absl19str_format_internal12_GLOBAL__N_113PrintExponentEicPNS1_6BufferE.exit, %.loopexit.i, %_ZN4absl19str_format_internal12_GLOBAL__N_113PrintExponentEicPNS1_6BufferE.exit.i - %379 = getelementptr inbounds nuw i8, ptr %10, i64 88 - %380 = load ptr, ptr %379, align 8, !tbaa !40 - %381 = getelementptr inbounds nuw i8, ptr %10, i64 96 - %382 = load ptr, ptr %381, align 8, !tbaa !37 - %383 = ptrtoint ptr %382 to i64 - %384 = ptrtoint ptr %380 to i64 - %385 = sub i64 %383, %384 - %386 = getelementptr inbounds nuw i8, ptr %1, i64 1 - %.val64.i = load i8, ptr %386, align 1 - %387 = getelementptr inbounds nuw i8, ptr %1, i64 4 - %.val65.i = load i32, ptr %387, align 4, !tbaa !14 - call fastcc void @_ZN4absl19str_format_internal12_GLOBAL__N_117WriteBufferToSinkEcSt17basic_string_viewIcSt11char_traitsIcEERKNS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE(i8 noundef signext %.05592.i, i64 %385, ptr %380, i8 %.val64.i, i32 %.val65.i, ptr noundef %2) - br label %388 - -388: ; preds = %378, %_ZN4absl19str_format_internal12_GLOBAL__N_17FormatAINS_7uint128EEEvNS1_18HexFloatTypeParamsET_ibRKNS1_11FormatStateE.exit.i, %201, %153, %_ZN4absl19str_format_internal12_GLOBAL__N_17FormatFINS_7uint128EEEvT_iRKNS1_11FormatStateE.exit.i, %50 + br label %385 + +375: ; preds = %_ZN4absl19str_format_internal12_GLOBAL__N_113PrintExponentEicPNS1_6BufferE.exit, %.loopexit.i, %_ZN4absl19str_format_internal12_GLOBAL__N_113PrintExponentEicPNS1_6BufferE.exit.i + %376 = getelementptr inbounds nuw i8, ptr %10, i64 88 + %377 = load ptr, ptr %376, align 8, !tbaa !40 + %378 = getelementptr inbounds nuw i8, ptr %10, i64 96 + %379 = load ptr, ptr %378, align 8, !tbaa !37 + %380 = ptrtoint ptr %379 to i64 + %381 = ptrtoint ptr %377 to i64 + %382 = sub i64 %380, %381 + %383 = getelementptr inbounds nuw i8, ptr %1, i64 1 + %.val64.i = load i8, ptr %383, align 1 + %384 = getelementptr inbounds nuw i8, ptr %1, i64 4 + %.val65.i = load i32, ptr %384, align 4, !tbaa !14 + call fastcc void @_ZN4absl19str_format_internal12_GLOBAL__N_117WriteBufferToSinkEcSt17basic_string_viewIcSt11char_traitsIcEERKNS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE(i8 noundef signext %.05592.i, i64 %382, ptr %377, i8 %.val64.i, i32 %.val65.i, ptr noundef %2) + br label %385 + +385: ; preds = %375, %_ZN4absl19str_format_internal12_GLOBAL__N_17FormatAINS_7uint128EEEvNS1_18HexFloatTypeParamsET_ibRKNS1_11FormatStateE.exit.i, %201, %153, %_ZN4absl19str_format_internal12_GLOBAL__N_17FormatFINS_7uint128EEEvT_iRKNS1_11FormatStateE.exit.i, %50 %.1.i = phi i1 [ true, %_ZN4absl19str_format_internal12_GLOBAL__N_17FormatFINS_7uint128EEEvT_iRKNS1_11FormatStateE.exit.i ], [ true, %378 ], [ %154, %153 ], [ %202, %201 ], [ true, %_ZN4absl19str_format_internal12_GLOBAL__N_17FormatAINS_7uint128EEEvNS1_18HexFloatTypeParamsET_ibRKNS1_11FormatStateE.exit.i ], [ false, %50 ] call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %10) #19 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #19 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #19 br label %_ZN4absl19str_format_internal12_GLOBAL__N_111FloatToSinkIeEEbT_RKNS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE.exit -_ZN4absl19str_format_internal12_GLOBAL__N_111FloatToSinkIeEEbT_RKNS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE.exit: ; preds = %_ZN4absl19str_format_internal12_GLOBAL__N_123ConvertNonNumericFloatsIeEEbcT_RKNS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE.exit.i, %388 +_ZN4absl19str_format_internal12_GLOBAL__N_111FloatToSinkIeEEbT_RKNS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE.exit: ; preds = %_ZN4absl19str_format_internal12_GLOBAL__N_123ConvertNonNumericFloatsIeEEbcT_RKNS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE.exit.i, %385 %.0.i = phi i1 [ %.1.i, %388 ], [ true, %_ZN4absl19str_format_internal12_GLOBAL__N_123ConvertNonNumericFloatsIeEEbcT_RKNS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE.exit.i ] ret i1 %.0.i } diff --git a/bench/abseil-cpp/optimized/gtest-all.ll b/bench/abseil-cpp/optimized/gtest-all.ll index 8e3fadfa340..d5aae231f25 100644 --- a/bench/abseil-cpp/optimized/gtest-all.ll +++ b/bench/abseil-cpp/optimized/gtest-all.ll @@ -24981,50 +24981,50 @@ define dso_local void @_ZN7testing8internal7PrintToEoPSo(i64 noundef %0, i64 nou %4 = alloca [40 x i8], align 16 %5 = or i64 %1, %0 %6 = icmp eq i64 %5, 0 - br i1 %6, label %7, label %.lr.ph.preheader + br i1 %6, label %7, label %8 -7: ; preds = %3 - %8 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull @.str.76, i64 noundef 1) - br label %28 +6: ; preds = %3 + %7 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull @.str.76, i64 noundef 1) + br label %29 -.lr.ph.preheader: ; preds = %3 +8: ; preds = %3 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %4) #59 %9 = getelementptr inbounds nuw i8, ptr %4, i64 39 store i8 0, ptr %9, align 1, !tbaa !28 br label %.lr.ph -.lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph - %.024 = phi ptr [ %22, %.lr.ph ], [ %9, %.lr.ph.preheader ] - %.01823 = phi i64 [ %11, %.lr.ph ], [ %1, %.lr.ph.preheader ] - %.01922 = phi i64 [ %19, %.lr.ph ], [ %0, %.lr.ph.preheader ] - %10 = urem i64 %.01823, 10 - %11 = udiv i64 %.01823, 10 - %12 = mul nuw nsw i64 %10, 6 - %13 = urem i64 %.01922, 10 - %14 = add nuw nsw i64 %12, %13 - %15 = udiv i64 %.01922, 10 - %16 = mul nuw i64 %10, 1844674407370955161 - %17 = add nuw i64 %16, %15 - %.lhs.trunc = trunc nuw nsw i64 %14 to i8 - %18 = udiv i8 %.lhs.trunc, 10 - %.zext = zext nneg i8 %18 to i64 - %19 = add i64 %17, %.zext - %20 = urem i8 %.lhs.trunc, 10 - %21 = or disjoint i8 %20, 48 - %22 = getelementptr inbounds i8, ptr %.024, i64 -1 - store i8 %21, ptr %22, align 1, !tbaa !28 - %23 = icmp ugt i64 %.01823, 9 - %24 = icmp ne i64 %19, 0 - %25 = select i1 %23, i1 true, i1 %24 - br i1 %25, label %.lr.ph, label %._crit_edge, !llvm.loop !516 +.lr.ph: ; preds = %8, %.lr.ph + %.024 = phi ptr [ %23, %.lr.ph ], [ %9, %.lr.ph.preheader ] + %.01823 = phi i64 [ %12, %.lr.ph ], [ %1, %.lr.ph.preheader ] + %.01922 = phi i64 [ %20, %.lr.ph ], [ %0, %.lr.ph.preheader ] + %11 = urem i64 %.01823, 10 + %12 = udiv i64 %.01823, 10 + %13 = mul nuw nsw i64 %11, 6 + %14 = urem i64 %.01922, 10 + %15 = add nuw nsw i64 %13, %14 + %16 = udiv i64 %.01922, 10 + %17 = mul nuw i64 %11, 1844674407370955161 + %18 = add nuw i64 %17, %16 + %.lhs.trunc = trunc nuw nsw i64 %15 to i8 + %19 = udiv i8 %.lhs.trunc, 10 + %.zext = zext nneg i8 %19 to i64 + %20 = add i64 %18, %.zext + %21 = urem i8 %.lhs.trunc, 10 + %22 = or disjoint i8 %21, 48 + %23 = getelementptr inbounds i8, ptr %.024, i64 -1 + store i8 %22, ptr %23, align 1, !tbaa !28 + %24 = icmp ugt i64 %.01823, 9 + %25 = icmp ne i64 %20, 0 + %26 = select i1 %24, i1 true, i1 %25 + br i1 %26, label %.lr.ph, label %._crit_edge, !llvm.loop !516 ._crit_edge: ; preds = %.lr.ph - %26 = call noundef i64 @strlen(ptr noundef nonnull dereferenceable(1) %22) #59 + %26 = call noundef i64 @strlen(ptr noundef nonnull dereferenceable(1) %23) #59 %27 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull %22, i64 noundef %26) call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4) #59 - br label %28 + br label %29 -28: ; preds = %._crit_edge, %7 +29: ; preds = %._crit_edge, %6 ret void } @@ -25053,28 +25053,28 @@ define dso_local void @_ZN7testing8internal7PrintToEnPSo(i64 noundef %0, i64 nou %11 = icmp eq i64 %10, 0 br i1 %11, label %12, label %.lr.ph.preheader.i -12: ; preds = %9 - %13 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull @.str.76, i64 noundef 1) +11: ; preds = %9 + %12 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull @.str.76, i64 noundef 1) br label %_ZN7testing8internal7PrintToEoPSo.exit -.lr.ph.preheader.i: ; preds = %9 +13: ; preds = %9 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %4) #59 %14 = getelementptr inbounds nuw i8, ptr %4, i64 39 store i8 0, ptr %14, align 1, !tbaa !28 br label %.lr.ph.i -.lr.ph.i: ; preds = %.lr.ph.i, %.lr.ph.preheader.i +.lr.ph.i: ; preds = %.lr.ph.i, %13 %.024.i = phi ptr [ %27, %.lr.ph.i ], [ %14, %.lr.ph.preheader.i ] %.01823.i = phi i64 [ %16, %.lr.ph.i ], [ %.0.off64, %.lr.ph.preheader.i ] - %.01922.i = phi i64 [ %24, %.lr.ph.i ], [ %.0.off0, %.lr.ph.preheader.i ] + %.024.i = phi i64 [ %24, %.lr.ph.i ], [ %.0.off0, %.lr.ph.preheader.i ] %15 = urem i64 %.01823.i, 10 %16 = udiv i64 %.01823.i, 10 %17 = mul nuw nsw i64 %15, 6 %18 = urem i64 %.01922.i, 10 - %19 = add nuw nsw i64 %17, %18 - %20 = udiv i64 %.01922.i, 10 + %19 = add nuw nsw i64 %16, %18 + %21 = udiv i64 %.01922.i, 10 %21 = mul nuw i64 %15, 1844674407370955161 - %22 = add nuw i64 %21, %20 + %22 = add nuw i64 %22, %20 %.lhs.trunc.i = trunc nuw nsw i64 %19 to i8 %23 = udiv i8 %.lhs.trunc.i, 10 %.zext.i = zext nneg i8 %23 to i64 @@ -25088,13 +25088,13 @@ define dso_local void @_ZN7testing8internal7PrintToEnPSo(i64 noundef %0, i64 nou %30 = select i1 %28, i1 true, i1 %29 br i1 %30, label %.lr.ph.i, label %._crit_edge.i, !llvm.loop !516 -._crit_edge.i: ; preds = %.lr.ph.i +._crit_edge.i:; preds = %.lr.ph.i %31 = call noundef i64 @strlen(ptr noundef nonnull dereferenceable(1) %27) #59 %32 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull %27, i64 noundef %31) call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4) #59 br label %_ZN7testing8internal7PrintToEoPSo.exit -_ZN7testing8internal7PrintToEoPSo.exit: ; preds = %12, %._crit_edge.i +_ZN7testing8internal7PrintToEoPSo.exit: ; preds = %11, %._crit_edge.i ret void } diff --git a/bench/abseil-cpp/optimized/int128.ll b/bench/abseil-cpp/optimized/int128.ll index 35379381451..b838f464be3 100644 --- a/bench/abseil-cpp/optimized/int128.ll +++ b/bench/abseil-cpp/optimized/int128.ll @@ -639,12 +639,12 @@ _ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i: ; preds = %.noexc27._ZNKSt 43: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEmc.exit %44 = landingpad { ptr, i32 } cleanup - br label %108 + br label %107 -45: ; preds = %.invoke, %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit55.invoke, %.noexc53, %89, %74, %.noexc39, %65, %.noexc27, %37 +45: ; preds = %.invoke, %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit55.invoke, %.noexc53, %88, %73, %.noexc39, %64, %.noexc27, %37 %46 = landingpad { ptr, i32 } cleanup - br label %108 + br label %107 47: ; preds = %20 %48 = and i32 %10, 586 @@ -662,170 +662,170 @@ _ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i: ; preds = %.noexc27._ZNKSt %56 = trunc nuw i8 %55 to i1 br i1 %56, label %._crit_edge.i35, label %57 -._crit_edge.i35: ; preds = %51 +49: ; preds = %51 %.phi.trans.insert.i36 = getelementptr inbounds nuw i8, ptr %53, i64 224 %.pre.i37 = load i8, ptr %.phi.trans.insert.i36, align 8, !tbaa !42 br label %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit41 -57: ; preds = %51 - %58 = getelementptr inbounds nuw i8, ptr %53, i64 240 - %59 = load ptr, ptr %58, align 8, !tbaa !35 - %.not.i.i.i30 = icmp eq ptr %59, null +56: ; preds = %51 + %57 = getelementptr inbounds nuw i8, ptr %53, i64 240 + %58 = load ptr, ptr %57, align 8, !tbaa !35 + %.not.i.i.i30 = icmp eq ptr %58, null br i1 %.not.i.i.i30, label %.invoke, label %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i31 -_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i31: ; preds = %57 - %60 = getelementptr inbounds nuw i8, ptr %59, i64 56 - %61 = load i8, ptr %60, align 8, !tbaa !36 - %.not.i1.i.i32 = icmp eq i8 %61, 0 - br i1 %.not.i1.i.i32, label %65, label %62 +_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i31: ; preds = %56 + %59 = getelementptr inbounds nuw i8, ptr %58, i64 56 + %60 = load i8, ptr %59, align 8, !tbaa !36 + %.not.i1.i.i32 = icmp eq i8 %60, 0 + br i1 %.not.i1.i.i32, label %64, label %61 -62: ; preds = %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i31 - %63 = getelementptr inbounds nuw i8, ptr %59, i64 89 - %64 = load i8, ptr %63, align 1, !tbaa !56 +61: ; preds = %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i31 + %62 = getelementptr inbounds nuw i8, ptr %58, i64 89 + %63 = load i8, ptr %62, align 1, !tbaa !56 br label %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i33 -65: ; preds = %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i31 - invoke void @_ZNKSt5ctypeIcE13_M_widen_initEv(ptr noundef nonnull align 8 dereferenceable(570) %59) +64: ; preds = %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i31 + invoke void @_ZNKSt5ctypeIcE13_M_widen_initEv(ptr noundef nonnull align 8 dereferenceable(570) %58) to label %.noexc39 unwind label %45 -.noexc39: ; preds = %65 - %66 = load ptr, ptr %59, align 8, !tbaa !10 - %67 = getelementptr inbounds nuw i8, ptr %66, i64 48 - %68 = load ptr, ptr %67, align 8 - %69 = invoke noundef signext i8 %68(ptr noundef nonnull align 8 dereferenceable(570) %59, i8 noundef signext 32) +.noexc39: ; preds = %64 + %65 = load ptr, ptr %58, align 8, !tbaa !10 + %66 = getelementptr inbounds nuw i8, ptr %65, i64 48 + %67 = load ptr, ptr %66, align 8 + %68 = invoke noundef signext i8 %68(ptr noundef nonnull align 8 dereferenceable(570) %58, i8 noundef signext 32) to label %.noexc39._ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i33_crit_edge unwind label %45 .noexc39._ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i33_crit_edge: ; preds = %.noexc39 %.pre.pre = load i64, ptr %17, align 8, !tbaa !54 br label %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i33 -_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i33: ; preds = %.noexc39._ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i33_crit_edge, %62 +_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i33: ; preds = %.noexc39._ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i33_crit_edge, %61 %.pre = phi i64 [ %18, %62 ], [ %.pre.pre, %.noexc39._ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i33_crit_edge ] - %.0.i.i.i34 = phi i8 [ %64, %62 ], [ %69, %.noexc39._ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i33_crit_edge ] - %70 = getelementptr inbounds nuw i8, ptr %53, i64 224 - store i8 %.0.i.i.i34, ptr %70, align 8, !tbaa !42 + %.0.i.i.i34 = phi i8 [ %63, %62 ], [ %68, %.noexc39._ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i33_crit_edge ] + %69 = getelementptr inbounds nuw i8, ptr %53, i64 224 + store i8 %.0.i.i.i34, ptr %69, align 8, !tbaa !42 store i8 1, ptr %54, align 1, !tbaa !25 br label %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit41 _ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit41: ; preds = %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i33, %._crit_edge.i35 - %71 = phi i64 [ %18, %._crit_edge.i35 ], [ %.pre, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i33 ] - %72 = phi i8 [ %.pre.i37, %._crit_edge.i35 ], [ %.0.i.i.i34, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i33 ] - %73 = icmp ult i64 %71, 2 - br i1 %73, label %74, label %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit55.invoke + %70 = phi i64 [ %18, %._crit_edge.i35 ], [ %.pre, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i33 ] + %71 = phi i8 [ %.pre.i37, %._crit_edge.i35 ], [ %.0.i.i.i34, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i33 ] + %72 = icmp ult i64 %70, 2 + br i1 %72, label %73, label %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit55.invoke -74: ; preds = %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit41 - invoke void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.5, i64 noundef 2, i64 noundef %71) #13 +73: ; preds = %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit41 + invoke void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.5, i64 noundef 2, i64 noundef %70) #13 to label %.noexc42 unwind label %45 -.noexc42: ; preds = %74 +.noexc42: ; preds = %73 unreachable -75: ; preds = %20, %47 - %76 = load i64, ptr %12, align 8 - %77 = getelementptr inbounds i8, ptr %0, i64 %76 - %78 = getelementptr inbounds nuw i8, ptr %77, i64 225 - %79 = load i8, ptr %78, align 1, !tbaa !25, !range !33, !noundef !34 - %80 = trunc nuw i8 %79 to i1 - br i1 %80, label %._crit_edge.i49, label %81 +74: ; preds = %20, %47 + %75 = load i64, ptr %12, align 8 + %76 = getelementptr inbounds i8, ptr %0, i64 %75 + %77 = getelementptr inbounds nuw i8, ptr %76, i64 225 + %78 = load i8, ptr %77, align 1, !tbaa !25, !range !33, !noundef !34 + %79 = trunc nuw i8 %78 to i1 + br i1 %79, label %._crit_edge.i49, label %80 -._crit_edge.i49: ; preds = %75 - %.phi.trans.insert.i50 = getelementptr inbounds nuw i8, ptr %77, i64 224 +._crit_edge.i49: ; preds = %74 + %.phi.trans.insert.i50 = getelementptr inbounds nuw i8, ptr %76, i64 224 %.pre.i51 = load i8, ptr %.phi.trans.insert.i50, align 8, !tbaa !42 br label %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit55.invoke -81: ; preds = %75 - %82 = getelementptr inbounds nuw i8, ptr %77, i64 240 - %83 = load ptr, ptr %82, align 8, !tbaa !35 - %.not.i.i.i44 = icmp eq ptr %83, null +80: ; preds = %74 + %81 = getelementptr inbounds nuw i8, ptr %76, i64 240 + %82 = load ptr, ptr %81, align 8, !tbaa !35 + %.not.i.i.i44 = icmp eq ptr %82, null br i1 %.not.i.i.i44, label %.invoke, label %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i45 -.invoke: ; preds = %29, %81, %57 +.invoke: ; preds = %29, %80, %56 invoke void @_ZSt16__throw_bad_castv() #13 to label %.cont unwind label %45 .cont: ; preds = %.invoke unreachable -_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i45: ; preds = %81 - %84 = getelementptr inbounds nuw i8, ptr %83, i64 56 - %85 = load i8, ptr %84, align 8, !tbaa !36 - %.not.i1.i.i46 = icmp eq i8 %85, 0 - br i1 %.not.i1.i.i46, label %89, label %86 +_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i45: ; preds = %80 + %83 = getelementptr inbounds nuw i8, ptr %82, i64 56 + %84 = load i8, ptr %83, align 8, !tbaa !36 + %.not.i1.i.i46 = icmp eq i8 %84, 0 + br i1 %.not.i1.i.i46, label %88, label %85 -86: ; preds = %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i45 - %87 = getelementptr inbounds nuw i8, ptr %83, i64 89 - %88 = load i8, ptr %87, align 1, !tbaa !56 +85: ; preds = %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i45 + %86 = getelementptr inbounds nuw i8, ptr %82, i64 89 + %87 = load i8, ptr %86, align 1, !tbaa !56 br label %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i47 -89: ; preds = %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i45 - invoke void @_ZNKSt5ctypeIcE13_M_widen_initEv(ptr noundef nonnull align 8 dereferenceable(570) %83) +88: ; preds = %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i45 + invoke void @_ZNKSt5ctypeIcE13_M_widen_initEv(ptr noundef nonnull align 8 dereferenceable(570) %82) to label %.noexc53 unwind label %45 -.noexc53: ; preds = %89 - %90 = load ptr, ptr %83, align 8, !tbaa !10 - %91 = getelementptr inbounds nuw i8, ptr %90, i64 48 - %92 = load ptr, ptr %91, align 8 - %93 = invoke noundef signext i8 %92(ptr noundef nonnull align 8 dereferenceable(570) %83, i8 noundef signext 32) +.noexc53: ; preds = %88 + %89 = load ptr, ptr %82, align 8, !tbaa !10 + %90 = getelementptr inbounds nuw i8, ptr %89, i64 48 + %91 = load ptr, ptr %90, align 8 + %92 = invoke noundef signext i8 %92(ptr noundef nonnull align 8 dereferenceable(570) %82, i8 noundef signext 32) to label %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i47 unwind label %45 -_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i47: ; preds = %.noexc53, %86 - %.0.i.i.i48 = phi i8 [ %88, %86 ], [ %93, %.noexc53 ] - %94 = getelementptr inbounds nuw i8, ptr %77, i64 224 - store i8 %.0.i.i.i48, ptr %94, align 8, !tbaa !42 - store i8 1, ptr %78, align 1, !tbaa !25 +_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i47: ; preds = %.noexc53, %85 + %.0.i.i.i48 = phi i8 [ %87, %86 ], [ %92, %.noexc53 ] + %93 = getelementptr inbounds nuw i8, ptr %76, i64 224 + store i8 %.0.i.i.i48, ptr %93, align 8, !tbaa !42 + store i8 1, ptr %77, align 1, !tbaa !25 br label %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit55.invoke _ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit55.invoke: ; preds = %._crit_edge.i, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i, %._crit_edge.i49, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i47, %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit41 - %95 = phi i64 [ 2, %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit41 ], [ 0, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i47 ], [ 0, %._crit_edge.i49 ], [ %18, %._crit_edge.i ], [ %.pre64, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i ] - %96 = phi i8 [ %72, %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit41 ], [ %.0.i.i.i48, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i47 ], [ %.pre.i51, %._crit_edge.i49 ], [ %.pre.i, %._crit_edge.i ], [ %.0.i.i.i, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i ] - %97 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE14_M_replace_auxEmmmc(ptr noundef nonnull align 8 dereferenceable(32) %4, i64 noundef %95, i64 noundef 0, i64 noundef %21, i8 noundef signext %96) + %94 = phi i64 [ 2, %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit41 ], [ 0, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i47 ], [ 0, %._crit_edge.i49 ], [ %18, %._crit_edge.i ], [ %.pre64, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i ] + %95 = phi i8 [ %71, %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit41 ], [ %.0.i.i.i48, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i47 ], [ %.pre.i51, %._crit_edge.i49 ], [ %.pre.i, %._crit_edge.i ], [ %.0.i.i.i, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i ] + %96 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE14_M_replace_auxEmmmc(ptr noundef nonnull align 8 dereferenceable(32) %4, i64 noundef %94, i64 noundef 0, i64 noundef %21, i8 noundef signext %95) to label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEmc.exit unwind label %45 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEmc.exit: ; preds = %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit55.invoke, %3 - %98 = load ptr, ptr %4, align 8, !tbaa !60 - %99 = load i64, ptr %17, align 8, !tbaa !54 - %100 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %98, i64 noundef %99) + %97 = load ptr, ptr %4, align 8, !tbaa !60 + %98 = load i64, ptr %17, align 8, !tbaa !54 + %99 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %97, i64 noundef %98) to label %_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit unwind label %43 _ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEmc.exit - %101 = load ptr, ptr %4, align 8, !tbaa !60 - %102 = getelementptr inbounds nuw i8, ptr %4, i64 16 - %103 = icmp eq ptr %101, %102 - br i1 %103, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i + %100 = load ptr, ptr %4, align 8, !tbaa !60 + %101 = getelementptr inbounds nuw i8, ptr %4, i64 16 + %102 = icmp eq ptr %100, %101 + br i1 %102, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i: ; preds = %_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit - %104 = load i64, ptr %17, align 8, !tbaa !54 - %105 = icmp ult i64 %104, 16 - call void @llvm.assume(i1 %105) + %103 = load i64, ptr %17, align 8, !tbaa !54 + %104 = icmp ult i64 %103, 16 + call void @llvm.assume(i1 %104) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: ; preds = %_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit - %106 = load i64, ptr %102, align 8, !tbaa !56 - %107 = add i64 %106, 1 - call void @_ZdlPvm(ptr noundef %101, i64 noundef %107) #14 + %105 = load i64, ptr %101, align 8, !tbaa !56 + %106 = add i64 %105, 1 + call void @_ZdlPvm(ptr noundef %100, i64 noundef %106) #14 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #12 - ret ptr %100 + ret ptr %99 -108: ; preds = %45, %43 +107: ; preds = %45, %43 %.pn = phi { ptr, i32 } [ %44, %43 ], [ %46, %45 ] - %109 = load ptr, ptr %4, align 8, !tbaa !60 - %110 = getelementptr inbounds nuw i8, ptr %4, i64 16 - %111 = icmp eq ptr %109, %110 - br i1 %111, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i61, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i60 - -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i61: ; preds = %108 - %112 = load i64, ptr %17, align 8, !tbaa !54 - %113 = icmp ult i64 %112, 16 - call void @llvm.assume(i1 %113) + %108 = load ptr, ptr %4, align 8, !tbaa !60 + %109 = getelementptr inbounds nuw i8, ptr %4, i64 16 + %110 = icmp eq ptr %108, %109 + br i1 %110, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i61, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i60 + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i61: ; preds = %107 + %111 = load i64, ptr %17, align 8, !tbaa !54 + %112 = icmp ult i64 %111, 16 + call void @llvm.assume(i1 %112) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit62 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i60: ; preds = %108 - %114 = load i64, ptr %110, align 8, !tbaa !56 - %115 = add i64 %114, 1 - call void @_ZdlPvm(ptr noundef %109, i64 noundef %115) #14 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i60: ; preds = %107 + %113 = load i64, ptr %109, align 8, !tbaa !56 + %114 = add i64 %113, 1 + call void @_ZdlPvm(ptr noundef %108, i64 noundef %114) #14 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit62 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit62: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i61, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i60 @@ -1019,7 +1019,7 @@ define dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN4absllsERSoN 18: ; preds = %22, %16 %19 = landingpad { ptr, i32 } cleanup - br label %184 + br label %185 20: ; preds = %.thread %21 = and i32 %11, 2048 @@ -1151,17 +1151,17 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i50 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i50, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51, %61 %.pn = phi { ptr, i32 } [ %62, %61 ], [ %64, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51 ], [ %64, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i50 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #12 - br label %184 + br label %185 72: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEmc.exit %73 = landingpad { ptr, i32 } cleanup - br label %184 + br label %185 -74: ; preds = %.invoke, %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit97.invoke, %.noexc95, %166, %.noexc80, %146, %123, %.noexc66, %114, %.noexc54, %90, %132, %130 +74: ; preds = %.invoke, %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit97.invoke, %.noexc95, %167, %.noexc80, %147, %123, %.noexc66, %114, %.noexc54, %90, %131, %130 %75 = landingpad { ptr, i32 } cleanup - br label %184 + br label %185 76: ; preds = %58 %77 = load i64, ptr %51, align 8 @@ -1307,160 +1307,160 @@ _ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit68: ; preds = %_ZNKSt9basic_ios %131 = invoke noundef signext i8 @_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv(ptr noundef nonnull align 8 dereferenceable(264) %129) to label %132 unwind label %74 -132: ; preds = %130 - %133 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEmmc(ptr noundef nonnull align 8 dereferenceable(32) %4, i64 noundef 2, i64 noundef %59, i8 noundef signext %131) +131: ; preds = %130 + %132 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEmmc(ptr noundef nonnull align 8 dereferenceable(32) %4, i64 noundef 2, i64 noundef %59, i8 noundef signext %131) to label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEmc.exit unwind label %74 -134: ; preds = %124 +133: ; preds = %124 %135 = getelementptr inbounds nuw i8, ptr %129, i64 225 %136 = load i8, ptr %135, align 1, !tbaa !25, !range !33, !noundef !34 %137 = trunc nuw i8 %136 to i1 br i1 %137, label %._crit_edge.i76, label %138 -._crit_edge.i76: ; preds = %134 +._crit_edge.i76: ; preds = %133 %.phi.trans.insert.i77 = getelementptr inbounds nuw i8, ptr %129, i64 224 %.pre.i78 = load i8, ptr %.phi.trans.insert.i77, align 8, !tbaa !42 br label %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit97.invoke -138: ; preds = %134 - %139 = getelementptr inbounds nuw i8, ptr %129, i64 240 - %140 = load ptr, ptr %139, align 8, !tbaa !35 - %.not.i.i.i71 = icmp eq ptr %140, null +139: ; preds = %133 + %140 = getelementptr inbounds nuw i8, ptr %129, i64 240 + %141 = load ptr, ptr %140, align 8, !tbaa !35 + %.not.i.i.i71 = icmp eq ptr %141, null br i1 %.not.i.i.i71, label %.invoke, label %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i72 -_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i72: ; preds = %138 - %141 = getelementptr inbounds nuw i8, ptr %140, i64 56 - %142 = load i8, ptr %141, align 8, !tbaa !36 - %.not.i1.i.i73 = icmp eq i8 %142, 0 - br i1 %.not.i1.i.i73, label %146, label %143 +_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i72: ; preds = %139 + %142 = getelementptr inbounds nuw i8, ptr %141, i64 56 + %143 = load i8, ptr %142, align 8, !tbaa !36 + %.not.i1.i.i73 = icmp eq i8 %143, 0 + br i1 %.not.i1.i.i73, label %147, label %144 -143: ; preds = %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i72 - %144 = getelementptr inbounds nuw i8, ptr %140, i64 89 - %145 = load i8, ptr %144, align 1, !tbaa !56 +144: ; preds = %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i72 + %145 = getelementptr inbounds nuw i8, ptr %141, i64 89 + %146 = load i8, ptr %145, align 1, !tbaa !56 br label %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i74 -146: ; preds = %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i72 - invoke void @_ZNKSt5ctypeIcE13_M_widen_initEv(ptr noundef nonnull align 8 dereferenceable(570) %140) +147: ; preds = %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i72 + invoke void @_ZNKSt5ctypeIcE13_M_widen_initEv(ptr noundef nonnull align 8 dereferenceable(570) %141) to label %.noexc80 unwind label %74 -.noexc80: ; preds = %146 - %147 = load ptr, ptr %140, align 8, !tbaa !10 - %148 = getelementptr inbounds nuw i8, ptr %147, i64 48 - %149 = load ptr, ptr %148, align 8 - %150 = invoke noundef signext i8 %149(ptr noundef nonnull align 8 dereferenceable(570) %140, i8 noundef signext 32) +.noexc80: ; preds = %147 + %148 = load ptr, ptr %141, align 8, !tbaa !10 + %149 = getelementptr inbounds nuw i8, ptr %148, i64 48 + %150 = load ptr, ptr %149, align 8 + %151 = invoke noundef signext i8 %149(ptr noundef nonnull align 8 dereferenceable(570) %141, i8 noundef signext 32) to label %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i74 unwind label %74 -_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i74: ; preds = %.noexc80, %143 - %.0.i.i.i75 = phi i8 [ %145, %143 ], [ %150, %.noexc80 ] - %151 = getelementptr inbounds nuw i8, ptr %129, i64 224 - store i8 %.0.i.i.i75, ptr %151, align 8, !tbaa !42 +_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i74: ; preds = %.noexc80, %144 + %.0.i.i.i75 = phi i8 [ %146, %143 ], [ %151, %.noexc80 ] + %152 = getelementptr inbounds nuw i8, ptr %129, i64 224 + store i8 %.0.i.i.i75, ptr %152, align 8, !tbaa !42 store i8 1, ptr %135, align 1, !tbaa !25 br label %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit97.invoke -152: ; preds = %58 - %153 = load i64, ptr %51, align 8 - %154 = getelementptr inbounds i8, ptr %0, i64 %153 - %155 = getelementptr inbounds nuw i8, ptr %154, i64 225 - %156 = load i8, ptr %155, align 1, !tbaa !25, !range !33, !noundef !34 - %157 = trunc nuw i8 %156 to i1 - br i1 %157, label %._crit_edge.i91, label %158 +153: ; preds = %58 + %154 = load i64, ptr %51, align 8 + %155 = getelementptr inbounds i8, ptr %0, i64 %154 + %156 = getelementptr inbounds nuw i8, ptr %155, i64 225 + %157 = load i8, ptr %156, align 1, !tbaa !25, !range !33, !noundef !34 + %158 = trunc nuw i8 %157 to i1 + br i1 %158, label %._crit_edge.i91, label %159 -._crit_edge.i91: ; preds = %152 - %.phi.trans.insert.i92 = getelementptr inbounds nuw i8, ptr %154, i64 224 +._crit_edge.i91: ; preds = %153 + %.phi.trans.insert.i92 = getelementptr inbounds nuw i8, ptr %155, i64 224 %.pre.i93 = load i8, ptr %.phi.trans.insert.i92, align 8, !tbaa !42 br label %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit97.invoke -158: ; preds = %152 - %159 = getelementptr inbounds nuw i8, ptr %154, i64 240 - %160 = load ptr, ptr %159, align 8, !tbaa !35 - %.not.i.i.i86 = icmp eq ptr %160, null +159: ; preds = %153 + %160 = getelementptr inbounds nuw i8, ptr %155, i64 240 + %161 = load ptr, ptr %160, align 8, !tbaa !35 + %.not.i.i.i86 = icmp eq ptr %161, null br i1 %.not.i.i.i86, label %.invoke, label %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i87 -.invoke: ; preds = %158, %138, %106, %82 +.invoke: ; preds = %159, %139, %106, %82 invoke void @_ZSt16__throw_bad_castv() #13 to label %.cont unwind label %74 .cont: ; preds = %.invoke unreachable -_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i87: ; preds = %158 - %161 = getelementptr inbounds nuw i8, ptr %160, i64 56 - %162 = load i8, ptr %161, align 8, !tbaa !36 - %.not.i1.i.i88 = icmp eq i8 %162, 0 - br i1 %.not.i1.i.i88, label %166, label %163 +_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i87: ; preds = %159 + %162 = getelementptr inbounds nuw i8, ptr %161, i64 56 + %163 = load i8, ptr %162, align 8, !tbaa !36 + %.not.i1.i.i88 = icmp eq i8 %163, 0 + br i1 %.not.i1.i.i88, label %167, label %164 -163: ; preds = %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i87 - %164 = getelementptr inbounds nuw i8, ptr %160, i64 89 - %165 = load i8, ptr %164, align 1, !tbaa !56 +164: ; preds = %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i87 + %165 = getelementptr inbounds nuw i8, ptr %161, i64 89 + %166 = load i8, ptr %165, align 1, !tbaa !56 br label %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i89 -166: ; preds = %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i87 - invoke void @_ZNKSt5ctypeIcE13_M_widen_initEv(ptr noundef nonnull align 8 dereferenceable(570) %160) +167: ; preds = %_ZSt13__check_facetISt5ctypeIcEERKT_PS3_.exit.i.i87 + invoke void @_ZNKSt5ctypeIcE13_M_widen_initEv(ptr noundef nonnull align 8 dereferenceable(570) %161) to label %.noexc95 unwind label %74 -.noexc95: ; preds = %166 - %167 = load ptr, ptr %160, align 8, !tbaa !10 - %168 = getelementptr inbounds nuw i8, ptr %167, i64 48 - %169 = load ptr, ptr %168, align 8 - %170 = invoke noundef signext i8 %169(ptr noundef nonnull align 8 dereferenceable(570) %160, i8 noundef signext 32) +.noexc95: ; preds = %167 + %168 = load ptr, ptr %161, align 8, !tbaa !10 + %169 = getelementptr inbounds nuw i8, ptr %168, i64 48 + %170 = load ptr, ptr %169, align 8 + %171 = invoke noundef signext i8 %169(ptr noundef nonnull align 8 dereferenceable(570) %161, i8 noundef signext 32) to label %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i89 unwind label %74 -_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i89: ; preds = %.noexc95, %163 - %.0.i.i.i90 = phi i8 [ %165, %163 ], [ %170, %.noexc95 ] - %171 = getelementptr inbounds nuw i8, ptr %154, i64 224 - store i8 %.0.i.i.i90, ptr %171, align 8, !tbaa !42 - store i8 1, ptr %155, align 1, !tbaa !25 +_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i89: ; preds = %.noexc95, %164 + %.0.i.i.i90 = phi i8 [ %166, %163 ], [ %171, %.noexc95 ] + %172 = getelementptr inbounds nuw i8, ptr %155, i64 224 + store i8 %.0.i.i.i90, ptr %172, align 8, !tbaa !42 + store i8 1, ptr %156, align 1, !tbaa !25 br label %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit97.invoke _ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit97.invoke: ; preds = %._crit_edge.i91, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i89, %._crit_edge.i76, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i74, %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit68, %._crit_edge.i, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i - %172 = phi i64 [ %56, %._crit_edge.i ], [ %.pre111, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i ], [ 1, %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit68 ], [ 0, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i74 ], [ 0, %._crit_edge.i76 ], [ 0, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i89 ], [ 0, %._crit_edge.i91 ] - %173 = phi i8 [ %.pre.i, %._crit_edge.i ], [ %.0.i.i.i, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i ], [ %121, %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit68 ], [ %.0.i.i.i75, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i74 ], [ %.pre.i78, %._crit_edge.i76 ], [ %.0.i.i.i90, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i89 ], [ %.pre.i93, %._crit_edge.i91 ] - %174 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE14_M_replace_auxEmmmc(ptr noundef nonnull align 8 dereferenceable(32) %4, i64 noundef %172, i64 noundef 0, i64 noundef %59, i8 noundef signext %173) + %173 = phi i64 [ %56, %._crit_edge.i ], [ %.pre111, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i ], [ 1, %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit68 ], [ 0, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i74 ], [ 0, %._crit_edge.i76 ], [ 0, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i89 ], [ 0, %._crit_edge.i91 ] + %174 = phi i8 [ %.pre.i, %._crit_edge.i ], [ %.0.i.i.i, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i ], [ %121, %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit68 ], [ %.0.i.i.i75, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i74 ], [ %.pre.i78, %._crit_edge.i76 ], [ %.0.i.i.i90, %_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i89 ], [ %.pre.i93, %._crit_edge.i91 ] + %175 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE14_M_replace_auxEmmmc(ptr noundef nonnull align 8 dereferenceable(32) %4, i64 noundef %173, i64 noundef 0, i64 noundef %59, i8 noundef signext %174) to label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEmc.exit unwind label %74 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEmc.exit: ; preds = %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit97.invoke, %132, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit - %175 = load ptr, ptr %4, align 8, !tbaa !60 - %176 = load i64, ptr %13, align 8, !tbaa !54 - %177 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %175, i64 noundef %176) +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEmc.exit: ; preds = %_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv.exit97.invoke, %131, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit + %176 = load ptr, ptr %4, align 8, !tbaa !60 + %177 = load i64, ptr %13, align 8, !tbaa !54 + %178 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %176, i64 noundef %177) to label %_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit unwind label %72 _ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEmc.exit - %178 = load ptr, ptr %4, align 8, !tbaa !60 - %179 = icmp eq ptr %178, %12 - br i1 %179, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i103, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i102 + %179 = load ptr, ptr %4, align 8, !tbaa !60 + %180 = icmp eq ptr %179, %12 + br i1 %180, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i103, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i102 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i103: ; preds = %_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit - %180 = load i64, ptr %13, align 8, !tbaa !54 - %181 = icmp ult i64 %180, 16 - call void @llvm.assume(i1 %181) + %181 = load i64, ptr %13, align 8, !tbaa !54 + %182 = icmp ult i64 %181, 16 + call void @llvm.assume(i1 %182) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit104 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i102: ; preds = %_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit - %182 = load i64, ptr %12, align 8, !tbaa !56 - %183 = add i64 %182, 1 - call void @_ZdlPvm(ptr noundef %178, i64 noundef %183) #14 + %183 = load i64, ptr %12, align 8, !tbaa !56 + %184 = add i64 %183, 1 + call void @_ZdlPvm(ptr noundef %179, i64 noundef %184) #14 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit104 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit104: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i103, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i102 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #12 - ret ptr %177 + ret ptr %178 -184: ; preds = %72, %74, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52, %18 +185: ; preds = %72, %74, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52, %18 %.pn45.pn = phi { ptr, i32 } [ %.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52 ], [ %19, %18 ], [ %73, %72 ], [ %75, %74 ] - %185 = load ptr, ptr %4, align 8, !tbaa !60 - %186 = icmp eq ptr %185, %12 - br i1 %186, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i106, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i105 - -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i106: ; preds = %184 - %187 = load i64, ptr %13, align 8, !tbaa !54 - %188 = icmp ult i64 %187, 16 - call void @llvm.assume(i1 %188) + %186 = load ptr, ptr %4, align 8, !tbaa !60 + %187 = icmp eq ptr %186, %12 + br i1 %187, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i106, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i105 + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i106: ; preds = %185 + %188 = load i64, ptr %13, align 8, !tbaa !54 + %189 = icmp ult i64 %188, 16 + call void @llvm.assume(i1 %189) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit107 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i105: ; preds = %184 - %189 = load i64, ptr %12, align 8, !tbaa !56 - %190 = add i64 %189, 1 - call void @_ZdlPvm(ptr noundef %185, i64 noundef %190) #14 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i105: ; preds = %185 + %190 = load i64, ptr %12, align 8, !tbaa !56 + %191 = add i64 %190, 1 + call void @_ZdlPvm(ptr noundef %186, i64 noundef %191) #14 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit107 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit107: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i106, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i105 diff --git a/bench/fmt/optimized/format-impl-test.ll b/bench/fmt/optimized/format-impl-test.ll index ec5d4a8480e..c13ee527825 100644 --- a/bench/fmt/optimized/format-impl-test.ll +++ b/bench/fmt/optimized/format-impl-test.ll @@ -10123,95 +10123,95 @@ declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_st define linkonce_odr hidden noundef nonnull align 8 dereferenceable(172) ptr @_ZN3fmt3v116detail6bigintmLIoEERS2_T_(ptr noundef nonnull align 8 dereferenceable(172) %0, i64 noundef %1, i64 noundef %2) local_unnamed_addr #5 comdat align 2 personality ptr @__gxx_personality_v0 { %.sroa.23.0.insert.ext = zext i64 %2 to i128 %.sroa.02.0.insert.ext = zext i64 %1 to i128 - %4 = or i128 %.sroa.23.0.insert.ext, %.sroa.02.0.insert.ext - %5 = icmp eq i128 %4, 0 - br i1 %5, label %6, label %11 + %.sroa.02.0.insert.insert = or i128 %.sroa.23.0.insert.ext, %.sroa.02.0.insert.ext + %.not = icmp eq i128 %.sroa.02.0.insert.insert, 0 + br i1 %.not, label %4, label %9 -6: ; preds = %3 - %7 = tail call ptr @__cxa_allocate_exception(i64 16) #32 - invoke void @_ZN17assertion_failureC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull @.str.6) - to label %8 unwind label %9 +4: ; preds = %3 + %5 = tail call ptr @__cxa_allocate_exception(i64 16) #32 + invoke void @_ZN17assertion_failureC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull @.str.6) + to label %8 unwind label %7 -8: ; preds = %6 - tail call void @__cxa_throw(ptr nonnull %7, ptr nonnull @_ZTI17assertion_failure, ptr nonnull @_ZNSt11logic_errorD2Ev) #34 +6: ; preds = %4 + tail call void @__cxa_throw(ptr nonnull %5, ptr nonnull @_ZTI17assertion_failure, ptr nonnull @_ZNSt11logic_errorD2Ev) #34 unreachable -9: ; preds = %6 - %10 = landingpad { ptr, i32 } +7: ; preds = %4 + %8 = landingpad { ptr, i32 } cleanup - tail call void @__cxa_free_exception(ptr nonnull %7) #32 - resume { ptr, i32 } %10 + tail call void @__cxa_free_exception(ptr nonnull %5) #32 + resume { ptr, i32 } %8 -11: ; preds = %3 - %12 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %13 = load i64, ptr %12, align 8, !tbaa !56 - %.not23.i = icmp eq i64 %13, 0 +9: ; preds = %3 + %10 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %11 = load i64, ptr %10, align 8, !tbaa !56 + %.not23.i = icmp eq i64 %11, 0 br i1 %.not23.i, label %_ZN3fmt3v116detail6bigint8multiplyIoTnNSt9enable_ifIXoosr3std7is_sameIT_mEE5valuesr3std7is_sameIS5_oEE5valueEiE4typeELi0EEEvS5_.exit, label %.lr.ph.i -.lr.ph.i: ; preds = %11 - %14 = load ptr, ptr %0, align 8, !tbaa !23 - %15 = shl nuw nsw i128 %.sroa.23.0.insert.ext, 32 - br label %18 +.lr.ph.i: ; preds = %9 + %12 = load ptr, ptr %0, align 8, !tbaa !23 + %13 = shl nuw nsw i128 %.sroa.23.0.insert.ext, 32 + br label %16 -.preheader.i: ; preds = %18 - %.not20.i = icmp eq i128 %29, 0 +.preheader.i: ; preds = %16 + %.not20.i = icmp eq i128 %27, 0 br i1 %.not20.i, label %_ZN3fmt3v116detail6bigint8multiplyIoTnNSt9enable_ifIXoosr3std7is_sameIT_mEE5valuesr3std7is_sameIS5_oEE5valueEiE4typeELi0EEEvS5_.exit, label %.lr.ph22.i .lr.ph22.i: ; preds = %.preheader.i - %16 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %17 = getelementptr inbounds nuw i8, ptr %0, i64 24 - br label %32 + %14 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %15 = getelementptr inbounds nuw i8, ptr %0, i64 24 + br label %30 -18: ; preds = %18, %.lr.ph.i - %.019.i = phi i128 [ 0, %.lr.ph.i ], [ %29, %18 ] - %.01718.i = phi i64 [ 0, %.lr.ph.i ], [ %31, %18 ] - %19 = getelementptr inbounds nuw i32, ptr %14, i64 %.01718.i - %20 = load i32, ptr %19, align 4, !tbaa !55 - %21 = zext i32 %20 to i128 - %22 = mul nuw nsw i128 %21, %.sroa.02.0.insert.ext - %23 = and i128 %.019.i, 4294967295 - %24 = add nuw nsw i128 %22, %23 - %25 = mul nuw i128 %15, %21 - %26 = lshr i128 %24, 32 - %27 = lshr i128 %.019.i, 32 - %28 = add nuw i128 %25, %27 - %29 = add nuw i128 %28, %26 - %30 = trunc i128 %24 to i32 - store i32 %30, ptr %19, align 4, !tbaa !55 - %31 = add nuw i64 %.01718.i, 1 - %exitcond.not.i = icmp eq i64 %31, %13 - br i1 %exitcond.not.i, label %.preheader.i, label %18, !llvm.loop !123 - -32: ; preds = %_ZN3fmt3v116detail6bufferIjE9push_backERKj.exit.i, %.lr.ph22.i - %33 = phi ptr [ %14, %.lr.ph22.i ], [ %41, %_ZN3fmt3v116detail6bufferIjE9push_backERKj.exit.i ] - %34 = phi i64 [ %13, %.lr.ph22.i ], [ %.pre-phi.i.i, %_ZN3fmt3v116detail6bufferIjE9push_backERKj.exit.i ] - %.121.i = phi i128 [ %29, %.lr.ph22.i ], [ %44, %_ZN3fmt3v116detail6bufferIjE9push_backERKj.exit.i ] - %35 = trunc i128 %.121.i to i32 - %36 = add i64 %34, 1 - %37 = load i64, ptr %16, align 8, !tbaa !24 - %38 = icmp ugt i64 %36, %37 - br i1 %38, label %39, label %_ZN3fmt3v116detail6bufferIjE9push_backERKj.exit.i +16: ; preds = %16, %.lr.ph.i + %.019.i = phi i128 [ 0, %.lr.ph.i ], [ %27, %18 ] + %.01718.i = phi i64 [ 0, %.lr.ph.i ], [ %29, %18 ] + %17 = getelementptr inbounds nuw i32, ptr %12, i64 %.01718.i + %18 = load i32, ptr %17, align 4, !tbaa !55 + %19 = zext i32 %18 to i128 + %20 = mul nuw nsw i128 %19, %.sroa.02.0.insert.ext + %21 = and i128 %.019.i, 4294967295 + %22 = add nuw nsw i128 %20, %21 + %23 = mul nuw i128 %13, %19 + %24 = lshr i128 %22, 32 + %25 = lshr i128 %.019.i, 32 + %26 = add nuw i128 %23, %25 + %27 = add nuw i128 %26, %24 + %28 = trunc i128 %22 to i32 + store i32 %28, ptr %17, align 4, !tbaa !55 + %29 = add nuw i64 %.01718.i, 1 + %exitcond.not.i = icmp eq i64 %29, %11 + br i1 %exitcond.not.i, label %.preheader.i, label %16, !llvm.loop !123 + +30: ; preds = %_ZN3fmt3v116detail6bufferIjE9push_backERKj.exit.i, %.lr.ph22.i + %31 = phi ptr [ %12, %.lr.ph22.i ], [ %39, %_ZN3fmt3v116detail6bufferIjE9push_backERKj.exit.i ] + %32 = phi i64 [ %11, %.lr.ph22.i ], [ %.pre-phi.i.i, %_ZN3fmt3v116detail6bufferIjE9push_backERKj.exit.i ] + %.121.i = phi i128 [ %27, %.lr.ph22.i ], [ %42, %_ZN3fmt3v116detail6bufferIjE9push_backERKj.exit.i ] + %33 = trunc i128 %.121.i to i32 + %34 = add i64 %32, 1 + %35 = load i64, ptr %14, align 8, !tbaa !24 + %36 = icmp ugt i64 %34, %35 + br i1 %36, label %37, label %_ZN3fmt3v116detail6bufferIjE9push_backERKj.exit.i -39: ; preds = %32 - %40 = load ptr, ptr %17, align 8, !tbaa !20 - tail call void %40(ptr noundef nonnull align 8 dereferenceable(172) %0, i64 noundef %36) - %.pre.i.i = load i64, ptr %12, align 8, !tbaa !56 +37: ; preds = %30 + %38 = load ptr, ptr %15, align 8, !tbaa !20 + tail call void %40(ptr noundef nonnull align 8 dereferenceable(172) %0, i64 noundef %34) + %.pre.i.i = load i64, ptr %10, align 8, !tbaa !56 %.pre2.i.i = add i64 %.pre.i.i, 1 %.pre = load ptr, ptr %0, align 8, !tbaa !23 br label %_ZN3fmt3v116detail6bufferIjE9push_backERKj.exit.i -_ZN3fmt3v116detail6bufferIjE9push_backERKj.exit.i: ; preds = %39, %32 - %41 = phi ptr [ %33, %32 ], [ %.pre, %39 ] - %.pre-phi.i.i = phi i64 [ %36, %32 ], [ %.pre2.i.i, %39 ] - %42 = phi i64 [ %34, %32 ], [ %.pre.i.i, %39 ] - store i64 %.pre-phi.i.i, ptr %12, align 8, !tbaa !56 - %43 = getelementptr inbounds nuw i32, ptr %41, i64 %42 - store i32 %35, ptr %43, align 4, !tbaa !55 - %44 = lshr i128 %.121.i, 32 +_ZN3fmt3v116detail6bufferIjE9push_backERKj.exit.i: ; preds = %37, %30 + %39 = phi ptr [ %31, %32 ], [ %.pre, %39 ] + %.pre-phi.i.i = phi i64 [ %34, %32 ], [ %.pre2.i.i, %39 ] + %40 = phi i64 [ %32, %32 ], [ %.pre.i.i, %39 ] + store i64 %.pre-phi.i.i, ptr %10, align 8, !tbaa !56 + %41 = getelementptr inbounds nuw i32, ptr %39, i64 %40 + store i32 %33, ptr %41, align 4, !tbaa !55 + %42 = lshr i128 %.121.i, 32 %.not.i = icmp ult i128 %.121.i, 4294967296 - br i1 %.not.i, label %_ZN3fmt3v116detail6bigint8multiplyIoTnNSt9enable_ifIXoosr3std7is_sameIT_mEE5valuesr3std7is_sameIS5_oEE5valueEiE4typeELi0EEEvS5_.exit, label %32, !llvm.loop !124 + br i1 %.not.i, label %_ZN3fmt3v116detail6bigint8multiplyIoTnNSt9enable_ifIXoosr3std7is_sameIT_mEE5valuesr3std7is_sameIS5_oEE5valueEiE4typeELi0EEEvS5_.exit, label %30, !llvm.loop !124 -_ZN3fmt3v116detail6bigint8multiplyIoTnNSt9enable_ifIXoosr3std7is_sameIT_mEE5valuesr3std7is_sameIS5_oEE5valueEiE4typeELi0EEEvS5_.exit: ; preds = %_ZN3fmt3v116detail6bufferIjE9push_backERKj.exit.i, %11, %.preheader.i +_ZN3fmt3v116detail6bigint8multiplyIoTnNSt9enable_ifIXoosr3std7is_sameIT_mEE5valuesr3std7is_sameIS5_oEE5valueEiE4typeELi0EEEvS5_.exit: ; preds = %_ZN3fmt3v116detail6bufferIjE9push_backERKj.exit.i, %9, %.preheader.i ret ptr %0 } diff --git a/bench/freetype/optimized/sfnt.ll b/bench/freetype/optimized/sfnt.ll index 3dee2c0a3cd..e4c1a801d19 100644 --- a/bench/freetype/optimized/sfnt.ll +++ b/bench/freetype/optimized/sfnt.ll @@ -275,86 +275,86 @@ define internal range(i32 0, 65536) i32 @tt_cmap2_char_index(ptr noundef readonl %17 = icmp eq i8 %16, 0 br i1 %17, label %tt_cmap2_get_subheader.exit, label %tt_cmap2_get_subheader.exit.thread -18: ; preds = %6 +18:; preds = %6 %19 = lshr i32 %1, 7 %20 = and i32 %19, 510 %21 = zext nneg i32 %20 to i64 %22 = getelementptr inbounds nuw i8, ptr %7, i64 %21 %23 = load i8, ptr %22, align 1, !tbaa !15 - %24 = zext i8 %23 to i64 - %25 = shl nuw nsw i64 %24, 8 - %26 = getelementptr inbounds nuw i8, ptr %22, i64 1 + %23 = zext i8 %23 to i64 + %25 = shl nuw nsw i64 %23, 8 + %26 = getelementptr inbounds nuw i8, ptr %24, i64 1 %27 = load i8, ptr %26, align 1, !tbaa !15 - %28 = and i8 %27, -8 - %.masked.i = zext i8 %28 to i64 + %32 = and i8 %27, -8 + %.masked.i = zext i8 %32 to i64 %.add.i = add nuw nsw i64 %25, 518 %.add26.i = or disjoint i64 %.add.i, %.masked.i %.ptr28.i = getelementptr inbounds nuw i8, ptr %4, i64 %.add26.i - %29 = icmp eq i64 %.add26.i, 518 - br i1 %29, label %tt_cmap2_get_subheader.exit.thread, label %tt_cmap2_get_subheader.exit + %31 = icmp eq i64 %.add26.i, 518 + br i1 %31, label %tt_cmap2_get_subheader.exit.thread, label %tt_cmap2_get_subheader.exit tt_cmap2_get_subheader.exit: ; preds = %18, %9 %.021.i = phi ptr [ %.ptr.i, %9 ], [ %.ptr28.i, %18 ] - %30 = and i32 %1, 255 - %31 = load i8, ptr %.021.i, align 1, !tbaa !15 - %32 = zext i8 %31 to i32 - %33 = shl nuw nsw i32 %32, 8 - %34 = getelementptr inbounds nuw i8, ptr %.021.i, i64 1 - %35 = load i8, ptr %34, align 1, !tbaa !15 - %36 = zext i8 %35 to i32 - %37 = or disjoint i32 %33, %36 - %38 = getelementptr inbounds nuw i8, ptr %.021.i, i64 2 - %39 = load i8, ptr %38, align 1, !tbaa !15 - %40 = zext i8 %39 to i32 - %41 = shl nuw nsw i32 %40, 8 - %42 = getelementptr inbounds nuw i8, ptr %.021.i, i64 3 - %43 = load i8, ptr %42, align 1, !tbaa !15 - %44 = zext i8 %43 to i32 - %45 = or disjoint i32 %41, %44 - %46 = getelementptr inbounds nuw i8, ptr %.021.i, i64 6 - %47 = getelementptr inbounds nuw i8, ptr %.021.i, i64 4 - %48 = load i8, ptr %47, align 1, !tbaa !15 - %49 = zext i8 %48 to i32 - %50 = shl nuw nsw i32 %49, 8 - %51 = getelementptr inbounds nuw i8, ptr %.021.i, i64 5 - %52 = load i8, ptr %51, align 1, !tbaa !15 - %53 = zext i8 %52 to i32 - %54 = or disjoint i32 %50, %53 - %55 = load i8, ptr %46, align 1, !tbaa !15 - %56 = zext i8 %55 to i32 - %57 = shl nuw nsw i32 %56, 8 - %58 = getelementptr inbounds nuw i8, ptr %.021.i, i64 7 - %59 = load i8, ptr %58, align 1, !tbaa !15 - %60 = zext i8 %59 to i32 - %61 = or disjoint i32 %57, %60 - %62 = sub nsw i32 %30, %37 - %63 = icmp ult i32 %62, %45 - %64 = icmp ne i32 %61, 0 - %or.cond = select i1 %63, i1 %64, i1 false - br i1 %or.cond, label %65, label %tt_cmap2_get_subheader.exit.thread - -65: ; preds = %tt_cmap2_get_subheader.exit - %66 = shl nuw nsw i32 %62, 1 - %67 = add nuw nsw i32 %61, %66 - %68 = zext nneg i32 %67 to i64 - %69 = getelementptr inbounds nuw i8, ptr %46, i64 %68 - %70 = load i8, ptr %69, align 1, !tbaa !15 - %71 = zext i8 %70 to i32 - %72 = shl nuw nsw i32 %71, 8 - %73 = getelementptr inbounds nuw i8, ptr %69, i64 1 - %74 = load i8, ptr %73, align 1, !tbaa !15 - %75 = zext i8 %74 to i32 - %76 = or disjoint i32 %72, %75 - %.not36 = icmp eq i32 %76, 0 - br i1 %.not36, label %tt_cmap2_get_subheader.exit.thread, label %77 + %32 = and i32 %1, 255 + %33 = load i8, ptr %.021.i, align 1, !tbaa !15 + %34 = zext i8 %33 to i32 + %35 = shl nuw nsw i32 %34, 8 + %36 = getelementptr inbounds nuw i8, ptr %.021.i, i64 1 + %37 = load i8, ptr %36, align 1, !tbaa !15 + %38 = zext i8 %37 to i32 + %39 = or disjoint i32 %35, %38 + %40 = getelementptr inbounds nuw i8, ptr %.021.i, i64 2 + %41 = load i8, ptr %40, align 1, !tbaa !15 + %42 = zext i8 %41 to i32 + %43 = shl nuw nsw i32 %42, 8 + %44 = getelementptr inbounds nuw i8, ptr %.021.i, i64 3 + %45 = load i8, ptr %44, align 1, !tbaa !15 + %46 = zext i8 %45 to i32 + %47 = or disjoint i32 %43, %46 + %48 = getelementptr inbounds nuw i8, ptr %.021.i, i64 6 + %49 = getelementptr inbounds nuw i8, ptr %.021.i, i64 4 + %50 = load i8, ptr %49, align 1, !tbaa !15 + %51 = zext i8 %50 to i32 + %52 = shl nuw nsw i32 %51, 8 + %53 = getelementptr inbounds nuw i8, ptr %.021.i, i64 5 + %54 = load i8, ptr %53, align 1, !tbaa !15 + %55 = zext i8 %54 to i32 + %56 = or disjoint i32 %52, %55 + %57 = load i8, ptr %48, align 1, !tbaa !15 + %58 = zext i8 %57 to i32 + %59 = shl nuw nsw i32 %58, 8 + %60 = getelementptr inbounds nuw i8, ptr %.021.i, i64 7 + %61 = load i8, ptr %60, align 1, !tbaa !15 + %62 = zext i8 %61 to i32 + %63 = or disjoint i32 %59, %62 + %64 = sub nsw i32 %32, %39 + %65 = icmp ult i32 %64, %47 + %66 = icmp ne i32 %63, 0 + %or.cond = select i1 %65, i1 %66, i1 false + br i1 %or.cond, label %67, label %tt_cmap2_get_subheader.exit.thread + +67: ; preds = %tt_cmap2_get_subheader.exit + %68 = shl nuw nsw i32 %64, 1 + %69 = add nuw nsw i32 %63, %68 + %70 = zext nneg i32 %69 to i64 + %71 = getelementptr inbounds nuw i8, ptr %48, i64 %70 + %72 = load i8, ptr %71, align 1, !tbaa !15 + %73 = zext i8 %72 to i32 + %74 = shl nuw nsw i32 %73, 8 + %75 = getelementptr inbounds nuw i8, ptr %71, i64 1 + %76 = load i8, ptr %75, align 1, !tbaa !15 + %77 = zext i8 %76 to i32 + %78 = or disjoint i32 %74, %77 + %.not36 = icmp eq i32 %78, 0 + br i1 %.not36, label %tt_cmap2_get_subheader.exit.thread, label %79 -77: ; preds = %65 - %78 = add nuw nsw i32 %76, %54 - %79 = and i32 %78, 65535 +79: ; preds = %67 + %80 = add nuw nsw i32 %78, %56 + %81 = and i32 %80, 65535 br label %tt_cmap2_get_subheader.exit.thread -tt_cmap2_get_subheader.exit.thread: ; preds = %18, %9, %2, %tt_cmap2_get_subheader.exit, %77, %65 - %.0 = phi i32 [ %79, %77 ], [ 0, %65 ], [ 0, %tt_cmap2_get_subheader.exit ], [ 0, %2 ], [ 0, %9 ], [ 0, %18 ] +tt_cmap2_get_subheader.exit.thread: ; preds = %18, %9, %2, %tt_cmap2_get_subheader.exit, %79, %67 + %.0 = phi i32 [ %81, %77 ], [ 0, %67 ], [ 0, %tt_cmap2_get_subheader.exit ], [ 0, %2 ], [ 0, %9 ], [ 0, %18 ] ret i32 %.0 } @@ -375,7 +375,7 @@ define internal range(i32 0, 65536) i32 @tt_cmap2_char_next(ptr noundef readonly 9: ; preds = %.lr.ph107, %.backedge %.067105 = phi i32 [ %6, %.lr.ph107 ], [ %.067.be, %.backedge ] %10 = icmp samesign ult i32 %.067105, 256 - br i1 %10, label %11, label %20 + br i1 %10, label %11, label %22 11: ; preds = %9 %12 = shl nuw nsw i32 %.067105, 1 @@ -388,62 +388,62 @@ define internal range(i32 0, 65536) i32 @tt_cmap2_char_next(ptr noundef readonly %19 = icmp eq i8 %18, 0 br i1 %19, label %tt_cmap2_get_subheader.exit, label %tt_cmap2_get_subheader.exit.thread -20: ; preds = %9 - %21 = lshr i32 %.067105, 7 - %22 = and i32 %21, 510 - %23 = zext nneg i32 %22 to i64 - %24 = getelementptr inbounds nuw i8, ptr %8, i64 %23 - %25 = load i8, ptr %24, align 1, !tbaa !15 - %26 = zext i8 %25 to i64 - %27 = shl nuw nsw i64 %26, 8 - %28 = getelementptr inbounds nuw i8, ptr %24, i64 1 - %29 = load i8, ptr %28, align 1, !tbaa !15 - %30 = and i8 %29, -8 - %.masked.i = zext i8 %30 to i64 - %.add.i = add nuw nsw i64 %27, 518 +22: ; preds = %9 + %23 = lshr i32 %.067105, 7 + %24 = and i32 %23, 510 + %25 = zext nneg i32 %24 to i64 + %26 = getelementptr inbounds nuw i8, ptr %8, i64 %25 + %27 = load i8, ptr %26, align 1, !tbaa !15 + %28 = zext i8 %27 to i64 + %29 = shl nuw nsw i64 %28, 8 + %30 = getelementptr inbounds nuw i8, ptr %26, i64 1 + %31 = load i8, ptr %30, align 1, !tbaa !15 + %32 = and i8 %31, -8 + %.masked.i = zext i8 %32 to i64 + %.add.i = add nuw nsw i64 %29, 518 %.add26.i = or disjoint i64 %.add.i, %.masked.i %.ptr28.i = getelementptr inbounds nuw i8, ptr %4, i64 %.add26.i - %31 = icmp eq i64 %.add26.i, 518 - br i1 %31, label %tt_cmap2_get_subheader.exit.thread, label %tt_cmap2_get_subheader.exit + %33 = icmp eq i64 %.add26.i, 518 + br i1 %33, label %tt_cmap2_get_subheader.exit.thread, label %tt_cmap2_get_subheader.exit -tt_cmap2_get_subheader.exit: ; preds = %20, %11 +tt_cmap2_get_subheader.exit: ; preds = %22, %11 %.021.i = phi ptr [ %.ptr.i, %11 ], [ %.ptr28.i, %20 ] - %32 = load i8, ptr %.021.i, align 1, !tbaa !15 - %33 = zext i8 %32 to i32 - %34 = shl nuw nsw i32 %33, 8 - %35 = getelementptr inbounds nuw i8, ptr %.021.i, i64 1 - %36 = load i8, ptr %35, align 1, !tbaa !15 - %37 = zext i8 %36 to i32 - %38 = or disjoint i32 %34, %37 - %39 = getelementptr inbounds nuw i8, ptr %.021.i, i64 2 - %40 = load i8, ptr %39, align 1, !tbaa !15 - %41 = zext i8 %40 to i32 - %42 = shl nuw nsw i32 %41, 8 - %43 = getelementptr inbounds nuw i8, ptr %.021.i, i64 3 - %44 = load i8, ptr %43, align 1, !tbaa !15 - %45 = zext i8 %44 to i32 - %46 = or disjoint i32 %42, %45 - %47 = getelementptr inbounds nuw i8, ptr %.021.i, i64 6 - %48 = getelementptr inbounds nuw i8, ptr %.021.i, i64 4 - %49 = load i8, ptr %48, align 1, !tbaa !15 - %50 = zext i8 %49 to i32 - %51 = shl nuw nsw i32 %50, 8 - %52 = getelementptr inbounds nuw i8, ptr %.021.i, i64 5 - %53 = load i8, ptr %52, align 1, !tbaa !15 - %54 = zext i8 %53 to i32 - %55 = or disjoint i32 %51, %54 - %56 = load i8, ptr %47, align 1, !tbaa !15 - %57 = zext i8 %56 to i32 - %58 = shl nuw nsw i32 %57, 8 - %59 = getelementptr inbounds nuw i8, ptr %.021.i, i64 7 - %60 = load i8, ptr %59, align 1, !tbaa !15 - %61 = zext i8 %60 to i32 - %62 = or disjoint i32 %58, %61 - %63 = and i32 %.067105, 255 - %64 = add nuw nsw i32 %46, %38 - %65 = icmp samesign uge i32 %63, %64 - %or.cond = and i1 %10, %65 - br i1 %or.cond, label %.backedge, label %66 + %34 = load i8, ptr %.021.i, align 1, !tbaa !15 + %35 = zext i8 %34 to i32 + %36 = shl nuw nsw i32 %35, 8 + %37 = getelementptr inbounds nuw i8, ptr %.021.i, i64 1 + %38 = load i8, ptr %37, align 1, !tbaa !15 + %39 = zext i8 %38 to i32 + %40 = or disjoint i32 %36, %39 + %41 = getelementptr inbounds nuw i8, ptr %.021.i, i64 2 + %42 = load i8, ptr %41, align 1, !tbaa !15 + %43 = zext i8 %42 to i32 + %44 = shl nuw nsw i32 %43, 8 + %45 = getelementptr inbounds nuw i8, ptr %.021.i, i64 3 + %46 = load i8, ptr %45, align 1, !tbaa !15 + %47 = zext i8 %46 to i32 + %48 = or disjoint i32 %44, %47 + %49 = getelementptr inbounds nuw i8, ptr %.021.i, i64 6 + %50 = getelementptr inbounds nuw i8, ptr %.021.i, i64 4 + %51 = load i8, ptr %50, align 1, !tbaa !15 + %52 = zext i8 %51 to i32 + %53 = shl nuw nsw i32 %52, 8 + %54 = getelementptr inbounds nuw i8, ptr %.021.i, i64 5 + %55 = load i8, ptr %54, align 1, !tbaa !15 + %56 = zext i8 %55 to i32 + %57 = or disjoint i32 %53, %56 + %58 = load i8, ptr %49, align 1, !tbaa !15 + %59 = zext i8 %58 to i32 + %60 = shl nuw nsw i32 %59, 8 + %61 = getelementptr inbounds nuw i8, ptr %.021.i, i64 7 + %62 = load i8, ptr %61, align 1, !tbaa !15 + %63 = zext i8 %62 to i32 + %64 = or disjoint i32 %60, %63 + %65 = and i32 %.067105, 255 + %66 = add nuw nsw i32 %48, %40 + %67 = icmp samesign uge i32 %65, %66 + %or.cond = and i1 %10, %67 + br i1 %or.cond, label %.backedge, label %68 66: ; preds = %tt_cmap2_get_subheader.exit %67 = icmp eq i32 %62, 0 @@ -453,72 +453,72 @@ tt_cmap2_get_subheader.exit: ; preds = %20, %11 %69 = icmp eq i32 %.067105, 256 br i1 %69, label %.thread95, label %tt_cmap2_get_subheader.exit.thread -70: ; preds = %66 - %.060 = tail call i32 @llvm.umax.i32(i32 %63, i32 %38) +70: ; preds = %68 + %.060 = tail call i32 @llvm.umax.i32(i32 %63, i32 %40) %.059 = tail call i32 @llvm.usub.sat.i32(i32 %63, i32 %38) %71 = and i32 %.067105, 65280 %72 = add nuw nsw i32 %.060, %71 %73 = icmp samesign ult i32 %.059, %46 - br i1 %73, label %.lr.ph.preheader, label %._crit_edge + br i1 %75, label %.lr.ph.preheader, label %._crit_edge -.lr.ph.preheader: ; preds = %70 +.lr.ph.preheader:; preds = %70 %74 = shl nuw nsw i32 %.059, 1 %75 = add nuw nsw i32 %62, %74 %76 = zext nneg i32 %75 to i64 %77 = getelementptr inbounds nuw i8, ptr %47, i64 %76 br label %.lr.ph -.lr.ph: ; preds = %.lr.ph.preheader, %89 - %.1104 = phi i32 [ %90, %89 ], [ %.059, %.lr.ph.preheader ] - %.269103 = phi i32 [ %91, %89 ], [ %72, %.lr.ph.preheader ] - %.073102 = phi ptr [ %78, %89 ], [ %77, %.lr.ph.preheader ] - %78 = getelementptr inbounds nuw i8, ptr %.073102, i64 2 - %79 = load i8, ptr %.073102, align 1, !tbaa !15 - %80 = zext i8 %79 to i32 - %81 = shl nuw nsw i32 %80, 8 - %82 = getelementptr inbounds nuw i8, ptr %.073102, i64 1 - %83 = load i8, ptr %82, align 1, !tbaa !15 - %84 = zext i8 %83 to i32 - %85 = or disjoint i32 %81, %84 - %.not84 = icmp eq i32 %85, 0 - br i1 %.not84, label %89, label %86 - -86: ; preds = %.lr.ph - %87 = add nuw nsw i32 %85, %55 - %88 = and i32 %87, 65535 - %.not85 = icmp eq i32 %88, 0 - br i1 %.not85, label %89, label %.thread95 - -89: ; preds = %.lr.ph, %86 - %90 = add nuw nsw i32 %.1104, 1 - %91 = add nuw nsw i32 %.269103, 1 - %92 = icmp samesign ult i32 %90, %46 - br i1 %92, label %.lr.ph, label %._crit_edge, !llvm.loop !29 - -._crit_edge: ; preds = %89, %70 - %.269.lcssa = phi i32 [ %72, %70 ], [ %91, %89 ] - %.not83 = icmp ne i32 %46, 0 - %93 = sext i1 %.not83 to i32 - %spec.select = add i32 %.269.lcssa, %93 +.lr.ph: ; preds = %.lr.ph.preheader, %91 + %.1104 = phi i32 [ %92, %89 ], [ %.059, %.lr.ph.preheader ] + %.269103 = phi i32 [ %93, %89 ], [ %74, %.lr.ph.preheader ] + %.073102 = phi ptr [ %80, %89 ], [ %79, %.lr.ph.preheader ] + %80 = getelementptr inbounds nuw i8, ptr %.073102, i64 2 + %81 = load i8, ptr %.073102, align 1, !tbaa !15 + %82 = zext i8 %81 to i32 + %83 = shl nuw nsw i32 %82, 8 + %84 = getelementptr inbounds nuw i8, ptr %.073102, i64 1 + %85 = load i8, ptr %84, align 1, !tbaa !15 + %86 = zext i8 %85 to i32 + %87 = or disjoint i32 %83, %86 + %.not84 = icmp eq i32 %87, 0 + br i1 %.not84, label %91, label %88 + +88: ; preds = %.lr.ph + %89 = add nuw nsw i32 %87, %57 + %90 = and i32 %89, 65535 + %.not85 = icmp eq i32 %90, 0 + br i1 %.not85, label %91, label %.thread95 + +91: ; preds = %.lr.ph, %88 + %92 = add nuw nsw i32 %.1104, 1 + %93 = add nuw nsw i32 %.269103, 1 + %94 = icmp samesign ult i32 %92, %48 + br i1 %94, label %.lr.ph, label %._crit_edge, !llvm.loop !29 + +._crit_edge: ; preds = %91, %72 + %.269.lcssa = phi i32 [ %74, %72 ], [ %93, %89 ] + %.not83 = icmp ne i32 %48, 0 + %95 = sext i1 %.not83 to i32 + %spec.select = add i32 %.269.lcssa, %95 br label %tt_cmap2_get_subheader.exit.thread -tt_cmap2_get_subheader.exit.thread: ; preds = %68, %._crit_edge, %20, %11 - %.471 = phi i32 [ %.067105, %11 ], [ %.067105, %20 ], [ %.067105, %68 ], [ %spec.select, %._crit_edge ] - %94 = icmp ult i32 %.471, 256 - %95 = add nuw nsw i32 %.471, 1 - %96 = and i32 %.471, -256 - %97 = add i32 %96, 256 - %.572 = select i1 %94, i32 %95, i32 %97 +tt_cmap2_get_subheader.exit.thread: ; preds = %70, %._crit_edge, %22, %11 + %.471 = phi i32 [ %.067105, %11 ], [ %.067105, %20 ], [ %.067105, %70 ], [ %spec.select, %._crit_edge ] + %96 = icmp ult i32 %.471, 256 + %97 = add nuw nsw i32 %.471, 1 + %98 = and i32 %.471, -256 + %99 = add i32 %98, 256 + %.572 = select i1 %96, i32 %97, i32 %99 br label %.backedge .backedge: ; preds = %tt_cmap2_get_subheader.exit.thread, %tt_cmap2_get_subheader.exit %.067.be = phi i32 [ %.572, %tt_cmap2_get_subheader.exit.thread ], [ 256, %tt_cmap2_get_subheader.exit ] - %98 = icmp ult i32 %.067.be, 65536 - br i1 %98, label %9, label %.thread95, !llvm.loop !30 + %100 = icmp ult i32 %.067.be, 65536 + br i1 %100, label %9, label %.thread95, !llvm.loop !30 -.thread95: ; preds = %.backedge, %68, %86, %2 - %.366 = phi i32 [ 0, %2 ], [ %.269103, %86 ], [ 0, %68 ], [ 0, %.backedge ] - %.5 = phi i32 [ 0, %2 ], [ %88, %86 ], [ 0, %68 ], [ 0, %.backedge ] +.thread95: ; preds = %.backedge, %70, %88, %2 + %.366 = phi i32 [ 0, %2 ], [ %.269103, %86 ], [ 0, %70 ], [ 0, %.backedge ] + %.5 = phi i32 [ 0, %2 ], [ %90, %86 ], [ 0, %70 ], [ 0, %.backedge ] store i32 %.366, ptr %1, align 4, !tbaa !16 ret i32 %.5 } @@ -3959,7 +3959,7 @@ define internal ptr @tt_cmap14_char_variants(ptr noundef captures(none) %0, ptr tt_cmap14_ensure.exit: ; preds = %14 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #27 - br label %179 + br label %181 23: ; preds = %._crit_edge69, %22 %24 = phi ptr [ %.pre, %._crit_edge69 ], [ %20, %22 ] @@ -3973,7 +3973,7 @@ tt_cmap14_ensure.exit: ; preds = %14 br label %27 27: ; preds = %.lr.ph, %tt_cmap14_char_map_nondef_binary.exit.thread - %.03763 = phi i32 [ %7, %.lr.ph ], [ %178, %tt_cmap14_char_map_nondef_binary.exit.thread ] + %.03763 = phi i32 [ %7, %.lr.ph ], [ %180, %tt_cmap14_char_map_nondef_binary.exit.thread ] %.03862 = phi ptr [ %25, %.lr.ph ], [ %58, %tt_cmap14_char_map_nondef_binary.exit.thread ] %.03961 = phi ptr [ %24, %.lr.ph ], [ %.1, %tt_cmap14_char_map_nondef_binary.exit.thread ] %28 = load i8, ptr %.03862, align 1, !tbaa !15 @@ -4167,21 +4167,21 @@ tt_cmap14_char_map_nondef_binary.exit: ; preds = %165 tt_cmap14_char_map_def_binary.exit: ; preds = %119, %tt_cmap14_char_map_nondef_binary.exit store i32 %39, ptr %.03961, align 4, !tbaa !16 - %177 = getelementptr inbounds nuw i8, ptr %.03961, i64 4 + %179 = getelementptr inbounds nuw i8, ptr %.03961, i64 4 br label %tt_cmap14_char_map_nondef_binary.exit.thread tt_cmap14_char_map_nondef_binary.exit.thread: ; preds = %169, %126, %tt_cmap14_char_map_def_binary.exit, %tt_cmap14_char_map_nondef_binary.exit, %tt_cmap14_char_map_def_binary.exit.thread - %.1 = phi ptr [ %177, %tt_cmap14_char_map_def_binary.exit ], [ %.03961, %tt_cmap14_char_map_nondef_binary.exit ], [ %.03961, %tt_cmap14_char_map_def_binary.exit.thread ], [ %.03961, %126 ], [ %.03961, %169 ] - %178 = add i32 %.03763, -1 - %.not42 = icmp eq i32 %178, 0 + %.1 = phi ptr [ %179, %tt_cmap14_char_map_def_binary.exit ], [ %.03961, %tt_cmap14_char_map_nondef_binary.exit ], [ %.03961, %tt_cmap14_char_map_def_binary.exit.thread ], [ %.03961, %126 ], [ %.03961, %169 ] + %180 = add i32 %.03763, -1 + %.not42 = icmp eq i32 %180, 0 br i1 %.not42, label %._crit_edge, label %27, !llvm.loop !99 ._crit_edge: ; preds = %tt_cmap14_char_map_nondef_binary.exit.thread, %23 %.039.lcssa = phi ptr [ %24, %23 ], [ %.1, %tt_cmap14_char_map_nondef_binary.exit.thread ] store i32 0, ptr %.039.lcssa, align 4, !tbaa !16 - br label %179 + br label %181 -179: ; preds = %tt_cmap14_ensure.exit, %._crit_edge +181: ; preds = %tt_cmap14_ensure.exit, %._crit_edge %.0 = phi ptr [ %24, %._crit_edge ], [ null, %tt_cmap14_ensure.exit ] ret ptr %.0 } diff --git a/bench/hdf5/optimized/H5Fsuper_cache.ll b/bench/hdf5/optimized/H5Fsuper_cache.ll index 749dda36745..37ceca2dd0f 100644 --- a/bench/hdf5/optimized/H5Fsuper_cache.ll +++ b/bench/hdf5/optimized/H5Fsuper_cache.ll @@ -509,7 +509,7 @@ define internal ptr @H5F__cache_superblock_deserialize(ptr noundef %0, i64 nound %198 = load i8, ptr %197, align 1, !tbaa !31 %199 = getelementptr inbounds nuw i8, ptr %32, i64 15 store ptr %199, ptr %5, align 8, !tbaa !12 - %200 = or i8 %196, %194 + %201 = or i8 %196, %194 %201 = or i8 %200, %198 %202 = icmp eq i8 %201, 0 br i1 %202, label %207, label %203 diff --git a/bench/imgui/optimized/imgui_draw.ll b/bench/imgui/optimized/imgui_draw.ll index 66fd9071388..7c38ab58128 100644 --- a/bench/imgui/optimized/imgui_draw.ll +++ b/bench/imgui/optimized/imgui_draw.ll @@ -14467,7 +14467,7 @@ define noundef ptr @_ZN11ImFontAtlas30AddFontFromMemoryCompressedTTFEPKvifPK12Im %58 = icmp eq i8 %57, 0 br i1 %58, label %59, label %_ZL14stb_decompressPhPKhj.exit -59: ; preds = %46 +59:; preds = %46 %60 = load i8, ptr %9, align 1, !tbaa !23 %61 = zext i8 %60 to i64 %62 = shl nuw nsw i64 %61, 24 @@ -14480,172 +14480,172 @@ define noundef ptr @_ZN11ImFontAtlas30AddFontFromMemoryCompressedTTFEPKvifPK12Im %69 = load i8, ptr %23, align 1, !tbaa !23 %70 = zext i8 %69 to i64 store ptr %1, ptr @_ZL17stb__barrier_in_b, align 8, !tbaa !282 - %71 = getelementptr inbounds nuw i8, ptr %28, i64 %65 - %72 = getelementptr inbounds nuw i8, ptr %71, i64 %62 - %73 = getelementptr inbounds nuw i8, ptr %72, i64 %68 - %74 = getelementptr inbounds nuw i8, ptr %73, i64 %70 - store ptr %74, ptr @_ZL18stb__barrier_out_e, align 8, !tbaa !282 + %77 = getelementptr inbounds nuw i8, ptr %28, i64 %65 + %78 = getelementptr inbounds nuw i8, ptr %77, i64 %62 + %79 = getelementptr inbounds nuw i8, ptr %78, i64 %68 + %80 = getelementptr inbounds nuw i8, ptr %79, i64 %70 + store ptr %80, ptr @_ZL18stb__barrier_out_e, align 8, !tbaa !282 store ptr %28, ptr @_ZL18stb__barrier_out_b, align 8, !tbaa !282 - %75 = getelementptr inbounds nuw i8, ptr %1, i64 16 + %81 = getelementptr inbounds nuw i8, ptr %1, i64 16 store ptr %28, ptr @_ZL9stb__dout, align 8, !tbaa !282 - %76 = getelementptr inbounds nuw i8, ptr %74, i64 1 - br label %77 + %82 = getelementptr inbounds nuw i8, ptr %80, i64 1 + br label %83 -77: ; preds = %_ZL20stb_decompress_tokenPKh.exit.thread.i, %59 +83: ; preds = %_ZL20stb_decompress_tokenPKh.exit.thread.i, %59 %.lcssa.sink.i.i63.i = phi ptr [ %28, %59 ], [ %.lcssa.sink.i.i64.i, %_ZL20stb_decompress_tokenPKh.exit.thread.i ] - %.034.i = phi ptr [ %75, %59 ], [ %.0.i42.i, %_ZL20stb_decompress_tokenPKh.exit.thread.i ] - %78 = load i8, ptr %.034.i, align 1, !tbaa !23 - %79 = zext i8 %78 to i32 - %80 = icmp ugt i8 %78, 31 - br i1 %80, label %81, label %140 - -81: ; preds = %77 - %82 = icmp slt i8 %78, 0 - br i1 %82, label %83, label %101 - -83: ; preds = %81 - %84 = add nsw i32 %79, -127 - %85 = zext nneg i32 %84 to i64 - %86 = getelementptr inbounds nuw i8, ptr %.lcssa.sink.i.i63.i, i64 %85 - %87 = icmp ugt ptr %86, %74 - br i1 %87, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %88 - -88: ; preds = %83 - %89 = getelementptr inbounds nuw i8, ptr %.034.i, i64 1 - %90 = load i8, ptr %89, align 1, !tbaa !23 - %91 = zext i8 %90 to i64 - %92 = sub nsw i64 0, %91 - %93 = getelementptr inbounds i8, ptr %.lcssa.sink.i.i63.i, i64 %92 - %94 = getelementptr inbounds i8, ptr %93, i64 -1 - %95 = icmp ult ptr %94, %28 - br i1 %95, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %.preheader.i.i.i - -.preheader.i.i.i: ; preds = %88, %.preheader.i.i.i - %.09.i.i.i = phi i32 [ %97, %.preheader.i.i.i ], [ %84, %88 ] - %.048.i.i.i = phi ptr [ %98, %.preheader.i.i.i ], [ %94, %88 ] - %96 = phi ptr [ %100, %.preheader.i.i.i ], [ %.lcssa.sink.i.i63.i, %88 ] - %97 = add nsw i32 %.09.i.i.i, -1 - %98 = getelementptr inbounds nuw i8, ptr %.048.i.i.i, i64 1 - %99 = load i8, ptr %.048.i.i.i, align 1, !tbaa !23 - %100 = getelementptr inbounds nuw i8, ptr %96, i64 1 - store i8 %99, ptr %96, align 1, !tbaa !23 - %.not.i.i.i = icmp eq i32 %97, 0 + %.034.i = phi ptr [ %81, %59 ], [ %.0.i42.i, %_ZL20stb_decompress_tokenPKh.exit.thread.i ] + %84 = load i8, ptr %.034.i, align 1, !tbaa !23 + %85 = zext i8 %84 to i32 + %86 = icmp ugt i8 %84, 31 + br i1 %86, label %87, label %146 + +87: ; preds = %83 + %88 = icmp slt i8 %84, 0 + br i1 %88, label %89, label %107 + +89: ; preds = %87 + %90 = add nsw i32 %85, -127 + %91 = zext nneg i32 %90 to i64 + %92 = getelementptr inbounds nuw i8, ptr %.lcssa.sink.i.i63.i, i64 %91 + %93 = icmp ugt ptr %92, %80 + br i1 %93, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %94 + +94: ; preds = %89 + %95 = getelementptr inbounds nuw i8, ptr %.034.i, i64 1 + %96 = load i8, ptr %95, align 1, !tbaa !23 + %97 = zext i8 %96 to i64 + %98 = sub nsw i64 0, %97 + %99 = getelementptr inbounds i8, ptr %.lcssa.sink.i.i63.i, i64 %98 + %100 = getelementptr inbounds i8, ptr %99, i64 -1 + %101 = icmp ult ptr %100, %28 + br i1 %101, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %.preheader.i.i.i + +.preheader.i.i.i: ; preds = %94, %.preheader.i.i.i + %.09.i.i.i = phi i32 [ %103, %.preheader.i.i.i ], [ %90, %88 ] + %.048.i.i.i = phi ptr [ %104, %.preheader.i.i.i ], [ %100, %88 ] + %102 = phi ptr [ %106, %.preheader.i.i.i ], [ %.lcssa.sink.i.i63.i, %88 ] + %103 = add nsw i32 %.09.i.i.i, -1 + %104 = getelementptr inbounds nuw i8, ptr %.048.i.i.i, i64 1 + %105 = load i8, ptr %.048.i.i.i, align 1, !tbaa !23 + %106 = getelementptr inbounds nuw i8, ptr %102, i64 1 + store i8 %105, ptr %102, align 1, !tbaa !23 + %.not.i.i.i = icmp eq i32 %103, 0 br i1 %.not.i.i.i, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %.preheader.i.i.i, !llvm.loop !293 -101: ; preds = %81 - %102 = icmp samesign ugt i8 %78, 63 - br i1 %102, label %103, label %127 - -103: ; preds = %101 - %104 = getelementptr inbounds nuw i8, ptr %.034.i, i64 2 - %105 = load i8, ptr %104, align 1, !tbaa !23 - %106 = zext i8 %105 to i32 - %107 = add nuw nsw i32 %106, 1 - %108 = zext nneg i32 %107 to i64 - %109 = getelementptr inbounds nuw i8, ptr %.lcssa.sink.i.i63.i, i64 %108 - %110 = icmp ugt ptr %109, %74 - br i1 %110, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %111 - -111: ; preds = %103 - %112 = shl nuw nsw i32 %79, 8 - %113 = getelementptr inbounds nuw i8, ptr %.034.i, i64 1 - %114 = load i8, ptr %113, align 1, !tbaa !23 - %115 = zext i8 %114 to i32 - %116 = or disjoint i32 %112, %115 - %117 = add nsw i32 %116, -16383 - %118 = zext nneg i32 %117 to i64 - %119 = sub nsw i64 0, %118 - %120 = getelementptr inbounds i8, ptr %.lcssa.sink.i.i63.i, i64 %119 - %121 = icmp ult ptr %120, %28 - br i1 %121, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %.preheader.i56.i.i - -.preheader.i56.i.i: ; preds = %111, %.preheader.i56.i.i - %.09.i57.i.i = phi i32 [ %123, %.preheader.i56.i.i ], [ %107, %111 ] - %.048.i58.i.i = phi ptr [ %124, %.preheader.i56.i.i ], [ %120, %111 ] - %122 = phi ptr [ %126, %.preheader.i56.i.i ], [ %.lcssa.sink.i.i63.i, %111 ] - %123 = add nsw i32 %.09.i57.i.i, -1 - %124 = getelementptr inbounds nuw i8, ptr %.048.i58.i.i, i64 1 - %125 = load i8, ptr %.048.i58.i.i, align 1, !tbaa !23 - %126 = getelementptr inbounds nuw i8, ptr %122, i64 1 - store i8 %125, ptr %122, align 1, !tbaa !23 - %.not.i59.i.i = icmp eq i32 %123, 0 +107: ; preds = %87 + %108 = icmp samesign ugt i8 %84, 63 + br i1 %108, label %109, label %133 + +109: ; preds = %107 + %110 = getelementptr inbounds nuw i8, ptr %.034.i, i64 2 + %111 = load i8, ptr %110, align 1, !tbaa !23 + %112 = zext i8 %111 to i32 + %113 = add nuw nsw i32 %112, 1 + %114 = zext nneg i32 %113 to i64 + %115 = getelementptr inbounds nuw i8, ptr %.lcssa.sink.i.i63.i, i64 %114 + %116 = icmp ugt ptr %115, %80 + br i1 %116, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %117 + +117: ; preds = %109 + %118 = shl nuw nsw i32 %85, 8 + %119 = getelementptr inbounds nuw i8, ptr %.034.i, i64 1 + %120 = load i8, ptr %119, align 1, !tbaa !23 + %121 = zext i8 %120 to i32 + %122 = or disjoint i32 %118, %121 + %123 = add nsw i32 %122, -16383 + %124 = zext nneg i32 %123 to i64 + %125 = sub nsw i64 0, %124 + %126 = getelementptr inbounds i8, ptr %.lcssa.sink.i.i63.i, i64 %125 + %127 = icmp ult ptr %126, %28 + br i1 %127, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %.preheader.i56.i.i + +.preheader.i56.i.i: ; preds = %117, %.preheader.i56.i.i + %.09.i57.i.i = phi i32 [ %129, %.preheader.i56.i.i ], [ %113, %111 ] + %.048.i58.i.i = phi ptr [ %130, %.preheader.i56.i.i ], [ %126, %111 ] + %128 = phi ptr [ %132, %.preheader.i56.i.i ], [ %.lcssa.sink.i.i63.i, %111 ] + %129 = add nsw i32 %.09.i57.i.i, -1 + %130 = getelementptr inbounds nuw i8, ptr %.048.i58.i.i, i64 1 + %131 = load i8, ptr %.048.i58.i.i, align 1, !tbaa !23 + %132 = getelementptr inbounds nuw i8, ptr %128, i64 1 + store i8 %131, ptr %128, align 1, !tbaa !23 + %.not.i59.i.i = icmp eq i32 %129, 0 br i1 %.not.i59.i.i, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %.preheader.i56.i.i, !llvm.loop !293 -127: ; preds = %101 - %128 = getelementptr inbounds nuw i8, ptr %.034.i, i64 1 - %129 = add nsw i32 %79, -31 - %130 = zext nneg i32 %129 to i64 - %131 = getelementptr inbounds nuw i8, ptr %.lcssa.sink.i.i63.i, i64 %130 - %132 = icmp ugt ptr %131, %74 - br i1 %132, label %_ZL8stb__litPKhj.exit.i.i, label %133 +133: ; preds = %107 + %134 = getelementptr inbounds nuw i8, ptr %.034.i, i64 1 + %135 = add nsw i32 %85, -31 + %136 = zext nneg i32 %135 to i64 + %137 = getelementptr inbounds nuw i8, ptr %.lcssa.sink.i.i63.i, i64 %136 + %138 = icmp ugt ptr %137, %80 + br i1 %138, label %_ZL8stb__litPKhj.exit.i.i, label %139 -133: ; preds = %127 - %134 = icmp ult ptr %128, %1 - br i1 %134, label %_ZL8stb__litPKhj.exit.i.i, label %135 +139: ; preds = %133 + %140 = icmp ult ptr %134, %1 + br i1 %140, label %_ZL8stb__litPKhj.exit.i.i, label %141 -135: ; preds = %133 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.lcssa.sink.i.i63.i, ptr noundef nonnull readonly align 1 dereferenceable(1) %128, i64 %130, i1 false) +141: ; preds = %139 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.lcssa.sink.i.i63.i, ptr noundef nonnull readonly align 1 dereferenceable(1) %134, i64 %136, i1 false) %.pre103.i.i = load i8, ptr %.034.i, align 1, !tbaa !23 br label %_ZL8stb__litPKhj.exit.i.i -_ZL8stb__litPKhj.exit.i.i: ; preds = %135, %133, %127 - %136 = phi i8 [ %.pre103.i.i, %135 ], [ %78, %127 ], [ %78, %133 ] - %.sink.i.i.i = phi ptr [ %131, %135 ], [ %131, %127 ], [ %76, %133 ] +_ZL8stb__litPKhj.exit.i.i: ; preds = %141, %139, %133 + %142 = phi i8 [ %.pre103.i.i, %135 ], [ %84, %127 ], [ %78, %133 ] + %.sink.i.i.i = phi ptr [ %137, %135 ], [ %137, %127 ], [ %82, %133 ] store ptr %.sink.i.i.i, ptr @_ZL9stb__dout, align 8, !tbaa !282 - %137 = zext i8 %136 to i64 - %138 = getelementptr i8, ptr %.034.i, i64 %137 - %139 = getelementptr i8, ptr %138, i64 -30 + %143 = zext i8 %142 to i64 + %144 = getelementptr i8, ptr %.034.i, i64 %143 + %145 = getelementptr i8, ptr %144, i64 -30 br label %_ZL20stb_decompress_tokenPKh.exit.i -140: ; preds = %77 - %141 = icmp samesign ugt i8 %78, 23 - br i1 %141, label %142, label %171 - -142: ; preds = %140 - %143 = getelementptr inbounds nuw i8, ptr %.034.i, i64 3 - %144 = load i8, ptr %143, align 1, !tbaa !23 - %145 = zext i8 %144 to i32 - %146 = add nuw nsw i32 %145, 1 - %147 = zext nneg i32 %146 to i64 - %148 = getelementptr inbounds nuw i8, ptr %.lcssa.sink.i.i63.i, i64 %147 - %149 = icmp ugt ptr %148, %74 - br i1 %149, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %150 - -150: ; preds = %142 - %151 = shl nuw nsw i32 %79, 16 - %152 = getelementptr inbounds nuw i8, ptr %.034.i, i64 1 - %153 = load i8, ptr %152, align 1, !tbaa !23 - %154 = zext i8 %153 to i32 - %155 = shl nuw nsw i32 %154, 8 - %156 = getelementptr inbounds nuw i8, ptr %.034.i, i64 2 - %157 = load i8, ptr %156, align 1, !tbaa !23 - %158 = zext i8 %157 to i32 - %159 = or disjoint i32 %151, %158 - %160 = or disjoint i32 %159, %155 - %161 = add nsw i32 %160, -1572863 - %162 = zext nneg i32 %161 to i64 - %163 = sub nsw i64 0, %162 - %164 = getelementptr inbounds i8, ptr %.lcssa.sink.i.i63.i, i64 %163 - %165 = icmp ult ptr %164, %28 - br i1 %165, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %.preheader.i62.i.i - -.preheader.i62.i.i: ; preds = %150, %.preheader.i62.i.i - %.09.i63.i.i = phi i32 [ %167, %.preheader.i62.i.i ], [ %146, %150 ] - %.048.i64.i.i = phi ptr [ %168, %.preheader.i62.i.i ], [ %164, %150 ] - %166 = phi ptr [ %170, %.preheader.i62.i.i ], [ %.lcssa.sink.i.i63.i, %150 ] - %167 = add nsw i32 %.09.i63.i.i, -1 - %168 = getelementptr inbounds nuw i8, ptr %.048.i64.i.i, i64 1 - %169 = load i8, ptr %.048.i64.i.i, align 1, !tbaa !23 - %170 = getelementptr inbounds nuw i8, ptr %166, i64 1 - store i8 %169, ptr %166, align 1, !tbaa !23 - %.not.i65.i.i = icmp eq i32 %167, 0 +146: ; preds = %83 + %147 = icmp samesign ugt i8 %84, 23 + br i1 %147, label %148, label %177 + +148: ; preds = %146 + %149 = getelementptr inbounds nuw i8, ptr %.034.i, i64 3 + %150 = load i8, ptr %149, align 1, !tbaa !23 + %151 = zext i8 %150 to i32 + %152 = add nuw nsw i32 %151, 1 + %153 = zext nneg i32 %152 to i64 + %154 = getelementptr inbounds nuw i8, ptr %.lcssa.sink.i.i63.i, i64 %153 + %155 = icmp ugt ptr %154, %80 + br i1 %155, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %156 + +156: ; preds = %148 + %157 = shl nuw nsw i32 %85, 16 + %158 = getelementptr inbounds nuw i8, ptr %.034.i, i64 1 + %159 = load i8, ptr %158, align 1, !tbaa !23 + %160 = zext i8 %159 to i32 + %161 = shl nuw nsw i32 %160, 8 + %162 = getelementptr inbounds nuw i8, ptr %.034.i, i64 2 + %163 = load i8, ptr %162, align 1, !tbaa !23 + %164 = zext i8 %163 to i32 + %165 = or disjoint i32 %157, %164 + %166 = or disjoint i32 %165, %161 + %167 = add nsw i32 %166, -1572863 + %168 = zext nneg i32 %167 to i64 + %169 = sub nsw i64 0, %168 + %170 = getelementptr inbounds i8, ptr %.lcssa.sink.i.i63.i, i64 %169 + %171 = icmp ult ptr %170, %28 + br i1 %171, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %.preheader.i62.i.i + +.preheader.i62.i.i: ; preds = %156, %.preheader.i62.i.i + %.09.i63.i.i = phi i32 [ %173, %.preheader.i62.i.i ], [ %152, %150 ] + %.048.i64.i.i = phi ptr [ %174, %.preheader.i62.i.i ], [ %170, %150 ] + %172 = phi ptr [ %176, %.preheader.i62.i.i ], [ %.lcssa.sink.i.i63.i, %150 ] + %173 = add nsw i32 %.09.i63.i.i, -1 + %174 = getelementptr inbounds nuw i8, ptr %.048.i64.i.i, i64 1 + %175 = load i8, ptr %.048.i64.i.i, align 1, !tbaa !23 + %176 = getelementptr inbounds nuw i8, ptr %172, i64 1 + store i8 %175, ptr %172, align 1, !tbaa !23 + %.not.i65.i.i = icmp eq i32 %173, 0 br i1 %.not.i65.i.i, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %.preheader.i62.i.i, !llvm.loop !293 -171: ; preds = %140 - %172 = icmp samesign ugt i8 %78, 15 - br i1 %172, label %173, label %207 +177: ; preds = %146 + %178 = icmp samesign ugt i8 %84, 15 + br i1 %178, label %173, label %215 -173: ; preds = %171 +213: ; preds = %177 %174 = getelementptr inbounds nuw i8, ptr %.034.i, i64 3 %175 = load i8, ptr %174, align 1, !tbaa !23 %176 = zext i8 %175 to i32 @@ -14690,11 +14690,11 @@ _ZL8stb__litPKhj.exit.i.i: ; preds = %135, %133, %127 %.not.i71.i.i = icmp eq i32 %203, 0 br i1 %.not.i71.i.i, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %.preheader.i68.i.i, !llvm.loop !293 -207: ; preds = %171 - %208 = icmp samesign ugt i8 %78, 7 +215: ; preds = %171 + %208 = icmp samesign ugt i8 %84, 7 br i1 %208, label %209, label %231 -209: ; preds = %207 +209: ; preds = %215 %210 = getelementptr inbounds nuw i8, ptr %.034.i, i64 2 %211 = shl nuw nsw i32 %79, 8 %212 = getelementptr inbounds nuw i8, ptr %.034.i, i64 1 @@ -14704,10 +14704,10 @@ _ZL8stb__litPKhj.exit.i.i: ; preds = %135, %133, %127 %216 = add nsw i32 %215, -2047 %217 = zext nneg i32 %216 to i64 %218 = getelementptr inbounds nuw i8, ptr %.lcssa.sink.i.i63.i, i64 %217 - %219 = icmp ugt ptr %218, %74 - br i1 %219, label %_ZL8stb__litPKhj.exit75.i.i, label %220 + %227 = icmp ugt ptr %218, %74 + br i1 %227, label %_ZL8stb__litPKhj.exit75.i.i, label %228 -220: ; preds = %209 +228: ; preds = %209 %221 = icmp ult ptr %210, %1 br i1 %221, label %_ZL8stb__litPKhj.exit75.i.i, label %222 @@ -14718,208 +14718,208 @@ _ZL8stb__litPKhj.exit.i.i: ; preds = %135, %133, %127 br label %_ZL8stb__litPKhj.exit75.i.i _ZL8stb__litPKhj.exit75.i.i: ; preds = %222, %220, %209 - %223 = phi i8 [ %.pre102.i.i, %222 ], [ %213, %209 ], [ %213, %220 ] - %224 = phi i8 [ %.pre101.i.i, %222 ], [ %78, %209 ], [ %78, %220 ] - %.sink.i74.i.i = phi ptr [ %218, %222 ], [ %218, %209 ], [ %76, %220 ] + %229 = phi i8 [ %.pre102.i.i, %222 ], [ %213, %209 ], [ %213, %220 ] + %230 = phi i8 [ %.pre101.i.i, %222 ], [ %84, %209 ], [ %84, %220 ] + %.sink.i74.i.i = phi ptr [ %218, %222 ], [ %218, %209 ], [ %82, %220 ] store ptr %.sink.i74.i.i, ptr @_ZL9stb__dout, align 8, !tbaa !282 - %225 = zext i8 %224 to i64 - %226 = shl nuw nsw i64 %225, 8 - %227 = zext i8 %223 to i64 - %228 = getelementptr i8, ptr %.034.i, i64 %226 - %229 = getelementptr i8, ptr %228, i64 %227 - %230 = getelementptr i8, ptr %229, i64 -2045 + %231 = zext i8 %230 to i64 + %232 = shl nuw nsw i64 %231, 8 + %233 = zext i8 %229 to i64 + %234 = getelementptr i8, ptr %.034.i, i64 %232 + %235 = getelementptr i8, ptr %234, i64 %233 + %236 = getelementptr i8, ptr %235, i64 -2045 br label %_ZL20stb_decompress_tokenPKh.exit.i -231: ; preds = %207 - switch i8 %78, label %_ZL14stb_decompressPhPKhj.exit [ - i8 7, label %232 - i8 6, label %251 - i8 4, label %281 +237: ; preds = %215 + switch i8 %84, label %_ZL14stb_decompressPhPKhj.exit [ + i8 7, label %238 + i8 6, label %257 + i8 4, label %287 ] -232: ; preds = %231 - %233 = getelementptr inbounds nuw i8, ptr %.034.i, i64 3 - %234 = getelementptr inbounds nuw i8, ptr %.034.i, i64 1 - %235 = load i8, ptr %234, align 1, !tbaa !23 - %236 = zext i8 %235 to i64 - %237 = shl nuw nsw i64 %236, 8 - %238 = getelementptr inbounds nuw i8, ptr %.034.i, i64 2 - %239 = load i8, ptr %238, align 1, !tbaa !23 - %240 = zext i8 %239 to i64 - %241 = or disjoint i64 %237, %240 - %242 = add nuw nsw i64 %241, 1 - %243 = getelementptr inbounds nuw i8, ptr %.lcssa.sink.i.i63.i, i64 %242 - %244 = icmp ugt ptr %243, %74 - br i1 %244, label %_ZL8stb__litPKhj.exit77.i.i, label %245 - -245: ; preds = %232 - %246 = icmp ult ptr %233, %1 - br i1 %246, label %_ZL8stb__litPKhj.exit77.i.i, label %247 - -247: ; preds = %245 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.lcssa.sink.i.i63.i, ptr noundef nonnull readonly align 1 dereferenceable(1) %233, i64 %242, i1 false) - %.pre.i.i = load i8, ptr %234, align 1, !tbaa !23 - %.pre100.i.i = load i8, ptr %238, align 1, !tbaa !23 +238: ; preds = %237 + %239 = getelementptr inbounds nuw i8, ptr %.034.i, i64 3 + %240 = getelementptr inbounds nuw i8, ptr %.034.i, i64 1 + %241 = load i8, ptr %240, align 1, !tbaa !23 + %242 = zext i8 %241 to i64 + %243 = shl nuw nsw i64 %242, 8 + %244 = getelementptr inbounds nuw i8, ptr %.034.i, i64 2 + %245 = load i8, ptr %244, align 1, !tbaa !23 + %246 = zext i8 %245 to i64 + %247 = or disjoint i64 %243, %246 + %248 = add nuw nsw i64 %247, 1 + %249 = getelementptr inbounds nuw i8, ptr %.lcssa.sink.i.i63.i, i64 %248 + %250 = icmp ugt ptr %249, %80 + br i1 %250, label %_ZL8stb__litPKhj.exit77.i.i, label %251 + +251: ; preds = %238 + %252 = icmp ult ptr %239, %1 + br i1 %252, label %_ZL8stb__litPKhj.exit77.i.i, label %253 + +253: ; preds = %251 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.lcssa.sink.i.i63.i, ptr noundef nonnull readonly align 1 dereferenceable(1) %239, i64 %248, i1 false) + %.pre.i.i = load i8, ptr %240, align 1, !tbaa !23 + %.pre100.i.i = load i8, ptr %244, align 1, !tbaa !23 %.pre104.i.i = zext i8 %.pre.i.i to i64 %.pre105.i.i = shl nuw nsw i64 %.pre104.i.i, 8 %.pre107.i.i = zext i8 %.pre100.i.i to i64 br label %_ZL8stb__litPKhj.exit77.i.i -_ZL8stb__litPKhj.exit77.i.i: ; preds = %247, %245, %232 - %.pre-phi108.i.i = phi i64 [ %240, %232 ], [ %.pre107.i.i, %247 ], [ %240, %245 ] - %.pre-phi106.i.i = phi i64 [ %237, %232 ], [ %.pre105.i.i, %247 ], [ %237, %245 ] - %.sink.i76.i.i = phi ptr [ %243, %232 ], [ %243, %247 ], [ %76, %245 ] +_ZL8stb__litPKhj.exit77.i.i: ; preds = %253, %251, %238 + %.pre-phi108.i.i = phi i64 [ %246, %232 ], [ %.pre107.i.i, %247 ], [ %246, %245 ] + %.pre-phi106.i.i = phi i64 [ %243, %232 ], [ %.pre105.i.i, %247 ], [ %243, %245 ] + %.sink.i76.i.i = phi ptr [ %249, %232 ], [ %249, %247 ], [ %82, %245 ] store ptr %.sink.i76.i.i, ptr @_ZL9stb__dout, align 8, !tbaa !282 - %248 = getelementptr inbounds nuw i8, ptr %.034.i, i64 %.pre-phi106.i.i - %249 = getelementptr inbounds nuw i8, ptr %248, i64 %.pre-phi108.i.i - %250 = getelementptr inbounds nuw i8, ptr %249, i64 4 + %254 = getelementptr inbounds nuw i8, ptr %.034.i, i64 %.pre-phi106.i.i + %255 = getelementptr inbounds nuw i8, ptr %254, i64 %.pre-phi108.i.i + %256 = getelementptr inbounds nuw i8, ptr %255, i64 4 br label %_ZL20stb_decompress_tokenPKh.exit.i -251: ; preds = %231 - %252 = getelementptr inbounds nuw i8, ptr %.034.i, i64 4 - %253 = load i8, ptr %252, align 1, !tbaa !23 - %254 = zext i8 %253 to i32 - %255 = add nuw nsw i32 %254, 1 - %256 = zext nneg i32 %255 to i64 - %257 = getelementptr inbounds nuw i8, ptr %.lcssa.sink.i.i63.i, i64 %256 - %258 = icmp ugt ptr %257, %74 - br i1 %258, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %259 - -259: ; preds = %251 - %260 = getelementptr inbounds nuw i8, ptr %.034.i, i64 1 - %261 = load i8, ptr %260, align 1, !tbaa !23 - %262 = zext i8 %261 to i64 - %263 = shl nuw nsw i64 %262, 16 - %264 = getelementptr inbounds nuw i8, ptr %.034.i, i64 2 - %265 = load i8, ptr %264, align 1, !tbaa !23 - %266 = zext i8 %265 to i64 - %267 = shl nuw nsw i64 %266, 8 - %268 = getelementptr inbounds nuw i8, ptr %.034.i, i64 3 - %269 = load i8, ptr %268, align 1, !tbaa !23 - %270 = zext i8 %269 to i64 - %271 = or disjoint i64 %263, %270 - %272 = or disjoint i64 %271, %267 - %273 = xor i64 %272, -1 - %274 = getelementptr inbounds i8, ptr %.lcssa.sink.i.i63.i, i64 %273 - %275 = icmp ult ptr %274, %28 - br i1 %275, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %.preheader.i78.i.i - -.preheader.i78.i.i: ; preds = %259, %.preheader.i78.i.i - %.09.i79.i.i = phi i32 [ %277, %.preheader.i78.i.i ], [ %255, %259 ] - %.048.i80.i.i = phi ptr [ %278, %.preheader.i78.i.i ], [ %274, %259 ] - %276 = phi ptr [ %280, %.preheader.i78.i.i ], [ %.lcssa.sink.i.i63.i, %259 ] - %277 = add nsw i32 %.09.i79.i.i, -1 - %278 = getelementptr inbounds nuw i8, ptr %.048.i80.i.i, i64 1 - %279 = load i8, ptr %.048.i80.i.i, align 1, !tbaa !23 - %280 = getelementptr inbounds nuw i8, ptr %276, i64 1 - store i8 %279, ptr %276, align 1, !tbaa !23 - %.not.i81.i.i = icmp eq i32 %277, 0 +257: ; preds = %237 + %258 = getelementptr inbounds nuw i8, ptr %.034.i, i64 4 + %259 = load i8, ptr %258, align 1, !tbaa !23 + %260 = zext i8 %259 to i32 + %261 = add nuw nsw i32 %260, 1 + %262 = zext nneg i32 %261 to i64 + %263 = getelementptr inbounds nuw i8, ptr %.lcssa.sink.i.i63.i, i64 %262 + %264 = icmp ugt ptr %263, %80 + br i1 %264, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %265 + +265: ; preds = %257 + %266 = getelementptr inbounds nuw i8, ptr %.034.i, i64 1 + %267 = load i8, ptr %266, align 1, !tbaa !23 + %268 = zext i8 %267 to i64 + %269 = shl nuw nsw i64 %268, 16 + %270 = getelementptr inbounds nuw i8, ptr %.034.i, i64 2 + %271 = load i8, ptr %270, align 1, !tbaa !23 + %272 = zext i8 %271 to i64 + %273 = shl nuw nsw i64 %272, 8 + %274 = getelementptr inbounds nuw i8, ptr %.034.i, i64 3 + %275 = load i8, ptr %274, align 1, !tbaa !23 + %276 = zext i8 %275 to i64 + %277 = or disjoint i64 %269, %276 + %278 = or disjoint i64 %277, %273 + %279 = xor i64 %278, -1 + %280 = getelementptr inbounds i8, ptr %.lcssa.sink.i.i63.i, i64 %279 + %281 = icmp ult ptr %280, %28 + br i1 %281, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %.preheader.i78.i.i + +.preheader.i78.i.i: ; preds = %265, %.preheader.i78.i.i + %.09.i79.i.i = phi i32 [ %283, %.preheader.i78.i.i ], [ %261, %259 ] + %.048.i80.i.i = phi ptr [ %284, %.preheader.i78.i.i ], [ %280, %259 ] + %282 = phi ptr [ %286, %.preheader.i78.i.i ], [ %.lcssa.sink.i.i63.i, %259 ] + %283 = add nsw i32 %.09.i79.i.i, -1 + %284 = getelementptr inbounds nuw i8, ptr %.048.i80.i.i, i64 1 + %285 = load i8, ptr %.048.i80.i.i, align 1, !tbaa !23 + %286 = getelementptr inbounds nuw i8, ptr %282, i64 1 + store i8 %285, ptr %282, align 1, !tbaa !23 + %.not.i81.i.i = icmp eq i32 %283, 0 br i1 %.not.i81.i.i, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %.preheader.i78.i.i, !llvm.loop !293 -281: ; preds = %231 - %282 = getelementptr inbounds nuw i8, ptr %.034.i, i64 4 - %283 = load i8, ptr %282, align 1, !tbaa !23 - %284 = zext i8 %283 to i32 - %285 = shl nuw nsw i32 %284, 8 - %286 = getelementptr inbounds nuw i8, ptr %.034.i, i64 5 - %287 = load i8, ptr %286, align 1, !tbaa !23 - %288 = zext i8 %287 to i32 - %289 = or disjoint i32 %285, %288 - %290 = add nuw nsw i32 %289, 1 - %291 = zext nneg i32 %290 to i64 - %292 = getelementptr inbounds nuw i8, ptr %.lcssa.sink.i.i63.i, i64 %291 - %293 = icmp ugt ptr %292, %74 - br i1 %293, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %294 - -294: ; preds = %281 - %295 = getelementptr inbounds nuw i8, ptr %.034.i, i64 1 - %296 = load i8, ptr %295, align 1, !tbaa !23 - %297 = zext i8 %296 to i64 - %298 = shl nuw nsw i64 %297, 16 - %299 = getelementptr inbounds nuw i8, ptr %.034.i, i64 2 - %300 = load i8, ptr %299, align 1, !tbaa !23 - %301 = zext i8 %300 to i64 - %302 = shl nuw nsw i64 %301, 8 - %303 = getelementptr inbounds nuw i8, ptr %.034.i, i64 3 - %304 = load i8, ptr %303, align 1, !tbaa !23 - %305 = zext i8 %304 to i64 - %306 = or disjoint i64 %298, %305 - %307 = or disjoint i64 %306, %302 - %308 = xor i64 %307, -1 - %309 = getelementptr inbounds i8, ptr %.lcssa.sink.i.i63.i, i64 %308 - %310 = icmp ult ptr %309, %28 - br i1 %310, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %.preheader.i84.i.i - -.preheader.i84.i.i: ; preds = %294, %.preheader.i84.i.i - %.09.i85.i.i = phi i32 [ %312, %.preheader.i84.i.i ], [ %290, %294 ] - %.048.i86.i.i = phi ptr [ %313, %.preheader.i84.i.i ], [ %309, %294 ] - %311 = phi ptr [ %315, %.preheader.i84.i.i ], [ %.lcssa.sink.i.i63.i, %294 ] - %312 = add nsw i32 %.09.i85.i.i, -1 - %313 = getelementptr inbounds nuw i8, ptr %.048.i86.i.i, i64 1 - %314 = load i8, ptr %.048.i86.i.i, align 1, !tbaa !23 - %315 = getelementptr inbounds nuw i8, ptr %311, i64 1 - store i8 %314, ptr %311, align 1, !tbaa !23 - %.not.i87.i.i = icmp eq i32 %312, 0 +287: ; preds = %237 + %288 = getelementptr inbounds nuw i8, ptr %.034.i, i64 4 + %289 = load i8, ptr %288, align 1, !tbaa !23 + %290 = zext i8 %289 to i32 + %291 = shl nuw nsw i32 %290, 8 + %292 = getelementptr inbounds nuw i8, ptr %.034.i, i64 5 + %293 = load i8, ptr %292, align 1, !tbaa !23 + %294 = zext i8 %293 to i32 + %295 = or disjoint i32 %291, %294 + %296 = add nuw nsw i32 %295, 1 + %297 = zext nneg i32 %296 to i64 + %298 = getelementptr inbounds nuw i8, ptr %.lcssa.sink.i.i63.i, i64 %297 + %299 = icmp ugt ptr %298, %80 + br i1 %299, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %300 + +300: ; preds = %287 + %301 = getelementptr inbounds nuw i8, ptr %.034.i, i64 1 + %302 = load i8, ptr %301, align 1, !tbaa !23 + %303 = zext i8 %302 to i64 + %304 = shl nuw nsw i64 %303, 16 + %305 = getelementptr inbounds nuw i8, ptr %.034.i, i64 2 + %306 = load i8, ptr %305, align 1, !tbaa !23 + %307 = zext i8 %306 to i64 + %308 = shl nuw nsw i64 %307, 8 + %309 = getelementptr inbounds nuw i8, ptr %.034.i, i64 3 + %310 = load i8, ptr %309, align 1, !tbaa !23 + %311 = zext i8 %310 to i64 + %312 = or disjoint i64 %304, %311 + %313 = or disjoint i64 %312, %308 + %314 = xor i64 %313, -1 + %315 = getelementptr inbounds i8, ptr %.lcssa.sink.i.i63.i, i64 %314 + %316 = icmp ult ptr %315, %28 + br i1 %316, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %.preheader.i84.i.i + +.preheader.i84.i.i: ; preds = %300, %.preheader.i84.i.i + %.09.i85.i.i = phi i32 [ %318, %.preheader.i84.i.i ], [ %296, %294 ] + %.048.i86.i.i = phi ptr [ %319, %.preheader.i84.i.i ], [ %315, %294 ] + %317 = phi ptr [ %321, %.preheader.i84.i.i ], [ %.lcssa.sink.i.i63.i, %294 ] + %318 = add nsw i32 %.09.i85.i.i, -1 + %319 = getelementptr inbounds nuw i8, ptr %.048.i86.i.i, i64 1 + %320 = load i8, ptr %.048.i86.i.i, align 1, !tbaa !23 + %321 = getelementptr inbounds nuw i8, ptr %317, i64 1 + store i8 %320, ptr %317, align 1, !tbaa !23 + %.not.i87.i.i = icmp eq i32 %318, 0 br i1 %.not.i87.i.i, label %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, label %.preheader.i84.i.i, !llvm.loop !293 _ZL20stb_decompress_tokenPKh.exit.i: ; preds = %_ZL8stb__litPKhj.exit77.i.i, %_ZL8stb__litPKhj.exit75.i.i, %_ZL8stb__litPKhj.exit.i.i %.lcssa.sink.i.i65.i = phi ptr [ %.sink.i.i.i, %_ZL8stb__litPKhj.exit.i.i ], [ %.sink.i74.i.i, %_ZL8stb__litPKhj.exit75.i.i ], [ %.sink.i76.i.i, %_ZL8stb__litPKhj.exit77.i.i ] - %.0.i.i = phi ptr [ %139, %_ZL8stb__litPKhj.exit.i.i ], [ %230, %_ZL8stb__litPKhj.exit75.i.i ], [ %250, %_ZL8stb__litPKhj.exit77.i.i ] - %316 = icmp eq ptr %.0.i.i, %.034.i - br i1 %316, label %_ZL14stb_decompressPhPKhj.exit, label %_ZL20stb_decompress_tokenPKh.exit.thread.i + %.0.i.i = phi ptr [ %145, %_ZL8stb__litPKhj.exit.i.i ], [ %236, %_ZL8stb__litPKhj.exit75.i.i ], [ %256, %_ZL8stb__litPKhj.exit77.i.i ] + %322 = icmp eq ptr %.0.i.i, %.034.i + br i1 %322, label %_ZL14stb_decompressPhPKhj.exit, label %_ZL20stb_decompress_tokenPKh.exit.thread.i -_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i: ; preds = %.preheader.i84.i.i, %.preheader.i78.i.i, %.preheader.i68.i.i, %.preheader.i62.i.i, %.preheader.i56.i.i, %.preheader.i.i.i, %294, %281, %259, %251, %186, %173, %150, %142, %111, %103, %88, %83 - %.lcssa.sink.i88.i.sink.i = phi ptr [ %86, %83 ], [ %76, %88 ], [ %109, %103 ], [ %76, %111 ], [ %148, %142 ], [ %76, %150 ], [ %184, %173 ], [ %76, %186 ], [ %257, %251 ], [ %76, %259 ], [ %292, %281 ], [ %76, %294 ], [ %100, %.preheader.i.i.i ], [ %126, %.preheader.i56.i.i ], [ %170, %.preheader.i62.i.i ], [ %206, %.preheader.i68.i.i ], [ %280, %.preheader.i78.i.i ], [ %315, %.preheader.i84.i.i ] +_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i: ; preds = %.preheader.i84.i.i, %.preheader.i78.i.i, %.preheader.i68.i.i, %.preheader.i62.i.i, %.preheader.i56.i.i, %.preheader.i.i.i, %300, %287, %265, %257, %186, %173, %156, %148, %117, %109, %94, %89 + %.lcssa.sink.i88.i.sink.i = phi ptr [ %92, %83 ], [ %76, %88 ], [ %109, %103 ], [ %76, %111 ], [ %148, %142 ], [ %76, %150 ], [ %184, %173 ], [ %76, %186 ], [ %257, %251 ], [ %76, %259 ], [ %292, %281 ], [ %76, %294 ], [ %100, %.preheader.i.i.i ], [ %132, %.preheader.i56.i.i ], [ %176, %.preheader.i62.i.i ], [ %206, %.preheader.i68.i.i ], [ %286, %.preheader.i78.i.i ], [ %321, %.preheader.i84.i.i ] %.sink.i = phi i64 [ 2, %83 ], [ 2, %88 ], [ 3, %103 ], [ 3, %111 ], [ 4, %142 ], [ 4, %150 ], [ 5, %173 ], [ 5, %186 ], [ 5, %251 ], [ 5, %259 ], [ 6, %281 ], [ 6, %294 ], [ 2, %.preheader.i.i.i ], [ 3, %.preheader.i56.i.i ], [ 4, %.preheader.i62.i.i ], [ 5, %.preheader.i68.i.i ], [ 5, %.preheader.i78.i.i ], [ 6, %.preheader.i84.i.i ] store ptr %.lcssa.sink.i88.i.sink.i, ptr @_ZL9stb__dout, align 8, !tbaa !282 - %317 = getelementptr inbounds nuw i8, ptr %.034.i, i64 %.sink.i + %323 = getelementptr inbounds nuw i8, ptr %.034.i, i64 %.sink.i br label %_ZL20stb_decompress_tokenPKh.exit.thread.i _ZL20stb_decompress_tokenPKh.exit.thread.i: ; preds = %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i, %_ZL20stb_decompress_tokenPKh.exit.i %.lcssa.sink.i.i64.i = phi ptr [ %.lcssa.sink.i.i65.i, %_ZL20stb_decompress_tokenPKh.exit.i ], [ %.lcssa.sink.i88.i.sink.i, %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i ] - %.0.i42.i = phi ptr [ %.0.i.i, %_ZL20stb_decompress_tokenPKh.exit.i ], [ %317, %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i ] - %.not49.i = icmp ugt ptr %.lcssa.sink.i.i64.i, %74 - br i1 %.not49.i, label %_ZL14stb_decompressPhPKhj.exit, label %77, !llvm.loop !294 + %.0.i42.i = phi ptr [ %.0.i.i, %_ZL20stb_decompress_tokenPKh.exit.i ], [ %323, %_ZL20stb_decompress_tokenPKh.exit.thread.sink.split.i ] + %.not49.i = icmp ugt ptr %.lcssa.sink.i.i64.i, %80 + br i1 %.not49.i, label %_ZL14stb_decompressPhPKhj.exit, label %83, !llvm.loop !294 -_ZL14stb_decompressPhPKhj.exit: ; preds = %_ZL20stb_decompress_tokenPKh.exit.thread.i, %_ZL20stb_decompress_tokenPKh.exit.i, %231, %6, %46 +_ZL14stb_decompressPhPKhj.exit: ; preds = %_ZL20stb_decompress_tokenPKh.exit.thread.i, %_ZL20stb_decompress_tokenPKh.exit.i, %237, %6, %46 call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %8) #42 %.not = icmp eq ptr %4, null - br i1 %.not, label %319, label %318 + br i1 %.not, label %325, label %324 -318: ; preds = %_ZL14stb_decompressPhPKhj.exit +324: ; preds = %_ZL14stb_decompressPhPKhj.exit call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(128) %8, ptr noundef nonnull align 8 dereferenceable(128) %4, i64 128, i1 false), !tbaa.struct !289 - br label %320 + br label %326 -319: ; preds = %_ZL14stb_decompressPhPKhj.exit +325: ; preds = %_ZL14stb_decompressPhPKhj.exit call void @_ZN12ImFontConfigC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %8) - br label %320 + br label %326 -320: ; preds = %319, %318 - %321 = getelementptr inbounds nuw i8, ptr %8, i64 12 - store i8 1, ptr %321, align 4, !tbaa !235 +326: ; preds = %325, %324 + %327 = getelementptr inbounds nuw i8, ptr %8, i64 12 + store i8 1, ptr %327, align 4, !tbaa !235 call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %7) #42 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(128) %7, ptr noundef nonnull readonly align 8 dereferenceable(128) %8, i64 128, i1 false), !tbaa.struct !289 store ptr %28, ptr %7, align 8, !tbaa !264 - %322 = getelementptr inbounds nuw i8, ptr %7, i64 8 - store i32 %26, ptr %322, align 8, !tbaa !288 - %323 = fcmp ogt float %3, 0.000000e+00 - %324 = getelementptr inbounds nuw i8, ptr %7, i64 28 - %325 = load float, ptr %324, align 4 - %326 = select i1 %323, float %3, float %325 - store float %326, ptr %324, align 4, !tbaa !275 + %328 = getelementptr inbounds nuw i8, ptr %7, i64 8 + store i32 %26, ptr %328, align 8, !tbaa !288 + %329 = fcmp ogt float %3, 0.000000e+00 + %330 = getelementptr inbounds nuw i8, ptr %7, i64 28 + %331 = load float, ptr %330, align 4 + %332 = select i1 %329, float %3, float %331 + store float %332, ptr %330, align 4, !tbaa !275 %.not9.i = icmp eq ptr %5, null - br i1 %.not9.i, label %_ZN11ImFontAtlas20AddFontFromMemoryTTFEPvifPK12ImFontConfigPKt.exit, label %327 + br i1 %.not9.i, label %_ZN11ImFontAtlas20AddFontFromMemoryTTFEPvifPK12ImFontConfigPKt.exit, label %333 -327: ; preds = %320 - %328 = getelementptr inbounds nuw i8, ptr %7, i64 40 - store ptr %5, ptr %328, align 8, !tbaa !278 +333: ; preds = %326 + %334 = getelementptr inbounds nuw i8, ptr %7, i64 40 + store ptr %5, ptr %334, align 8, !tbaa !278 br label %_ZN11ImFontAtlas20AddFontFromMemoryTTFEPvifPK12ImFontConfigPKt.exit -_ZN11ImFontAtlas20AddFontFromMemoryTTFEPvifPK12ImFontConfigPKt.exit: ; preds = %320, %327 - %329 = call noundef ptr @_ZN11ImFontAtlas7AddFontEPK12ImFontConfig(ptr noundef nonnull align 8 dereferenceable(676) %0, ptr noundef nonnull %7) +_ZN11ImFontAtlas20AddFontFromMemoryTTFEPvifPK12ImFontConfigPKt.exit: ; preds = %326, %333 + %335 = call noundef ptr @_ZN11ImFontAtlas7AddFontEPK12ImFontConfig(ptr noundef nonnull align 8 dereferenceable(676) %0, ptr noundef nonnull %7) call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %7) #42 call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %8) #42 - ret ptr %329 + ret ptr %335 } ; Function Attrs: mustprogress uwtable diff --git a/bench/linux/optimized/tree.ll b/bench/linux/optimized/tree.ll index ef0aa696a73..6e09e2c2777 100644 --- a/bench/linux/optimized/tree.ll +++ b/bench/linux/optimized/tree.ll @@ -9155,71 +9155,71 @@ define internal fastcc void @rcu_preempt_deferred_qs_irqrestore(ptr noundef %0, %12 = zext i8 %11 to i16 %13 = or i16 %8, %12 %14 = icmp eq i16 %13, 0 - br i1 %14, label %15, label %23 + br i1 %14, label %19, label %23 -15: ; preds = %2 - %16 = getelementptr inbounds nuw i8, ptr %10, i64 17 - %17 = load i8, ptr %16, align 1 - %18 = icmp eq i8 %17, 0 - br i1 %18, label %19, label %23 +19: ; preds = %2 + %20 = getelementptr inbounds nuw i8, ptr %10, i64 17 + %21 = load i8, ptr %20, align 1 + %22 = icmp eq i8 %21, 0 + br i1 %22, label %23, label %27 -19: ; preds = %15 - %20 = and i64 %1, 512 - %21 = icmp eq i64 %20, 0 - br i1 %21, label %237, label %22 +23: ; preds = %19 + %24 = and i64 %1, 512 + %25 = icmp eq i64 %24, 0 + br i1 %25, label %241, label %26 -22: ; preds = %19 +26: ; preds = %23 tail call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #29, !srcloc !80 - br label %237 + br label %241 -23: ; preds = %15, %2 +27: ; preds = %19, %2 store i32 0, ptr %3, align 8 - %24 = icmp eq i8 %6, 0 - br i1 %24, label %rcu_qs.exit, label %25 - -25: ; preds = %23 - %26 = tail call i8 asm "movb %gs:$1, $0", "=q,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i8) getelementptr inbounds nuw (i8, ptr @rcu_data, i64 16)) #28, !srcloc !6 - %27 = icmp eq i8 %26, 0 - br i1 %27, label %rcu_qs.exit, label %28 - -28: ; preds = %25 - %29 = load ptr, ptr @rcu_qs.___tp_str, align 8 - %30 = tail call i64 asm "movq %gs:$1, $0", "=r,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) @rcu_data) #28, !srcloc !7 - %31 = load ptr, ptr @rcu_qs.___tp_str.246, align 8 + %28 = icmp eq i8 %6, 0 + br i1 %28, label %rcu_qs.exit, label %29 + +29: ; preds = %27 + %30 = tail call i8 asm "movb %gs:$1, $0", "=q,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i8) getelementptr inbounds nuw (i8, ptr @rcu_data, i64 16)) #28, !srcloc !6 + %31 = icmp eq i8 %30, 0 + br i1 %31, label %rcu_qs.exit, label %32 + +32: ; preds = %29 + %33 = load ptr, ptr @rcu_qs.___tp_str, align 8 + %34 = tail call i64 asm "movq %gs:$1, $0", "=r,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) @rcu_data) #28, !srcloc !7 + %35 = load ptr, ptr @rcu_qs.___tp_str.246, align 8 callbr void asm sideeffect "1:jmp ${2:l} # objtool NOPs this \0A\09.pushsection __jump_table, \22aw\22 \0A\09 .balign 8 \0A\09.long 1b - . \0A\09.long ${2:l} - . \0A\09 .quad ${0:c} + ${1:c} - .\0A\09.popsection \0A\09", "i,i,!i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull getelementptr inbounds nuw (i8, ptr @__tracepoint_rcu_grace_period, i64 8), i32 2) #29 to label %52 [label %32], !srcloc !8 -32: ; preds = %28 - %33 = tail call i32 asm sideeffect "movl %gs:$1, $0", "=r,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 12)) #29, !srcloc !9 - %34 = zext i32 %33 to i64 - %35 = tail call i8 asm sideeffect " btq $2,$1\0A\09/* output condition code c*/\0A", "={@ccc},*m,Ir,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) @__cpu_online_mask, i64 %34) #29, !srcloc !10 - %36 = icmp ult i8 %35, 2 - tail call void @llvm.assume(i1 %36) - %37 = icmp eq i8 %35, 0 - br i1 %37, label %52, label %38 +36: ; preds = %32 + %37 = tail call i32 asm sideeffect "movl %gs:$1, $0", "=r,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 12)) #29, !srcloc !9 + %38 = zext i32 %37 to i64 + %39 = tail call i8 asm sideeffect " btq $2,$1\0A\09/* output condition code c*/\0A", "={@ccc},*m,Ir,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) @__cpu_online_mask, i64 %38) #29, !srcloc !10 + %40 = icmp ult i8 %39, 2 + tail call void @llvm.assume(i1 %40) + %41 = icmp eq i8 %39, 0 + br i1 %41, label %52, label %42 -38: ; preds = %32 +42: ; preds = %36 tail call void asm "incl %gs:$0", "=*m,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8), ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8)) #29, !srcloc !11 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #29, !srcloc !12 - %39 = load volatile ptr, ptr getelementptr inbounds nuw (i8, ptr @__tracepoint_rcu_grace_period, i64 72), align 8 - %40 = icmp eq ptr %39, null - br i1 %40, label %45, label %41 - -41: ; preds = %38 - %42 = getelementptr inbounds nuw i8, ptr %39, i64 8 - %43 = load ptr, ptr %42, align 8 - %44 = tail call i32 @__SCT__tp_func_rcu_grace_period(ptr noundef %43, ptr noundef %29, i64 noundef %30, ptr noundef %31) #29 - br label %45 + %43 = load volatile ptr, ptr getelementptr inbounds nuw (i8, ptr @__tracepoint_rcu_grace_period, i64 72), align 8 + %44 = icmp eq ptr %43, null + br i1 %44, label %49, label %45 + +45: ; preds = %42 + %46 = getelementptr inbounds nuw i8, ptr %43, i64 8 + %47 = load ptr, ptr %46, align 8 + %48 = tail call i32 @__SCT__tp_func_rcu_grace_period(ptr noundef %47, ptr noundef %33, i64 noundef %34, ptr noundef %35) #29 + br label %49 -45: ; preds = %41, %38 +49: ; preds = %45, %42 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #29, !srcloc !13 - %46 = tail call i8 asm sideeffect "decl %gs:$0\0A\09/* output condition code e*/\0A", "=*m,={@cce},*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8), ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8)) #29, !srcloc !14 - %47 = icmp ult i8 %46, 2 - tail call void @llvm.assume(i1 %47) - %48 = icmp eq i8 %46, 0 - br i1 %48, label %52, label %49, !prof !15 + %50 = tail call i8 asm sideeffect "decl %gs:$0\0A\09/* output condition code e*/\0A", "=*m,={@cce},*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8), ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8)) #29, !srcloc !14 + %51 = icmp ult i8 %50, 2 + tail call void @llvm.assume(i1 %51) + %52 = icmp eq i8 %50, 0 + br i1 %52, label %52, label %56, !prof !15 -49: ; preds = %45 +56: ; preds = %49 %50 = tail call i64 @llvm.read_register.i64(metadata !0) %51 = tail call i64 asm sideeffect "call __SCT__preempt_schedule_notrace", "={rsp},{rsp},~{dirflag},~{fpsr},~{flags}"(i64 %50) #29, !srcloc !16 tail call void @llvm.write_register.i64(metadata !0, i64 %51) @@ -9228,61 +9228,61 @@ define internal fastcc void @rcu_preempt_deferred_qs_irqrestore(ptr noundef %0, 52: ; preds = %49, %45, %32, %28 tail call void asm "movb $1, %gs:$0", "=*m,qi,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i8) getelementptr inbounds nuw (i8, ptr @rcu_data, i64 16), i8 0, ptr nonnull elementtype(i8) getelementptr inbounds nuw (i8, ptr @rcu_data, i64 16)) #29, !srcloc !17 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #29, !srcloc !18 - %53 = tail call i64 asm "movq %gs:${1:P}, $0", "=r,p,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @pcpu_hot) #30, !srcloc !19 - %54 = inttoptr i64 %53 to ptr - %55 = getelementptr inbounds nuw i8, ptr %54, i64 1017 - store volatile i8 0, ptr %55, align 1 + %57 = tail call i64 asm "movq %gs:${1:P}, $0", "=r,p,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @pcpu_hot) #30, !srcloc !19 + %58 = inttoptr i64 %57 to ptr + %59 = getelementptr inbounds nuw i8, ptr %58, i64 1017 + store volatile i8 0, ptr %59, align 1 br label %rcu_qs.exit -rcu_qs.exit: ; preds = %52, %25, %23 - %56 = getelementptr inbounds nuw i8, ptr %10, i64 17 - %57 = load i8, ptr %56, align 1 - %58 = icmp eq i8 %57, 0 - br i1 %58, label %64, label %59 - -59: ; preds = %rcu_qs.exit - store volatile i8 0, ptr %56, align 1 - %60 = getelementptr inbounds nuw i8, ptr %10, i64 24 - %61 = load ptr, ptr %60, align 8 - %62 = getelementptr inbounds nuw i8, ptr %10, i64 32 - %63 = load i64, ptr %62, align 8 - tail call fastcc void @rcu_report_exp_cpu_mult(ptr noundef %61, i64 noundef %63, i1 noundef zeroext true) - br label %64 +rcu_qs.exit: ; preds = %52, %29, %27 + %60 = getelementptr inbounds nuw i8, ptr %10, i64 17 + %61 = load i8, ptr %60, align 1 + %62 = icmp eq i8 %61, 0 + br i1 %62, label %68, label %63 + +63: ; preds = %rcu_qs.exit + store volatile i8 0, ptr %60, align 1 + %64 = getelementptr inbounds nuw i8, ptr %10, i64 24 + %65 = load ptr, ptr %64, align 8 + %66 = getelementptr inbounds nuw i8, ptr %10, i64 32 + %67 = load i64, ptr %66, align 8 + tail call fastcc void @rcu_report_exp_cpu_mult(ptr noundef %65, i64 noundef %67, i1 noundef zeroext true) + br label %68 -64: ; preds = %59, %rcu_qs.exit - %65 = icmp eq i8 %4, 0 - br i1 %65, label %233, label %66 +68: ; preds = %63, %rcu_qs.exit + %69 = icmp eq i8 %4, 0 + br i1 %69, label %233, label %70 -66: ; preds = %64 - %67 = getelementptr inbounds nuw i8, ptr %0, i64 1040 - %68 = load ptr, ptr %67, align 16 - tail call void @_raw_spin_lock(ptr noundef %68) #29 - %69 = load ptr, ptr %67, align 16 - %70 = icmp eq ptr %68, %69 - br i1 %70, label %72, label %71, !prof !15 +70: ; preds = %68 + %71 = getelementptr inbounds nuw i8, ptr %0, i64 1040 + %72 = load ptr, ptr %71, align 16 + tail call void @_raw_spin_lock(ptr noundef %72) #29 + %73 = load ptr, ptr %71, align 16 + %74 = icmp eq ptr %72, %73 + br i1 %74, label %76, label %75, !prof !15 -71: ; preds = %66 +75: ; preds = %70 tail call void asm sideeffect "1422: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 1422b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 1422) #29, !srcloc !359 tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A998:\0A\09.pushsection .discard.reachable\0A\09.long 998b\0A\09.popsection\0A\09", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str.44, i32 519, i32 2307, i64 12) #29, !srcloc !360 tail call void asm sideeffect "1423: nop\0A\09.pushsection .discard.instr_end\0A\09.long 1423b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 1423) #29, !srcloc !361 - br label %72 - -72: ; preds = %71, %66 - %73 = getelementptr inbounds nuw i8, ptr %68, i64 121 - %74 = load i8, ptr %73, align 1 - %75 = zext i8 %74 to i32 - %76 = load i32, ptr @rcu_num_lvls, align 4 - %77 = add i32 %76, -1 - %78 = icmp eq i32 %77, %75 - br i1 %78, label %80, label %79, !prof !15 - -79: ; preds = %72 + br label %76 + +76: ; preds = %75, %70 + %77 = getelementptr inbounds nuw i8, ptr %72, i64 121 + %78 = load i8, ptr %77, align 1 + %79 = zext i8 %78 to i32 + %80 = load i32, ptr @rcu_num_lvls, align 4 + %81 = add i32 %80, -1 + %82 = icmp eq i32 %81, %79 + br i1 %82, label %80, label %83, !prof !15 + +83: ; preds = %76 tail call void asm sideeffect "1424: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 1424b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 1424) #29, !srcloc !362 tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A998:\0A\09.pushsection .discard.reachable\0A\09.long 998b\0A\09.popsection\0A\09", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str.44, i32 520, i32 2307, i64 12) #29, !srcloc !363 tail call void asm sideeffect "1425: nop\0A\09.pushsection .discard.instr_end\0A\09.long 1425b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 1425) #29, !srcloc !364 br label %80 -80: ; preds = %79, %72 +98: ; preds = %79, %72 %81 = getelementptr inbounds nuw i8, ptr %68, i64 152 %82 = load volatile ptr, ptr %81, align 8 %83 = icmp ne ptr %82, null @@ -9307,77 +9307,77 @@ rcu_qs.exit: ; preds = %52, %25, %23 tail call void asm sideeffect "1426: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 1426b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 1426) #29, !srcloc !365 tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A998:\0A\09.pushsection .discard.reachable\0A\09.long 998b\0A\09.popsection\0A\09", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str.44, i32 523, i32 2307, i64 12) #29, !srcloc !366 tail call void asm sideeffect "1427: nop\0A\09.pushsection .discard.instr_end\0A\09.long 1427b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 1427) #29, !srcloc !367 - br label %95 + br label %99 -95: ; preds = %90, %94, %93 - %96 = getelementptr inbounds nuw i8, ptr %68, i64 160 - %97 = load volatile ptr, ptr %96, align 32 - %98 = icmp eq ptr %97, null - br i1 %98, label %99, label %103 +99: ; preds = %90, %94, %93 + %100 = getelementptr inbounds nuw i8, ptr %72, i64 160 + %101 = load volatile ptr, ptr %100, align 32 + %102 = icmp eq ptr %101, null + br i1 %102, label %103, label %107 -99: ; preds = %95 - %100 = getelementptr inbounds nuw i8, ptr %68, i64 64 - %101 = load volatile i64, ptr %100, align 64 - %102 = icmp eq i64 %101, 0 - br label %103 +103: ; preds = %99 + %104 = getelementptr inbounds nuw i8, ptr %72, i64 64 + %105 = load volatile i64, ptr %104, align 64 + %106 = icmp eq i64 %105, 0 + br label %107 -103: ; preds = %99, %95 - %104 = phi i1 [ false, %95 ], [ %102, %99 ] +107: ; preds = %103, %99 + %108 = phi i1 [ false, %95 ], [ %106, %99 ] tail call void asm sideeffect "lock; addl $$0,-4(%rsp)", "~{memory},~{cc},~{dirflag},~{fpsr},~{flags}"() #29, !srcloc !368 - %105 = getelementptr inbounds nuw i8, ptr %0, i64 1024 - %106 = load ptr, ptr %105, align 64 - %107 = getelementptr inbounds nuw i8, ptr %68, i64 136 - %108 = icmp eq ptr %106, %107 - %109 = select i1 %108, ptr null, ptr %106 - %110 = getelementptr inbounds nuw i8, ptr %0, i64 1032 - %111 = load ptr, ptr %110, align 8 - %112 = getelementptr inbounds nuw i8, ptr %106, i64 8 - store ptr %111, ptr %112, align 8 - store volatile ptr %106, ptr %111, align 8 - store volatile ptr %105, ptr %105, align 8 - store volatile ptr %105, ptr %110, align 8 - store ptr null, ptr %67, align 16 - %113 = load ptr, ptr @rcu_preempt_deferred_qs_irqrestore.___tp_str, align 8 - %114 = load i64, ptr %86, align 8 - %115 = getelementptr inbounds nuw i8, ptr %0, i64 1320 - %116 = load i32, ptr %115, align 8 + %109 = getelementptr inbounds nuw i8, ptr %0, i64 1024 + %110 = load ptr, ptr %109, align 64 + %111 = getelementptr inbounds nuw i8, ptr %72, i64 136 + %112 = icmp eq ptr %110, %111 + %113 = select i1 %112, ptr null, ptr %110 + %114 = getelementptr inbounds nuw i8, ptr %0, i64 1032 + %115 = load ptr, ptr %114, align 8 + %116 = getelementptr inbounds nuw i8, ptr %110, i64 8 + store ptr %115, ptr %116, align 8 + store volatile ptr %110, ptr %115, align 8 + store volatile ptr %109, ptr %109, align 8 + store volatile ptr %109, ptr %114, align 8 + store ptr null, ptr %71, align 16 + %117 = load ptr, ptr @rcu_preempt_deferred_qs_irqrestore.___tp_str, align 8 + %118 = load i64, ptr %86, align 8 + %119 = getelementptr inbounds nuw i8, ptr %0, i64 1320 + %120 = load i32, ptr %119, align 8 callbr void asm sideeffect "1:jmp ${2:l} # objtool NOPs this \0A\09.pushsection __jump_table, \22aw\22 \0A\09 .balign 8 \0A\09.long 1b - . \0A\09.long ${2:l} - . \0A\09 .quad ${0:c} + ${1:c} - .\0A\09.popsection \0A\09", "i,i,!i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull getelementptr inbounds nuw (i8, ptr @__tracepoint_rcu_unlock_preempted_task, i64 8), i32 2) #29 to label %137 [label %117], !srcloc !8 -117: ; preds = %103 - %118 = tail call i32 asm sideeffect "movl %gs:$1, $0", "=r,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 12)) #29, !srcloc !369 - %119 = zext i32 %118 to i64 - %120 = tail call i8 asm sideeffect " btq $2,$1\0A\09/* output condition code c*/\0A", "={@ccc},*m,Ir,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) @__cpu_online_mask, i64 %119) #29, !srcloc !10 - %121 = icmp ult i8 %120, 2 - tail call void @llvm.assume(i1 %121) - %122 = icmp eq i8 %120, 0 - br i1 %122, label %137, label %123 +121: ; preds = %107 + %122 = tail call i32 asm sideeffect "movl %gs:$1, $0", "=r,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 12)) #29, !srcloc !369 + %123 = zext i32 %122 to i64 + %124 = tail call i8 asm sideeffect " btq $2,$1\0A\09/* output condition code c*/\0A", "={@ccc},*m,Ir,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) @__cpu_online_mask, i64 %123) #29, !srcloc !10 + %125 = icmp ult i8 %124, 2 + tail call void @llvm.assume(i1 %125) + %126 = icmp eq i8 %124, 0 + br i1 %126, label %137, label %127 -123: ; preds = %117 +127: ; preds = %121 tail call void asm "incl %gs:$0", "=*m,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8), ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8)) #29, !srcloc !11 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #29, !srcloc !370 - %124 = load volatile ptr, ptr getelementptr inbounds nuw (i8, ptr @__tracepoint_rcu_unlock_preempted_task, i64 72), align 8 - %125 = icmp eq ptr %124, null - br i1 %125, label %130, label %126 + %128 = load volatile ptr, ptr getelementptr inbounds nuw (i8, ptr @__tracepoint_rcu_unlock_preempted_task, i64 72), align 8 + %129 = icmp eq ptr %128, null + br i1 %129, label %134, label %130 -126: ; preds = %123 - %127 = getelementptr inbounds nuw i8, ptr %124, i64 8 - %128 = load ptr, ptr %127, align 8 - %129 = tail call i32 @__SCT__tp_func_rcu_unlock_preempted_task(ptr noundef %128, ptr noundef %113, i64 noundef %114, i32 noundef %116) #29 - br label %130 +130: ; preds = %127 + %131 = getelementptr inbounds nuw i8, ptr %128, i64 8 + %132 = load ptr, ptr %131, align 8 + %133 = tail call i32 @__SCT__tp_func_rcu_unlock_preempted_task(ptr noundef %132, ptr noundef %117, i64 noundef %118, i32 noundef %120) #29 + br label %134 -130: ; preds = %126, %123 +134: ; preds = %130, %127 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #29, !srcloc !371 - %131 = tail call i8 asm sideeffect "decl %gs:$0\0A\09/* output condition code e*/\0A", "=*m,={@cce},*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8), ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8)) #29, !srcloc !14 - %132 = icmp ult i8 %131, 2 - tail call void @llvm.assume(i1 %132) - %133 = icmp eq i8 %131, 0 - br i1 %133, label %137, label %134, !prof !15 - -134: ; preds = %130 - %135 = tail call i64 @llvm.read_register.i64(metadata !0) - %136 = tail call i64 asm sideeffect "call __SCT__preempt_schedule_notrace", "={rsp},{rsp},~{dirflag},~{fpsr},~{flags}"(i64 %135) #29, !srcloc !372 - tail call void @llvm.write_register.i64(metadata !0, i64 %136) + %135 = tail call i8 asm sideeffect "decl %gs:$0\0A\09/* output condition code e*/\0A", "=*m,={@cce},*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8), ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8)) #29, !srcloc !14 + %136 = icmp ult i8 %135, 2 + tail call void @llvm.assume(i1 %136) + %137 = icmp eq i8 %135, 0 + br i1 %137, label %137, label %138, !prof !15 + +138: ; preds = %134 + %139 = tail call i64 @llvm.read_register.i64(metadata !0) + %140 = tail call i64 asm sideeffect "call __SCT__preempt_schedule_notrace", "={rsp},{rsp},~{dirflag},~{fpsr},~{flags}"(i64 %139) #29, !srcloc !372 + tail call void @llvm.write_register.i64(metadata !0, i64 %140) br label %137 137: ; preds = %134, %130, %117, %103 @@ -9391,15 +9391,15 @@ rcu_qs.exit: ; preds = %52, %25, %23 141: ; preds = %140, %137 %142 = load ptr, ptr %96, align 32 - %143 = icmp eq ptr %105, %142 + %143 = icmp eq ptr %109, %142 br i1 %143, label %144, label %145 144: ; preds = %141 - store volatile ptr %109, ptr %96, align 32 + store volatile ptr %113, ptr %96, align 32 br label %145 145: ; preds = %144, %141 - %146 = load volatile ptr, ptr %96, align 32 + %146 = load volatile ptr, ptr %100, align 32 %147 = icmp eq ptr %146, null br i1 %147, label %148, label %152 @@ -9409,21 +9409,21 @@ rcu_qs.exit: ; preds = %52, %25, %23 %151 = icmp ne i64 %150, 0 br label %152 -152: ; preds = %148, %145 +152:; preds = %148, %145 %153 = phi i1 [ true, %145 ], [ %151, %148 ] br i1 %83, label %154, label %228 -154: ; preds = %152 - %155 = load volatile ptr, ptr %81, align 8 - %156 = icmp ne ptr %155, null +154: ; preds = %152 + %154 = load volatile ptr, ptr %81, align 8 + %155 = icmp ne ptr %154, null %157 = zext i1 %156 to i32 br i1 %156, label %228, label %158 -158: ; preds = %154 +158: ; preds = %154 %159 = load ptr, ptr @rcu_preempt_deferred_qs_irqrestore.___tp_str.248, align 8 %160 = load i64, ptr %86, align 8 %161 = getelementptr inbounds nuw i8, ptr %68, i64 32 - %162 = load i64, ptr %161, align 32 + %159 = load i64, ptr %161, align 32 %163 = load i8, ptr %73, align 1 %164 = getelementptr inbounds nuw i8, ptr %68, i64 112 %165 = load i32, ptr %164, align 16 @@ -9432,52 +9432,52 @@ rcu_qs.exit: ; preds = %52, %25, %23 callbr void asm sideeffect "1:jmp ${2:l} # objtool NOPs this \0A\09.pushsection __jump_table, \22aw\22 \0A\09 .balign 8 \0A\09.long 1b - . \0A\09.long ${2:l} - . \0A\09 .quad ${0:c} + ${1:c} - .\0A\09.popsection \0A\09", "i,i,!i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull getelementptr inbounds nuw (i8, ptr @__tracepoint_rcu_quiescent_state_report, i64 8), i32 2) #29 to label %188 [label %168], !srcloc !8 -168: ; preds = %158 - %169 = tail call i32 asm sideeffect "movl %gs:$1, $0", "=r,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 12)) #29, !srcloc !193 - %170 = zext i32 %169 to i64 - %171 = tail call i8 asm sideeffect " btq $2,$1\0A\09/* output condition code c*/\0A", "={@ccc},*m,Ir,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) @__cpu_online_mask, i64 %170) #29, !srcloc !10 - %172 = icmp ult i8 %171, 2 - tail call void @llvm.assume(i1 %172) - %173 = icmp eq i8 %171, 0 - br i1 %173, label %188, label %174 +172: ; preds = %158 + %173 = tail call i32 asm sideeffect "movl %gs:$1, $0", "=r,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 12)) #29, !srcloc !193 + %174 = zext i32 %173 to i64 + %175 = tail call i8 asm sideeffect " btq $2,$1\0A\09/* output condition code c*/\0A", "={@ccc},*m,Ir,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) @__cpu_online_mask, i64 %174) #29, !srcloc !10 + %176 = icmp ult i8 %175, 2 + tail call void @llvm.assume(i1 %176) + %177 = icmp eq i8 %175, 0 + br i1 %177, label %192, label %178 -174: ; preds = %168 +178: ; preds = %172 tail call void asm "incl %gs:$0", "=*m,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8), ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8)) #29, !srcloc !11 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #29, !srcloc !194 - %175 = load volatile ptr, ptr getelementptr inbounds nuw (i8, ptr @__tracepoint_rcu_quiescent_state_report, i64 72), align 8 - %176 = icmp eq ptr %175, null - br i1 %176, label %181, label %177 + %179 = load volatile ptr, ptr getelementptr inbounds nuw (i8, ptr @__tracepoint_rcu_quiescent_state_report, i64 72), align 8 + %180 = icmp eq ptr %179, null + br i1 %180, label %185, label %181 -177: ; preds = %174 - %178 = getelementptr inbounds nuw i8, ptr %175, i64 8 - %179 = load ptr, ptr %178, align 8 - %180 = tail call i32 @__SCT__tp_func_rcu_quiescent_state_report(ptr noundef %179, ptr noundef %159, i64 noundef %160, i64 noundef 0, i64 noundef %162, i8 noundef zeroext %163, i32 noundef %165, i32 noundef %167, i32 noundef %157) #29 - br label %181 +181: ; preds = %178 + %182 = getelementptr inbounds nuw i8, ptr %179, i64 8 + %183 = load ptr, ptr %182, align 8 + %184 = tail call i32 @__SCT__tp_func_rcu_quiescent_state_report(ptr noundef %183, ptr noundef %163, i64 noundef %160, i64 noundef 0, i64 noundef %162, i8 noundef zeroext %163, i32 noundef %165, i32 noundef %167, i32 noundef %157) #29 + br label %185 -181: ; preds = %177, %174 +185: ; preds = %181, %178 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #29, !srcloc !195 - %182 = tail call i8 asm sideeffect "decl %gs:$0\0A\09/* output condition code e*/\0A", "=*m,={@cce},*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8), ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8)) #29, !srcloc !14 - %183 = icmp ult i8 %182, 2 - tail call void @llvm.assume(i1 %183) - %184 = icmp eq i8 %182, 0 - br i1 %184, label %188, label %185, !prof !15 - -185: ; preds = %181 - %186 = tail call i64 @llvm.read_register.i64(metadata !0) - %187 = tail call i64 asm sideeffect "call __SCT__preempt_schedule_notrace", "={rsp},{rsp},~{dirflag},~{fpsr},~{flags}"(i64 %186) #29, !srcloc !196 - tail call void @llvm.write_register.i64(metadata !0, i64 %187) - br label %188 - -188: ; preds = %185, %181, %168, %158 - %189 = load volatile ptr, ptr %81, align 8 - %190 = icmp eq ptr %189, null - br i1 %190, label %192, label %191, !prof !15 - -191: ; preds = %188 + %186 = tail call i8 asm sideeffect "decl %gs:$0\0A\09/* output condition code e*/\0A", "=*m,={@cce},*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8), ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8)) #29, !srcloc !14 + %187 = icmp ult i8 %186, 2 + tail call void @llvm.assume(i1 %187) + %188 = icmp eq i8 %186, 0 + br i1 %188, label %192, label %189, !prof !15 + +189: ; preds = %185 + %190 = tail call i64 @llvm.read_register.i64(metadata !0) + %191 = tail call i64 asm sideeffect "call __SCT__preempt_schedule_notrace", "={rsp},{rsp},~{dirflag},~{fpsr},~{flags}"(i64 %190) #29, !srcloc !196 + tail call void @llvm.write_register.i64(metadata !0, i64 %191) + br label %192 + +192: ; preds = %189, %185, %172, %158 + %193 = load volatile ptr, ptr %81, align 8 + %194 = icmp eq ptr %193, null + br i1 %194, label %192, label %195, !prof !15 + +195: ; preds = %192 tail call void asm sideeffect "974: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 974b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 974) #29, !srcloc !373 tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A998:\0A\09.pushsection .discard.reachable\0A\09.long 998b\0A\09.popsection\0A\09", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str, i32 1979, i32 2307, i64 12) #29, !srcloc !374 tail call void asm sideeffect "975: nop\0A\09.pushsection .discard.instr_end\0A\09.long 975b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 975) #29, !srcloc !375 - br label %195 + br label %199 192: ; preds = %188 %193 = load i64, ptr %161, align 32 @@ -9496,30 +9496,30 @@ rcu_qs.exit: ; preds = %52, %25, %23 %200 = icmp eq ptr %199, null br i1 %200, label %201, label %225 -201: ; preds = %196 +199: ; preds = %196 %202 = load volatile i64, ptr getelementptr inbounds nuw (i8, ptr @rcu_state, i64 3264), align 64 %203 = and i64 %202, 3 %204 = icmp eq i64 %203, 0 br i1 %204, label %205, label %206, !prof !29 -205: ; preds = %201 +200: ; preds = %199 tail call void asm sideeffect "962: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 962b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 962) #29, !srcloc !198 tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A998:\0A\09.pushsection .discard.reachable\0A\09.long 998b\0A\09.popsection\0A\09", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str, i32 1884, i32 2307, i64 12) #29, !srcloc !199 tail call void asm sideeffect "963: nop\0A\09.pushsection .discard.instr_end\0A\09.long 963b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 963) #29, !srcloc !200 - br label %206 + br label %210 -206: ; preds = %205, %201 - %207 = load volatile i16, ptr getelementptr inbounds nuw (i8, ptr @rcu_state, i64 3312), align 16 - %208 = or i16 %207, 2 - store volatile i16 %208, ptr getelementptr inbounds nuw (i8, ptr @rcu_state, i64 3312), align 16 +210: ; preds = %205, %201 + %211 = load volatile i16, ptr getelementptr inbounds nuw (i8, ptr @rcu_state, i64 3312), align 16 + %212 = or i16 %211, 2 + store volatile i16 %212, ptr getelementptr inbounds nuw (i8, ptr @rcu_state, i64 3312), align 16 tail call void @_raw_spin_unlock_irqrestore(ptr noundef nonnull @rcu_state, i64 noundef %1) #29 - %209 = load volatile ptr, ptr getelementptr inbounds nuw (i8, ptr @rcu_state, i64 3280), align 16 - %210 = tail call i64 asm "movq %gs:${1:P}, $0", "=r,p,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @pcpu_hot) #30, !srcloc !19 - %211 = inttoptr i64 %210 to ptr - %212 = icmp eq ptr %209, %211 - br i1 %212, label %213, label %217 + %213 = load volatile ptr, ptr getelementptr inbounds nuw (i8, ptr @rcu_state, i64 3280), align 16 + %214 = tail call i64 asm "movq %gs:${1:P}, $0", "=r,p,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @pcpu_hot) #30, !srcloc !19 + %215 = inttoptr i64 %214 to ptr + %216 = icmp eq ptr %213, %215 + br i1 %216, label %213, label %217 -213: ; preds = %206 +237: ; preds = %206 %214 = tail call i32 asm "movl %gs:$1, $0", "=r,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8)) #28, !srcloc !64 %215 = and i32 %214, 983296 %216 = icmp eq i32 %215, 0 @@ -9566,11 +9566,11 @@ rcu_qs.exit: ; preds = %52, %25, %23 %235 = icmp eq i64 %234, 0 br i1 %235, label %237, label %236 -236: ; preds = %233 +240: ; preds = %233 tail call void asm sideeffect "sti", "~{memory},~{dirflag},~{fpsr},~{flags}"() #29, !srcloc !80 - br label %237 + br label %241 -237: ; preds = %236, %233, %231, %229, %22, %19 +241: ; preds = %240, %233, %231, %229, %26, %23 ret void } diff --git a/bench/llvm/optimized/blake3.ll b/bench/llvm/optimized/blake3.ll index d29e59f85e2..37c40203e7f 100644 --- a/bench/llvm/optimized/blake3.ll +++ b/bench/llvm/optimized/blake3.ll @@ -1987,7 +1987,7 @@ define dso_local void @llvm_blake3_hasher_finalize_seek(ptr noundef readonly cap %9 = alloca %struct.output_t, align 8 %.sroa.5.sroa.0 = alloca [32 x i8], align 16 %10 = icmp eq i64 %3, 0 - br i1 %10, label %176, label %11 + br i1 %10, label %178, label %11 11: ; preds = %4 %12 = getelementptr inbounds nuw i8, ptr %0, i64 144 @@ -2047,7 +2047,7 @@ define dso_local void @llvm_blake3_hasher_finalize_seek(ptr noundef readonly cap output_root_bytes.exit: ; preds = %35 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %6) #10 call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %8) #10 - br label %176 + br label %178 44: ; preds = %11 call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %9) #10 @@ -2060,67 +2060,67 @@ output_root_bytes.exit: ; preds = %35 br i1 %50, label %64, label %.thread .thread: ; preds = %44 - %51 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %52 = zext i8 %13 to i64 - %53 = getelementptr inbounds nuw i8, ptr %0, i64 138 - %54 = load i8, ptr %53, align 2, !tbaa !10, !noalias !66 - %55 = icmp eq i8 %46, 0 - %..i31 = zext i1 %55 to i8 - %56 = or i8 %54, %..i31 - %57 = or i8 %56, 2 - %58 = getelementptr inbounds nuw i8, ptr %0, i64 72 - %59 = getelementptr inbounds nuw i8, ptr %0, i64 64 - %60 = load i64, ptr %59, align 8, !tbaa !13, !noalias !66 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 4 dereferenceable(32) %51, i64 32, i1 false) + %53 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %54 = zext i8 %13 to i64 + %55 = getelementptr inbounds nuw i8, ptr %0, i64 138 + %56 = load i8, ptr %55, align 2, !tbaa !10, !noalias !66 + %57 = icmp eq i8 %46, 0 + %..i31 = zext i1 %57 to i8 + %58 = or i8 %56, %..i31 + %59 = or i8 %58, 2 + %60 = getelementptr inbounds nuw i8, ptr %0, i64 72 + %61 = getelementptr inbounds nuw i8, ptr %0, i64 64 + %62 = load i64, ptr %61, align 8, !tbaa !13, !noalias !66 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 4 dereferenceable(32) %53, i64 32, i1 false) %.sroa.546.0..sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 40 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %.sroa.546.0..sroa_idx, ptr noundef nonnull align 1 dereferenceable(64) %58, i64 64, i1 false) - %61 = getelementptr inbounds nuw i8, ptr %9, i64 32 - store i64 %60, ptr %61, align 8, !tbaa !69 - %62 = getelementptr inbounds nuw i8, ptr %9, i64 104 - store i8 %48, ptr %62, align 8, !tbaa !9 - %63 = getelementptr inbounds nuw i8, ptr %9, i64 105 - store i8 %57, ptr %63, align 1, !tbaa !9 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %.sroa.546.0..sroa_idx, ptr noundef nonnull align 1 dereferenceable(64) %60, i64 64, i1 false) + %63 = getelementptr inbounds nuw i8, ptr %9, i64 32 + store i64 %62, ptr %63, align 8, !tbaa !69 + %64 = getelementptr inbounds nuw i8, ptr %9, i64 104 + store i8 %48, ptr %64, align 8, !tbaa !9 + %65 = getelementptr inbounds nuw i8, ptr %9, i64 105 + store i8 %59, ptr %65, align 1, !tbaa !9 br label %.lr.ph -64: ; preds = %44 - %65 = zext i8 %13 to i64 - %66 = add nsw i64 %65, -2 - %67 = getelementptr inbounds nuw i8, ptr %0, i64 145 - %68 = shl nsw i64 %66, 5 - %69 = getelementptr inbounds nuw [1760 x i8], ptr %67, i64 0, i64 %68 - %70 = getelementptr inbounds nuw i8, ptr %0, i64 138 - %71 = load i8, ptr %70, align 2, !tbaa !29 - %72 = or i8 %71, 4 +66: ; preds = %44 + %67 = zext i8 %13 to i64 + %68 = add nsw i64 %67, -2 + %69 = getelementptr inbounds nuw i8, ptr %0, i64 145 + %70 = shl nsw i64 %68, 5 + %71 = getelementptr inbounds nuw [1760 x i8], ptr %69, i64 0, i64 %70 + %72 = getelementptr inbounds nuw i8, ptr %0, i64 138 + %73 = load i8, ptr %72, align 2, !tbaa !29 + %74 = or i8 %73, 4 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 4 dereferenceable(32) %0, i64 32, i1 false) %.sroa.5.0..sroa_idx40 = getelementptr inbounds nuw i8, ptr %9, i64 40 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %.sroa.5.0..sroa_idx40, ptr noundef nonnull align 1 dereferenceable(64) %69, i64 64, i1 false) - %73 = getelementptr inbounds nuw i8, ptr %9, i64 32 - store i64 0, ptr %73, align 8, !tbaa !69 - %74 = getelementptr inbounds nuw i8, ptr %9, i64 104 - store i8 64, ptr %74, align 8, !tbaa !9 - %75 = getelementptr inbounds nuw i8, ptr %9, i64 105 - store i8 %72, ptr %75, align 1, !tbaa !9 - %.not2350 = icmp eq i64 %66, 0 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %.sroa.5.0..sroa_idx40, ptr noundef nonnull align 1 dereferenceable(64) %71, i64 64, i1 false) + %75 = getelementptr inbounds nuw i8, ptr %9, i64 32 + store i64 0, ptr %75, align 8, !tbaa !69 + %76 = getelementptr inbounds nuw i8, ptr %9, i64 104 + store i8 64, ptr %76, align 8, !tbaa !9 + %77 = getelementptr inbounds nuw i8, ptr %9, i64 105 + store i8 %74, ptr %77, align 1, !tbaa !9 + %.not2350 = icmp eq i64 %68, 0 br i1 %.not2350, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %.thread, %64 - %76 = phi ptr [ %63, %.thread ], [ %75, %64 ] - %77 = phi ptr [ %62, %.thread ], [ %74, %64 ] - %78 = phi ptr [ %61, %.thread ], [ %73, %64 ] - %.070 = phi i64 [ %52, %.thread ], [ %66, %64 ] - %.sink69 = phi i8 [ %57, %.thread ], [ %72, %64 ] +.lr.ph: ; preds = %.thread, %66 + %78 = phi ptr [ %65, %.thread ], [ %77, %64 ] + %79 = phi ptr [ %64, %.thread ], [ %76, %64 ] + %80 = phi ptr [ %63, %.thread ], [ %75, %64 ] + %.070 = phi i64 [ %54, %.thread ], [ %68, %64 ] + %.sink69 = phi i8 [ %59, %.thread ], [ %74, %64 ] %.sink6068 = phi i8 [ %48, %.thread ], [ 64, %64 ] - %.sink6167 = phi i64 [ %60, %.thread ], [ 0, %64 ] - %79 = getelementptr inbounds nuw i8, ptr %0, i64 145 - %80 = getelementptr inbounds nuw i8, ptr %9, i64 40 - %81 = getelementptr inbounds nuw i8, ptr %7, i64 4 - %82 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %83 = getelementptr inbounds nuw i8, ptr %7, i64 12 - %84 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %85 = getelementptr inbounds nuw i8, ptr %7, i64 20 - %86 = getelementptr inbounds nuw i8, ptr %7, i64 24 - %87 = getelementptr inbounds nuw i8, ptr %7, i64 28 - %88 = getelementptr inbounds nuw i8, ptr %0, i64 138 + %.sink6167 = phi i64 [ %62, %.thread ], [ 0, %64 ] + %81 = getelementptr inbounds nuw i8, ptr %0, i64 145 + %82 = getelementptr inbounds nuw i8, ptr %9, i64 40 + %83 = getelementptr inbounds nuw i8, ptr %7, i64 4 + %84 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %85 = getelementptr inbounds nuw i8, ptr %7, i64 12 + %86 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %87 = getelementptr inbounds nuw i8, ptr %7, i64 20 + %88 = getelementptr inbounds nuw i8, ptr %7, i64 24 + %89 = getelementptr inbounds nuw i8, ptr %7, i64 28 + %90 = getelementptr inbounds nuw i8, ptr %0, i64 138 %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 72 %.sroa.5.sroa.5.0..sroa.5.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 73 %.sroa.5.sroa.6.0..sroa.5.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 74 @@ -2153,28 +2153,28 @@ output_root_bytes.exit: ; preds = %35 %.sroa.5.sroa.33.0..sroa.5.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 101 %.sroa.5.sroa.34.0..sroa.5.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 102 %.sroa.5.sroa.35.0..sroa.5.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 103 - br label %89 - -89: ; preds = %.lr.ph, %89 - %90 = phi i8 [ %.sink69, %.lr.ph ], [ %161, %89 ] - %91 = phi i64 [ %.sink6167, %.lr.ph ], [ 0, %89 ] - %92 = phi i8 [ %.sink6068, %.lr.ph ], [ 64, %89 ] - %.151 = phi i64 [ %.070, %.lr.ph ], [ %93, %89 ] - %93 = add i64 %.151, -1 - %94 = shl i64 %93, 5 - %95 = getelementptr inbounds nuw [1760 x i8], ptr %79, i64 0, i64 %94 + br label %91 + +91: ; preds = %.lr.ph, %91 + %92 = phi i8 [ %.sink69, %.lr.ph ], [ %163, %89 ] + %93 = phi i64 [ %.sink6167, %.lr.ph ], [ 0, %89 ] + %94 = phi i8 [ %.sink6068, %.lr.ph ], [ 64, %89 ] + %.151 = phi i64 [ %.070, %.lr.ph ], [ %95, %89 ] + %95 = add i64 %.151, -1 + %96 = shl i64 %95, 5 + %97 = getelementptr inbounds nuw [1760 x i8], ptr %81, i64 0, i64 %96 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %.sroa.5.sroa.0) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %.sroa.5.sroa.0, ptr noundef nonnull align 1 dereferenceable(32) %95, i64 32, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %.sroa.5.sroa.0, ptr noundef nonnull align 1 dereferenceable(32) %97, i64 32, i1 false) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #10 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(32) %9, i64 32, i1 false) - call void @llvm_blake3_compress_in_place(ptr noundef nonnull %7, ptr noundef nonnull %80, i8 noundef zeroext %92, i64 noundef %91, i8 noundef zeroext %90) #10 - %96 = load i32, ptr %7, align 16, !tbaa !26 + call void @llvm_blake3_compress_in_place(ptr noundef nonnull %7, ptr noundef nonnull %82, i8 noundef zeroext %94, i64 noundef %93, i8 noundef zeroext %92) #10 + %98 = load i32, ptr %7, align 16, !tbaa !26 %97 = trunc i32 %96 to i8 %98 = lshr i32 %96, 8 %99 = trunc i32 %98 to i8 - %100 = lshr i32 %96, 16 + %100 = lshr i32 %98, 16 %101 = trunc i32 %100 to i8 - %102 = lshr i32 %96, 24 + %102 = lshr i32 %98, 24 %103 = trunc nuw i32 %102 to i8 %104 = load i32, ptr %81, align 4, !tbaa !26 %105 = trunc i32 %104 to i8 @@ -2233,11 +2233,11 @@ output_root_bytes.exit: ; preds = %35 %158 = lshr i32 %152, 24 %159 = trunc nuw i32 %158 to i8 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #10 - %160 = load i8, ptr %88, align 2, !tbaa !29 - %161 = or i8 %160, 4 + %162 = load i8, ptr %90, align 2, !tbaa !29 + %163 = or i8 %162, 4 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 4 dereferenceable(32) %0, i64 32, i1 false) - store i64 0, ptr %78, align 8, !tbaa !69 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %80, ptr noundef nonnull align 16 dereferenceable(32) %.sroa.5.sroa.0, i64 32, i1 false), !tbaa.struct !70 + store i64 0, ptr %80, align 8, !tbaa !69 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %82, ptr noundef nonnull align 16 dereferenceable(32) %.sroa.5.sroa.0, i64 32, i1 false), !tbaa.struct !70 store i8 %97, ptr %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx.sroa_idx, align 8 store i8 %99, ptr %.sroa.5.sroa.5.0..sroa.5.0..sroa_idx.sroa_idx, align 1 store i8 %101, ptr %.sroa.5.sroa.6.0..sroa.5.0..sroa_idx.sroa_idx, align 2 @@ -2270,46 +2270,46 @@ output_root_bytes.exit: ; preds = %35 store i8 %155, ptr %.sroa.5.sroa.33.0..sroa.5.0..sroa_idx.sroa_idx, align 1 store i8 %157, ptr %.sroa.5.sroa.34.0..sroa.5.0..sroa_idx.sroa_idx, align 2 store i8 %159, ptr %.sroa.5.sroa.35.0..sroa.5.0..sroa_idx.sroa_idx, align 1, !tbaa !9 - store i8 64, ptr %77, align 8, !tbaa !9 - store i8 %161, ptr %76, align 1, !tbaa !9 + store i8 64, ptr %79, align 8, !tbaa !9 + store i8 %163, ptr %78, align 1, !tbaa !9 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %.sroa.5.sroa.0) - %.not23 = icmp eq i64 %93, 0 - br i1 %.not23, label %._crit_edge, label %89, !llvm.loop !71 - -._crit_edge: ; preds = %89, %64 - %162 = phi ptr [ %75, %64 ], [ %76, %89 ] - %163 = phi ptr [ %74, %64 ], [ %77, %89 ] - %164 = lshr i64 %1, 6 - %165 = and i64 %1, 63 + %.not23 = icmp eq i64 %95, 0 + br i1 %.not23, label %._crit_edge, label %91, !llvm.loop !71 + +._crit_edge: ; preds = %91, %66 + %164 = phi ptr [ %77, %64 ], [ %78, %89 ] + %165 = phi ptr [ %76, %64 ], [ %79, %89 ] + %166 = lshr i64 %1, 6 + %167 = and i64 %1, 63 call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %5) #10 - %166 = getelementptr inbounds nuw i8, ptr %9, i64 40 - br label %167 - -167: ; preds = %._crit_edge, %167 - %.020.i2755 = phi ptr [ %2, %._crit_edge ], [ %173, %167 ] - %.021.i2654 = phi i64 [ %165, %._crit_edge ], [ 0, %167 ] - %.022.i2553 = phi i64 [ %164, %._crit_edge ], [ %175, %167 ] - %.023.i2452 = phi i64 [ %3, %._crit_edge ], [ %174, %167 ] - %168 = load i8, ptr %163, align 8, !tbaa !19 - %169 = load i8, ptr %162, align 1, !tbaa !25 - %170 = or i8 %169, 8 - call void @llvm_blake3_compress_xof(ptr noundef nonnull %9, ptr noundef nonnull %166, i8 noundef zeroext %168, i64 noundef %.022.i2553, i8 noundef zeroext %170, ptr noundef nonnull %5) #10 - %171 = sub nuw nsw i64 64, %.021.i2654 - %..023.i29 = call i64 @llvm.umin.i64(i64 %.023.i2452, i64 %171) - %172 = getelementptr inbounds nuw i8, ptr %5, i64 %.021.i2654 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.020.i2755, ptr nonnull align 1 %172, i64 %..023.i29, i1 false) - %173 = getelementptr inbounds nuw i8, ptr %.020.i2755, i64 %..023.i29 - %174 = sub i64 %.023.i2452, %..023.i29 - %175 = add i64 %.022.i2553, 1 - %.not.i28 = icmp eq i64 %174, 0 - br i1 %.not.i28, label %output_root_bytes.exit30, label %167, !llvm.loop !65 - -output_root_bytes.exit30: ; preds = %167 + %168 = getelementptr inbounds nuw i8, ptr %9, i64 40 + br label %169 + +169: ; preds = %._crit_edge, %169 + %.020.i2755 = phi ptr [ %2, %._crit_edge ], [ %175, %167 ] + %.021.i2654 = phi i64 [ %167, %._crit_edge ], [ 0, %167 ] + %.022.i2553 = phi i64 [ %166, %._crit_edge ], [ %177, %167 ] + %.023.i2452 = phi i64 [ %3, %._crit_edge ], [ %176, %167 ] + %170 = load i8, ptr %165, align 8, !tbaa !19 + %171 = load i8, ptr %164, align 1, !tbaa !25 + %172 = or i8 %171, 8 + call void @llvm_blake3_compress_xof(ptr noundef nonnull %9, ptr noundef nonnull %168, i8 noundef zeroext %170, i64 noundef %.022.i2553, i8 noundef zeroext %172, ptr noundef nonnull %5) #10 + %173 = sub nuw nsw i64 64, %.021.i2654 + %..023.i29 = call i64 @llvm.umin.i64(i64 %.023.i2452, i64 %173) + %174 = getelementptr inbounds nuw i8, ptr %5, i64 %.021.i2654 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.020.i2755, ptr nonnull align 1 %174, i64 %..023.i29, i1 false) + %175 = getelementptr inbounds nuw i8, ptr %.020.i2755, i64 %..023.i29 + %176 = sub i64 %.023.i2452, %..023.i29 + %177 = add i64 %.022.i2553, 1 + %.not.i28 = icmp eq i64 %176, 0 + br i1 %.not.i28, label %output_root_bytes.exit30, label %169, !llvm.loop !65 + +output_root_bytes.exit30: ; preds = %169 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %5) #10 call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %9) #10 - br label %176 + br label %178 -176: ; preds = %4, %output_root_bytes.exit30, %output_root_bytes.exit +178: ; preds = %4, %output_root_bytes.exit30, %output_root_bytes.exit ret void } diff --git a/bench/meilisearch-rs/optimized/2eqafq69fd46y14a.ll b/bench/meilisearch-rs/optimized/2eqafq69fd46y14a.ll index f0cb7a5b5fe..a398554a7e8 100644 --- a/bench/meilisearch-rs/optimized/2eqafq69fd46y14a.ll +++ b/bench/meilisearch-rs/optimized/2eqafq69fd46y14a.ll @@ -1549,13 +1549,13 @@ define hidden void @"_ZN105_$LT$meilisearch_types..settings..MinWordSizeTyposSet invoke void @"_ZN132_$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$C$GT$$u20$as$u20$deserr..DeserializeError$GT$5error17hff368a789edfaba3E"(ptr noalias noundef nonnull sret([40 x i8]) align 8 captures(none) dereferenceable(40) %26, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(32) %25, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(88) %24, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(32) %23) to label %222 unwind label %100 -.body: ; preds = %83, %50, %79 +.body: ; preds = %87, %50, %79 %.sroa.045.1 = phi i1 [ %.sroa.045.4, %79 ], [ %.sroa.045.0, %50 ], [ true, %83 ] - %.pn68 = phi { ptr, i32 } [ %.pn64, %79 ], [ %51, %50 ], [ %84, %83 ] + %.pn68 = phi { ptr, i32 } [ %.pn64, %79 ], [ %51, %50 ], [ %88, %83 ] %49 = load i64, ptr %41, align 8, !range !6 %.not = icmp ne i64 %49, -9223372036854775808 %or.cond.not = select i1 %.sroa.045.1, i1 %.not, i1 false - br i1 %or.cond.not, label %221, label %.body105 + br i1 %or.cond.not, label %223, label %.body105 50: ; preds = %"_ZN4core3ptr106drop_in_place$LT$indexmap..map..iter..IntoIter$LT$alloc..string..String$C$serde_json..value..Value$GT$$GT$17h38b9c4ced7951fc3E.llvm.4616129397091597767.exit.i140", %"_ZN4core3ptr106drop_in_place$LT$indexmap..map..iter..IntoIter$LT$alloc..string..String$C$serde_json..value..Value$GT$$GT$17h38b9c4ced7951fc3E.llvm.4616129397091597767.exit.i", %45 %.sroa.045.0 = phi i1 [ true, %45 ], [ true, %"_ZN4core3ptr106drop_in_place$LT$indexmap..map..iter..IntoIter$LT$alloc..string..String$C$serde_json..value..Value$GT$$GT$17h38b9c4ced7951fc3E.llvm.4616129397091597767.exit.i" ], [ false, %"_ZN4core3ptr106drop_in_place$LT$indexmap..map..iter..IntoIter$LT$alloc..string..String$C$serde_json..value..Value$GT$$GT$17h38b9c4ced7951fc3E.llvm.4616129397091597767.exit.i140" ] @@ -1608,8 +1608,8 @@ define hidden void @"_ZN105_$LT$meilisearch_types..settings..MinWordSizeTyposSet %.sroa.10.sroa.6.0..sroa.10.0..sroa_idx165.sroa_idx = getelementptr inbounds nuw i8, ptr %36, i64 32 br label %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i" -"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i": ; preds = %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i.lr.ph", %197 - %76 = phi ptr [ %56, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i.lr.ph" ], [ %199, %197 ] +"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i": ; preds = %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i.lr.ph", %199 + %76 = phi ptr [ %56, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i.lr.ph" ], [ %201, %197 ] %.sroa.020.0520 = phi i8 [ 2, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i.lr.ph" ], [ %.sroa.020.1425, %197 ] %.sroa.522.0519 = phi i8 [ undef, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i.lr.ph" ], [ %.sroa.522.1424, %197 ] %.sroa.023.0518 = phi i8 [ 2, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i.lr.ph" ], [ %.sroa.023.1423, %197 ] @@ -1623,13 +1623,13 @@ define hidden void @"_ZN105_$LT$meilisearch_types..settings..MinWordSizeTyposSet store ptr %77, ptr %54, align 8, !alias.scope !139, !noalias !129 %.sroa.0.0.copyload1.i.i = load i64, ptr %76, align 8, !noalias !140 %78 = icmp eq i64 %.sroa.0.0.copyload1.i.i, -9223372036854775808 - br i1 %78, label %._crit_edge.loopexit.split.loop.exit542, label %88 + br i1 %78, label %._crit_edge.loopexit.split.loop.exit545, label %92 79: ; preds = %.loopexit461, %.loopexit.split-lp462, %.thread399 %.sroa.045.4 = phi i1 [ %.sroa.045.8, %.thread399 ], [ true, %.loopexit461 ], [ false, %.loopexit.split-lp462 ] %.pn64 = phi { ptr, i32 } [ %.pn, %.thread399 ], [ %lpad.loopexit463, %.loopexit461 ], [ %lpad.loopexit.split-lp464, %.loopexit.split-lp462 ] invoke void @"_ZN4core3ptr46drop_in_place$LT$serde_json..map..IntoIter$GT$17hc876593003252f2cE"(ptr noalias noundef nonnull align 8 dereferenceable(32) %39) #41 - to label %.body unwind label %219 + to label %.body unwind label %221 .loopexit461: ; preds = %.thread408 %lpad.loopexit463 = landingpad { ptr, i32 } @@ -1641,12 +1641,12 @@ define hidden void @"_ZN105_$LT$meilisearch_types..settings..MinWordSizeTyposSet cleanup br label %79 -._crit_edge.loopexit.split.loop.exit542: ; preds = %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i" +._crit_edge.loopexit.split.loop.exit545: ; preds = %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i" %80 = getelementptr inbounds nuw i8, ptr %76, i64 104 br label %._crit_edge ._crit_edge: ; preds = %197, %._crit_edge.loopexit.split.loop.exit542, %52 - %81 = phi ptr [ %56, %52 ], [ %80, %._crit_edge.loopexit.split.loop.exit542 ], [ %199, %197 ] + %85 = phi ptr [ %56, %52 ], [ %80, %._crit_edge.loopexit.split.loop.exit542 ], [ %199, %197 ] %.sroa.525.0.lcssa = phi i8 [ undef, %52 ], [ %.sroa.525.0517, %._crit_edge.loopexit.split.loop.exit542 ], [ %.sroa.525.1422, %197 ] %.sroa.023.0.lcssa = phi i8 [ 2, %52 ], [ %.sroa.023.0518, %._crit_edge.loopexit.split.loop.exit542 ], [ %.sroa.023.1423, %197 ] %.sroa.522.0.lcssa = phi i8 [ undef, %52 ], [ %.sroa.522.0519, %._crit_edge.loopexit.split.loop.exit542 ], [ %.sroa.522.1424, %197 ] @@ -1655,42 +1655,42 @@ define hidden void @"_ZN105_$LT$meilisearch_types..settings..MinWordSizeTyposSet call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %.sroa.8146) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21), !noalias !141 store ptr %39, ptr %21, align 8, !noalias !141 - %82 = invoke noundef i64 @_ZN4core4iter6traits10exact_size17ExactSizeIterator3len17hde05e5919f9ad533E.llvm.3021571406010367114(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %39) - to label %85 unwind label %83 + %86 = invoke noundef i64 @_ZN4core4iter6traits10exact_size17ExactSizeIterator3len17hde05e5919f9ad533E.llvm.3021571406010367114(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %39) + to label %85 unwind label %87 -83: ; preds = %85, %._crit_edge - %84 = landingpad { ptr, i32 } +87: ; preds = %89, %._crit_edge + %88 = landingpad { ptr, i32 } cleanup invoke void @"_ZN157_$LT$$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd25fe6a53bb16c8bE.llvm.4616129397091597767"(ptr noalias noundef nonnull align 8 dereferenceable(8) %21) - to label %.body unwind label %86 + to label %.body unwind label %90 -85: ; preds = %._crit_edge - invoke void @"_ZN4core3ptr103drop_in_place$LT$$u5b$indexmap..Bucket$LT$alloc..string..String$C$serde_json..value..Value$GT$$u5d$$GT$17he37116cab0fa664cE.llvm.4616129397091597767"(ptr noalias noundef nonnull align 8 %81, i64 noundef %82) - to label %"_ZN4core3ptr106drop_in_place$LT$indexmap..map..iter..IntoIter$LT$alloc..string..String$C$serde_json..value..Value$GT$$GT$17h38b9c4ced7951fc3E.llvm.4616129397091597767.exit.i" unwind label %83 +89: ; preds = %._crit_edge + invoke void @"_ZN4core3ptr103drop_in_place$LT$$u5b$indexmap..Bucket$LT$alloc..string..String$C$serde_json..value..Value$GT$$u5d$$GT$17he37116cab0fa664cE.llvm.4616129397091597767"(ptr noalias noundef nonnull align 8 %85, i64 noundef %86) + to label %"_ZN4core3ptr106drop_in_place$LT$indexmap..map..iter..IntoIter$LT$alloc..string..String$C$serde_json..value..Value$GT$$GT$17h38b9c4ced7951fc3E.llvm.4616129397091597767.exit.i" unwind label %87 -86: ; preds = %83 - %87 = landingpad { ptr, i32 } +90: ; preds = %87 + %91 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() #42 unreachable -"_ZN4core3ptr106drop_in_place$LT$indexmap..map..iter..IntoIter$LT$alloc..string..String$C$serde_json..value..Value$GT$$GT$17h38b9c4ced7951fc3E.llvm.4616129397091597767.exit.i": ; preds = %85 +"_ZN4core3ptr106drop_in_place$LT$indexmap..map..iter..IntoIter$LT$alloc..string..String$C$serde_json..value..Value$GT$$GT$17h38b9c4ced7951fc3E.llvm.4616129397091597767.exit.i": ; preds = %89 invoke void @"_ZN157_$LT$$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd25fe6a53bb16c8bE.llvm.4616129397091597767"(ptr noalias noundef nonnull align 8 dereferenceable(8) %21) to label %92 unwind label %50 -88: ; preds = %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i" +92: ; preds = %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i" %.sroa.6.0..sroa_idx2.i.i = getelementptr inbounds nuw i8, ptr %76, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.7, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.6.0..sroa_idx2.i.i, i64 16, i1 false), !noalias !150 - %89 = getelementptr inbounds nuw i8, ptr %76, i64 24 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %.sroa.8146, ptr noundef nonnull align 8 dereferenceable(72) %89, i64 72, i1 false), !noalias !150 + %93 = getelementptr inbounds nuw i8, ptr %76, i64 24 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %.sroa.8146, ptr noundef nonnull align 8 dereferenceable(72) %93, i64 72, i1 false), !noalias !150 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %38) store i64 %.sroa.0.0.copyload1.i.i, ptr %38, align 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.7.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.7, i64 16, i1 false) call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %37) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %37, ptr noundef nonnull align 8 dereferenceable(72) %.sroa.8146, i64 72, i1 false) - %90 = load ptr, ptr %.sroa.7.0..sroa_idx, align 8, !nonnull !5, !noundef !5 - %91 = load i64, ptr %58, align 8, !noundef !5 - switch i64 %91, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111.thread" [ + %94 = load ptr, ptr %.sroa.7.0..sroa_idx, align 8, !nonnull !5, !noundef !5 + %95 = load i64, ptr %58, align 8, !noundef !5 + switch i64 %95, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111.thread" [ i64 7, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit" i64 8, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111" ] @@ -1701,24 +1701,24 @@ define hidden void @"_ZN105_$LT$meilisearch_types..settings..MinWordSizeTyposSet call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) %.old = load i64, ptr %1, align 8, !range !4, !noundef !5 %.old91 = icmp sgt i64 %.old, -9223372036854775802 - br i1 %.old91, label %124, label %.sink.split + br i1 %.old91, label %126, label %.sink.split -92: ; preds = %"_ZN4core3ptr106drop_in_place$LT$indexmap..map..iter..IntoIter$LT$alloc..string..String$C$serde_json..value..Value$GT$$GT$17h38b9c4ced7951fc3E.llvm.4616129397091597767.exit.i" +96: ; preds = %"_ZN4core3ptr106drop_in_place$LT$indexmap..map..iter..IntoIter$LT$alloc..string..String$C$serde_json..value..Value$GT$$GT$17h38b9c4ced7951fc3E.llvm.4616129397091597767.exit.i" call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21), !noalias !141 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) - %93 = load i64, ptr %41, align 8, !range !6, !noundef !5 - %94 = icmp eq i64 %93, -9223372036854775808 - br i1 %94, label %"_ZN6deserr19FieldState$LT$T$GT$6unwrap17h080d3852bc07cf2dE.exit102", label %95 + %97 = load i64, ptr %41, align 8, !range !6, !noundef !5 + %98 = icmp eq i64 %97, -9223372036854775808 + br i1 %98, label %"_ZN6deserr19FieldState$LT$T$GT$6unwrap17h080d3852bc07cf2dE.exit102", label %99 -95: ; preds = %92 +99: ; preds = %96 %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %41, i64 8 %.sroa.2.0.copyload = load i32, ptr %.sroa.2.0..sroa_idx, align 8 %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %41, i64 12 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(20) %.sroa.631, ptr noundef nonnull align 4 dereferenceable(20) %.sroa.3.0..sroa_idx, i64 20, i1 false) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) - br label %112 + br label %114 -"_ZN6deserr19FieldState$LT$T$GT$6unwrap17h080d3852bc07cf2dE.exit102": ; preds = %92 +"_ZN6deserr19FieldState$LT$T$GT$6unwrap17h080d3852bc07cf2dE.exit102": ; preds = %96 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %.sroa.11331.sroa.0) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) @@ -1728,34 +1728,34 @@ define hidden void @"_ZN105_$LT$meilisearch_types..settings..MinWordSizeTyposSet %97 = icmp eq i8 %96, 0 br i1 %97, label %103, label %.thread387 -.body105: ; preds = %213, %109, %100, %221, %.body - %.sroa.042.1 = phi i1 [ false, %221 ], [ false, %.body ], [ %102, %100 ], [ false, %109 ], [ false, %213 ] +.body105:; preds = %213, %109, %100, %223, %.body + %.pn70 = phi i1 [ false, %221 ], [ false, %.body ], [ %102, %100 ], [ false, %109 ], [ false, %213 ] %.pn70 = phi { ptr, i32 } [ %.pn68, %221 ], [ %.pn68, %.body ], [ %101, %100 ], [ %lpad.thr_comm.i, %109 ], [ %214, %213 ] %98 = load i64, ptr %1, align 8, !range !4 %99 = icmp sgt i64 %98, -9223372036854775802 - %or.cond95 = select i1 %.sroa.042.1, i1 true, i1 %99 + %or.cond95 = select i1 %.pn70, i1 true, i1 %99 br i1 %or.cond95, label %224, label %225 -100: ; preds = %_ZN5alloc3fmt6format17h7fed6a266585da9dE.exit.i, %46 +100:; preds = %_ZN5alloc3fmt6format17h7fed6a266585da9dE.exit.i, %46 %101 = landingpad { ptr, i32 } cleanup - %102 = xor i1 %44, true + %104 = xor i1 %44, true br label %.body105 -103: ; preds = %"_ZN6deserr19FieldState$LT$T$GT$6unwrap17h080d3852bc07cf2dE.exit102" +105: ; preds = %"_ZN6deserr19FieldState$LT$T$GT$6unwrap17h080d3852bc07cf2dE.exit102" call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20), !noalias !160 store i8 %.sroa.522.0.lcssa, ptr %20, align 1, !noalias !160 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19), !noalias !160 store i8 %.sroa.525.0.lcssa, ptr %19, align 1, !noalias !160 - %104 = icmp ugt i8 %.sroa.522.0.lcssa, %.sroa.525.0.lcssa - br i1 %104, label %106, label %105 + %106 = icmp ugt i8 %.sroa.522.0.lcssa, %.sroa.525.0.lcssa + br i1 %106, label %108, label %107 -105: ; preds = %103 +107: ; preds = %105 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19), !noalias !160 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20), !noalias !160 br label %.thread387 -106: ; preds = %103 +108: ; preds = %105 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %18), !noalias !160 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17), !noalias !160 store i64 -9223372036854775808, ptr %17, align 8, !noalias !160 @@ -1764,8 +1764,8 @@ define hidden void @"_ZN105_$LT$meilisearch_types..settings..MinWordSizeTyposSet store ptr %20, ptr %14, align 8, !noalias !160 %.sroa.420.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %14, i64 8 store ptr @"_ZN4core3fmt3num3imp51_$LT$impl$u20$core..fmt..Display$u20$for$u20$u8$GT$3fmt17h863fba6a29561d2aE", ptr %.sroa.420.0..sroa_idx.i, align 8, !noalias !160 - %107 = getelementptr inbounds nuw i8, ptr %14, i64 16 - store ptr %19, ptr %107, align 8, !noalias !160 + %109 = getelementptr inbounds nuw i8, ptr %14, i64 16 + store ptr %19, ptr %109, align 8, !noalias !160 %.sroa.424.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %14, i64 24 store ptr @"_ZN4core3fmt3num3imp51_$LT$impl$u20$core..fmt..Display$u20$for$u20$u8$GT$3fmt17h863fba6a29561d2aE", ptr %.sroa.424.0..sroa_idx.i, align 8, !noalias !160 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %13), !noalias !164 @@ -1779,52 +1779,52 @@ define hidden void @"_ZN105_$LT$meilisearch_types..settings..MinWordSizeTyposSet %.sroa.10.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %13, i64 32 store ptr null, ptr %.sroa.10.0..sroa_idx.i, align 8, !noalias !175 invoke void @_ZN5alloc3fmt6format12format_inner17h77a68f64fb1f586eE(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %15, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %13) - to label %_ZN5alloc3fmt6format17h7fed6a266585da9dE.exit.i unwind label %109, !noalias !160 + to label %_ZN5alloc3fmt6format17h7fed6a266585da9dE.exit.i unwind label %111, !noalias !160 -_ZN5alloc3fmt6format17h7fed6a266585da9dE.exit.i: ; preds = %106 +_ZN5alloc3fmt6format17h7fed6a266585da9dE.exit.i: ; preds = %108 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %13), !noalias !164 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14), !noalias !160 - %108 = getelementptr inbounds nuw i8, ptr %16, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %108, ptr noundef nonnull align 8 dereferenceable(24) %15, i64 24, i1 false), !noalias !160 + %110 = getelementptr inbounds nuw i8, ptr %16, i64 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %110, ptr noundef nonnull align 8 dereferenceable(24) %15, i64 24, i1 false), !noalias !160 store i64 -9223372036854775800, ptr %16, align 8, !noalias !160 invoke void @"_ZN132_$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$C$GT$$u20$as$u20$deserr..DeserializeError$GT$5error17hb59743492ab65b8bE"(ptr noalias noundef nonnull sret([40 x i8]) align 8 captures(none) dereferenceable(40) %18, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(32) %17, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(40) %16, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(32) %22) to label %115 unwind label %100 -109: ; preds = %106 +111: ; preds = %108 %lpad.thr_comm.i = landingpad { ptr, i32 } cleanup invoke fastcc void @"_ZN4core3ptr203drop_in_place$LT$core..option..Option$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$$GT$17hfd3baed4537dcd94E"(ptr noalias noundef align 8 dereferenceable(32) %17) #41 - to label %.body105 unwind label %110, !noalias !160 + to label %.body105 unwind label %112, !noalias !160 -110: ; preds = %109 - %111 = landingpad { ptr, i32 } +112: ; preds = %111 + %113 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() #42, !noalias !160 unreachable -112: ; preds = %95, %222 +114: ; preds = %99, %224 %.sroa.9.2 = phi i32 [ %.sroa.2.0.copyload, %95 ], [ %.sroa.528.0.copyload30, %222 ] - %.sroa.07.1 = phi i64 [ %93, %95 ], [ %.sroa.026.0.copyload27, %222 ] + %.sroa.07.1 = phi i64 [ %97, %95 ], [ %.sroa.026.0.copyload27, %222 ] store i64 %.sroa.07.1, ptr %0, align 8 %.sroa.254.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store i32 %.sroa.9.2, ptr %.sroa.254.0..sroa_idx, align 8 %.sroa.355.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 12 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(20) %.sroa.355.0..sroa_idx, ptr noundef nonnull align 4 dereferenceable(20) %.sroa.631, i64 20, i1 false) - %113 = load i64, ptr %1, align 8, !range !4 - %114 = icmp slt i64 %113, -9223372036854775801 - %or.cond92.not = select i1 %44, i1 %114, i1 false - br i1 %or.cond92.not, label %.sink.split, label %124 + %115 = load i64, ptr %1, align 8, !range !4 + %116 = icmp slt i64 %115, -9223372036854775801 + %or.cond92.not = select i1 %44, i1 %116, i1 false + br i1 %or.cond92.not, label %.sink.split, label %126 -.thread387: ; preds = %105, %"_ZN6deserr19FieldState$LT$T$GT$6unwrap17h080d3852bc07cf2dE.exit102" +.thread387: ; preds = %107, %"_ZN6deserr19FieldState$LT$T$GT$6unwrap17h080d3852bc07cf2dE.exit102" call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) br label %118 -115: ; preds = %_ZN5alloc3fmt6format17h7fed6a266585da9dE.exit.i +117: ; preds = %_ZN5alloc3fmt6format17h7fed6a266585da9dE.exit.i call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %16), !noalias !160 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17), !noalias !160 - %116 = getelementptr inbounds nuw i8, ptr %18, i64 8 - %.sroa.0371.0.copyload = load i64, ptr %116, align 8, !noalias !160 + %118 = getelementptr inbounds nuw i8, ptr %18, i64 8 + %.sroa.0371.0.copyload = load i64, ptr %118, align 8, !noalias !160 %.sroa.4372.0..sroa_idx = getelementptr inbounds nuw i8, ptr %18, i64 16 %.sroa.4372.0.copyload = load i32, ptr %.sroa.4372.0..sroa_idx, align 8, !noalias !160 %.sroa.5373.0..sroa_idx = getelementptr inbounds nuw i8, ptr %18, i64 20 @@ -1843,10 +1843,10 @@ _ZN5alloc3fmt6format17h7fed6a266585da9dE.exit.i: ; preds = %106 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20), !noalias !160 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) - %117 = icmp eq i64 %.sroa.0371.0.copyload, -9223372036854775808 - br i1 %117, label %118, label %123 + %119 = icmp eq i64 %.sroa.0371.0.copyload, -9223372036854775808 + br i1 %119, label %._crit_edge537, label %125 -118: ; preds = %.thread387, %115 +._crit_edge537: ; preds = %.thread387, %117 %.sroa.6328.sroa.8.0397 = phi i8 [ %.sroa.525.0.lcssa, %.thread387 ], [ %.sroa.6328.sroa.8.0.extract.trunc, %115 ] %.sroa.6328.sroa.7.0396 = phi i8 [ %.sroa.023.0.lcssa, %.thread387 ], [ %.sroa.6328.sroa.7.0.extract.trunc, %115 ] %.sroa.6328.sroa.6.0395 = phi i8 [ %.sroa.522.0.lcssa, %.thread387 ], [ %.sroa.6328.sroa.6.0.extract.trunc, %115 ] @@ -1864,15 +1864,15 @@ _ZN5alloc3fmt6format17h7fed6a266585da9dE.exit.i: ; preds = %106 %119 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i32 %.sroa.6328.sroa.0.0.insert.insert335, ptr %119, align 8 store i64 -9223372036854775808, ptr %0, align 8 - br label %120 + br label %122 -120: ; preds = %123, %118 +122: ; preds = %125, %118 call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %.sroa.11331.sroa.0) - %121 = load i64, ptr %1, align 8, !range !4, !noundef !5 - %122 = icmp sgt i64 %121, -9223372036854775802 - br i1 %122, label %124, label %.sink.split + %123 = load i64, ptr %1, align 8, !range !4, !noundef !5 + %124 = icmp sgt i64 %123, -9223372036854775802 + br i1 %124, label %126, label %.sink.split -123: ; preds = %115 +125: ; preds = %117 %.sroa.7368.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 12 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.sroa.7368.0..sroa_idx, ptr noundef nonnull align 4 dereferenceable(12) %.sroa.11331.sroa.0, i64 12, i1 false) store i64 %.sroa.0371.0.copyload, ptr %0, align 8 @@ -1880,62 +1880,62 @@ _ZN5alloc3fmt6format17h7fed6a266585da9dE.exit.i: ; preds = %106 store i32 %.sroa.4372.0.copyload, ptr %.sroa.5367.0..sroa_idx, align 8 %.sroa.9369.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 store i8 %.sroa.6374.0.copyload, ptr %.sroa.9369.0..sroa_idx, align 8 - br label %120 + br label %122 -.sink.split: ; preds = %.critedge86, %112, %120 +.sink.split: ; preds = %.critedge86, %114, %122 call void @"_ZN4core3ptr73drop_in_place$LT$deserr..value..Value$LT$serde_json..value..Value$GT$$GT$17h42e8fd0d158193feE.llvm.784653754634180241"(ptr noalias noundef nonnull align 8 dereferenceable(72) %1) - br label %124 + br label %126 -124: ; preds = %.sink.split, %.critedge86, %112, %120 +126: ; preds = %.sink.split, %.critedge86, %114, %122 ret void -.thread399.loopexit: ; preds = %168, %167, %146, %145 +.thread399.loopexit: ; preds = %170, %169, %148, %147 %lpad.loopexit = landingpad { ptr, i32 } cleanup br label %.thread399 -.thread399.loopexit.split-lp: ; preds = %176, %154 +.thread399.loopexit.split-lp: ; preds = %178, %156 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup br label %.thread399 -"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit": ; preds = %88 - %bcmp.i = call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(7) %90, ptr noundef nonnull dereferenceable(7) @anon.880c932b6d26fbcc815883ce24785fc3.10, i64 7), !alias.scope !177 - %125 = icmp eq i32 %bcmp.i, 0 - br i1 %125, label %126, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111.thread" +"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit": ; preds = %92 + %bcmp.i = call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(7) %94, ptr noundef nonnull dereferenceable(7) @anon.880c932b6d26fbcc815883ce24785fc3.10, i64 7), !alias.scope !177 + %127 = icmp eq i32 %bcmp.i, 0 + br i1 %127, label %128, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111.thread" -126: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit" +128: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit" call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %36) %.sroa.0156.0.copyload = load i64, ptr %37, align 8 %.sroa.5.0.copyload = load i64, ptr %.sroa.5243.0..sroa_idx, align 8 %.sroa.9.0.copyload = load i64, ptr %.sroa.9247.0..sroa_idx, align 8 %.sroa.10.sroa.0.0.copyload = load i64, ptr %.sroa.10252.0..sroa_idx, align 8 call void @llvm.experimental.noalias.scope.decl(metadata !181) - %127 = xor i64 %.sroa.0156.0.copyload, -9223372036854775808 - %128 = call i64 @llvm.umin.i64(i64 %127, i64 5) - switch i64 %128, label %default.unreachable [ - i64 0, label %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit.thread538" - i64 1, label %129 - i64 2, label %130 - i64 3, label %131 - i64 4, label %132 + %129 = xor i64 %.sroa.0156.0.copyload, -9223372036854775808 + %130 = call i64 @llvm.umin.i64(i64 %129, i64 5) + switch i64 %130, label %default.unreachable [ + i64 0, label %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit.thread541" + i64 1, label %131 + i64 2, label %132 + i64 3, label %133 + i64 4, label %134 i64 5, label %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit" ] -default.unreachable: ; preds = %134, %126 +default.unreachable: ; preds = %136, %128 unreachable -"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit.thread538": ; preds = %126 +"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit.thread541": ; preds = %128 store i64 -9223372036854775808, ptr %36, align 8, !alias.scope !184, !noalias !181 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %35) - br label %167 + br label %169 -129: ; preds = %126 +131: ; preds = %128 %.sroa.5.sroa.0.0.extract.trunc = trunc i64 %.sroa.5.0.copyload to i8 store i8 %.sroa.5.sroa.0.0.extract.trunc, ptr %.sroa.5.0..sroa_idx158, align 8, !alias.scope !184, !noalias !181 br label %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit.thread" -130: ; preds = %126 +132: ; preds = %128 store i64 %.sroa.9.0.copyload, ptr %.sroa.5.0..sroa_idx158, align 8, !alias.scope !184, !noalias !181 %switch.selectcmp.i = icmp eq i64 %.sroa.5.0.copyload, 2 %switch.select.i = select i1 %switch.selectcmp.i, i64 -9223372036854775804, i64 -9223372036854775805 @@ -1943,67 +1943,67 @@ default.unreachable: ; preds = %134, %126 %switch.select11.i = select i1 %switch.selectcmp10.i, i64 -9223372036854775806, i64 %switch.select.i br label %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit.thread" -131: ; preds = %126 +133: ; preds = %128 store i64 %.sroa.5.0.copyload, ptr %.sroa.5.0..sroa_idx158, align 8, !alias.scope !186 store i64 %.sroa.9.0.copyload, ptr %.sroa.9.0..sroa_idx161, align 8, !alias.scope !186 store i64 %.sroa.10.sroa.0.0.copyload, ptr %.sroa.10.0..sroa_idx165, align 8, !alias.scope !186 br label %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit.thread" -132: ; preds = %126 +134: ; preds = %128 store i64 %.sroa.5.0.copyload, ptr %.sroa.5.0..sroa_idx158, align 8, !alias.scope !186 store i64 %.sroa.9.0.copyload, ptr %.sroa.9.0..sroa_idx161, align 8, !alias.scope !186 store i64 %.sroa.10.sroa.0.0.copyload, ptr %.sroa.10.0..sroa_idx165, align 8, !alias.scope !186 br label %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit.thread" -"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111": ; preds = %88 - %bcmp.i110 = call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(8) %90, ptr noundef nonnull dereferenceable(8) @anon.880c932b6d26fbcc815883ce24785fc3.11, i64 8), !alias.scope !187 - %133 = icmp eq i32 %bcmp.i110, 0 - br i1 %133, label %134, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111.thread" +"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111": ; preds = %92 + %bcmp.i110 = call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(8) %94, ptr noundef nonnull dereferenceable(8) @anon.880c932b6d26fbcc815883ce24785fc3.11, i64 8), !alias.scope !187 + %135 = icmp eq i32 %bcmp.i110, 0 + br i1 %135, label %136, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111.thread" -"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111.thread": ; preds = %88, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111" +"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111.thread": ; preds = %92, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111" call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %30) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %29) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull align 8 dereferenceable(32) %41, i64 32, i1 false) call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %28) - store ptr %90, ptr %67, align 8 - store i64 %91, ptr %68, align 8 + store ptr %94, ptr %67, align 8 + store i64 %95, ptr %68, align 8 store ptr @anon.880c932b6d26fbcc815883ce24785fc3.13, ptr %69, align 8 store i64 2, ptr %70, align 8 store i64 -9223372036854775800, ptr %28, align 8 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 8 dereferenceable(32) %2, i64 32, i1 false) invoke void @"_ZN132_$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$C$GT$$u20$as$u20$deserr..DeserializeError$GT$5error17hff368a789edfaba3E"(ptr noalias noundef nonnull sret([40 x i8]) align 8 captures(none) dereferenceable(40) %30, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(32) %29, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(88) %28, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(32) %27) - to label %141 unwind label %218 + to label %141 unwind label %220 -134: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111" +136: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111" call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %33) %.sroa.0241.0.copyload = load i64, ptr %37, align 8 %.sroa.5243.0.copyload = load i64, ptr %.sroa.5243.0..sroa_idx, align 8 %.sroa.9247.0.copyload = load i64, ptr %.sroa.9247.0..sroa_idx, align 8 %.sroa.10252.sroa.0.0.copyload = load i64, ptr %.sroa.10252.0..sroa_idx, align 8 call void @llvm.experimental.noalias.scope.decl(metadata !191) - %135 = xor i64 %.sroa.0241.0.copyload, -9223372036854775808 - %136 = call i64 @llvm.umin.i64(i64 %135, i64 5) - switch i64 %136, label %default.unreachable [ - i64 0, label %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122.thread537" - i64 1, label %137 - i64 2, label %138 - i64 3, label %139 - i64 4, label %140 + %137 = xor i64 %.sroa.0241.0.copyload, -9223372036854775808 + %138 = call i64 @llvm.umin.i64(i64 %137, i64 5) + switch i64 %138, label %default.unreachable [ + i64 0, label %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122.thread540" + i64 1, label %139 + i64 2, label %140 + i64 3, label %141 + i64 4, label %142 i64 5, label %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122" ] -"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122.thread537": ; preds = %134 +"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122.thread540": ; preds = %136 store i64 -9223372036854775808, ptr %33, align 8, !alias.scope !194, !noalias !191 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %32) - br label %145 + br label %147 -137: ; preds = %134 +139: ; preds = %136 %.sroa.5243.sroa.0.0.extract.trunc = trunc i64 %.sroa.5243.0.copyload to i8 store i8 %.sroa.5243.sroa.0.0.extract.trunc, ptr %.sroa.5243.0..sroa_idx244, align 8, !alias.scope !194, !noalias !191 br label %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122.thread" -138: ; preds = %134 +140: ; preds = %136 store i64 %.sroa.9247.0.copyload, ptr %.sroa.5243.0..sroa_idx244, align 8, !alias.scope !194, !noalias !191 %switch.selectcmp.i117 = icmp eq i64 %.sroa.5243.0.copyload, 2 %switch.select.i118 = select i1 %switch.selectcmp.i117, i64 -9223372036854775804, i64 -9223372036854775805 @@ -2011,79 +2011,79 @@ default.unreachable: ; preds = %134, %126 %switch.select11.i120 = select i1 %switch.selectcmp10.i119, i64 -9223372036854775806, i64 %switch.select.i118 br label %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122.thread" -139: ; preds = %134 +141: ; preds = %136 store i64 %.sroa.5243.0.copyload, ptr %.sroa.5243.0..sroa_idx244, align 8, !alias.scope !196 store i64 %.sroa.9247.0.copyload, ptr %.sroa.9247.0..sroa_idx248, align 8, !alias.scope !196 store i64 %.sroa.10252.sroa.0.0.copyload, ptr %.sroa.10252.0..sroa_idx253, align 8, !alias.scope !196 br label %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122.thread" -140: ; preds = %134 +142: ; preds = %136 store i64 %.sroa.5243.0.copyload, ptr %.sroa.5243.0..sroa_idx244, align 8, !alias.scope !196 store i64 %.sroa.9247.0.copyload, ptr %.sroa.9247.0..sroa_idx248, align 8, !alias.scope !196 store i64 %.sroa.10252.sroa.0.0.copyload, ptr %.sroa.10252.0..sroa_idx253, align 8, !alias.scope !196 br label %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122.thread" -141: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111.thread" +143: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111.thread" call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %28) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) - %142 = load i64, ptr %30, align 8, !range !55, !noundef !5 - %trunc60 = trunc nuw i64 %142 to i1 - br i1 %trunc60, label %143, label %195 + %144 = load i64, ptr %30, align 8, !range !55, !noundef !5 + %trunc60 = trunc nuw i64 %144 to i1 + br i1 %trunc60, label %145, label %197 -143: ; preds = %141 +145: ; preds = %143 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %71, i64 32, i1 false) call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %30) invoke void @"_ZN4core3ptr45drop_in_place$LT$serde_json..value..Value$GT$17h8c450484c5264072E.llvm.784653754634180241"(ptr noalias noundef nonnull align 8 dereferenceable(72) %37) to label %.critedge unwind label %.loopexit.split-lp -"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122.thread": ; preds = %140, %139, %138, %137 +"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122.thread": ; preds = %142, %141, %140, %139 %.sink = phi i64 [ -9223372036854775802, %140 ], [ -9223372036854775803, %139 ], [ %switch.select11.i120, %138 ], [ -9223372036854775807, %137 ] store i64 %.sink, ptr %33, align 8, !alias.scope !194, !noalias !191 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %32) - store ptr %90, ptr %59, align 8 + store ptr %94, ptr %59, align 8 store i64 8, ptr %60, align 8 store ptr %2, ptr %61, align 8 store i64 1, ptr %32, align 8 - br label %146 + br label %148 -"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122": ; preds = %134 +"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122": ; preds = %136 store i64 %.sroa.0241.0.copyload, ptr %33, align 8, !alias.scope !196 store i64 %.sroa.5243.0.copyload, ptr %.sroa.5243.0..sroa_idx244, align 8, !alias.scope !196 store i64 %.sroa.9247.0.copyload, ptr %.sroa.9247.0..sroa_idx248, align 8, !alias.scope !196 store i64 %.sroa.10252.sroa.0.0.copyload, ptr %.sroa.10252.0..sroa_idx253, align 8, !alias.scope !196 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %.sroa.10252.sroa.6.0..sroa.10252.0..sroa_idx253.sroa_idx, ptr noundef nonnull align 8 dereferenceable(40) %74, i64 40, i1 false) - %144 = icmp eq i64 %.sroa.0241.0.copyload, -9223372036854775808 + %146 = icmp eq i64 %.sroa.0241.0.copyload, -9223372036854775808 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %32) - store ptr %90, ptr %59, align 8 + store ptr %94, ptr %59, align 8 store i64 8, ptr %60, align 8 store ptr %2, ptr %61, align 8 store i64 1, ptr %32, align 8 - br i1 %144, label %145, label %146 + br i1 %146, label %147, label %148 -145: ; preds = %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122.thread537", %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122" +147: ; preds = %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122.thread540", %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122" invoke void @"_ZN4core3ptr73drop_in_place$LT$deserr..value..Value$LT$serde_json..value..Value$GT$$GT$17h42e8fd0d158193feE.llvm.1929265744411185926"(ptr noalias noundef nonnull align 8 dereferenceable(72) %33) to label %164 unwind label %.thread399.loopexit -146: ; preds = %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122.thread", %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122" +148: ; preds = %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122.thread", %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit122" call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12), !noalias !197 call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %11), !noalias !197 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %11, ptr noundef nonnull align 8 dereferenceable(72) %33, i64 72, i1 false), !noalias !202 invoke void @"_ZN6deserr5impls56_$LT$impl$u20$deserr..Deserr$LT$E$GT$$u20$for$u20$u8$GT$22deserialize_from_value17heb89a1c9d8e27929E"(ptr noalias noundef nonnull sret([32 x i8]) align 8 captures(none) dereferenceable(32) %12, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(72) %11, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(32) %32) to label %.noexc124 unwind label %.thread399.loopexit -.noexc124: ; preds = %146 +.noexc124: ; preds = %148 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %11), !noalias !197 - %147 = load i64, ptr %12, align 8, !range !6, !noalias !197, !noundef !5 - %148 = icmp eq i64 %147, -9223372036854775808 - %149 = load i8, ptr %62, align 8, !noalias !203 - br i1 %148, label %150, label %151 + %149 = load i64, ptr %12, align 8, !range !6, !noalias !197, !noundef !5 + %150 = icmp eq i64 %149, -9223372036854775808 + %151 = load i8, ptr %62, align 8, !noalias !203 + br i1 %150, label %152, label %153 -150: ; preds = %.noexc124 +152: ; preds = %.noexc124 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12), !noalias !197 - br label %164 + br label %166 -151: ; preds = %.noexc124 +153: ; preds = %.noexc124 %.sroa.11237.0..sroa_idx238 = getelementptr inbounds nuw i8, ptr %12, i64 9 %.sroa.11237.0.copyload239 = load i8, ptr %.sroa.11237.0..sroa_idx238, align 1, !noalias !203 %.sroa.13.0..sroa_idx240 = getelementptr inbounds nuw i8, ptr %12, i64 10 @@ -2098,50 +2098,50 @@ default.unreachable: ; preds = %134, %126 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull align 8 dereferenceable(32) %41, i64 32, i1 false) call void @llvm.experimental.noalias.scope.decl(metadata !204) call void @llvm.experimental.noalias.scope.decl(metadata !207) - %152 = load i64, ptr %31, align 8, !range !6, !alias.scope !210, !noalias !211, !noundef !5 - %153 = icmp eq i64 %152, -9223372036854775808 - br i1 %153, label %165, label %154 + %154 = load i64, ptr %31, align 8, !range !6, !alias.scope !210, !noalias !211, !noundef !5 + %155 = icmp eq i64 %154, -9223372036854775808 + br i1 %155, label %167, label %156 -154: ; preds = %151 +156: ; preds = %153 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10), !noalias !214 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h0aaf48f80649e9ddE.llvm.4616129397091597767"(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %10, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %31) to label %.noexc127 unwind label %.thread399.loopexit.split-lp -.noexc127: ; preds = %154 - %155 = getelementptr inbounds nuw i8, ptr %10, i64 8 - %156 = load i64, ptr %155, align 8, !range !6, !noalias !214, !noundef !5 - %157 = icmp eq i64 %156, 0 - br i1 %157, label %"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E.exit.i.i126", label %158 - -158: ; preds = %.noexc127 - %159 = getelementptr inbounds nuw i8, ptr %10, i64 16 - %160 = load i64, ptr %159, align 8, !noalias !214, !noundef !5 - %161 = icmp eq i64 %160, 0 - br i1 %161, label %"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E.exit.i.i126", label %162 - -162: ; preds = %158 - %163 = load ptr, ptr %10, align 8, !noalias !214, !nonnull !5, !noundef !5 - call void @__rust_dealloc(ptr noundef nonnull %163, i64 noundef %160, i64 noundef %156) #43, !noalias !211 +.noexc127: ; preds = %156 + %157 = getelementptr inbounds nuw i8, ptr %10, i64 8 + %158 = load i64, ptr %157, align 8, !range !6, !noalias !214, !noundef !5 + %159 = icmp eq i64 %158, 0 + br i1 %159, label %"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E.exit.i.i126", label %160 + +160: ; preds = %.noexc127 + %161 = getelementptr inbounds nuw i8, ptr %10, i64 16 + %162 = load i64, ptr %161, align 8, !noalias !214, !noundef !5 + %163 = icmp eq i64 %162, 0 + br i1 %163, label %"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E.exit.i.i126", label %164 + +164: ; preds = %160 + %165 = load ptr, ptr %10, align 8, !noalias !214, !nonnull !5, !noundef !5 + call void @__rust_dealloc(ptr noundef nonnull %165, i64 noundef %162, i64 noundef %158) #43, !noalias !211 br label %"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E.exit.i.i126" -"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E.exit.i.i126": ; preds = %162, %158, %.noexc127 +"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E.exit.i.i126": ; preds = %164, %160, %.noexc127 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10), !noalias !214 - br label %165 + br label %167 -164: ; preds = %145, %150 +166: ; preds = %147, %152 %.sroa.8234.0.ph = phi i8 [ 1, %145 ], [ 0, %150 ] - %.sroa.11237.2.ph = phi i8 [ %.sroa.11237.0515, %145 ], [ %149, %150 ] + %.sroa.11237.2.ph = phi i8 [ %.sroa.11237.0515, %145 ], [ %151, %150 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %33) br label %.thread408 -165: ; preds = %151, %"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E.exit.i.i126" +167: ; preds = %153, %"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E.exit.i.i126" call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) %.sroa.4323.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 10 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(14) %.sroa.4323.0..sroa_idx, ptr noundef nonnull align 2 dereferenceable(14) %.sroa.10297, i64 14, i1 false) - store i64 %147, ptr %0, align 8 + store i64 %149, ptr %0, align 8 %.sroa.2321.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i8 %149, ptr %.sroa.2321.0..sroa_idx, align 8 + store i8 %151, ptr %.sroa.2321.0..sroa_idx, align 8 %.sroa.3322.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 9 store i8 %.sroa.11237.0.copyload239, ptr %.sroa.3322.0..sroa_idx, align 1 %.sroa.5324.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 @@ -2149,53 +2149,53 @@ default.unreachable: ; preds = %134, %126 call void @llvm.lifetime.end.p0(i64 14, ptr nonnull %.sroa.10297) br label %.critedge -"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit.thread": ; preds = %132, %131, %130, %129 - %.sink549 = phi i64 [ -9223372036854775802, %132 ], [ -9223372036854775803, %131 ], [ %switch.select11.i, %130 ], [ -9223372036854775807, %129 ] - store i64 %.sink549, ptr %36, align 8, !alias.scope !184, !noalias !181 +"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit.thread": ; preds = %134, %133, %132, %131 + %.sink552 = phi i64 [ -9223372036854775802, %132 ], [ -9223372036854775803, %131 ], [ %switch.select11.i, %130 ], [ -9223372036854775807, %129 ] + store i64 %.sink552, ptr %36, align 8, !alias.scope !184, !noalias !181 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %35) - store ptr %90, ptr %63, align 8 + store ptr %94, ptr %63, align 8 store i64 7, ptr %64, align 8 store ptr %2, ptr %65, align 8 store i64 1, ptr %35, align 8 - br label %168 + br label %170 -"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit": ; preds = %126 +"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit": ; preds = %128 store i64 %.sroa.0156.0.copyload, ptr %36, align 8, !alias.scope !186 store i64 %.sroa.5.0.copyload, ptr %.sroa.5.0..sroa_idx158, align 8, !alias.scope !186 store i64 %.sroa.9.0.copyload, ptr %.sroa.9.0..sroa_idx161, align 8, !alias.scope !186 store i64 %.sroa.10.sroa.0.0.copyload, ptr %.sroa.10.0..sroa_idx165, align 8, !alias.scope !186 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %.sroa.10.sroa.6.0..sroa.10.0..sroa_idx165.sroa_idx, ptr noundef nonnull align 8 dereferenceable(40) %75, i64 40, i1 false) - %166 = icmp eq i64 %.sroa.0156.0.copyload, -9223372036854775808 + %168 = icmp eq i64 %.sroa.0156.0.copyload, -9223372036854775808 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %35) - store ptr %90, ptr %63, align 8 + store ptr %94, ptr %63, align 8 store i64 7, ptr %64, align 8 store ptr %2, ptr %65, align 8 store i64 1, ptr %35, align 8 - br i1 %166, label %167, label %168 + br i1 %168, label %169, label %170 -167: ; preds = %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit.thread538", %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit" +169: ; preds = %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit.thread541", %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit" invoke void @"_ZN4core3ptr73drop_in_place$LT$deserr..value..Value$LT$serde_json..value..Value$GT$$GT$17h42e8fd0d158193feE.llvm.1929265744411185926"(ptr noalias noundef nonnull align 8 dereferenceable(72) %36) to label %186 unwind label %.thread399.loopexit -168: ; preds = %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit.thread", %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit" +170: ; preds = %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit.thread", %"_ZN6deserr10serde_json79_$LT$impl$u20$deserr..value..IntoValue$u20$for$u20$serde_json..value..Value$GT$10into_value17hbd07734994dbc5d2E.exit" call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9), !noalias !225 call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %8), !noalias !225 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %8, ptr noundef nonnull align 8 dereferenceable(72) %36, i64 72, i1 false), !noalias !230 invoke void @"_ZN6deserr5impls56_$LT$impl$u20$deserr..Deserr$LT$E$GT$$u20$for$u20$u8$GT$22deserialize_from_value17heb89a1c9d8e27929E"(ptr noalias noundef nonnull sret([32 x i8]) align 8 captures(none) dereferenceable(32) %9, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(72) %8, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(32) %35) to label %.noexc130 unwind label %.thread399.loopexit -.noexc130: ; preds = %168 +.noexc130: ; preds = %170 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %8), !noalias !225 - %169 = load i64, ptr %9, align 8, !range !6, !noalias !225, !noundef !5 - %170 = icmp eq i64 %169, -9223372036854775808 - %171 = load i8, ptr %66, align 8, !noalias !231 - br i1 %170, label %172, label %173 + %171 = load i64, ptr %9, align 8, !range !6, !noalias !225, !noundef !5 + %172 = icmp eq i64 %171, -9223372036854775808 + %173 = load i8, ptr %66, align 8, !noalias !231 + br i1 %172, label %174, label %175 -172: ; preds = %.noexc130 +174: ; preds = %.noexc130 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9), !noalias !225 - br label %186 + br label %188 -173: ; preds = %.noexc130 +175: ; preds = %.noexc130 %.sroa.11152.0..sroa_idx153 = getelementptr inbounds nuw i8, ptr %9, i64 9 %.sroa.11152.0.copyload154 = load i8, ptr %.sroa.11152.0..sroa_idx153, align 1, !noalias !231 %.sroa.13.0..sroa_idx155 = getelementptr inbounds nuw i8, ptr %9, i64 10 @@ -2210,50 +2210,50 @@ default.unreachable: ; preds = %134, %126 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull align 8 dereferenceable(32) %41, i64 32, i1 false) call void @llvm.experimental.noalias.scope.decl(metadata !232) call void @llvm.experimental.noalias.scope.decl(metadata !235) - %174 = load i64, ptr %34, align 8, !range !6, !alias.scope !238, !noalias !239, !noundef !5 - %175 = icmp eq i64 %174, -9223372036854775808 - br i1 %175, label %187, label %176 + %176 = load i64, ptr %34, align 8, !range !6, !alias.scope !238, !noalias !239, !noundef !5 + %177 = icmp eq i64 %176, -9223372036854775808 + br i1 %177, label %189, label %178 -176: ; preds = %173 +178: ; preds = %175 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7), !noalias !242 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h0aaf48f80649e9ddE.llvm.4616129397091597767"(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %34) to label %.noexc134 unwind label %.thread399.loopexit.split-lp -.noexc134: ; preds = %176 - %177 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %178 = load i64, ptr %177, align 8, !range !6, !noalias !242, !noundef !5 - %179 = icmp eq i64 %178, 0 - br i1 %179, label %"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E.exit.i.i133", label %180 - -180: ; preds = %.noexc134 - %181 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %182 = load i64, ptr %181, align 8, !noalias !242, !noundef !5 - %183 = icmp eq i64 %182, 0 - br i1 %183, label %"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E.exit.i.i133", label %184 - -184: ; preds = %180 - %185 = load ptr, ptr %7, align 8, !noalias !242, !nonnull !5, !noundef !5 - call void @__rust_dealloc(ptr noundef nonnull %185, i64 noundef %182, i64 noundef %178) #43, !noalias !239 +.noexc134: ; preds = %178 + %179 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %180 = load i64, ptr %179, align 8, !range !6, !noalias !242, !noundef !5 + %181 = icmp eq i64 %180, 0 + br i1 %181, label %"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E.exit.i.i133", label %182 + +182: ; preds = %.noexc134 + %183 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %184 = load i64, ptr %183, align 8, !noalias !242, !noundef !5 + %185 = icmp eq i64 %184, 0 + br i1 %185, label %"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E.exit.i.i133", label %186 + +186: ; preds = %182 + %187 = load ptr, ptr %7, align 8, !noalias !242, !nonnull !5, !noundef !5 + call void @__rust_dealloc(ptr noundef nonnull %187, i64 noundef %184, i64 noundef %180) #43, !noalias !239 br label %"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E.exit.i.i133" -"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E.exit.i.i133": ; preds = %184, %180, %.noexc134 +"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E.exit.i.i133": ; preds = %186, %182, %.noexc134 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7), !noalias !242 - br label %187 + br label %189 -186: ; preds = %167, %172 - %.sroa.11152.2.ph = phi i8 [ %.sroa.11152.0516, %167 ], [ %171, %172 ] +188: ; preds = %169, %174 + %.sroa.11152.2.ph = phi i8 [ %.sroa.11152.0516, %167 ], [ %173, %172 ] %.sroa.8149.0.ph = phi i8 [ 1, %167 ], [ 0, %172 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %36) br label %.thread408 -187: ; preds = %173, %"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E.exit.i.i133" +189: ; preds = %175, %"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E.exit.i.i133" call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) %.sroa.4229.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 10 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(14) %.sroa.4229.0..sroa_idx, ptr noundef nonnull align 2 dereferenceable(14) %.sroa.10204, i64 14, i1 false) - store i64 %169, ptr %0, align 8 + store i64 %171, ptr %0, align 8 %.sroa.2227.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i8 %171, ptr %.sroa.2227.0..sroa_idx, align 8 + store i8 %173, ptr %.sroa.2227.0..sroa_idx, align 8 %.sroa.3228.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 9 store i8 %.sroa.11152.0.copyload154, ptr %.sroa.3228.0..sroa_idx, align 1 %.sroa.5230.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 @@ -2261,7 +2261,7 @@ default.unreachable: ; preds = %134, %126 call void @llvm.lifetime.end.p0(i64 14, ptr nonnull %.sroa.10204) br label %.critedge -.thread408: ; preds = %164, %186, %195 +.thread408: ; preds = %166, %188, %197 %.sroa.020.1425 = phi i8 [ %.sroa.020.0520, %195 ], [ %.sroa.020.0520, %164 ], [ %.sroa.8149.0.ph, %186 ] %.sroa.522.1424 = phi i8 [ %.sroa.522.0519, %195 ], [ %.sroa.522.0519, %164 ], [ %.sroa.11152.2.ph, %186 ] %.sroa.023.1423 = phi i8 [ %.sroa.023.0518, %195 ], [ %.sroa.8234.0.ph, %164 ], [ %.sroa.023.0518, %186 ] @@ -2274,83 +2274,83 @@ default.unreachable: ; preds = %134, %126 to label %.noexc136 unwind label %.loopexit461 .noexc136: ; preds = %.thread408 - %188 = load i64, ptr %72, align 8, !range !6, !noalias !253, !noundef !5 - %189 = icmp eq i64 %188, 0 - br i1 %189, label %197, label %190 + %190 = load i64, ptr %72, align 8, !range !6, !noalias !253, !noundef !5 + %191 = icmp eq i64 %192, 0 + br i1 %191, label %199, label %192 -190: ; preds = %.noexc136 - %191 = load i64, ptr %73, align 8, !noalias !253, !noundef !5 - %192 = icmp eq i64 %191, 0 - br i1 %192, label %197, label %193 +192: ; preds = %.noexc136 + %193 = load i64, ptr %73, align 8, !noalias !253, !noundef !5 + %194 = icmp eq i64 %193, 0 + br i1 %194, label %199, label %195 -193: ; preds = %190 - %194 = load ptr, ptr %6, align 8, !noalias !253, !nonnull !5, !noundef !5 - call void @__rust_dealloc(ptr noundef nonnull %194, i64 noundef %191, i64 noundef %188) #43 - br label %197 +195: ; preds = %192 + %196 = load ptr, ptr %6, align 8, !noalias !253, !nonnull !5, !noundef !5 + call void @__rust_dealloc(ptr noundef nonnull %196, i64 noundef %193, i64 noundef %192) #43 + br label %199 -195: ; preds = %141 +197: ; preds = %143 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull align 8 dereferenceable(32) %71, i64 32, i1 false) call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %30) invoke void @"_ZN4core3ptr45drop_in_place$LT$serde_json..value..Value$GT$17h8c450484c5264072E.llvm.784653754634180241"(ptr noalias noundef nonnull align 8 dereferenceable(72) %37) to label %.thread408 unwind label %.loopexit -.thread399: ; preds = %.thread399.loopexit, %.thread399.loopexit.split-lp, %218, %196 +.thread399: ; preds = %.thread399.loopexit, %.thread399.loopexit.split-lp, %220, %198 %.sroa.045.8 = phi i1 [ %.sroa.045.13, %196 ], [ false, %218 ], [ true, %.thread399.loopexit ], [ false, %.thread399.loopexit.split-lp ] %.pn = phi { ptr, i32 } [ %lpad.phi460, %196 ], [ %lpad.thr_comm.split-lp, %218 ], [ %lpad.loopexit, %.thread399.loopexit ], [ %lpad.loopexit.split-lp, %.thread399.loopexit.split-lp ] invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h3912e219446a661dE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %38) #41 - to label %79 unwind label %219 + to label %79 unwind label %221 -.loopexit: ; preds = %195 +.loopexit: ; preds = %197 %lpad.loopexit458 = landingpad { ptr, i32 } cleanup - br label %196 + br label %198 -.loopexit.split-lp: ; preds = %143 +.loopexit.split-lp: ; preds = %145 %lpad.loopexit.split-lp459 = landingpad { ptr, i32 } cleanup - br label %196 + br label %198 -196: ; preds = %.loopexit.split-lp, %.loopexit +198: ; preds = %.loopexit.split-lp, %.loopexit %lpad.phi460 = phi { ptr, i32 } [ %lpad.loopexit458, %.loopexit ], [ %lpad.loopexit.split-lp459, %.loopexit.split-lp ] %.sroa.045.13 = xor i1 %trunc60, true br label %.thread399 -197: ; preds = %193, %190, %.noexc136 +199: ; preds = %195, %192, %.noexc136 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6), !noalias !253 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %38) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %.sroa.7) call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %.sroa.8146) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %.sroa.7) call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %.sroa.8146) - %198 = load ptr, ptr %53, align 8, !alias.scope !262, !noalias !129, !nonnull !5, !noundef !5 - %199 = load ptr, ptr %54, align 8, !alias.scope !262, !noalias !129, !nonnull !5, !noundef !5 - %200 = icmp eq ptr %199, %198 - br i1 %200, label %._crit_edge, label %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i" + %200 = load ptr, ptr %53, align 8, !alias.scope !262, !noalias !129, !nonnull !5, !noundef !5 + %201 = load ptr, ptr %54, align 8, !alias.scope !262, !noalias !129, !nonnull !5, !noundef !5 + %202 = icmp eq ptr %201, %200 + br i1 %202, label %._crit_edge, label %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd46226d103d79187E.llvm.331090089658796353.exit.i.i" -.critedge: ; preds = %187, %165, %143 +.critedge: ; preds = %189, %167, %145 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %37) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5), !noalias !266 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h0aaf48f80649e9ddE.llvm.4616129397091597767"(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %38) to label %.noexc137 unwind label %.loopexit.split-lp462 .noexc137: ; preds = %.critedge - %201 = getelementptr inbounds nuw i8, ptr %5, i64 8 - %202 = load i64, ptr %201, align 8, !range !6, !noalias !266, !noundef !5 - %203 = icmp eq i64 %202, 0 - br i1 %203, label %210, label %204 - -204: ; preds = %.noexc137 - %205 = getelementptr inbounds nuw i8, ptr %5, i64 16 - %206 = load i64, ptr %205, align 8, !noalias !266, !noundef !5 - %207 = icmp eq i64 %206, 0 - br i1 %207, label %210, label %208 - -208: ; preds = %204 - %209 = load ptr, ptr %5, align 8, !noalias !266, !nonnull !5, !noundef !5 - call void @__rust_dealloc(ptr noundef nonnull %209, i64 noundef %206, i64 noundef %202) #43 - br label %210 - -210: ; preds = %208, %204, %.noexc137 + %203 = getelementptr inbounds nuw i8, ptr %5, i64 8 + %204 = load i64, ptr %203, align 8, !range !6, !noalias !266, !noundef !5 + %205 = icmp eq i64 %204, 0 + br i1 %205, label %212, label %206 + +206: ; preds = %.noexc137 + %207 = getelementptr inbounds nuw i8, ptr %5, i64 16 + %208 = load i64, ptr %207, align 8, !noalias !266, !noundef !5 + %209 = icmp eq i64 %208, 0 + br i1 %209, label %212, label %210 + +210: ; preds = %206 + %211 = load ptr, ptr %5, align 8, !noalias !266, !nonnull !5, !noundef !5 + call void @__rust_dealloc(ptr noundef nonnull %211, i64 noundef %208, i64 noundef %204) #43 + br label %212 + +212: ; preds = %210, %206, %.noexc137 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5), !noalias !266 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %38) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %.sroa.7) @@ -2361,65 +2361,65 @@ default.unreachable: ; preds = %134, %126 call void @llvm.experimental.noalias.scope.decl(metadata !278) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4), !noalias !151 store ptr %39, ptr %4, align 8, !noalias !151 - %211 = load ptr, ptr %54, align 8, !alias.scope !279, !nonnull !5, !noundef !5 - %212 = invoke noundef i64 @_ZN4core4iter6traits10exact_size17ExactSizeIterator3len17hde05e5919f9ad533E.llvm.3021571406010367114(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %39) - to label %215 unwind label %213 + %213 = load ptr, ptr %54, align 8, !alias.scope !279, !nonnull !5, !noundef !5 + %214 = invoke noundef i64 @_ZN4core4iter6traits10exact_size17ExactSizeIterator3len17hde05e5919f9ad533E.llvm.3021571406010367114(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %39) + to label %215 unwind label %215 -213: ; preds = %215, %210 - %214 = landingpad { ptr, i32 } +215: ; preds = %217, %212 + %216 = landingpad { ptr, i32 } cleanup invoke void @"_ZN157_$LT$$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd25fe6a53bb16c8bE.llvm.4616129397091597767"(ptr noalias noundef nonnull align 8 dereferenceable(8) %4) - to label %.body105 unwind label %216 + to label %.body105 unwind label %218 -215: ; preds = %210 - invoke void @"_ZN4core3ptr103drop_in_place$LT$$u5b$indexmap..Bucket$LT$alloc..string..String$C$serde_json..value..Value$GT$$u5d$$GT$17he37116cab0fa664cE.llvm.4616129397091597767"(ptr noalias noundef nonnull align 8 %211, i64 noundef %212) - to label %"_ZN4core3ptr106drop_in_place$LT$indexmap..map..iter..IntoIter$LT$alloc..string..String$C$serde_json..value..Value$GT$$GT$17h38b9c4ced7951fc3E.llvm.4616129397091597767.exit.i140" unwind label %213 +217: ; preds = %212 + invoke void @"_ZN4core3ptr103drop_in_place$LT$$u5b$indexmap..Bucket$LT$alloc..string..String$C$serde_json..value..Value$GT$$u5d$$GT$17he37116cab0fa664cE.llvm.4616129397091597767"(ptr noalias noundef nonnull align 8 %213, i64 noundef %214) + to label %"_ZN4core3ptr106drop_in_place$LT$indexmap..map..iter..IntoIter$LT$alloc..string..String$C$serde_json..value..Value$GT$$GT$17h38b9c4ced7951fc3E.llvm.4616129397091597767.exit.i140" unwind label %215 -216: ; preds = %213 - %217 = landingpad { ptr, i32 } +218: ; preds = %215 + %219 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() #42 unreachable -"_ZN4core3ptr106drop_in_place$LT$indexmap..map..iter..IntoIter$LT$alloc..string..String$C$serde_json..value..Value$GT$$GT$17h38b9c4ced7951fc3E.llvm.4616129397091597767.exit.i140": ; preds = %215 +"_ZN4core3ptr106drop_in_place$LT$indexmap..map..iter..IntoIter$LT$alloc..string..String$C$serde_json..value..Value$GT$$GT$17h38b9c4ced7951fc3E.llvm.4616129397091597767.exit.i140": ; preds = %217 invoke void @"_ZN157_$LT$$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd25fe6a53bb16c8bE.llvm.4616129397091597767"(ptr noalias noundef nonnull align 8 dereferenceable(8) %4) to label %.critedge86 unwind label %50 -218: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111.thread" +220: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4dd919777ea29ee7E.exit111.thread" %lpad.thr_comm.split-lp = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr45drop_in_place$LT$serde_json..value..Value$GT$17h8c450484c5264072E.llvm.784653754634180241"(ptr noalias noundef nonnull align 8 dereferenceable(72) %37) #41 - to label %.thread399 unwind label %219 + to label %.thread399 unwind label %221 -219: ; preds = %225, %221, %218, %.thread399, %79 - %220 = landingpad { ptr, i32 } +221: ; preds = %227, %223, %220, %.thread399, %79 + %222 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() #42 unreachable -221: ; preds = %.body +223: ; preds = %.body invoke void @"_ZN4core3ptr175drop_in_place$LT$meilisearch_types..deserr..DeserrError$LT$meilisearch_types..deserr..DeserrJson$C$meilisearch_types..error..deserr_codes..InvalidSettingsTypoTolerance$GT$$GT$17ha89fc787542d8a71E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %41) #41 - to label %.body105 unwind label %219 + to label %.body105 unwind label %221 -222: ; preds = %46 +224: ; preds = %46 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %24) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) - %223 = getelementptr inbounds nuw i8, ptr %26, i64 8 - %.sroa.026.0.copyload27 = load i64, ptr %223, align 8 + %225 = getelementptr inbounds nuw i8, ptr %26, i64 8 + %.sroa.026.0.copyload27 = load i64, ptr %225, align 8 %.sroa.528.0..sroa_idx29 = getelementptr inbounds nuw i8, ptr %26, i64 16 %.sroa.528.0.copyload30 = load i32, ptr %.sroa.528.0..sroa_idx29, align 8 %.sroa.631.0..sroa_idx32 = getelementptr inbounds nuw i8, ptr %26, i64 20 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(20) %.sroa.631, ptr noundef nonnull align 4 dereferenceable(20) %.sroa.631.0..sroa_idx32, i64 20, i1 false) call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %26) - br label %112 + br label %114 -224: ; preds = %225, %.body105 +226: ; preds = %227, %.body105 resume { ptr, i32 } %.pn70 -225: ; preds = %.body105 +227: ; preds = %.body105 invoke void @"_ZN4core3ptr73drop_in_place$LT$deserr..value..Value$LT$serde_json..value..Value$GT$$GT$17h42e8fd0d158193feE.llvm.784653754634180241"(ptr noalias noundef nonnull align 8 dereferenceable(72) %1) #41 - to label %224 unwind label %219 + to label %224 unwind label %221 } ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable diff --git a/bench/meshlab/optimized/gltf_loader.ll b/bench/meshlab/optimized/gltf_loader.ll index 97fc823bd82..c0ce179711d 100644 --- a/bench/meshlab/optimized/gltf_loader.ll +++ b/bench/meshlab/optimized/gltf_loader.ll @@ -14374,130 +14374,130 @@ _ZL13stbi__get16leP13stbi__context.exit: ; preds = %190, %193, %_ZL19st %216 = icmp eq i8 %215, 0 br i1 %216, label %_ZL10stbi__get8P13stbi__context.exit79.thread, label %217 -217: ; preds = %_ZL13stbi__get16leP13stbi__context.exit - %218 = icmp ult ptr %214, %213 - br i1 %218, label %219, label %222 - -219: ; preds = %217 - %220 = getelementptr inbounds nuw i8, ptr %214, i64 1 - store ptr %220, ptr %2, align 8 - %221 = load i8, ptr %214, align 1 +220: ; preds = %_ZL13stbi__get16leP13stbi__context.exit + %221 = icmp ult ptr %214, %213 + br i1 %221, label %222, label %225 + +222: ; preds = %220 + %223 = getelementptr inbounds nuw i8, ptr %214, i64 1 + store ptr %223, ptr %2, align 8 + %224 = load i8, ptr %214, align 1 br label %_ZL10stbi__get8P13stbi__context.exit.i94 -222: ; preds = %217 - %223 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %224 = load i32, ptr %223, align 8 - %.not.i.i90 = icmp eq i32 %224, 0 - br i1 %.not.i.i90, label %_ZL10stbi__get8P13stbi__context.exit.i94, label %225 - -225: ; preds = %222 - %226 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %227 = load ptr, ptr %226, align 8 - %228 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %229 = load ptr, ptr %228, align 8 - %230 = getelementptr inbounds nuw i8, ptr %0, i64 56 - %231 = getelementptr inbounds nuw i8, ptr %0, i64 52 - %232 = load i32, ptr %231, align 4 - %233 = tail call noundef i32 %227(ptr noundef %229, ptr noundef nonnull %230, i32 noundef %232) - %234 = icmp eq i32 %233, 0 - br i1 %234, label %235, label %237 +225: ; preds = %220 + %226 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %227 = load i32, ptr %226, align 8 + %.not.i.i90 = icmp eq i32 %227, 0 + br i1 %.not.i.i90, label %_ZL10stbi__get8P13stbi__context.exit.i94, label %228 -235: ; preds = %225 - store i32 0, ptr %223, align 8 - %236 = getelementptr inbounds nuw i8, ptr %0, i64 57 - store i8 0, ptr %230, align 1 +228: ; preds = %225 + %229 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %230 = load ptr, ptr %229, align 8 + %231 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %232 = load ptr, ptr %231, align 8 + %233 = getelementptr inbounds nuw i8, ptr %0, i64 56 + %234 = getelementptr inbounds nuw i8, ptr %0, i64 52 + %235 = load i32, ptr %234, align 4 + %236 = tail call noundef i32 %227(ptr noundef %232, ptr noundef nonnull %233, i32 noundef %235) + %237 = icmp eq i32 %236, 0 + br i1 %237, label %238, label %240 + +238: ; preds = %228 + store i32 0, ptr %226, align 8 + %239 = getelementptr inbounds nuw i8, ptr %0, i64 57 + store i8 0, ptr %233, align 1 br label %_ZL19stbi__refill_bufferP13stbi__context.exit.i.i92 -237: ; preds = %225 - %238 = sext i32 %233 to i64 - %239 = getelementptr inbounds i8, ptr %230, i64 %238 - %.pre.i.i91 = load i8, ptr %230, align 1 +240: ; preds = %228 + %241 = sext i32 %236 to i64 + %242 = getelementptr inbounds i8, ptr %233, i64 %241 + %.pre.i.i91 = load i8, ptr %233, align 1 br label %_ZL19stbi__refill_bufferP13stbi__context.exit.i.i92 -_ZL19stbi__refill_bufferP13stbi__context.exit.i.i92: ; preds = %237, %235 - %240 = phi i8 [ 0, %235 ], [ %.pre.i.i91, %237 ] - %.sink.i.i.i93 = phi ptr [ %236, %235 ], [ %239, %237 ] +_ZL19stbi__refill_bufferP13stbi__context.exit.i.i92: ; preds = %240, %238 + %243 = phi i8 [ 0, %235 ], [ %.pre.i.i91, %237 ] + %.sink.i.i.i93 = phi ptr [ %239, %235 ], [ %242, %237 ] store ptr %.sink.i.i.i93, ptr %4, align 8 - %241 = getelementptr inbounds nuw i8, ptr %0, i64 57 - store ptr %241, ptr %2, align 8 + %244 = getelementptr inbounds nuw i8, ptr %0, i64 57 + store ptr %244, ptr %2, align 8 br label %_ZL10stbi__get8P13stbi__context.exit.i94 -_ZL10stbi__get8P13stbi__context.exit.i94: ; preds = %_ZL19stbi__refill_bufferP13stbi__context.exit.i.i92, %222, %219 - %242 = phi ptr [ %213, %219 ], [ %.sink.i.i.i93, %_ZL19stbi__refill_bufferP13stbi__context.exit.i.i92 ], [ %213, %222 ] - %243 = phi ptr [ %220, %219 ], [ %241, %_ZL19stbi__refill_bufferP13stbi__context.exit.i.i92 ], [ %214, %222 ] - %.0.i.i95 = phi i8 [ %221, %219 ], [ %240, %_ZL19stbi__refill_bufferP13stbi__context.exit.i.i92 ], [ 0, %222 ] - %244 = icmp ult ptr %243, %242 - br i1 %244, label %245, label %248 - -245: ; preds = %_ZL10stbi__get8P13stbi__context.exit.i94 - %246 = getelementptr inbounds nuw i8, ptr %243, i64 1 - store ptr %246, ptr %2, align 8 - %247 = load i8, ptr %243, align 1 - br label %_ZL13stbi__get16leP13stbi__context.exit101 +_ZL10stbi__get8P13stbi__context.exit.i94: ; preds = %_ZL19stbi__refill_bufferP13stbi__context.exit.i.i92, %225, %222 + %245 = phi ptr [ %213, %219 ], [ %.sink.i.i.i93, %_ZL19stbi__refill_bufferP13stbi__context.exit.i.i92 ], [ %213, %222 ] + %246 = phi ptr [ %223, %219 ], [ %244, %_ZL19stbi__refill_bufferP13stbi__context.exit.i.i92 ], [ %214, %222 ] + %.0.i.i95 = phi i8 [ %224, %219 ], [ %243, %_ZL19stbi__refill_bufferP13stbi__context.exit.i.i92 ], [ 0, %222 ] + %247 = icmp ult ptr %246, %245 + br i1 %247, label %248, label %251 248: ; preds = %_ZL10stbi__get8P13stbi__context.exit.i94 - %249 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %250 = load i32, ptr %249, align 8 - %.not.i2.i96 = icmp eq i32 %250, 0 - br i1 %.not.i2.i96, label %_ZL13stbi__get16leP13stbi__context.exit101, label %251 + %249 = getelementptr inbounds nuw i8, ptr %246, i64 1 + store ptr %249, ptr %2, align 8 + %250 = load i8, ptr %246, align 1 + br label %_ZL13stbi__get16leP13stbi__context.exit101 -251: ; preds = %248 - %252 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %253 = load ptr, ptr %252, align 8 - %254 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %255 = load ptr, ptr %254, align 8 - %256 = getelementptr inbounds nuw i8, ptr %0, i64 56 - %257 = getelementptr inbounds nuw i8, ptr %0, i64 52 - %258 = load i32, ptr %257, align 4 - %259 = tail call noundef i32 %253(ptr noundef %255, ptr noundef nonnull %256, i32 noundef %258) - %260 = icmp eq i32 %259, 0 - br i1 %260, label %261, label %263 - -261: ; preds = %251 - store i32 0, ptr %249, align 8 - %262 = getelementptr inbounds nuw i8, ptr %0, i64 57 - store i8 0, ptr %256, align 1 +251: ; preds = %_ZL10stbi__get8P13stbi__context.exit.i94 + %252 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %253 = load i32, ptr %252, align 8 + %.not.i2.i96 = icmp eq i32 %253, 0 + br i1 %.not.i2.i96, label %_ZL13stbi__get16leP13stbi__context.exit101, label %254 + +254: ; preds = %251 + %255 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %256 = load ptr, ptr %255, align 8 + %257 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %258 = load ptr, ptr %257, align 8 + %259 = getelementptr inbounds nuw i8, ptr %0, i64 56 + %260 = getelementptr inbounds nuw i8, ptr %0, i64 52 + %261 = load i32, ptr %260, align 4 + %262 = tail call noundef i32 %253(ptr noundef %258, ptr noundef nonnull %259, i32 noundef %261) + %263 = icmp eq i32 %262, 0 + br i1 %263, label %264, label %266 + +264: ; preds = %254 + store i32 0, ptr %252, align 8 + %265 = getelementptr inbounds nuw i8, ptr %0, i64 57 + store i8 0, ptr %259, align 1 br label %_ZL19stbi__refill_bufferP13stbi__context.exit.i4.i98 -263: ; preds = %251 - %264 = sext i32 %259 to i64 - %265 = getelementptr inbounds i8, ptr %256, i64 %264 - %.pre.i3.i97 = load i8, ptr %256, align 1 +266: ; preds = %254 + %267 = sext i32 %262 to i64 + %268 = getelementptr inbounds i8, ptr %259, i64 %267 + %.pre.i3.i97 = load i8, ptr %259, align 1 br label %_ZL19stbi__refill_bufferP13stbi__context.exit.i4.i98 -_ZL19stbi__refill_bufferP13stbi__context.exit.i4.i98: ; preds = %263, %261 - %266 = phi i8 [ 0, %261 ], [ %.pre.i3.i97, %263 ] - %.sink.i.i5.i99 = phi ptr [ %262, %261 ], [ %265, %263 ] +_ZL19stbi__refill_bufferP13stbi__context.exit.i4.i98: ; preds = %266, %264 + %269 = phi i8 [ 0, %261 ], [ %.pre.i3.i97, %263 ] + %.sink.i.i5.i99 = phi ptr [ %265, %261 ], [ %268, %263 ] store ptr %.sink.i.i5.i99, ptr %4, align 8 - %267 = getelementptr inbounds nuw i8, ptr %0, i64 57 - store ptr %267, ptr %2, align 8 + %270 = getelementptr inbounds nuw i8, ptr %0, i64 57 + store ptr %270, ptr %2, align 8 br label %_ZL13stbi__get16leP13stbi__context.exit101 -_ZL13stbi__get16leP13stbi__context.exit101: ; preds = %245, %248, %_ZL19stbi__refill_bufferP13stbi__context.exit.i4.i98 - %268 = phi ptr [ %242, %245 ], [ %.sink.i.i5.i99, %_ZL19stbi__refill_bufferP13stbi__context.exit.i4.i98 ], [ %242, %248 ] - %269 = phi ptr [ %246, %245 ], [ %267, %_ZL19stbi__refill_bufferP13stbi__context.exit.i4.i98 ], [ %243, %248 ] - %.0.i6.i100 = phi i8 [ %247, %245 ], [ %266, %_ZL19stbi__refill_bufferP13stbi__context.exit.i4.i98 ], [ 0, %248 ] +_ZL13stbi__get16leP13stbi__context.exit101: ; preds = %248, %251, %_ZL19stbi__refill_bufferP13stbi__context.exit.i4.i98 + %271 = phi ptr [ %245, %245 ], [ %.sink.i.i5.i99, %_ZL19stbi__refill_bufferP13stbi__context.exit.i4.i98 ], [ %245, %248 ] + %272 = phi ptr [ %249, %245 ], [ %270, %_ZL19stbi__refill_bufferP13stbi__context.exit.i4.i98 ], [ %246, %248 ] + %.0.i6.i100 = phi i8 [ %250, %245 ], [ %269, %_ZL19stbi__refill_bufferP13stbi__context.exit.i4.i98 ], [ 0, %248 ] %270 = or i8 %.0.i6.i100, %.0.i.i95 %271 = icmp eq i8 %270, 0 br i1 %271, label %_ZL10stbi__get8P13stbi__context.exit79.thread, label %272 -272: ; preds = %_ZL13stbi__get16leP13stbi__context.exit101 - %273 = icmp ult ptr %269, %268 +272:; preds = %_ZL13stbi__get16leP13stbi__context.exit101 + %273 = icmp ult ptr %269, %271 br i1 %273, label %274, label %277 -274: ; preds = %272 +274: ; preds = %272 %275 = getelementptr inbounds nuw i8, ptr %269, i64 1 store ptr %275, ptr %2, align 8 %276 = load i8, ptr %269, align 1 br label %_ZL10stbi__get8P13stbi__context.exit107 -277: ; preds = %272 - %278 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %279 = load i32, ptr %278, align 8 - %.not.i102 = icmp eq i32 %279, 0 +283: ; preds = %272 + %284 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %285 = load i32, ptr %284, align 8 + %.not.i102 = icmp eq i32 %285, 0 br i1 %.not.i102, label %_ZL10stbi__get8P13stbi__context.exit107, label %280 -280: ; preds = %277 +296: ; preds = %283 %281 = getelementptr inbounds nuw i8, ptr %0, i64 16 %282 = load ptr, ptr %281, align 8 %283 = getelementptr inbounds nuw i8, ptr %0, i64 40 @@ -14515,51 +14515,51 @@ _ZL13stbi__get16leP13stbi__context.exit101: ; preds = %245, %248, %_ZL19st store i8 0, ptr %285, align 1 br label %_ZL19stbi__refill_bufferP13stbi__context.exit.i104 -292: ; preds = %280 - %293 = sext i32 %288 to i64 - %294 = getelementptr inbounds i8, ptr %285, i64 %293 +298: ; preds = %280 + %299 = sext i32 %288 to i64 + %300 = getelementptr inbounds i8, ptr %285, i64 %299 %.pre.i103 = load i8, ptr %285, align 1 br label %_ZL19stbi__refill_bufferP13stbi__context.exit.i104 -_ZL19stbi__refill_bufferP13stbi__context.exit.i104: ; preds = %292, %290 - %295 = phi i8 [ 0, %290 ], [ %.pre.i103, %292 ] - %.sink.i.i105 = phi ptr [ %291, %290 ], [ %294, %292 ] +_ZL19stbi__refill_bufferP13stbi__context.exit.i104: ; preds = %298, %290 + %301 = phi i8 [ 0, %290 ], [ %.pre.i103, %292 ] + %.sink.i.i105 = phi ptr [ %291, %290 ], [ %300, %292 ] store ptr %.sink.i.i105, ptr %4, align 8 - %296 = getelementptr inbounds nuw i8, ptr %0, i64 57 - store ptr %296, ptr %2, align 8 + %302 = getelementptr inbounds nuw i8, ptr %0, i64 57 + store ptr %302, ptr %2, align 8 br label %_ZL10stbi__get8P13stbi__context.exit107 -_ZL10stbi__get8P13stbi__context.exit107: ; preds = %274, %277, %_ZL19stbi__refill_bufferP13stbi__context.exit.i104 - %.0.i106 = phi i8 [ %276, %274 ], [ %295, %_ZL19stbi__refill_bufferP13stbi__context.exit.i104 ], [ 0, %277 ] - br i1 %.not, label %299, label %switch.early.test +_ZL10stbi__get8P13stbi__context.exit107: ; preds = %274, %283, %_ZL19stbi__refill_bufferP13stbi__context.exit.i104 + %.0.i106 = phi i8 [ %276, %274 ], [ %301, %_ZL19stbi__refill_bufferP13stbi__context.exit.i104 ], [ 0, %277 ] + br i1 %.not, label %305, label %switch.early.test switch.early.test: ; preds = %_ZL10stbi__get8P13stbi__context.exit107 - %297 = add i8 %.0.i106, -8 - %switch.and = and i8 %297, -9 + %303 = add i8 %.0.i106, -8 + %switch.and = and i8 %303, -9 %switch.selectcmp = icmp eq i8 %switch.and, 0 - %298 = zext i1 %switch.selectcmp to i32 + %304 = zext i1 %switch.selectcmp to i32 br label %_ZL10stbi__get8P13stbi__context.exit79.thread -299: ; preds = %_ZL10stbi__get8P13stbi__context.exit107 +305: ; preds = %_ZL10stbi__get8P13stbi__context.exit107 switch i8 %.0.i106, label %_ZL10stbi__get8P13stbi__context.exit79.thread [ - i8 32, label %300 - i8 24, label %300 - i8 16, label %300 - i8 15, label %300 - i8 8, label %300 + i8 32, label %306 + i8 24, label %306 + i8 16, label %306 + i8 15, label %306 + i8 8, label %306 ] -300: ; preds = %299, %299, %299, %299, %299 +306: ; preds = %305, %305, %305, %305, %305 br label %_ZL10stbi__get8P13stbi__context.exit79.thread -_ZL10stbi__get8P13stbi__context.exit79.thread: ; preds = %108, %switch.early.test, %299, %_ZL10stbi__get8P13stbi__context.exit79, %_ZL13stbi__get16leP13stbi__context.exit101, %_ZL13stbi__get16leP13stbi__context.exit, %143, %84, %_ZL10stbi__get8P13stbi__context.exit65, %300 - %.0 = phi i32 [ 0, %_ZL10stbi__get8P13stbi__context.exit65 ], [ 0, %84 ], [ 0, %_ZL10stbi__get8P13stbi__context.exit79 ], [ 0, %_ZL13stbi__get16leP13stbi__context.exit ], [ 0, %_ZL13stbi__get16leP13stbi__context.exit101 ], [ 0, %299 ], [ 1, %300 ], [ 0, %143 ], [ %298, %switch.early.test ], [ 0, %108 ] - %301 = getelementptr inbounds nuw i8, ptr %0, i64 200 - %302 = load ptr, ptr %301, align 8 - store ptr %302, ptr %2, align 8 - %303 = getelementptr inbounds nuw i8, ptr %0, i64 208 - %304 = load ptr, ptr %303, align 8 - store ptr %304, ptr %4, align 8 +_ZL10stbi__get8P13stbi__context.exit79.thread: ; preds = %108, %switch.early.test, %305, %_ZL10stbi__get8P13stbi__context.exit79, %_ZL13stbi__get16leP13stbi__context.exit101, %_ZL13stbi__get16leP13stbi__context.exit, %143, %84, %_ZL10stbi__get8P13stbi__context.exit65, %306 + %.0 = phi i32 [ 0, %_ZL10stbi__get8P13stbi__context.exit65 ], [ 0, %84 ], [ 0, %_ZL10stbi__get8P13stbi__context.exit79 ], [ 0, %_ZL13stbi__get16leP13stbi__context.exit ], [ 0, %_ZL13stbi__get16leP13stbi__context.exit101 ], [ 0, %299 ], [ 1, %300 ], [ 0, %143 ], [ %304, %switch.early.test ], [ 0, %108 ] + %307 = getelementptr inbounds nuw i8, ptr %0, i64 200 + %308 = load ptr, ptr %307, align 8 + store ptr %308, ptr %2, align 8 + %309 = getelementptr inbounds nuw i8, ptr %0, i64 208 + %310 = load ptr, ptr %309, align 8 + store ptr %310, ptr %4, align 8 ret i32 %.0 } diff --git a/bench/mold/optimized/arch-m68k.ll b/bench/mold/optimized/arch-m68k.ll index 5b8e9098357..28ae74ac246 100644 --- a/bench/mold/optimized/arch-m68k.ll +++ b/bench/mold/optimized/arch-m68k.ll @@ -2324,8 +2324,8 @@ define linkonce_odr dso_local { ptr, i64 } @_ZN4mold12InputSectionINS_4M68KEE12g %15 = load ptr, ptr %5, align 8, !tbaa !280 %.idx = shl nuw nsw i64 %11, 12 %16 = getelementptr inbounds nuw i8, ptr %15, i64 %.idx - %.idx29 = shl nuw nsw i64 %8, 20 - %17 = getelementptr inbounds nuw i8, ptr %16, i64 %.idx29 + %.idx28 = shl nuw nsw i64 %8, 20 + %17 = getelementptr inbounds nuw i8, ptr %16, i64 %.idx28 %18 = getelementptr inbounds nuw %"struct.mold::ElfSym", ptr %17, i64 %14 %19 = getelementptr inbounds nuw i8, ptr %18, i64 14 %20 = load i8, ptr %19, align 1, !tbaa !258 @@ -2342,11 +2342,11 @@ define linkonce_odr dso_local { ptr, i64 } @_ZN4mold12InputSectionINS_4M68KEE12g %or.cond = or i1 %28, %switch br i1 %or.cond, label %188, label %29 -29: ; preds = %3 +27: ; preds = %3 %30 = icmp eq i16 %26, -1 br i1 %30, label %31, label %56 -31: ; preds = %29 +31:; preds = %29 %32 = getelementptr inbounds nuw i8, ptr %4, i64 696 %33 = ptrtoint ptr %18 to i64 %34 = ptrtoint ptr %15 to i64 @@ -2373,27 +2373,27 @@ define linkonce_odr dso_local { ptr, i64 } @_ZN4mold12InputSectionINS_4M68KEE12g %55 = or disjoint i64 %51, %54 br label %_ZN4mold10ObjectFileINS_4M68KEE9get_shndxERKNS_6ElfSymIS1_EE.exit -56: ; preds = %29 - %57 = icmp eq i8 %20, -1 - %58 = zext i16 %26 to i64 - %spec.select.i = select i1 %57, i64 0, i64 %58 +52: ; preds = %29 + %53 = icmp eq i8 %20, -1 + %54 = zext i16 %26 to i64 + %spec.select.i = select i1 %53, i64 0, i64 %54 br label %_ZN4mold10ObjectFileINS_4M68KEE9get_shndxERKNS_6ElfSymIS1_EE.exit -_ZN4mold10ObjectFileINS_4M68KEE9get_shndxERKNS_6ElfSymIS1_EE.exit: ; preds = %31, %56 +_ZN4mold10ObjectFileINS_4M68KEE9get_shndxERKNS_6ElfSymIS1_EE.exit: ; preds = %31, %52 %.0.i = phi i64 [ %55, %31 ], [ %spec.select.i, %56 ] - %59 = getelementptr inbounds nuw i8, ptr %4, i64 352 - %60 = load ptr, ptr %59, align 8, !tbaa !381 - %61 = getelementptr inbounds nuw %"class.std::unique_ptr.327", ptr %60, i64 %.0.i - %62 = load ptr, ptr %61, align 8, !tbaa !384 - %.not = icmp eq ptr %62, null - br i1 %.not, label %188, label %63 - -63: ; preds = %_ZN4mold10ObjectFileINS_4M68KEE9get_shndxERKNS_6ElfSymIS1_EE.exit - %64 = getelementptr inbounds nuw i8, ptr %18, i64 12 - %65 = load i8, ptr %64, align 1 - %66 = and i8 %65, 15 - %67 = icmp eq i8 %66, 3 - %68 = getelementptr inbounds nuw i8, ptr %18, i64 4 + %55 = getelementptr inbounds nuw i8, ptr %4, i64 352 + %56 = load ptr, ptr %55, align 8, !tbaa !381 + %57 = getelementptr inbounds nuw %"class.std::unique_ptr.327", ptr %56, i64 %.0.i + %58 = load ptr, ptr %57, align 8, !tbaa !384 + %.not = icmp eq ptr %58, null + br i1 %.not, label %188, label %59 + +59: ; preds = %_ZN4mold10ObjectFileINS_4M68KEE9get_shndxERKNS_6ElfSymIS1_EE.exit + %60 = getelementptr inbounds nuw i8, ptr %18, i64 12 + %61 = load i8, ptr %60, align 1 + %62 = and i8 %61, 15 + %63 = icmp eq i8 %62, 3 + %64 = getelementptr inbounds nuw i8, ptr %18, i64 4 %69 = load i8, ptr %68, align 1, !tbaa !258 %70 = zext i8 %69 to i64 %71 = shl nuw nsw i64 %70, 24 @@ -2413,7 +2413,7 @@ _ZN4mold10ObjectFileINS_4M68KEE9get_shndxERKNS_6ElfSymIS1_EE.exit: ; preds = %31 %85 = or disjoint i64 %81, %84 br i1 %67, label %86, label %137 -86: ; preds = %63 +86:; preds = %59 %87 = getelementptr inbounds nuw i8, ptr %2, i64 8 %88 = load i8, ptr %87, align 1, !tbaa !258 %89 = zext i8 %88 to i32 @@ -2445,7 +2445,7 @@ _ZN4mold10ObjectFileINS_4M68KEE9get_shndxERKNS_6ElfSymIS1_EE.exit: ; preds = %31 %115 = icmp sgt i64 %114, 0 br i1 %115, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i, label %_ZN4mold16MergeableSectionINS_4M68KEE12get_fragmentEl.exit -_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i: ; preds = %86, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i +_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i:; preds = %86, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i %.013.i.i.i = phi i64 [ %.1.i.i.i, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i ], [ %114, %86 ] %.sroa.011.012.i.i.i = phi ptr [ %.sroa.011.1.i.i.i, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i ], [ %108, %86 ] %116 = lshr i64 %.013.i.i.i, 1 @@ -2461,7 +2461,7 @@ _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEE %124 = icmp sgt i64 %.1.i.i.i, 0 br i1 %124, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i, label %_ZN4mold16MergeableSectionINS_4M68KEE12get_fragmentEl.exit, !llvm.loop !390 -_ZN4mold16MergeableSectionINS_4M68KEE12get_fragmentEl.exit: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i, %86 +_ZN4mold16MergeableSectionINS_4M68KEE12get_fragmentEl.exit:; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i, %86 %.sroa.011.0.lcssa.i.i.i = phi ptr [ %108, %86 ], [ %.sroa.011.1.i.i.i, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i ] %125 = getelementptr inbounds i8, ptr %.sroa.011.0.lcssa.i.i.i, i64 -4 %126 = ptrtoint ptr %125 to i64 @@ -2477,8 +2477,8 @@ _ZN4mold16MergeableSectionINS_4M68KEE12get_fragmentEl.exit: ; preds = %_ZSt7adva %136 = load ptr, ptr %131, align 8, !tbaa !394 br label %188 -137: ; preds = %63 - %138 = getelementptr inbounds nuw i8, ptr %62, i64 48 +137:; preds = %63 + %138 = getelementptr inbounds nuw i8, ptr %58, i64 48 %139 = load ptr, ptr %138, align 8, !tbaa !386 %140 = getelementptr inbounds nuw i8, ptr %62, i64 56 %141 = load ptr, ptr %140, align 8, !tbaa !388 @@ -2489,7 +2489,7 @@ _ZN4mold16MergeableSectionINS_4M68KEE12get_fragmentEl.exit: ; preds = %_ZSt7adva %146 = icmp sgt i64 %145, 0 br i1 %146, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17, label %_ZN4mold16MergeableSectionINS_4M68KEE12get_fragmentEl.exit24 -_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17: ; preds = %137, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17 +_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17:; preds = %137, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17 %.013.i.i.i18 = phi i64 [ %.1.i.i.i23, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17 ], [ %145, %137 ] %.sroa.011.012.i.i.i19 = phi ptr [ %.sroa.011.1.i.i.i22, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17 ], [ %139, %137 ] %147 = lshr i64 %.013.i.i.i18, 1 @@ -2505,13 +2505,13 @@ _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEE %155 = icmp sgt i64 %.1.i.i.i23, 0 br i1 %155, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17, label %_ZN4mold16MergeableSectionINS_4M68KEE12get_fragmentEl.exit24, !llvm.loop !390 -_ZN4mold16MergeableSectionINS_4M68KEE12get_fragmentEl.exit24: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17, %137 +_ZN4mold16MergeableSectionINS_4M68KEE12get_fragmentEl.exit24:; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17, %137 %.sroa.011.0.lcssa.i.i.i14 = phi ptr [ %139, %137 ], [ %.sroa.011.1.i.i.i22, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17 ] %156 = getelementptr inbounds i8, ptr %.sroa.011.0.lcssa.i.i.i14, i64 -4 %157 = ptrtoint ptr %156 to i64 %158 = sub i64 %157, %142 %159 = ashr exact i64 %158, 2 - %160 = getelementptr inbounds nuw i8, ptr %62, i64 8 + %160 = getelementptr inbounds nuw i8, ptr %58, i64 8 %161 = load ptr, ptr %160, align 8, !tbaa !391 %162 = getelementptr inbounds nuw ptr, ptr %161, i64 %159 %163 = getelementptr inbounds nuw i8, ptr %139, i64 %158 diff --git a/bench/mold/optimized/arch-sparc64.ll b/bench/mold/optimized/arch-sparc64.ll index 800e877f5a7..f915fdfbcb7 100644 --- a/bench/mold/optimized/arch-sparc64.ll +++ b/bench/mold/optimized/arch-sparc64.ll @@ -4541,10 +4541,10 @@ define linkonce_odr dso_local { ptr, i64 } @_ZN4mold12InputSectionINS_7SPARC64EE %18 = load ptr, ptr %5, align 8, !tbaa !280 %.idx = mul nuw nsw i64 %11, 1572864 %19 = getelementptr inbounds nuw i8, ptr %18, i64 %.idx - %.idx29 = mul nuw nsw i64 %8, 402653184 - %20 = getelementptr inbounds nuw i8, ptr %19, i64 %.idx29 - %.idx30 = mul nuw nsw i64 %14, 6144 - %21 = getelementptr inbounds nuw i8, ptr %20, i64 %.idx30 + %.idx28 = mul nuw nsw i64 %8, 402653184 + %20 = getelementptr inbounds nuw i8, ptr %19, i64 %.idx28 + %.idx29 = mul nuw nsw i64 %14, 6144 + %21 = getelementptr inbounds nuw i8, ptr %20, i64 %.idx29 %22 = getelementptr inbounds nuw %"struct.mold::ElfSym", ptr %21, i64 %17 %23 = getelementptr inbounds nuw i8, ptr %22, i64 6 %24 = load i8, ptr %23, align 1, !tbaa !259 @@ -4561,11 +4561,11 @@ define linkonce_odr dso_local { ptr, i64 } @_ZN4mold12InputSectionINS_7SPARC64EE %or.cond = or i1 %32, %switch br i1 %or.cond, label %250, label %33 -33: ; preds = %3 +31: ; preds = %3 %34 = icmp eq i16 %30, -1 br i1 %34, label %35, label %60 -35: ; preds = %33 +35:; preds = %33 %36 = getelementptr inbounds nuw i8, ptr %4, i64 696 %37 = ptrtoint ptr %22 to i64 %38 = ptrtoint ptr %18 to i64 @@ -4592,27 +4592,27 @@ define linkonce_odr dso_local { ptr, i64 } @_ZN4mold12InputSectionINS_7SPARC64EE %59 = or disjoint i64 %55, %58 br label %_ZN4mold10ObjectFileINS_7SPARC64EE9get_shndxERKNS_6ElfSymIS1_EE.exit -60: ; preds = %33 - %61 = icmp eq i8 %24, -1 - %62 = zext i16 %30 to i64 - %spec.select.i = select i1 %61, i64 0, i64 %62 +56: ; preds = %33 + %57 = icmp eq i8 %24, -1 + %58 = zext i16 %30 to i64 + %spec.select.i = select i1 %57, i64 0, i64 %58 br label %_ZN4mold10ObjectFileINS_7SPARC64EE9get_shndxERKNS_6ElfSymIS1_EE.exit -_ZN4mold10ObjectFileINS_7SPARC64EE9get_shndxERKNS_6ElfSymIS1_EE.exit: ; preds = %35, %60 +_ZN4mold10ObjectFileINS_7SPARC64EE9get_shndxERKNS_6ElfSymIS1_EE.exit: ; preds = %35, %56 %.0.i = phi i64 [ %59, %35 ], [ %spec.select.i, %60 ] - %63 = getelementptr inbounds nuw i8, ptr %4, i64 352 - %64 = load ptr, ptr %63, align 8, !tbaa !391 - %65 = getelementptr inbounds nuw %"class.std::unique_ptr.327", ptr %64, i64 %.0.i - %66 = load ptr, ptr %65, align 8, !tbaa !394 - %.not = icmp eq ptr %66, null - br i1 %.not, label %250, label %67 - -67: ; preds = %_ZN4mold10ObjectFileINS_7SPARC64EE9get_shndxERKNS_6ElfSymIS1_EE.exit - %68 = getelementptr inbounds nuw i8, ptr %22, i64 4 - %69 = load i8, ptr %68, align 1 - %70 = and i8 %69, 15 - %71 = icmp eq i8 %70, 3 - %72 = getelementptr inbounds nuw i8, ptr %22, i64 8 + %59 = getelementptr inbounds nuw i8, ptr %4, i64 352 + %60 = load ptr, ptr %59, align 8, !tbaa !391 + %61 = getelementptr inbounds nuw %"class.std::unique_ptr.327", ptr %60, i64 %.0.i + %62 = load ptr, ptr %61, align 8, !tbaa !394 + %.not = icmp eq ptr %62, null + br i1 %.not, label %250, label %63 + +63: ; preds = %_ZN4mold10ObjectFileINS_7SPARC64EE9get_shndxERKNS_6ElfSymIS1_EE.exit + %64 = getelementptr inbounds nuw i8, ptr %22, i64 4 + %65 = load i8, ptr %64, align 1 + %66 = and i8 %65, 15 + %67 = icmp eq i8 %66, 3 + %68 = getelementptr inbounds nuw i8, ptr %22, i64 8 %73 = load i8, ptr %72, align 1, !tbaa !259 %74 = zext i8 %73 to i64 %75 = shl nuw i64 %74, 56 @@ -4650,9 +4650,9 @@ _ZN4mold10ObjectFileINS_7SPARC64EE9get_shndxERKNS_6ElfSymIS1_EE.exit: ; preds = %107 = load i8, ptr %106, align 1, !tbaa !259 %108 = zext i8 %107 to i64 %109 = or i64 %105, %108 - br i1 %71, label %110, label %180 + br i1 %67, label %110, label %180 -110: ; preds = %67 +110:; preds = %67 %111 = getelementptr inbounds nuw i8, ptr %2, i64 16 %112 = load i8, ptr %111, align 1, !tbaa !259 %113 = zext i8 %112 to i64 @@ -4703,15 +4703,15 @@ _ZN4mold10ObjectFileINS_7SPARC64EE9get_shndxERKNS_6ElfSymIS1_EE.exit: ; preds = %158 = icmp sgt i64 %157, 0 br i1 %158, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i, label %_ZN4mold16MergeableSectionINS_7SPARC64EE12get_fragmentEl.exit -_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i: ; preds = %110, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i +_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i:; preds = %110, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i %.013.i.i.i = phi i64 [ %.1.i.i.i, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i ], [ %157, %110 ] %.sroa.011.012.i.i.i = phi ptr [ %.sroa.011.1.i.i.i, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i ], [ %151, %110 ] %159 = lshr i64 %.013.i.i.i, 1 %160 = getelementptr inbounds nuw i32, ptr %.sroa.011.012.i.i.i, i64 %159 - %161 = load i32, ptr %160, align 4, !tbaa !399 + %161 = load i32, ptr %156, align 4, !tbaa !399 %162 = zext i32 %161 to i64 %163 = icmp slt i64 %149, %162 - %164 = getelementptr inbounds nuw i8, ptr %160, i64 4 + %164 = getelementptr inbounds nuw i8, ptr %156, i64 4 %165 = xor i64 %159, -1 %166 = add nsw i64 %.013.i.i.i, %165 %.sroa.011.1.i.i.i = select i1 %163, ptr %.sroa.011.012.i.i.i, ptr %164 @@ -4719,7 +4719,7 @@ _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEE %167 = icmp sgt i64 %.1.i.i.i, 0 br i1 %167, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i, label %_ZN4mold16MergeableSectionINS_7SPARC64EE12get_fragmentEl.exit, !llvm.loop !400 -_ZN4mold16MergeableSectionINS_7SPARC64EE12get_fragmentEl.exit: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i, %110 +_ZN4mold16MergeableSectionINS_7SPARC64EE12get_fragmentEl.exit:; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i, %110 %.sroa.011.0.lcssa.i.i.i = phi ptr [ %151, %110 ], [ %.sroa.011.1.i.i.i, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i ] %168 = getelementptr inbounds i8, ptr %.sroa.011.0.lcssa.i.i.i, i64 -4 %169 = ptrtoint ptr %168 to i64 @@ -4735,7 +4735,7 @@ _ZN4mold16MergeableSectionINS_7SPARC64EE12get_fragmentEl.exit: ; preds = %_ZSt7a %179 = load ptr, ptr %174, align 8, !tbaa !404 br label %250 -180: ; preds = %67 +180:; preds = %67 %181 = getelementptr inbounds nuw i8, ptr %66, i64 48 %182 = load ptr, ptr %181, align 8, !tbaa !396 %183 = getelementptr inbounds nuw i8, ptr %66, i64 56 @@ -4747,7 +4747,7 @@ _ZN4mold16MergeableSectionINS_7SPARC64EE12get_fragmentEl.exit: ; preds = %_ZSt7a %189 = icmp sgt i64 %188, 0 br i1 %189, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17, label %_ZN4mold16MergeableSectionINS_7SPARC64EE12get_fragmentEl.exit24 -_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17: ; preds = %180, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17 +_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17:; preds = %180, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17 %.013.i.i.i18 = phi i64 [ %.1.i.i.i23, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17 ], [ %188, %180 ] %.sroa.011.012.i.i.i19 = phi ptr [ %.sroa.011.1.i.i.i22, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17 ], [ %182, %180 ] %190 = lshr i64 %.013.i.i.i18, 1 @@ -4763,13 +4763,13 @@ _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEE %198 = icmp sgt i64 %.1.i.i.i23, 0 br i1 %198, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17, label %_ZN4mold16MergeableSectionINS_7SPARC64EE12get_fragmentEl.exit24, !llvm.loop !400 -_ZN4mold16MergeableSectionINS_7SPARC64EE12get_fragmentEl.exit24: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17, %180 +_ZN4mold16MergeableSectionINS_7SPARC64EE12get_fragmentEl.exit24:; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17, %180 %.sroa.011.0.lcssa.i.i.i14 = phi ptr [ %182, %180 ], [ %.sroa.011.1.i.i.i22, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt4spanIjLm18446744073709551615EEEElEvRT_T0_.exit.i.i.i17 ] %199 = getelementptr inbounds i8, ptr %.sroa.011.0.lcssa.i.i.i14, i64 -4 %200 = ptrtoint ptr %199 to i64 %201 = sub i64 %200, %185 %202 = ashr exact i64 %201, 2 - %203 = getelementptr inbounds nuw i8, ptr %66, i64 8 + %203 = getelementptr inbounds nuw i8, ptr %62, i64 8 %204 = load ptr, ptr %203, align 8, !tbaa !401 %205 = getelementptr inbounds nuw ptr, ptr %204, i64 %202 %206 = getelementptr inbounds nuw i8, ptr %182, i64 %201 @@ -4800,7 +4800,7 @@ _ZN4mold16MergeableSectionINS_7SPARC64EE12get_fragmentEl.exit24: ; preds = %_ZSt %231 = load i8, ptr %230, align 1, !tbaa !259 %232 = zext i8 %231 to i64 %233 = shl nuw nsw i64 %232, 24 - %234 = or disjoint i64 %229, %233 + %234 = or disjoint i64 %229, %231 %235 = getelementptr inbounds nuw i8, ptr %2, i64 21 %236 = load i8, ptr %235, align 1, !tbaa !259 %237 = zext i8 %236 to i64 diff --git a/bench/mold/optimized/blake3.ll b/bench/mold/optimized/blake3.ll index b53ed7341be..5d25262da8a 100644 --- a/bench/mold/optimized/blake3.ll +++ b/bench/mold/optimized/blake3.ll @@ -1983,7 +1983,7 @@ define dso_local void @blake3_hasher_finalize_seek(ptr noundef readonly captures %9 = alloca %struct.output_t, align 8 %.sroa.5.sroa.0 = alloca [32 x i8], align 16 %10 = icmp eq i64 %3, 0 - br i1 %10, label %207, label %11 + br i1 %10, label %209, label %11 11: ; preds = %4 %12 = getelementptr inbounds nuw i8, ptr %0, i64 144 @@ -2068,7 +2068,7 @@ define dso_local void @blake3_hasher_finalize_seek(ptr noundef readonly captures output_root_bytes.exit: ; preds = %49, %51 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %6) #10 call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %8) #10 - br label %207 + br label %209 58: ; preds = %11 call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %9) #10 @@ -2081,67 +2081,67 @@ output_root_bytes.exit: ; preds = %49, %51 br i1 %64, label %78, label %.thread .thread: ; preds = %58 - %65 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %66 = zext i8 %13 to i64 - %67 = getelementptr inbounds nuw i8, ptr %0, i64 138 - %68 = load i8, ptr %67, align 2, !tbaa !11, !noalias !66 - %69 = icmp eq i8 %60, 0 - %..i31 = zext i1 %69 to i8 - %70 = or i8 %68, %..i31 - %71 = or i8 %70, 2 - %72 = getelementptr inbounds nuw i8, ptr %0, i64 72 - %73 = getelementptr inbounds nuw i8, ptr %0, i64 64 - %74 = load i64, ptr %73, align 8, !tbaa !14, !noalias !66 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 4 dereferenceable(32) %65, i64 32, i1 false) + %67 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %68 = zext i8 %13 to i64 + %69 = getelementptr inbounds nuw i8, ptr %0, i64 138 + %70 = load i8, ptr %69, align 2, !tbaa !11, !noalias !66 + %71 = icmp eq i8 %60, 0 + %..i31 = zext i1 %71 to i8 + %72 = or i8 %70, %..i31 + %73 = or i8 %72, 2 + %74 = getelementptr inbounds nuw i8, ptr %0, i64 72 + %75 = getelementptr inbounds nuw i8, ptr %0, i64 64 + %76 = load i64, ptr %75, align 8, !tbaa !14, !noalias !66 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 4 dereferenceable(32) %67, i64 32, i1 false) %.sroa.546.0..sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 40 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %.sroa.546.0..sroa_idx, ptr noundef nonnull align 1 dereferenceable(64) %72, i64 64, i1 false) - %75 = getelementptr inbounds nuw i8, ptr %9, i64 32 - store i64 %74, ptr %75, align 8, !tbaa !69 - %76 = getelementptr inbounds nuw i8, ptr %9, i64 104 - store i8 %62, ptr %76, align 8, !tbaa !10 - %77 = getelementptr inbounds nuw i8, ptr %9, i64 105 - store i8 %71, ptr %77, align 1, !tbaa !10 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %.sroa.546.0..sroa_idx, ptr noundef nonnull align 1 dereferenceable(64) %74, i64 64, i1 false) + %77 = getelementptr inbounds nuw i8, ptr %9, i64 32 + store i64 %76, ptr %77, align 8, !tbaa !69 + %78 = getelementptr inbounds nuw i8, ptr %9, i64 104 + store i8 %62, ptr %78, align 8, !tbaa !10 + %79 = getelementptr inbounds nuw i8, ptr %9, i64 105 + store i8 %73, ptr %79, align 1, !tbaa !10 br label %.lr.ph -78: ; preds = %58 - %79 = zext i8 %13 to i64 - %80 = add nsw i64 %79, -2 - %81 = getelementptr inbounds nuw i8, ptr %0, i64 145 - %82 = shl nsw i64 %80, 5 - %83 = getelementptr inbounds nuw [1760 x i8], ptr %81, i64 0, i64 %82 - %84 = getelementptr inbounds nuw i8, ptr %0, i64 138 - %85 = load i8, ptr %84, align 2, !tbaa !30 - %86 = or i8 %85, 4 +80: ; preds = %58 + %81 = zext i8 %13 to i64 + %82 = add nsw i64 %81, -2 + %83 = getelementptr inbounds nuw i8, ptr %0, i64 145 + %84 = shl nsw i64 %82, 5 + %85 = getelementptr inbounds nuw [1760 x i8], ptr %83, i64 0, i64 %84 + %86 = getelementptr inbounds nuw i8, ptr %0, i64 138 + %87 = load i8, ptr %86, align 2, !tbaa !30 + %88 = or i8 %87, 4 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 4 dereferenceable(32) %0, i64 32, i1 false) %.sroa.5.0..sroa_idx40 = getelementptr inbounds nuw i8, ptr %9, i64 40 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %.sroa.5.0..sroa_idx40, ptr noundef nonnull align 1 dereferenceable(64) %83, i64 64, i1 false) - %87 = getelementptr inbounds nuw i8, ptr %9, i64 32 - store i64 0, ptr %87, align 8, !tbaa !69 - %88 = getelementptr inbounds nuw i8, ptr %9, i64 104 - store i8 64, ptr %88, align 8, !tbaa !10 - %89 = getelementptr inbounds nuw i8, ptr %9, i64 105 - store i8 %86, ptr %89, align 1, !tbaa !10 - %.not2350 = icmp eq i64 %80, 0 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %.sroa.5.0..sroa_idx40, ptr noundef nonnull align 1 dereferenceable(64) %85, i64 64, i1 false) + %89 = getelementptr inbounds nuw i8, ptr %9, i64 32 + store i64 0, ptr %89, align 8, !tbaa !69 + %90 = getelementptr inbounds nuw i8, ptr %9, i64 104 + store i8 64, ptr %90, align 8, !tbaa !10 + %91 = getelementptr inbounds nuw i8, ptr %9, i64 105 + store i8 %88, ptr %91, align 1, !tbaa !10 + %.not2350 = icmp eq i64 %82, 0 br i1 %.not2350, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %.thread, %78 - %90 = phi ptr [ %77, %.thread ], [ %89, %78 ] - %91 = phi ptr [ %76, %.thread ], [ %88, %78 ] - %92 = phi ptr [ %75, %.thread ], [ %87, %78 ] - %.062 = phi i64 [ %66, %.thread ], [ %80, %78 ] - %.sink61 = phi i8 [ %71, %.thread ], [ %86, %78 ] +.lr.ph: ; preds = %.thread, %80 + %92 = phi ptr [ %79, %.thread ], [ %91, %78 ] + %93 = phi ptr [ %78, %.thread ], [ %90, %78 ] + %94 = phi ptr [ %77, %.thread ], [ %89, %78 ] + %.062 = phi i64 [ %68, %.thread ], [ %82, %78 ] + %.sink61 = phi i8 [ %73, %.thread ], [ %88, %78 ] %.sink5260 = phi i8 [ %62, %.thread ], [ 64, %78 ] - %.sink5359 = phi i64 [ %74, %.thread ], [ 0, %78 ] - %93 = getelementptr inbounds nuw i8, ptr %0, i64 145 - %94 = getelementptr inbounds nuw i8, ptr %9, i64 40 - %95 = getelementptr inbounds nuw i8, ptr %7, i64 4 - %96 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %97 = getelementptr inbounds nuw i8, ptr %7, i64 12 - %98 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %99 = getelementptr inbounds nuw i8, ptr %7, i64 20 - %100 = getelementptr inbounds nuw i8, ptr %7, i64 24 - %101 = getelementptr inbounds nuw i8, ptr %7, i64 28 - %102 = getelementptr inbounds nuw i8, ptr %0, i64 138 + %.sink5359 = phi i64 [ %76, %.thread ], [ 0, %78 ] + %95 = getelementptr inbounds nuw i8, ptr %0, i64 145 + %96 = getelementptr inbounds nuw i8, ptr %9, i64 40 + %97 = getelementptr inbounds nuw i8, ptr %7, i64 4 + %98 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %99 = getelementptr inbounds nuw i8, ptr %7, i64 12 + %100 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %101 = getelementptr inbounds nuw i8, ptr %7, i64 20 + %102 = getelementptr inbounds nuw i8, ptr %7, i64 24 + %103 = getelementptr inbounds nuw i8, ptr %7, i64 28 + %104 = getelementptr inbounds nuw i8, ptr %0, i64 138 %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 72 %.sroa.5.sroa.5.0..sroa.5.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 73 %.sroa.5.sroa.6.0..sroa.5.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 74 @@ -2174,28 +2174,28 @@ output_root_bytes.exit: ; preds = %49, %51 %.sroa.5.sroa.33.0..sroa.5.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 101 %.sroa.5.sroa.34.0..sroa.5.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 102 %.sroa.5.sroa.35.0..sroa.5.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 103 - br label %103 - -103: ; preds = %.lr.ph, %103 - %104 = phi i8 [ %.sink61, %.lr.ph ], [ %175, %103 ] - %105 = phi i64 [ %.sink5359, %.lr.ph ], [ 0, %103 ] - %106 = phi i8 [ %.sink5260, %.lr.ph ], [ 64, %103 ] - %.151 = phi i64 [ %.062, %.lr.ph ], [ %107, %103 ] - %107 = add i64 %.151, -1 - %108 = shl i64 %107, 5 - %109 = getelementptr inbounds nuw [1760 x i8], ptr %93, i64 0, i64 %108 + br label %105 + +105: ; preds = %.lr.ph, %105 + %106 = phi i8 [ %.sink61, %.lr.ph ], [ %177, %103 ] + %107 = phi i64 [ %.sink5359, %.lr.ph ], [ 0, %103 ] + %108 = phi i8 [ %.sink5260, %.lr.ph ], [ 64, %103 ] + %.151 = phi i64 [ %.062, %.lr.ph ], [ %109, %103 ] + %109 = add i64 %.151, -1 + %110 = shl i64 %109, 5 + %111 = getelementptr inbounds nuw [1760 x i8], ptr %95, i64 0, i64 %110 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %.sroa.5.sroa.0) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %.sroa.5.sroa.0, ptr noundef nonnull align 1 dereferenceable(32) %109, i64 32, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %.sroa.5.sroa.0, ptr noundef nonnull align 1 dereferenceable(32) %111, i64 32, i1 false) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #10 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(32) %9, i64 32, i1 false) - call void @blake3_compress_in_place(ptr noundef nonnull %7, ptr noundef nonnull %94, i8 noundef zeroext %106, i64 noundef %105, i8 noundef zeroext %104) #10 - %110 = load i32, ptr %7, align 16, !tbaa !27 + call void @blake3_compress_in_place(ptr noundef nonnull %7, ptr noundef nonnull %96, i8 noundef zeroext %108, i64 noundef %107, i8 noundef zeroext %106) #10 + %112 = load i32, ptr %7, align 16, !tbaa !27 %111 = trunc i32 %110 to i8 %112 = lshr i32 %110, 8 %113 = trunc i32 %112 to i8 - %114 = lshr i32 %110, 16 + %114 = lshr i32 %112, 16 %115 = trunc i32 %114 to i8 - %116 = lshr i32 %110, 24 + %116 = lshr i32 %112, 24 %117 = trunc nuw i32 %116 to i8 %118 = load i32, ptr %95, align 4, !tbaa !27 %119 = trunc i32 %118 to i8 @@ -2229,7 +2229,7 @@ output_root_bytes.exit: ; preds = %49, %51 %147 = trunc i32 %146 to i8 %148 = lshr i32 %142, 24 %149 = trunc nuw i32 %148 to i8 - %150 = load i32, ptr %99, align 4, !tbaa !27 + %150 = load i32, ptr %101, align 4, !tbaa !27 %151 = trunc i32 %150 to i8 %152 = lshr i32 %150, 8 %153 = trunc i32 %152 to i8 @@ -2237,7 +2237,7 @@ output_root_bytes.exit: ; preds = %49, %51 %155 = trunc i32 %154 to i8 %156 = lshr i32 %150, 24 %157 = trunc nuw i32 %156 to i8 - %158 = load i32, ptr %100, align 8, !tbaa !27 + %158 = load i32, ptr %102, align 8, !tbaa !27 %159 = trunc i32 %158 to i8 %160 = lshr i32 %158, 8 %161 = trunc i32 %160 to i8 @@ -2254,11 +2254,11 @@ output_root_bytes.exit: ; preds = %49, %51 %172 = lshr i32 %166, 24 %173 = trunc nuw i32 %172 to i8 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #10 - %174 = load i8, ptr %102, align 2, !tbaa !30 - %175 = or i8 %174, 4 + %176 = load i8, ptr %104, align 2, !tbaa !30 + %177 = or i8 %176, 4 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 4 dereferenceable(32) %0, i64 32, i1 false) - store i64 0, ptr %92, align 8, !tbaa !69 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %94, ptr noundef nonnull align 16 dereferenceable(32) %.sroa.5.sroa.0, i64 32, i1 false), !tbaa.struct !70 + store i64 0, ptr %94, align 8, !tbaa !69 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %96, ptr noundef nonnull align 16 dereferenceable(32) %.sroa.5.sroa.0, i64 32, i1 false), !tbaa.struct !70 store i8 %111, ptr %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx.sroa_idx, align 8 store i8 %113, ptr %.sroa.5.sroa.5.0..sroa.5.0..sroa_idx.sroa_idx, align 1 store i8 %115, ptr %.sroa.5.sroa.6.0..sroa.5.0..sroa_idx.sroa_idx, align 2 @@ -2291,74 +2291,74 @@ output_root_bytes.exit: ; preds = %49, %51 store i8 %169, ptr %.sroa.5.sroa.33.0..sroa.5.0..sroa_idx.sroa_idx, align 1 store i8 %171, ptr %.sroa.5.sroa.34.0..sroa.5.0..sroa_idx.sroa_idx, align 2 store i8 %173, ptr %.sroa.5.sroa.35.0..sroa.5.0..sroa_idx.sroa_idx, align 1, !tbaa !10 - store i8 64, ptr %91, align 8, !tbaa !10 - store i8 %175, ptr %90, align 1, !tbaa !10 + store i8 64, ptr %93, align 8, !tbaa !10 + store i8 %177, ptr %92, align 1, !tbaa !10 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %.sroa.5.sroa.0) - %.not23 = icmp eq i64 %107, 0 - br i1 %.not23, label %._crit_edge, label %103, !llvm.loop !71 - -._crit_edge: ; preds = %103, %78 - %176 = phi ptr [ %89, %78 ], [ %90, %103 ] - %177 = phi ptr [ %88, %78 ], [ %91, %103 ] - %178 = phi i8 [ %86, %78 ], [ %175, %103 ] - %179 = lshr i64 %1, 6 - %180 = and i64 %1, 63 + %.not23 = icmp eq i64 %109, 0 + br i1 %.not23, label %._crit_edge, label %105, !llvm.loop !71 + +._crit_edge: ; preds = %105, %80 + %178 = phi ptr [ %91, %78 ], [ %92, %103 ] + %179 = phi ptr [ %90, %78 ], [ %93, %103 ] + %180 = phi i8 [ %88, %78 ], [ %177, %103 ] + %181 = lshr i64 %1, 6 + %182 = and i64 %1, 63 call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %5) #10 - %.not.i24 = icmp eq i64 %180, 0 - br i1 %.not.i24, label %190, label %181 - -181: ; preds = %._crit_edge - %182 = getelementptr inbounds nuw i8, ptr %9, i64 40 - %183 = or i8 %178, 8 - call void @blake3_compress_xof(ptr noundef nonnull %9, ptr noundef nonnull %182, i8 noundef zeroext 64, i64 noundef %179, i8 noundef zeroext %183, ptr noundef nonnull %5) #10 - %184 = sub nuw nsw i64 64, %180 - %185 = call i64 @llvm.umin.i64(i64 range(i64 1, 0) %3, i64 %184) - %186 = getelementptr inbounds nuw i8, ptr %5, i64 %180 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %2, ptr noundef nonnull align 1 dereferenceable(1) %186, i64 %185, i1 false) - %187 = getelementptr inbounds nuw i8, ptr %2, i64 %185 - %188 = sub i64 %3, %185 - %189 = add nuw nsw i64 %179, 1 - br label %190 - -190: ; preds = %181, %._crit_edge - %.044.i25 = phi i64 [ %189, %181 ], [ %179, %._crit_edge ] - %.043.i26 = phi i64 [ %188, %181 ], [ %3, %._crit_edge ] - %.0.i27 = phi ptr [ %187, %181 ], [ %2, %._crit_edge ] - %191 = lshr i64 %.043.i26, 6 + %.not.i24 = icmp eq i64 %182, 0 + br i1 %.not.i24, label %192, label %183 + +183: ; preds = %._crit_edge + %184 = getelementptr inbounds nuw i8, ptr %9, i64 40 + %185 = or i8 %180, 8 + call void @blake3_compress_xof(ptr noundef nonnull %9, ptr noundef nonnull %184, i8 noundef zeroext 64, i64 noundef %181, i8 noundef zeroext %185, ptr noundef nonnull %5) #10 + %186 = sub nuw nsw i64 64, %182 + %187 = call i64 @llvm.umin.i64(i64 range(i64 1, 0) %3, i64 %186) + %188 = getelementptr inbounds nuw i8, ptr %5, i64 %182 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %2, ptr noundef nonnull align 1 dereferenceable(1) %188, i64 %187, i1 false) + %189 = getelementptr inbounds nuw i8, ptr %2, i64 %187 + %190 = sub i64 %3, %187 + %191 = add nuw nsw i64 %181, 1 + br label %192 + +192: ; preds = %183, %._crit_edge + %.044.i25 = phi i64 [ %191, %181 ], [ %181, %._crit_edge ] + %.043.i26 = phi i64 [ %190, %181 ], [ %3, %._crit_edge ] + %.0.i27 = phi ptr [ %189, %181 ], [ %2, %._crit_edge ] + %193 = lshr i64 %.043.i26, 6 %.not49.i28 = icmp ult i64 %.043.i26, 64 - br i1 %.not49.i28, label %197, label %192 - -192: ; preds = %190 - %193 = getelementptr inbounds nuw i8, ptr %9, i64 40 - %194 = load i8, ptr %177, align 8, !tbaa !20 - %195 = load i8, ptr %176, align 1, !tbaa !26 - %196 = or i8 %195, 8 - call void @blake3_xof_many(ptr noundef nonnull %9, ptr noundef nonnull %193, i8 noundef zeroext %194, i64 noundef %.044.i25, i8 noundef zeroext %196, ptr noundef %.0.i27, i64 noundef %191) #10 - br label %197 - -197: ; preds = %192, %190 - %198 = and i64 %.043.i26, 63 - %.not50.i29 = icmp eq i64 %198, 0 - br i1 %.not50.i29, label %output_root_bytes.exit30, label %199 - -199: ; preds = %197 - %200 = and i64 %.043.i26, -64 - %201 = getelementptr inbounds nuw i8, ptr %.0.i27, i64 %200 - %202 = add nuw nsw i64 %191, %.044.i25 - %203 = getelementptr inbounds nuw i8, ptr %9, i64 40 - %204 = load i8, ptr %177, align 8, !tbaa !20 - %205 = load i8, ptr %176, align 1, !tbaa !26 - %206 = or i8 %205, 8 - call void @blake3_compress_xof(ptr noundef nonnull %9, ptr noundef nonnull %203, i8 noundef zeroext %204, i64 noundef %202, i8 noundef zeroext %206, ptr noundef nonnull %5) #10 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %201, ptr nonnull align 16 %5, i64 %198, i1 false) + br i1 %.not49.i28, label %199, label %194 + +194: ; preds = %192 + %195 = getelementptr inbounds nuw i8, ptr %9, i64 40 + %196 = load i8, ptr %179, align 8, !tbaa !20 + %197 = load i8, ptr %178, align 1, !tbaa !26 + %198 = or i8 %197, 8 + call void @blake3_xof_many(ptr noundef nonnull %9, ptr noundef nonnull %195, i8 noundef zeroext %196, i64 noundef %.044.i25, i8 noundef zeroext %198, ptr noundef %.0.i27, i64 noundef %193) #10 + br label %199 + +199: ; preds = %194, %192 + %200 = and i64 %.043.i26, 63 + %.not50.i29 = icmp eq i64 %200, 0 + br i1 %.not50.i29, label %output_root_bytes.exit30, label %201 + +201: ; preds = %199 + %202 = and i64 %.043.i26, -64 + %203 = getelementptr inbounds nuw i8, ptr %.0.i27, i64 %202 + %204 = add nuw nsw i64 %193, %.044.i25 + %205 = getelementptr inbounds nuw i8, ptr %9, i64 40 + %206 = load i8, ptr %179, align 8, !tbaa !20 + %207 = load i8, ptr %178, align 1, !tbaa !26 + %208 = or i8 %207, 8 + call void @blake3_compress_xof(ptr noundef nonnull %9, ptr noundef nonnull %205, i8 noundef zeroext %206, i64 noundef %204, i8 noundef zeroext %208, ptr noundef nonnull %5) #10 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %203, ptr nonnull align 16 %5, i64 %200, i1 false) br label %output_root_bytes.exit30 -output_root_bytes.exit30: ; preds = %197, %199 +output_root_bytes.exit30: ; preds = %199, %201 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %5) #10 call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %9) #10 - br label %207 + br label %209 -207: ; preds = %4, %output_root_bytes.exit30, %output_root_bytes.exit +209: ; preds = %4, %output_root_bytes.exit30, %output_root_bytes.exit ret void } diff --git a/bench/openjdk/optimized/hb-ot-name.ll b/bench/openjdk/optimized/hb-ot-name.ll index 28c003744d1..e5d46535dc9 100644 --- a/bench/openjdk/optimized/hb-ot-name.ll +++ b/bench/openjdk/optimized/hb-ot-name.ll @@ -2137,7 +2137,7 @@ define linkonce_odr hidden noundef zeroext i1 @_ZNK3AAT4ltag8sanitizeEP21hb_sani %24 = icmp eq i8 %23, 0 br i1 %24, label %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit.thread, label %25 -25: ; preds = %13 +25: ; preds = %13 %26 = getelementptr inbounds nuw i8, ptr %0, i64 8 %27 = load i8, ptr %26, align 1 %28 = zext i8 %27 to i32 @@ -2149,9 +2149,9 @@ define linkonce_odr hidden noundef zeroext i1 @_ZNK3AAT4ltag8sanitizeEP21hb_sani %34 = getelementptr inbounds nuw i8, ptr %0, i64 10 %35 = load i8, ptr %34, align 1 %36 = zext i8 %35 to i32 - %37 = getelementptr inbounds nuw i8, ptr %0, i64 11 - %38 = load i8, ptr %37, align 1 - %39 = zext i8 %38 to i32 + %36 = getelementptr inbounds nuw i8, ptr %0, i64 11 + %37 = load i8, ptr %36, align 1 + %38 = zext i8 %37 to i32 %40 = or disjoint i32 %33, %29 %41 = or disjoint i32 %40, %39 %42 = shl nuw nsw i32 %36, 10 @@ -2160,7 +2160,7 @@ define linkonce_odr hidden noundef zeroext i1 @_ZNK3AAT4ltag8sanitizeEP21hb_sani %45 = icmp ugt i8 %27, 63 br i1 %45, label %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit.thread, label %46 -46: ; preds = %25 +46:; preds = %25 %47 = load ptr, ptr %12, align 8 %48 = ptrtoint ptr %47 to i64 %49 = sub i64 %48, %6 @@ -2169,85 +2169,85 @@ define linkonce_odr hidden noundef zeroext i1 @_ZNK3AAT4ltag8sanitizeEP21hb_sani br i1 %.not20.i, label %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit.thread, label %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit _ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit: ; preds = %46 - %51 = getelementptr inbounds nuw i8, ptr %1, i64 28 - %52 = load i32, ptr %51, align 4 - %53 = sub i32 %52, %44 - store i32 %53, ptr %51, align 4 - %54 = icmp sgt i32 %53, 0 - br i1 %54, label %55, label %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit.thread - -55: ; preds = %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit - %56 = load i8, ptr %26, align 1 - %57 = zext i8 %56 to i32 - %58 = shl nuw i32 %57, 24 - %59 = load i8, ptr %30, align 1 - %60 = zext i8 %59 to i32 - %61 = shl nuw nsw i32 %60, 16 - %62 = or disjoint i32 %61, %58 - %63 = load i8, ptr %34, align 1 - %64 = zext i8 %63 to i32 - %65 = shl nuw nsw i32 %64, 8 - %66 = or disjoint i32 %62, %65 - %67 = load i8, ptr %37, align 1 - %68 = zext i8 %67 to i32 - %69 = or disjoint i32 %66, %68 - %.not33 = icmp eq i32 %69, 0 + %57 = getelementptr inbounds nuw i8, ptr %1, i64 28 + %58 = load i32, ptr %57, align 4 + %59 = sub i32 %58, %44 + store i32 %59, ptr %57, align 4 + %60 = icmp sgt i32 %59, 0 + br i1 %60, label %61, label %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit.thread + +61: ; preds = %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit + %62 = load i8, ptr %26, align 1 + %63 = zext i8 %62 to i32 + %64 = shl nuw i32 %63, 24 + %65 = load i8, ptr %30, align 1 + %66 = zext i8 %65 to i32 + %67 = shl nuw nsw i32 %66, 16 + %68 = or disjoint i32 %67, %64 + %69 = load i8, ptr %34, align 1 + %70 = zext i8 %69 to i32 + %71 = shl nuw nsw i32 %70, 8 + %72 = or disjoint i32 %68, %71 + %73 = load i8, ptr %37, align 1 + %74 = zext i8 %73 to i32 + %75 = or disjoint i32 %72, %74 + %.not33 = icmp eq i32 %75, 0 br i1 %.not33, label %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit.thread, label %.lr.ph.preheader -.lr.ph.preheader: ; preds = %55 - %wide.trip.count = zext i32 %69 to i64 +.lr.ph.preheader: ; preds = %61 + %wide.trip.count = zext i32 %75 to i64 br label %.lr.ph -70: ; preds = %_ZN21hb_sanitize_context_t8dispatchIN3AAT13FTStringRangeEJPKNS1_4ltagEEEEDTcl9_dispatchfp_cv11hb_priorityILj16EE_Espclsr3stdE7forwardIT0_Efp0_EEERKT_DpOS8_.exit +76: ; preds = %_ZN21hb_sanitize_context_t8dispatchIN3AAT13FTStringRangeEJPKNS1_4ltagEEEEDTcl9_dispatchfp_cv11hb_priorityILj16EE_Espclsr3stdE7forwardIT0_Efp0_EEERKT_DpOS8_.exit %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 %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit.thread, label %.lr.ph, !llvm.loop !15 -.lr.ph: ; preds = %.lr.ph.preheader, %70 - %71 = phi i32 [ %53, %.lr.ph.preheader ], [ %97, %70 ] +.lr.ph: ; preds = %.lr.ph.preheader, %76 + %77 = phi i32 [ %59, %.lr.ph.preheader ], [ %103, %70 ] %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %70 ] - %72 = getelementptr inbounds nuw [1 x %"struct.AAT::FTStringRange"], ptr %3, i64 0, i64 %indvars.iv - %73 = getelementptr inbounds nuw i8, ptr %72, i64 4 - %74 = ptrtoint ptr %73 to i64 - %75 = sub i64 %74, %7 - %.not.i.i.i = icmp ugt i64 %75, %11 - br i1 %.not.i.i.i, label %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit.thread, label %76 - -76: ; preds = %.lr.ph - %77 = load i8, ptr %72, align 1 - %78 = zext i8 %77 to i64 - %79 = shl nuw nsw i64 %78, 8 - %80 = getelementptr inbounds nuw i8, ptr %72, i64 1 - %81 = load i8, ptr %80, align 1 - %82 = zext i8 %81 to i64 - %83 = getelementptr inbounds nuw i8, ptr %0, i64 %79 - %84 = getelementptr inbounds nuw i8, ptr %83, i64 %82 - %85 = getelementptr inbounds nuw i8, ptr %72, i64 2 - %86 = load i8, ptr %85, align 1 - %87 = zext i8 %86 to i32 - %88 = shl nuw nsw i32 %87, 8 - %89 = getelementptr inbounds nuw i8, ptr %72, i64 3 - %90 = load i8, ptr %89, align 1 - %91 = zext i8 %90 to i32 - %92 = or disjoint i32 %88, %91 - %93 = ptrtoint ptr %84 to i64 - %94 = sub i64 %93, %7 - %.not.i.i.i.i.i.i = icmp ugt i64 %94, %11 - %95 = sub i64 %48, %93 - %96 = trunc i64 %95 to i32 - %.not16.i.i.i.i.i.i = icmp ugt i32 %92, %96 + %78 = getelementptr inbounds nuw [1 x %"struct.AAT::FTStringRange"], ptr %3, i64 0, i64 %indvars.iv + %79 = getelementptr inbounds nuw i8, ptr %78, i64 4 + %80 = ptrtoint ptr %79 to i64 + %81 = sub i64 %80, %7 + %.not.i.i.i = icmp ugt i64 %81, %11 + br i1 %.not.i.i.i, label %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit.thread, label %82 + +82: ; preds = %.lr.ph + %83 = load i8, ptr %78, align 1 + %84 = zext i8 %83 to i64 + %85 = shl nuw nsw i64 %84, 8 + %86 = getelementptr inbounds nuw i8, ptr %78, i64 1 + %87 = load i8, ptr %86, align 1 + %88 = zext i8 %87 to i64 + %89 = getelementptr inbounds nuw i8, ptr %0, i64 %85 + %90 = getelementptr inbounds nuw i8, ptr %89, i64 %88 + %91 = getelementptr inbounds nuw i8, ptr %78, i64 2 + %92 = load i8, ptr %91, align 1 + %93 = zext i8 %92 to i32 + %94 = shl nuw nsw i32 %93, 8 + %95 = getelementptr inbounds nuw i8, ptr %78, i64 3 + %96 = load i8, ptr %95, align 1 + %97 = zext i8 %96 to i32 + %98 = or disjoint i32 %94, %97 + %99 = ptrtoint ptr %90 to i64 + %100 = sub i64 %99, %7 + %.not.i.i.i.i.i.i = icmp ugt i64 %100, %11 + %101 = sub i64 %48, %99 + %102 = trunc i64 %101 to i32 + %.not16.i.i.i.i.i.i = icmp ugt i32 %98, %102 %or.cond = select i1 %.not.i.i.i.i.i.i, i1 true, i1 %.not16.i.i.i.i.i.i br i1 %or.cond, label %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit.thread, label %_ZN21hb_sanitize_context_t8dispatchIN3AAT13FTStringRangeEJPKNS1_4ltagEEEEDTcl9_dispatchfp_cv11hb_priorityILj16EE_Espclsr3stdE7forwardIT0_Efp0_EEERKT_DpOS8_.exit -_ZN21hb_sanitize_context_t8dispatchIN3AAT13FTStringRangeEJPKNS1_4ltagEEEEDTcl9_dispatchfp_cv11hb_priorityILj16EE_Espclsr3stdE7forwardIT0_Efp0_EEERKT_DpOS8_.exit: ; preds = %76 - %97 = sub i32 %71, %92 - store i32 %97, ptr %51, align 4 - %98 = icmp sgt i32 %97, 0 - br i1 %98, label %70, label %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit.thread +_ZN21hb_sanitize_context_t8dispatchIN3AAT13FTStringRangeEJPKNS1_4ltagEEEEDTcl9_dispatchfp_cv11hb_priorityILj16EE_Espclsr3stdE7forwardIT0_Efp0_EEERKT_DpOS8_.exit: ; preds = %82 + %103 = sub i32 %77, %98 + store i32 %103, ptr %57, align 4 + %104 = icmp sgt i32 %103, 0 + br i1 %104, label %76, label %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit.thread -_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit.thread: ; preds = %76, %.lr.ph, %70, %_ZN21hb_sanitize_context_t8dispatchIN3AAT13FTStringRangeEJPKNS1_4ltagEEEEDTcl9_dispatchfp_cv11hb_priorityILj16EE_Espclsr3stdE7forwardIT0_Efp0_EEERKT_DpOS8_.exit, %55, %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit, %25, %46, %13, %2 - %99 = phi i1 [ false, %13 ], [ false, %2 ], [ false, %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit ], [ false, %25 ], [ false, %46 ], [ true, %55 ], [ false, %76 ], [ false, %.lr.ph ], [ true, %70 ], [ false, %_ZN21hb_sanitize_context_t8dispatchIN3AAT13FTStringRangeEJPKNS1_4ltagEEEEDTcl9_dispatchfp_cv11hb_priorityILj16EE_Espclsr3stdE7forwardIT0_Efp0_EEERKT_DpOS8_.exit ] - ret i1 %99 +_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit.thread: ; preds = %82, %.lr.ph, %76, %_ZN21hb_sanitize_context_t8dispatchIN3AAT13FTStringRangeEJPKNS1_4ltagEEEEDTcl9_dispatchfp_cv11hb_priorityILj16EE_Espclsr3stdE7forwardIT0_Efp0_EEERKT_DpOS8_.exit, %61, %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit, %25, %46, %13, %2 + %105 = phi i1 [ false, %13 ], [ false, %2 ], [ false, %_ZNK2OT7ArrayOfIN3AAT13FTStringRangeENS_7IntTypeIjLj4EEEE16sanitize_shallowEP21hb_sanitize_context_t.exit ], [ false, %25 ], [ false, %46 ], [ true, %55 ], [ false, %76 ], [ false, %.lr.ph ], [ true, %70 ], [ false, %_ZN21hb_sanitize_context_t8dispatchIN3AAT13FTStringRangeEJPKNS1_4ltagEEEEDTcl9_dispatchfp_cv11hb_priorityILj16EE_Espclsr3stdE7forwardIT0_Efp0_EEERKT_DpOS8_.exit ] + ret i1 %105 } declare ptr @hb_language_from_string(ptr noundef, i32 noundef) local_unnamed_addr #4 diff --git a/bench/openjdk/optimized/utf8.ll b/bench/openjdk/optimized/utf8.ll index ced8e56a715..4a8455b7065 100644 --- a/bench/openjdk/optimized/utf8.ll +++ b/bench/openjdk/optimized/utf8.ll @@ -930,8 +930,8 @@ define hidden noundef zeroext i1 @_ZN4UTF813is_legal_utf8EPKhib(ptr noundef read %.not = icmp slt i32 %.075.lcssa, %1 br i1 %.not, label %.lr.ph90, label %._crit_edge91 -.lr.ph90: ; preds = %._crit_edge, %98 - %.188 = phi i32 [ %99, %98 ], [ %.075.lcssa, %._crit_edge ] +.lr.ph90: ; preds = %._crit_edge, %99 + %.188 = phi i32 [ %100, %98 ], [ %.075.lcssa, %._crit_edge ] %30 = sext i32 %.188 to i64 %31 = getelementptr inbounds i8, ptr %0, i64 %30 %32 = load i8, ptr %31, align 1 @@ -940,7 +940,7 @@ define hidden noundef zeroext i1 @_ZN4UTF813is_legal_utf8EPKhib(ptr noundef read 34: ; preds = %.lr.ph90 %35 = icmp sgt i8 %32, -1 - br i1 %35, label %98, label %36 + br i1 %35, label %99, label %36 36: ; preds = %34 %37 = add nsw i32 %.188, 5 @@ -979,7 +979,7 @@ _ZN4UTF826is_supplementary_characterEPKh.exit: ; preds = %53 %58 = getelementptr inbounds nuw i8, ptr %31, i64 5 %59 = load i8, ptr %58, align 1 %60 = icmp slt i8 %59, -64 - br i1 %60, label %98, label %.thread + br i1 %60, label %99, label %.thread _ZN4UTF826is_supplementary_characterEPKh.exit.thread: ; preds = %36 %61 = lshr i8 %32, 4 @@ -1021,45 +1021,45 @@ _ZN4UTF826is_supplementary_characterEPKh.exit.thread: ; preds = %36 .thread: ; preds = %53, %49, %45, %40, %_ZN4UTF826is_supplementary_characterEPKh.exit, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread %.tr = zext i8 %32 to i32 - %79 = shl nuw nsw i32 %.tr, 12 - %80 = add nsw i32 %.188, 2 - %81 = icmp slt i32 %80, %1 - br i1 %81, label %82, label %._crit_edge91 - -82: ; preds = %.thread - %83 = getelementptr i8, ptr %31, i64 1 - %84 = load i8, ptr %83, align 1 - %85 = zext i8 %84 to i32 - %86 = and i32 %85, 192 - %87 = icmp eq i32 %86, 128 - br i1 %87, label %88, label %._crit_edge91 - -88: ; preds = %82 - %89 = sext i32 %80 to i64 - %90 = getelementptr inbounds i8, ptr %0, i64 %89 - %91 = load i8, ptr %90, align 1 - %92 = icmp slt i8 %91, -64 - br i1 %92, label %93, label %._crit_edge91 - -93: ; preds = %88 - %94 = shl nuw nsw i32 %85, 6 - %95 = and i32 %94, 2048 - %.masked = and i32 %79, 61440 - %96 = or disjoint i32 %95, %.masked - %97 = icmp ne i32 %96, 0 - %or.cond8 = select i1 %2, i1 true, i1 %97 - br i1 %or.cond8, label %98, label %._crit_edge91 + %80 = shl nuw nsw i32 %.tr, 12 + %81 = add nsw i32 %.188, 2 + %82 = icmp slt i32 %81, %1 + br i1 %82, label %83, label %._crit_edge91 + +83: ; preds = %.thread + %84 = getelementptr i8, ptr %31, i64 1 + %85 = load i8, ptr %84, align 1 + %86 = zext i8 %85 to i32 + %87 = and i32 %86, 192 + %88 = icmp eq i32 %87, 128 + br i1 %88, label %89, label %._crit_edge91 + +89: ; preds = %83 + %90 = sext i32 %81 to i64 + %91 = getelementptr inbounds i8, ptr %0, i64 %90 + %92 = load i8, ptr %91, align 1 + %93 = icmp slt i8 %92, -64 + br i1 %93, label %94, label %._crit_edge91 + +94: ; preds = %89 + %95 = shl nuw nsw i32 %86, 6 + %96 = and i32 %95, 2048 + %.masked = and i32 %80, 61440 + %97 = or disjoint i32 %96, %.masked + %98 = icmp ne i32 %97, 0 + %or.cond8 = select i1 %2, i1 true, i1 %98 + br i1 %or.cond8, label %99, label %._crit_edge91 default.unreachable: ; preds = %_ZN4UTF826is_supplementary_characterEPKh.exit.thread unreachable -98: ; preds = %_ZN4UTF826is_supplementary_characterEPKh.exit, %74, %93, %34 - %.2 = phi i32 [ %.188, %34 ], [ %80, %93 ], [ %65, %74 ], [ %37, %_ZN4UTF826is_supplementary_characterEPKh.exit ] - %99 = add nsw i32 %.2, 1 - %.not117 = icmp slt i32 %99, %1 +99: ; preds = %_ZN4UTF826is_supplementary_characterEPKh.exit, %74, %94, %34 + %.2 = phi i32 [ %.188, %34 ], [ %81, %93 ], [ %65, %74 ], [ %37, %_ZN4UTF826is_supplementary_characterEPKh.exit ] + %100 = add nsw i32 %.2, 1 + %.not117 = icmp slt i32 %100, %1 br i1 %.not117, label %.lr.ph90, label %._crit_edge91, !llvm.loop !17 -._crit_edge91: ; preds = %.lr.ph90, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread, %74, %67, %62, %93, %88, %82, %.thread, %98, %._crit_edge +._crit_edge91: ; preds = %.lr.ph90, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread, %74, %67, %62, %93, %88, %82, %.thread, %99, %._crit_edge %.lcssa = phi i1 [ true, %._crit_edge ], [ true, %98 ], [ false, %.thread ], [ false, %82 ], [ false, %88 ], [ false, %93 ], [ false, %62 ], [ false, %67 ], [ false, %74 ], [ false, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread ], [ false, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread ], [ false, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread ], [ false, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread ], [ false, %_ZN4UTF826is_supplementary_characterEPKh.exit.thread ], [ false, %.lr.ph90 ] ret i1 %.lcssa } diff --git a/bench/openssl/optimized/d1_lib.ll b/bench/openssl/optimized/d1_lib.ll index 4b504e70327..d9382699c92 100644 --- a/bench/openssl/optimized/d1_lib.ll +++ b/bench/openssl/optimized/d1_lib.ll @@ -1029,14 +1029,14 @@ define range(i32 -1, 2) i32 @DTLSv1_listen(ptr noundef %0, ptr noundef %1) local tail call void @CRYPTO_free(ptr noundef nonnull %31, ptr noundef nonnull @.str.2, i32 noundef 472) #9 br label %.thread -._crit_edge: ; preds = %290, %.preheader +._crit_edge: ; preds = %294, %.preheader %67 = call i32 @BIO_test_flags(ptr noundef nonnull %20, i32 noundef 8) #9 %.not161 = icmp eq i32 %67, 0 %spec.select = sext i1 %.not161 to i32 - br label %318 + br label %322 -68: ; preds = %.lr.ph, %290 - %69 = phi i32 [ %37, %.lr.ph ], [ %291, %290 ] +68: ; preds = %.lr.ph, %294 + %69 = phi i32 [ %37, %.lr.ph ], [ %295, %290 ] %70 = icmp samesign ult i32 %69, 13 br i1 %70, label %71, label %72 @@ -1044,7 +1044,7 @@ define range(i32 -1, 2) i32 @DTLSv1_listen(ptr noundef %0, ptr noundef %1) local call void @ERR_new() #9 call void @ERR_set_debug(ptr noundef nonnull @.str.2, i32 noundef 508, ptr noundef nonnull @__func__.DTLSv1_listen) #9 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 20, i32 noundef 298, ptr noundef null) #9 - br label %318 + br label %322 72: ; preds = %68 %73 = load i8, ptr %31, align 1, !tbaa !109 @@ -1072,7 +1072,7 @@ define range(i32 -1, 2) i32 @DTLSv1_listen(ptr noundef %0, ptr noundef %1) local call void @ERR_new() #9 call void @ERR_set_debug(ptr noundef nonnull @.str.2, i32 noundef 525, ptr noundef nonnull @__func__.DTLSv1_listen) #9 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 20, i32 noundef 244, ptr noundef null) #9 - br label %318 + br label %322 86: ; preds = %84 %.not122 = icmp eq i8 %74, -2 @@ -1082,7 +1082,7 @@ define range(i32 -1, 2) i32 @DTLSv1_listen(ptr noundef %0, ptr noundef %1) local call void @ERR_new() #9 call void @ERR_set_debug(ptr noundef nonnull @.str.2, i32 noundef 534, ptr noundef nonnull @__func__.DTLSv1_listen) #9 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 20, i32 noundef 116, ptr noundef null) #9 - br label %318 + br label %322 88: ; preds = %86 %89 = load i64, ptr %40, align 1 @@ -1101,7 +1101,7 @@ PACKET_copy_bytes.exit.thread: ; preds = %88 call void @ERR_new() #9 call void @ERR_set_debug(ptr noundef nonnull @.str.2, i32 noundef 541, ptr noundef nonnull @__func__.DTLSv1_listen) #9 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 20, i32 noundef 159, ptr noundef null) #9 - br label %318 + br label %322 98: ; preds = %88 %99 = and i64 %89, 65535 @@ -1112,7 +1112,7 @@ PACKET_copy_bytes.exit.thread: ; preds = %88 call void @ERR_new() #9 call void @ERR_set_debug(ptr noundef nonnull @.str.2, i32 noundef 551, ptr noundef nonnull @__func__.DTLSv1_listen) #9 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 20, i32 noundef 244, ptr noundef null) #9 - br label %318 + br label %322 101: ; preds = %98 %.not.i.i183 = icmp eq i64 %95, 0 @@ -1157,7 +1157,7 @@ PACKET_copy_bytes.exit.thread: ; preds = %88 %132 = icmp samesign ult i64 %131, 3 br i1 %132, label %PACKET_get_1.exit185.thread, label %133 -133: ; preds = %127 +133:; preds = %127 %134 = load i8, ptr %55, align 1, !tbaa !109 %135 = zext i8 %134 to i64 %136 = shl nuw nsw i64 %135, 16 @@ -1172,33 +1172,33 @@ PACKET_copy_bytes.exit.thread: ; preds = %88 %.not131 = icmp eq i64 %144, %143 br i1 %.not131, label %145, label %PACKET_get_1.exit185.thread -PACKET_get_1.exit185.thread: ; preds = %133, %127, %118, %105, %102, %101 +PACKET_get_1.exit185.thread:; preds = %133, %127, %118, %105, %102, %101 call void @ERR_new() #9 call void @ERR_set_debug(ptr noundef nonnull @.str.2, i32 noundef 566, ptr noundef nonnull @__func__.DTLSv1_listen) #9 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 20, i32 noundef 159, ptr noundef null) #9 - br label %318 + br label %322 -145: ; preds = %133 +152: ; preds = %133 %.not132 = icmp eq i8 %103, 1 - br i1 %.not132, label %147, label %146 + br i1 %.not132, label %154, label %153 -146: ; preds = %145 +153: ; preds = %152 call void @ERR_new() #9 call void @ERR_set_debug(ptr noundef nonnull @.str.2, i32 noundef 571, ptr noundef nonnull @__func__.DTLSv1_listen) #9 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 20, i32 noundef 244, ptr noundef null) #9 - br label %318 + br label %322 -147: ; preds = %145 - %148 = icmp samesign ugt i32 %124, 2 - br i1 %148, label %149, label %150 +154: ; preds = %152 + %155 = icmp samesign ugt i32 %124, 2 + br i1 %155, label %156, label %157 -149: ; preds = %147 +156: ; preds = %154 call void @ERR_new() #9 call void @ERR_set_debug(ptr noundef nonnull @.str.2, i32 noundef 577, ptr noundef nonnull @__func__.DTLSv1_listen) #9 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 20, i32 noundef 402, ptr noundef null) #9 - br label %318 + br label %322 -150: ; preds = %147 +157: ; preds = %154 %151 = or i8 %129, %128 %152 = or i8 %151, %130 %153 = icmp ne i8 %152, 0 @@ -1206,159 +1206,159 @@ PACKET_get_1.exit185.thread: ; preds = %133, %127, %118, %1 %or.cond342 = select i1 %153, i1 true, i1 %154 br i1 %or.cond342, label %155, label %156 -155: ; preds = %150 +159: ; preds = %157 call void @ERR_new() #9 call void @ERR_set_debug(ptr noundef nonnull @.str.2, i32 noundef 590, ptr noundef nonnull @__func__.DTLSv1_listen) #9 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 20, i32 noundef 401, ptr noundef null) #9 - br label %318 + br label %322 -156: ; preds = %150 - %157 = load ptr, ptr %41, align 8, !tbaa !110 - %.not134 = icmp eq ptr %157, null - br i1 %.not134, label %162, label %158 +160: ; preds = %157 + %161 = load ptr, ptr %41, align 8, !tbaa !110 + %.not134 = icmp eq ptr %161, null + br i1 %.not134, label %166, label %162 -158: ; preds = %156 - %159 = load i32, ptr %26, align 8, !tbaa !99 - %160 = add nuw nsw i64 %143, 12 - %161 = load ptr, ptr %43, align 8, !tbaa !111 - call void %157(i32 noundef 0, i32 noundef %159, i32 noundef 22, ptr noundef nonnull %46, i64 noundef %160, ptr noundef nonnull %0, ptr noundef %161) #9 - br label %162 +162: ; preds = %160 + %163 = load i32, ptr %26, align 8, !tbaa !99 + %164 = add nuw nsw i64 %143, 12 + %165 = load ptr, ptr %43, align 8, !tbaa !111 + call void %157(i32 noundef 0, i32 noundef %163, i32 noundef 22, ptr noundef nonnull %46, i64 noundef %164, ptr noundef nonnull %0, ptr noundef %165) #9 + br label %166 -162: ; preds = %158, %156 - %163 = icmp samesign ult i64 %143, 2 - br i1 %163, label %164, label %165 +166: ; preds = %162, %160 + %167 = icmp samesign ult i64 %143, 2 + br i1 %167, label %168, label %169 -164: ; preds = %162 +168: ; preds = %166 call void @ERR_new() #9 call void @ERR_set_debug(ptr noundef nonnull @.str.2, i32 noundef 600, ptr noundef nonnull @__func__.DTLSv1_listen) #9 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 20, i32 noundef 159, ptr noundef null) #9 - br label %318 - -165: ; preds = %162 - %166 = load i8, ptr %58, align 1, !tbaa !109 - %167 = zext i8 %166 to i32 - %168 = shl nuw nsw i32 %167, 8 - %169 = load i8, ptr %59, align 1, !tbaa !109 - %170 = zext i8 %169 to i32 - %171 = or disjoint i32 %168, %170 + br label %322 + +169: ; preds = %166 + %170 = load i8, ptr %58, align 1, !tbaa !109 + %171 = zext i8 %170 to i32 + %172 = shl nuw nsw i32 %171, 8 + %173 = load i8, ptr %59, align 1, !tbaa !109 + %174 = zext i8 %173 to i32 + %175 = or disjoint i32 %172, %174 %172 = icmp eq i32 %171, 256 %173 = select i1 %172, i32 65280, i32 %171 %174 = load ptr, ptr %60, align 8, !tbaa !78 %175 = load i32, ptr %174, align 8, !tbaa !98 %176 = icmp eq i32 %175, 256 - %spec.select162 = select i1 %176, i32 65280, i32 %175 - %177 = icmp ule i32 %173, %spec.select162 + %177 = select i1 %176, i32 65280, i32 %175 + %177 = icmp ule i32 %173, %177 %.not136 = icmp eq i32 %175, 131071 %or.cond343 = or i1 %.not136, %177 - br i1 %or.cond343, label %179, label %178 + br i1 %or.cond343, label %183, label %178 -178: ; preds = %165 +178:; preds = %173 call void @ERR_new() #9 call void @ERR_set_debug(ptr noundef nonnull @.str.2, i32 noundef 609, ptr noundef nonnull @__func__.DTLSv1_listen) #9 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 20, i32 noundef 267, ptr noundef null) #9 - br label %318 - -179: ; preds = %165 - %180 = add nsw i64 %143, -2 - %or.cond344 = icmp samesign ult i64 %180, 33 - br i1 %or.cond344, label %PACKET_forward.exit.thread, label %181 - -181: ; preds = %179 - %182 = load i8, ptr %61, align 1, !tbaa !109 - %183 = add nsw i64 %143, -35 - %184 = zext i8 %182 to i64 - %185 = icmp samesign ult i64 %183, %184 - br i1 %185, label %PACKET_forward.exit.thread, label %186 - -186: ; preds = %181 - %187 = getelementptr inbounds nuw i8, ptr %62, i64 %184 - %.not.i.i.i206 = icmp eq i64 %183, %184 - br i1 %.not.i.i.i206, label %PACKET_forward.exit.thread, label %188 - -188: ; preds = %186 - %189 = load i8, ptr %187, align 1, !tbaa !109 - %190 = xor i64 %184, -1 - %191 = add nsw i64 %183, %190 - %192 = zext i8 %189 to i64 - %193 = icmp samesign ult i64 %191, %192 - br i1 %193, label %PACKET_forward.exit.thread, label %194 - -PACKET_forward.exit.thread: ; preds = %188, %186, %181, %179 + br label %322 + +183: ; preds = %169 + %184 = add nsw i64 %143, -2 + %or.cond344 = icmp samesign ult i64 %184, 33 + br i1 %or.cond344, label %PACKET_forward.exit.thread, label %185 + +185: ; preds = %183 + %186 = load i8, ptr %61, align 1, !tbaa !109 + %187 = add nsw i64 %143, -35 + %188 = zext i8 %186 to i64 + %189 = icmp samesign ult i64 %187, %188 + br i1 %189, label %PACKET_forward.exit.thread, label %190 + +190: ; preds = %185 + %191 = getelementptr inbounds nuw i8, ptr %62, i64 %188 + %.not.i.i.i206 = icmp eq i64 %187, %188 + br i1 %.not.i.i.i206, label %PACKET_forward.exit.thread, label %192 + +192: ; preds = %190 + %193 = load i8, ptr %191, align 1, !tbaa !109 + %194 = xor i64 %188, -1 + %195 = add nsw i64 %187, %194 + %196 = zext i8 %193 to i64 + %197 = icmp samesign ult i64 %195, %196 + br i1 %197, label %PACKET_forward.exit.thread, label %198 + +PACKET_forward.exit.thread: ; preds = %192, %190, %185, %183 call void @ERR_new() #9 call void @ERR_set_debug(ptr noundef nonnull @.str.2, i32 noundef 620, ptr noundef nonnull @__func__.DTLSv1_listen) #9 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 20, i32 noundef 159, ptr noundef null) #9 - br label %318 + br label %322 -194: ; preds = %188 - %195 = getelementptr inbounds nuw i8, ptr %187, i64 1 - %196 = icmp eq i8 %189, 0 - br i1 %196, label %.thread332, label %197 +198: ; preds = %192 + %199 = getelementptr inbounds nuw i8, ptr %191, i64 1 + %200 = icmp eq i8 %193, 0 + br i1 %200, label %.thread332, label %201 -197: ; preds = %194 - %198 = load ptr, ptr %63, align 8, !tbaa !112 - %199 = getelementptr inbounds nuw i8, ptr %198, i64 216 - %200 = load ptr, ptr %199, align 8, !tbaa !113 - %201 = icmp eq ptr %200, null - br i1 %201, label %202, label %203 +201: ; preds = %198 + %202 = load ptr, ptr %63, align 8, !tbaa !112 + %203 = getelementptr inbounds nuw i8, ptr %202, i64 216 + %204 = load ptr, ptr %203, align 8, !tbaa !113 + %205 = icmp eq ptr %204, null + br i1 %205, label %206, label %207 -202: ; preds = %197 +206: ; preds = %201 call void @ERR_new() #9 call void @ERR_set_debug(ptr noundef nonnull @.str.2, i32 noundef 635, ptr noundef nonnull @__func__.DTLSv1_listen) #9 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 20, i32 noundef 403, ptr noundef null) #9 - br label %318 + br label %322 -203: ; preds = %197 - %204 = zext i8 %189 to i32 - %205 = call i32 %200(ptr noundef nonnull %0, ptr noundef nonnull %195, i32 noundef %204) #9 - %206 = icmp eq i32 %205, 0 - br i1 %206, label %.thread332, label %293 +207: ; preds = %201 + %208 = zext i8 %193 to i32 + %209 = call i32 %200(ptr noundef nonnull %0, ptr noundef nonnull %199, i32 noundef %208) #9 + %210 = icmp eq i32 %209, 0 + br i1 %210, label %.thread332, label %297 -.thread332: ; preds = %194, %203 +.thread332: ; preds = %198, %207 call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %6) #9 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #9 - %207 = load ptr, ptr %63, align 8, !tbaa !112 - %208 = getelementptr inbounds nuw i8, ptr %207, i64 208 - %209 = load ptr, ptr %208, align 8, !tbaa !128 - %210 = icmp eq ptr %209, null - br i1 %210, label %216, label %211 - -211: ; preds = %.thread332 - %212 = call i32 %209(ptr noundef nonnull %0, ptr noundef nonnull %3, ptr noundef nonnull %5) #9 - %213 = icmp eq i32 %212, 0 - %214 = load i32, ptr %5, align 4 - %215 = icmp ugt i32 %214, 255 - %or.cond7 = select i1 %213, i1 true, i1 %215 - br i1 %or.cond7, label %216, label %217 - -216: ; preds = %211, %.thread332 + %211 = load ptr, ptr %63, align 8, !tbaa !112 + %212 = getelementptr inbounds nuw i8, ptr %211, i64 208 + %213 = load ptr, ptr %212, align 8, !tbaa !128 + %214 = icmp eq ptr %213, null + br i1 %214, label %220, label %215 + +215: ; preds = %.thread332 + %216 = call i32 %209(ptr noundef nonnull %0, ptr noundef nonnull %3, ptr noundef nonnull %5) #9 + %217 = icmp eq i32 %216, 0 + %218 = load i32, ptr %5, align 4 + %219 = icmp ugt i32 %218, 255 + %or.cond7 = select i1 %217, i1 true, i1 %219 + br i1 %or.cond7, label %220, label %221 + +220: ; preds = %215, %.thread332 call void @ERR_new() #9 call void @ERR_set_debug(ptr noundef nonnull @.str.2, i32 noundef 668, ptr noundef nonnull @__func__.DTLSv1_listen) #9 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 20, i32 noundef 400, ptr noundef null) #9 br label %.thread337 -217: ; preds = %211 - %218 = load ptr, ptr %60, align 8, !tbaa !78 - %219 = load i32, ptr %218, align 8, !tbaa !98 - %220 = icmp eq i32 %219, 131071 - br i1 %220, label %224, label %221 - -221: ; preds = %217 - %222 = load i32, ptr %26, align 8, !tbaa !99 - %223 = zext i32 %222 to i64 - br label %224 - -224: ; preds = %217, %221 - %225 = phi i64 [ %223, %221 ], [ 65279, %217 ] - %226 = call i32 @ssl_get_max_send_fragment(ptr noundef nonnull %0) #9 - %227 = add i32 %226, 13 - %228 = zext i32 %227 to i64 - %229 = call i32 @WPACKET_init_static_len(ptr noundef nonnull %6, ptr noundef nonnull %34, i64 noundef %228, i64 noundef 0) #9 - %.not140 = icmp eq i32 %229, 0 - br i1 %.not140, label %260, label %230 - -230: ; preds = %224 - %231 = call i32 @WPACKET_put_bytes__(ptr noundef nonnull %6, i64 noundef 22, i64 noundef 1) #9 - %.not141 = icmp eq i32 %231, 0 +221: ; preds = %215 + %222 = load ptr, ptr %60, align 8, !tbaa !78 + %223 = load i32, ptr %222, align 8, !tbaa !98 + %224 = icmp eq i32 %223, 131071 + br i1 %224, label %228, label %225 + +225: ; preds = %221 + %226 = load i32, ptr %26, align 8, !tbaa !99 + %227 = zext i32 %226 to i64 + br label %228 + +228: ; preds = %221, %225 + %229 = phi i64 [ %227, %221 ], [ 65279, %217 ] + %230 = call i32 @ssl_get_max_send_fragment(ptr noundef nonnull %0) #9 + %231 = add i32 %230, 13 + %232 = zext i32 %231 to i64 + %233 = call i32 @WPACKET_init_static_len(ptr noundef nonnull %6, ptr noundef nonnull %34, i64 noundef %232, i64 noundef 0) #9 + %.not140 = icmp eq i32 %233, 0 + br i1 %.not140, label %260, label %234 + +234: ; preds = %228 + %235 = call i32 @WPACKET_put_bytes__(ptr noundef nonnull %6, i64 noundef 22, i64 noundef 1) #9 + %.not141 = icmp eq i32 %235, 0 br i1 %.not141, label %260, label %232 232: ; preds = %230 @@ -1373,33 +1373,33 @@ PACKET_forward.exit.thread: ; preds = %188, %186, %181, %1 236: ; preds = %234 %237 = call i32 @WPACKET_start_sub_packet_len__(ptr noundef nonnull %6, i64 noundef 2) #9 - %.not144 = icmp eq i32 %237, 0 - br i1 %.not144, label %260, label %238 + %.not142 = icmp eq i32 %237, 0 + br i1 %.not142, label %260, label %238 238: ; preds = %236 %239 = call i32 @WPACKET_put_bytes__(ptr noundef nonnull %6, i64 noundef 3, i64 noundef 1) #9 - %.not145 = icmp eq i32 %239, 0 - br i1 %.not145, label %260, label %240 + %.not143 = icmp eq i32 %239, 0 + br i1 %.not143, label %260, label %240 240: ; preds = %238 %241 = call i32 @WPACKET_put_bytes__(ptr noundef nonnull %6, i64 noundef 0, i64 noundef 3) #9 - %.not146 = icmp eq i32 %241, 0 - br i1 %.not146, label %260, label %242 + %.not144 = icmp eq i32 %241, 0 + br i1 %.not144, label %260, label %242 242: ; preds = %240 %243 = call i32 @WPACKET_put_bytes__(ptr noundef nonnull %6, i64 noundef 0, i64 noundef 2) #9 - %.not147 = icmp eq i32 %243, 0 - br i1 %.not147, label %260, label %244 + %.not145 = icmp eq i32 %243, 0 + br i1 %.not145, label %260, label %244 244: ; preds = %242 %245 = call i32 @WPACKET_put_bytes__(ptr noundef nonnull %6, i64 noundef 0, i64 noundef 3) #9 - %.not148 = icmp eq i32 %245, 0 - br i1 %.not148, label %260, label %246 + %.not146 = icmp eq i32 %245, 0 + br i1 %.not146, label %260, label %246 246: ; preds = %244 %247 = call i32 @WPACKET_start_sub_packet_len__(ptr noundef nonnull %6, i64 noundef 3) #9 - %.not149 = icmp eq i32 %247, 0 - br i1 %.not149, label %260, label %248 + %.not147 = icmp eq i32 %247, 0 + br i1 %.not147, label %260, label %248 248: ; preds = %246 %249 = load i32, ptr %5, align 4, !tbaa !108 @@ -1408,50 +1408,50 @@ PACKET_forward.exit.thread: ; preds = %188, %186, %181, %1 %.not150 = icmp eq i32 %251, 0 br i1 %.not150, label %260, label %252 -252: ; preds = %248 +252:; preds = %248 %253 = call i32 @WPACKET_close(ptr noundef nonnull %6) #9 %.not151 = icmp eq i32 %253, 0 br i1 %.not151, label %260, label %254 -254: ; preds = %252 +254:; preds = %252 %255 = call i32 @WPACKET_close(ptr noundef nonnull %6) #9 - %.not152 = icmp eq i32 %255, 0 - br i1 %.not152, label %260, label %256 + %.not150 = icmp eq i32 %255, 0 + br i1 %.not150, label %260, label %256 256: ; preds = %254 %257 = call i32 @WPACKET_get_total_written(ptr noundef nonnull %6, ptr noundef nonnull %7) #9 - %.not153 = icmp eq i32 %257, 0 - br i1 %.not153, label %260, label %258 + %.not151 = icmp eq i32 %257, 0 + br i1 %.not151, label %260, label %258 258: ; preds = %256 %259 = call i32 @WPACKET_finish(ptr noundef nonnull %6) #9 - %.not154 = icmp eq i32 %259, 0 - br i1 %.not154, label %260, label %261 + %.not152 = icmp eq i32 %259, 0 + br i1 %.not152, label %260, label %261 -260: ; preds = %258, %256, %254, %252, %248, %246, %244, %242, %240, %238, %236, %234, %232, %230, %224 +262: ; preds = %258, %256, %254, %252, %248, %246, %244, %242, %240, %238, %236, %234, %232, %230, %224 call void @ERR_new() #9 call void @ERR_set_debug(ptr noundef nonnull @.str.2, i32 noundef 732, ptr noundef nonnull @__func__.DTLSv1_listen) #9 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 20, i32 noundef 786691, ptr noundef null) #9 call void @WPACKET_cleanup(ptr noundef nonnull %6) #9 br label %.thread337 -261: ; preds = %258 +265: ; preds = %258 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %64, ptr noundef nonnull align 1 dereferenceable(3) %65, i64 3, i1 false) - %262 = load ptr, ptr %41, align 8, !tbaa !110 - %.not155 = icmp eq ptr %262, null - br i1 %.not155, label %265, label %263 + %266 = load ptr, ptr %41, align 8, !tbaa !110 + %.not155 = icmp eq ptr %266, null + br i1 %.not155, label %269, label %267 -263: ; preds = %261 - %264 = load ptr, ptr %43, align 8, !tbaa !111 - call void %262(i32 noundef 1, i32 noundef 0, i32 noundef 256, ptr noundef nonnull %31, i64 noundef 13, ptr noundef nonnull %0, ptr noundef %264) #9 - br label %265 +267: ; preds = %265 + %268 = load ptr, ptr %43, align 8, !tbaa !111 + call void %262(i32 noundef 1, i32 noundef 0, i32 noundef 256, ptr noundef nonnull %31, i64 noundef 13, ptr noundef nonnull %0, ptr noundef %268) #9 + br label %269 -265: ; preds = %263, %261 - %266 = call ptr @BIO_ADDR_new() #9 - %267 = icmp eq ptr %266, null - br i1 %267, label %268, label %269 +269: ; preds = %267, %265 + %270 = call ptr @BIO_ADDR_new() #9 + %271 = icmp eq ptr %270, null + br i1 %271, label %272, label %269 -268: ; preds = %265 +272: ; preds = %269 call void @ERR_new() #9 call void @ERR_set_debug(ptr noundef nonnull @.str.2, i32 noundef 756, ptr noundef nonnull @__func__.DTLSv1_listen) #9 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 20, i32 noundef 524320, ptr noundef null) #9 @@ -1464,10 +1464,10 @@ PACKET_forward.exit.thread: ; preds = %188, %186, %181, %1 br i1 %272, label %273, label %275 273: ; preds = %269 - %274 = call i64 @BIO_ctrl(ptr noundef nonnull %21, i32 noundef 44, i64 noundef 0, ptr noundef nonnull %266) #9 + %274 = call i64 @BIO_ctrl(ptr noundef nonnull %21, i32 noundef 44, i64 noundef 0, ptr noundef nonnull %270) #9 br label %275 -275: ; preds = %273, %269 +275:; preds = %273, %269 call void @BIO_ADDR_free(ptr noundef nonnull %266) #9 %276 = load i64, ptr %7, align 8, !tbaa !102 %277 = trunc i64 %276 to i32 @@ -1477,92 +1477,92 @@ PACKET_forward.exit.thread: ; preds = %188, %186, %181, %1 %281 = icmp slt i32 %278, %280 br i1 %281, label %282, label %284 -282: ; preds = %275 +282:; preds = %275 %283 = call i32 @BIO_test_flags(ptr noundef nonnull %21, i32 noundef 8) #9 %.not157 = icmp eq i32 %283, 0 %..096 = sext i1 %.not157 to i32 br label %.thread337 -284: ; preds = %275 - %285 = call i64 @BIO_ctrl(ptr noundef nonnull %21, i32 noundef 11, i64 noundef 0, ptr noundef null) #9 - %286 = trunc i64 %285 to i32 - %287 = icmp slt i32 %286, 1 - br i1 %287, label %288, label %290 +288: ; preds = %275 + %289 = call i64 @BIO_ctrl(ptr noundef nonnull %21, i32 noundef 11, i64 noundef 0, ptr noundef null) #9 + %290 = trunc i64 %289 to i32 + %291 = icmp slt i32 %290, 1 + br i1 %291, label %292, label %294 -288: ; preds = %284 - %289 = call i32 @BIO_test_flags(ptr noundef nonnull %21, i32 noundef 8) #9 - %.not156 = icmp eq i32 %289, 0 +292: ; preds = %288 + %293 = call i32 @BIO_test_flags(ptr noundef nonnull %21, i32 noundef 8) #9 + %.not156 = icmp eq i32 %293, 0 %..096164 = sext i1 %.not156 to i32 br label %.thread337 -.thread337: ; preds = %216, %268, %260, %282, %288 +.thread337: ; preds = %220, %272, %260, %282, %292 %.298.ph = phi i32 [ %..096164, %288 ], [ %..096, %282 ], [ -1, %260 ], [ 0, %268 ], [ -1, %216 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #9 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %6) #9 - br label %318 + br label %322 -290: ; preds = %284 +294: ; preds = %288 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #9 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %6) #9 store i32 0, ptr %36, align 4, !tbaa !108 - %291 = call i32 @BIO_read(ptr noundef nonnull %20, ptr noundef nonnull %31, i32 noundef 16397) #9 - %292 = icmp slt i32 %291, 1 - br i1 %292, label %._crit_edge, label %68, !llvm.loop !129 - -293: ; preds = %203 - %294 = getelementptr inbounds nuw i8, ptr %0, i64 1264 - %295 = load ptr, ptr %294, align 8, !tbaa !77 - %296 = getelementptr inbounds nuw i8, ptr %295, i64 272 - store i16 1, ptr %296, align 8, !tbaa !130 - %297 = getelementptr inbounds nuw i8, ptr %295, i64 268 - store i16 1, ptr %297, align 4, !tbaa !131 - %298 = getelementptr inbounds nuw i8, ptr %295, i64 270 - store i16 1, ptr %298, align 2, !tbaa !132 - %299 = getelementptr inbounds nuw i8, ptr %0, i64 3192 - %300 = load ptr, ptr %299, align 8, !tbaa !133 - %301 = getelementptr inbounds nuw i8, ptr %300, i64 176 - %302 = load ptr, ptr %301, align 8, !tbaa !134 - %303 = getelementptr inbounds nuw i8, ptr %0, i64 3208 - %304 = load ptr, ptr %303, align 8, !tbaa !90 - %305 = call i32 %302(ptr noundef %304) #9 - %306 = call i64 @SSL_set_options(ptr noundef nonnull %0, i64 noundef 8192) #9 + %295 = call i32 @BIO_read(ptr noundef nonnull %20, ptr noundef nonnull %31, i32 noundef 16397) #9 + %296 = icmp slt i32 %295, 1 + br i1 %296, label %._crit_edge, label %68, !llvm.loop !129 + +297: ; preds = %207 + %298 = getelementptr inbounds nuw i8, ptr %0, i64 1264 + %299 = load ptr, ptr %298, align 8, !tbaa !77 + %300 = getelementptr inbounds nuw i8, ptr %299, i64 272 + store i16 1, ptr %300, align 8, !tbaa !130 + %301 = getelementptr inbounds nuw i8, ptr %299, i64 268 + store i16 1, ptr %301, align 4, !tbaa !131 + %302 = getelementptr inbounds nuw i8, ptr %299, i64 270 + store i16 1, ptr %302, align 2, !tbaa !132 + %303 = getelementptr inbounds nuw i8, ptr %0, i64 3192 + %304 = load ptr, ptr %303, align 8, !tbaa !133 + %305 = getelementptr inbounds nuw i8, ptr %304, i64 176 + %306 = load ptr, ptr %305, align 8, !tbaa !134 + %307 = getelementptr inbounds nuw i8, ptr %0, i64 3208 + %308 = load ptr, ptr %307, align 8, !tbaa !90 + %309 = call i32 %302(ptr noundef %308) #9 + %310 = call i64 @SSL_set_options(ptr noundef nonnull %0, i64 noundef 8192) #9 call void @ossl_statem_set_hello_verify_done(ptr noundef nonnull %0) #9 - %307 = call i64 @BIO_ctrl(ptr noundef nonnull %20, i32 noundef 46, i64 noundef 0, ptr noundef %1) #9 - %308 = trunc i64 %307 to i32 - %309 = icmp slt i32 %308, 1 - br i1 %309, label %310, label %311 + %311 = call i64 @BIO_ctrl(ptr noundef nonnull %20, i32 noundef 46, i64 noundef 0, ptr noundef %1) #9 + %312 = trunc i64 %311 to i32 + %313 = icmp slt i32 %312, 1 + br i1 %313, label %314, label %315 -310: ; preds = %293 +314: ; preds = %297 call void @BIO_ADDR_clear(ptr noundef %1) #9 - br label %311 + br label %315 -311: ; preds = %310, %293 - %312 = getelementptr inbounds nuw i8, ptr %0, i64 3216 - %313 = load ptr, ptr %312, align 8, !tbaa !135 - %314 = call i32 @BIO_write(ptr noundef %313, ptr noundef nonnull %31, i32 noundef %69) #9 - %.not159 = icmp eq i32 %314, %69 - br i1 %.not159, label %316, label %315 +315: ; preds = %314, %297 + %316 = getelementptr inbounds nuw i8, ptr %0, i64 3216 + %317 = load ptr, ptr %316, align 8, !tbaa !135 + %318 = call i32 @BIO_write(ptr noundef %317, ptr noundef nonnull %31, i32 noundef %69) #9 + %.not159 = icmp eq i32 %318, %69 + br i1 %.not159, label %320, label %319 -315: ; preds = %311 +319: ; preds = %315 call void @ERR_new() #9 call void @ERR_set_debug(ptr noundef nonnull @.str.2, i32 noundef 825, ptr noundef nonnull @__func__.DTLSv1_listen) #9 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 20, i32 noundef 786691, ptr noundef null) #9 - br label %318 + br label %322 -316: ; preds = %311 - %317 = call i32 @ssl_set_new_record_layer(ptr noundef nonnull %0, i32 noundef 131071, i32 noundef 0, i32 noundef 0, ptr noundef null, i64 noundef 0, ptr noundef null, i64 noundef 0, ptr noundef null, i64 noundef 0, ptr noundef null, i64 noundef 0, ptr noundef null, i64 noundef 0, i32 noundef 0, ptr noundef null, ptr noundef null, ptr noundef null) #9 - %.not160 = icmp eq i32 %317, 0 +320: ; preds = %315 + %321 = call i32 @ssl_set_new_record_layer(ptr noundef nonnull %0, i32 noundef 131071, i32 noundef 0, i32 noundef 0, ptr noundef null, i64 noundef 0, ptr noundef null, i64 noundef 0, ptr noundef null, i64 noundef 0, ptr noundef null, i64 noundef 0, ptr noundef null, i64 noundef 0, i32 noundef 0, ptr noundef null, ptr noundef null, ptr noundef null) #9 + %.not160 = icmp eq i32 %321, 0 %.166 = select i1 %.not160, i32 -1, i32 1 - br label %318 + br label %322 -318: ; preds = %.thread337, %._crit_edge, %316, %315, %202, %PACKET_forward.exit.thread, %178, %164, %155, %149, %146, %PACKET_get_1.exit185.thread, %100, %PACKET_copy_bytes.exit.thread, %87, %85, %71 +322: ; preds = %.thread337, %._crit_edge, %320, %319, %206, %PACKET_forward.exit.thread, %178, %168, %159, %156, %153, %PACKET_get_1.exit185.thread, %100, %PACKET_copy_bytes.exit.thread, %87, %85, %71 %.197 = phi i32 [ 0, %71 ], [ 0, %85 ], [ 0, %87 ], [ 0, %100 ], [ 0, %PACKET_get_1.exit185.thread ], [ 0, %146 ], [ 0, %149 ], [ 0, %155 ], [ 0, %178 ], [ -1, %315 ], [ -1, %202 ], [ 0, %PACKET_forward.exit.thread ], [ 0, %164 ], [ 0, %PACKET_copy_bytes.exit.thread ], [ %spec.select, %._crit_edge ], [ %.166, %316 ], [ %.298.ph, %.thread337 ] call void @BIO_ADDR_free(ptr noundef null) #9 call void @CRYPTO_free(ptr noundef nonnull %31, ptr noundef nonnull @.str.2, i32 noundef 848) #9 call void @CRYPTO_free(ptr noundef nonnull %34, ptr noundef nonnull @.str.2, i32 noundef 849) #9 br label %.thread -.thread: ; preds = %2, %9, %30, %17, %318, %66, %29, %24 +.thread: ; preds = %2, %9, %30, %17, %322, %66, %29, %24 %.0 = phi i32 [ -1, %29 ], [ -1, %66 ], [ %.197, %318 ], [ -1, %24 ], [ -1, %17 ], [ -1, %30 ], [ -1, %9 ], [ -1, %2 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #9 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #9 diff --git a/bench/openssl/optimized/statem_srvr.ll b/bench/openssl/optimized/statem_srvr.ll index 8fdd300f992..045e9a5bdfa 100644 --- a/bench/openssl/optimized/statem_srvr.ll +++ b/bench/openssl/optimized/statem_srvr.ll @@ -8145,7 +8145,7 @@ define internal fastcc void @ssl_check_for_safari(ptr noundef %0, ptr noundef re %10 = icmp eq i64 %9, 4 br i1 %10, label %PACKET_forward.exit.thread, label %11 -11: ; preds = %3 +11:; preds = %3 %12 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload, i64 4 %13 = load i8, ptr %12, align 1, !tbaa !193 %14 = zext i8 %13 to i64 @@ -8158,7 +8158,7 @@ define internal fastcc void @ssl_check_for_safari(ptr noundef %0, ptr noundef re %21 = icmp ult i64 %20, %19 br i1 %21, label %PACKET_forward.exit.thread, label %PACKET_get_length_prefixed_2.exit -PACKET_get_length_prefixed_2.exit: ; preds = %11 +PACKET_get_length_prefixed_2.exit:; preds = %11 %22 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload, i64 6 %23 = getelementptr inbounds nuw i8, ptr %22, i64 %19 %24 = sub nuw i64 %20, %19 @@ -8172,27 +8172,27 @@ PACKET_get_length_prefixed_2.exit: ; preds = %11 %29 = icmp eq i32 %.mask, 768 br i1 %29, label %30, label %34 -30: ; preds = %27 +PACKET_get_length_prefixed_2.exit: ; preds = %27 %31 = tail call i32 @SSL_client_version(ptr noundef %0) #12 %32 = icmp sgt i32 %31, 770 %33 = select i1 %32, i64 34, i64 18 br label %34 -34: ; preds = %27, %30 - %35 = phi i64 [ %33, %30 ], [ 18, %27 ] - %.not.i = icmp eq i64 %24, %35 - br i1 %.not.i, label %36, label %PACKET_equal.exit +36: ; preds = %27, %30 + %37 = phi i64 [ %33, %30 ], [ 18, %27 ] + %.not.i = icmp eq i64 %24, %37 + br i1 %.not.i, label %38, label %PACKET_equal.exit -36: ; preds = %34 - %37 = tail call i32 @CRYPTO_memcmp(ptr noundef nonnull %23, ptr noundef nonnull @ssl_check_for_safari.kSafariExtensionsBlock, i64 noundef %24) #12 - %38 = icmp eq i32 %37, 0 - %39 = zext i1 %38 to i8 +38: ; preds = %36 + %39 = tail call i32 @CRYPTO_memcmp(ptr noundef nonnull %23, ptr noundef nonnull @ssl_check_for_safari.kSafariExtensionsBlock, i64 noundef %24) #12 + %40 = icmp eq i32 %39, 0 + %41 = zext i1 %40 to i8 br label %PACKET_equal.exit -PACKET_equal.exit: ; preds = %34, %36 - %.0.i10 = phi i8 [ %39, %36 ], [ 0, %34 ] - %40 = getelementptr inbounds nuw i8, ptr %0, i64 1244 - store i8 %.0.i10, ptr %40, align 4, !tbaa !289 +PACKET_equal.exit: ; preds = %36, %38 + %.0.i10 = phi i8 [ %41, %36 ], [ 0, %34 ] + %42 = getelementptr inbounds nuw i8, ptr %0, i64 1244 + store i8 %.0.i10, ptr %42, align 4, !tbaa !289 br label %PACKET_forward.exit.thread PACKET_forward.exit.thread: ; preds = %2, %11, %3, %PACKET_get_length_prefixed_2.exit, %PACKET_equal.exit diff --git a/bench/php/optimized/pcre2_auto_possess.ll b/bench/php/optimized/pcre2_auto_possess.ll index f112a95b104..aafbd232cdf 100644 --- a/bench/php/optimized/pcre2_auto_possess.ll +++ b/bench/php/optimized/pcre2_auto_possess.ll @@ -843,7 +843,7 @@ get_repeat_base.exit: ; preds = %11, %13, %15 %324 = getelementptr inbounds nuw i8, ptr %.0192, i64 5 br label %325 -325: ; preds = %316, %314, %312, %310 +325: ; preds = %316, %314, %312, %310 %.1193 = phi ptr [ %.0192, %310 ], [ %324, %316 ], [ %315, %314 ], [ %313, %312 ] %326 = ptrtoint ptr %.1193 to i64 %327 = ptrtoint ptr %.0194 to i64 @@ -858,10 +858,10 @@ get_repeat_base.exit: ; preds = %11, %13, %15 store i32 %333, ptr %334, align 4, !tbaa !4 br label %336 -335: ; preds = %33 +335:; preds = %33 br label %336 -336: ; preds = %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %262, %264, %335, %325, %293, %283, %268, %130 +338: ; preds = %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %262, %264, %335, %325, %293, %283, %268, %130 %.0191 = phi ptr [ null, %335 ], [ %.1193, %325 ], [ %275, %268 ], [ %281, %283 ], [ %281, %293 ], [ %.3, %130 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.0194, %33 ], [ %.4, %264 ], [ %.4, %262 ] ret ptr %.0191 } diff --git a/bench/php/optimized/pcre2_study.ll b/bench/php/optimized/pcre2_study.ll index 4d6b933f2e3..908411ec737 100644 --- a/bench/php/optimized/pcre2_study.ll +++ b/bench/php/optimized/pcre2_study.ll @@ -485,7 +485,7 @@ thread-pre-split: ; preds = %5 29: ; preds = %thread-pre-split, %.thread470 %30 = phi i8 [ %.pr, %thread-pre-split ], [ 121, %.thread470 ] %.0301 = phi i32 [ 1, %thread-pre-split ], [ %.2303558, %.thread470 ] - %.0269 = phi ptr [ %1, %thread-pre-split ], [ %745, %.thread470 ] + %.0269 = phi ptr [ %1, %thread-pre-split ], [ %748, %.thread470 ] %31 = getelementptr inbounds nuw i8, ptr %.0269, i64 1 %32 = getelementptr inbounds nuw i8, ptr %.0269, i64 3 switch i8 %30, label %.backedge.preheader [ @@ -2077,17 +2077,17 @@ study_char_list.exit: ; preds = %.loopexit83.i, %559 .thread470: ; preds = %.loopexit494, %.backedge, %143, %732, %377, %338, %299, %68, %43, %356, %.preheader.i360, %348, %317, %.preheader.i337, %309, %278, %.preheader.i, %270, %254, %259, %243, %248, %.loopexit567, %.loopexit568 %.2303558 = phi i32 [ %.0301, %43 ], [ %.0301, %356 ], [ %.0301, %.preheader.i360 ], [ %.0301, %348 ], [ %.0301, %317 ], [ %.0301, %.preheader.i337 ], [ %.0301, %309 ], [ %.0301, %278 ], [ %.0301, %.preheader.i ], [ %.0301, %270 ], [ %.0301, %254 ], [ %.0301, %259 ], [ %.0301, %243 ], [ %.0301, %248 ], [ %.0301, %.loopexit567 ], [ %.0301, %.loopexit568 ], [ %.0301, %68 ], [ %.0301, %299 ], [ %.0301, %338 ], [ %.0301, %377 ], [ %.0301, %143 ], [ 2, %.backedge ], [ %.0301, %.loopexit494 ], [ %.0301, %732 ] - %738 = load i8, ptr %31, align 1, !tbaa !17 - %739 = zext i8 %738 to i64 - %740 = shl nuw nsw i64 %739, 8 - %741 = getelementptr inbounds nuw i8, ptr %.0269, i64 2 - %742 = load i8, ptr %741, align 1, !tbaa !17 - %743 = zext i8 %742 to i64 - %744 = getelementptr inbounds nuw i8, ptr %.0269, i64 %740 - %745 = getelementptr inbounds nuw i8, ptr %744, i64 %743 - %746 = load i8, ptr %745, align 1, !tbaa !17 - %747 = icmp eq i8 %746, 121 - br i1 %747, label %29, label %.thread479 + %741 = load i8, ptr %31, align 1, !tbaa !17 + %742 = zext i8 %741 to i64 + %743 = shl nuw nsw i64 %742, 8 + %744 = getelementptr inbounds nuw i8, ptr %.0269, i64 2 + %745 = load i8, ptr %744, align 1, !tbaa !17 + %746 = zext i8 %745 to i64 + %747 = getelementptr inbounds nuw i8, ptr %.0269, i64 %743 + %748 = getelementptr inbounds nuw i8, ptr %747, i64 %746 + %749 = load i8, ptr %748, align 1, !tbaa !17 + %750 = icmp eq i8 %749, 121 + br i1 %750, label %29, label %.thread479 .thread479.loopexit602: ; preds = %530, %385, %186, %186, %186, %143, %.backedge %.0.ph = phi i32 [ 3, %.backedge ], [ %144, %143 ], [ %188, %186 ], [ %188, %186 ], [ %188, %186 ], [ 0, %385 ], [ 0, %530 ] diff --git a/bench/qemu/optimized/fdt.ll b/bench/qemu/optimized/fdt.ll index dbc513e1b04..eebdb44deb7 100644 --- a/bench/qemu/optimized/fdt.ll +++ b/bench/qemu/optimized/fdt.ll @@ -110,12 +110,12 @@ define dso_local range(i32 -19, 2147483647) i32 @fdt_ro_probe_(ptr noundef %0) l %92 = icmp eq i8 %91, 0 br i1 %92, label %95, label %93 -93: ; preds = %80, %60 +93: ; preds = %80, %60 %94 = icmp ult i32 %19, 2147483647 %. = select i1 %94, i32 %19, i32 -8 br label %95 -95: ; preds = %22, %93, %80, %60, %40, %1 +95:; preds = %22, %93, %80, %60, %40, %1 %.0 = phi i32 [ -19, %1 ], [ -10, %40 ], [ -10, %60 ], [ -7, %80 ], [ %., %93 ], [ -9, %22 ] ret i32 %.0 } diff --git a/bench/qemu/optimized/fdt_sw.ll b/bench/qemu/optimized/fdt_sw.ll index 2f34381d9b6..f1f89b56900 100644 --- a/bench/qemu/optimized/fdt_sw.ll +++ b/bench/qemu/optimized/fdt_sw.ll @@ -98,11 +98,11 @@ define dso_local range(i32 -13, 1) i32 @fdt_resize(ptr noundef readonly captures %.not.i = icmp eq i32 %20, 804389138 %..i = select i1 %.not.i, i32 0, i32 -9 %.0.i = select i1 %21, i32 -7, i32 %..i - br i1 %.not.i, label %22, label %127 + br i1 %.not.i, label %22, label %133 22: ; preds = %3 %23 = icmp slt i32 %2, 0 - br i1 %23, label %127, label %24 + br i1 %23, label %133, label %24 24: ; preds = %22 %25 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -181,12 +181,12 @@ define dso_local range(i32 -13, 1) i32 @fdt_resize(ptr noundef readonly captures %98 = zext i8 %97 to i64 %99 = or disjoint i64 %95, %98 %100 = icmp samesign ugt i64 %81, %99 - br i1 %100, label %127, label %101 + br i1 %100, label %133, label %101 101: ; preds = %24 %102 = zext nneg i32 %2 to i64 %103 = icmp samesign ugt i64 %81, %102 - br i1 %103, label %127, label %104 + br i1 %103, label %133, label %104 104: ; preds = %101 %105 = getelementptr inbounds nuw i8, ptr %0, i64 %99 @@ -225,11 +225,11 @@ define dso_local range(i32 -13, 1) i32 @fdt_resize(ptr noundef readonly captures %125 = icmp eq i8 %124, 0 br i1 %125, label %127, label %126 -126: ; preds = %112 +126: ; preds = %112 store i32 %rev.i.i, ptr %114, align 4 - br label %127 + br label %133 -127: ; preds = %112, %126, %101, %24, %22, %3 +133: ; preds = %112, %126, %101, %24, %22, %3 %.1 = phi i32 [ %.0.i, %3 ], [ -3, %22 ], [ -13, %24 ], [ -3, %101 ], [ 0, %126 ], [ 0, %112 ] ret i32 %.1 } @@ -275,26 +275,26 @@ define dso_local range(i32 -9, 1) i32 @fdt_add_reservemap_entry(ptr noundef capt br i1 %33, label %fdt_sw_probe_memrsv_.exit.thread, label %fdt_sw_probe_memrsv_.exit.thread18 fdt_sw_probe_memrsv_.exit: ; preds = %3 - %34 = icmp eq i32 %20, -804389139 - %.0.i.i = select i1 %34, i32 -7, i32 -9 + %40 = icmp eq i32 %20, -804389139 + %.0.i.i = select i1 %40, i32 -7, i32 -9 br label %fdt_sw_probe_memrsv_.exit.thread18 fdt_sw_probe_memrsv_.exit.thread: ; preds = %21 - %35 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %36 = load i8, ptr %35, align 1 - %37 = zext i8 %36 to i32 - %38 = shl nuw i32 %37, 24 - %39 = getelementptr inbounds nuw i8, ptr %0, i64 9 - %40 = load i8, ptr %39, align 1 - %41 = zext i8 %40 to i32 - %42 = shl nuw nsw i32 %41, 16 - %43 = or disjoint i32 %42, %38 - %44 = getelementptr inbounds nuw i8, ptr %0, i64 10 - %45 = load i8, ptr %44, align 1 - %46 = zext i8 %45 to i32 - %47 = shl nuw nsw i32 %46, 8 - %48 = or disjoint i32 %43, %47 - %49 = getelementptr inbounds nuw i8, ptr %0, i64 11 + %41 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %42 = load i8, ptr %41, align 1 + %43 = zext i8 %42 to i32 + %44 = shl nuw i32 %43, 24 + %45 = getelementptr inbounds nuw i8, ptr %0, i64 9 + %46 = load i8, ptr %45, align 1 + %47 = zext i8 %46 to i32 + %48 = shl nuw nsw i32 %47, 16 + %49 = or disjoint i32 %48, %44 + %50 = getelementptr inbounds nuw i8, ptr %0, i64 10 + %51 = load i8, ptr %50, align 1 + %52 = zext i8 %51 to i32 + %53 = shl nuw nsw i32 %52, 8 + %54 = or disjoint i32 %49, %53 + %55 = getelementptr inbounds nuw i8, ptr %0, i64 11 %50 = load i8, ptr %49, align 1 %51 = zext i8 %50 to i32 %52 = or disjoint i32 %48, %51 @@ -321,7 +321,7 @@ fdt_sw_probe_memrsv_.exit.thread: ; preds = %21 %73 = icmp ugt i64 %54, %72 br i1 %73, label %fdt_sw_probe_memrsv_.exit.thread18, label %74 -74: ; preds = %fdt_sw_probe_memrsv_.exit.thread +74:; preds = %fdt_sw_probe_memrsv_.exit.thread %75 = getelementptr inbounds i8, ptr %0, i64 %53 %76 = tail call noundef i64 @llvm.bswap.i64(i64 %1) store i64 %76, ptr %75, align 8 @@ -329,8 +329,8 @@ fdt_sw_probe_memrsv_.exit.thread: ; preds = %21 %78 = getelementptr inbounds nuw i8, ptr %75, i64 8 store i64 %77, ptr %78, align 8 %79 = trunc nuw i64 %54 to i32 - %rev.i.i = tail call noundef i32 @llvm.bswap.i32(i32 %79) - store i32 %rev.i.i, ptr %35, align 4 + %82 = tail call noundef i32 @llvm.bswap.i32(i32 %79) + store i32 %82, ptr %41, align 4 br label %fdt_sw_probe_memrsv_.exit.thread18 fdt_sw_probe_memrsv_.exit.thread18: ; preds = %fdt_sw_probe_memrsv_.exit, %21, %fdt_sw_probe_memrsv_.exit.thread, %74 @@ -376,26 +376,26 @@ define dso_local range(i32 -9, 1) i32 @fdt_finish_reservemap(ptr noundef capture br i1 %31, label %fdt_sw_probe_memrsv_.exit.thread.i, label %fdt_add_reservemap_entry.exit.thread fdt_sw_probe_memrsv_.exit.i: ; preds = %1 - %32 = icmp eq i32 %18, -804389139 - %.0.i.i.i = select i1 %32, i32 -7, i32 -9 + %38 = icmp eq i32 %18, -804389139 + %.0.i.i.i = select i1 %38, i32 -7, i32 -9 br label %fdt_add_reservemap_entry.exit.thread fdt_sw_probe_memrsv_.exit.thread.i: ; preds = %19 - %33 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %34 = load i8, ptr %33, align 1 - %35 = zext i8 %34 to i32 - %36 = shl nuw i32 %35, 24 - %37 = getelementptr inbounds nuw i8, ptr %0, i64 9 - %38 = load i8, ptr %37, align 1 - %39 = zext i8 %38 to i32 - %40 = shl nuw nsw i32 %39, 16 - %41 = or disjoint i32 %40, %36 - %42 = getelementptr inbounds nuw i8, ptr %0, i64 10 - %43 = load i8, ptr %42, align 1 - %44 = zext i8 %43 to i32 - %45 = shl nuw nsw i32 %44, 8 - %46 = or disjoint i32 %41, %45 - %47 = getelementptr inbounds nuw i8, ptr %0, i64 11 + %39 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %40 = load i8, ptr %39, align 1 + %41 = zext i8 %40 to i32 + %42 = shl nuw i32 %41, 24 + %43 = getelementptr inbounds nuw i8, ptr %0, i64 9 + %44 = load i8, ptr %43, align 1 + %45 = zext i8 %44 to i32 + %46 = shl nuw nsw i32 %45, 16 + %47 = or disjoint i32 %46, %42 + %48 = getelementptr inbounds nuw i8, ptr %0, i64 10 + %49 = load i8, ptr %48, align 1 + %50 = zext i8 %49 to i32 + %51 = shl nuw nsw i32 %50, 8 + %52 = or disjoint i32 %47, %51 + %53 = getelementptr inbounds nuw i8, ptr %0, i64 11 %48 = load i8, ptr %47, align 1 %49 = zext i8 %48 to i32 %50 = or disjoint i32 %46, %49 @@ -422,7 +422,7 @@ fdt_sw_probe_memrsv_.exit.thread.i: ; preds = %19 %71 = icmp ugt i64 %52, %70 br i1 %71, label %fdt_add_reservemap_entry.exit.thread, label %72 -72: ; preds = %fdt_sw_probe_memrsv_.exit.thread.i +72:; preds = %fdt_sw_probe_memrsv_.exit.thread.i %73 = getelementptr inbounds i8, ptr %0, i64 %51 %74 = trunc nuw i64 %52 to i32 %rev.i.i.i = tail call noundef i32 @llvm.bswap.i32(i32 %74) diff --git a/bench/recastnavigation/optimized/imguiRenderGL.ll b/bench/recastnavigation/optimized/imguiRenderGL.ll index 96bd5e8fbc0..1b2a2e08bfd 100644 --- a/bench/recastnavigation/optimized/imguiRenderGL.ll +++ b/bench/recastnavigation/optimized/imguiRenderGL.ll @@ -2678,7 +2678,7 @@ define dso_local range(i32 -32768, 32768) i32 @stbtt_GetGlyphKernAdvance(ptr nou %14 = icmp eq i8 %13, 0 br i1 %14, label %.loopexit, label %15 -15: ; preds = %10 +15:; preds = %10 %16 = getelementptr inbounds nuw i8, ptr %9, i64 8 %.val30 = load i8, ptr %16, align 1 %17 = getelementptr i8, ptr %9, i64 9 @@ -2688,9 +2688,9 @@ define dso_local range(i32 -32768, 32768) i32 @stbtt_GetGlyphKernAdvance(ptr nou %20 = zext i8 %.val31 to i16 %21 = or disjoint i16 %19, %20 %.not27 = icmp eq i16 %21, 1 - br i1 %.not27, label %22, label %.loopexit + br i1 %.not27, label %62, label %.loopexit -22: ; preds = %15 +62: ; preds = %15 %23 = getelementptr inbounds nuw i8, ptr %9, i64 10 %.val = load i8, ptr %23, align 1 %24 = getelementptr i8, ptr %9, i64 11 @@ -2704,21 +2704,21 @@ define dso_local range(i32 -32768, 32768) i32 @stbtt_GetGlyphKernAdvance(ptr nou %.not2836 = icmp eq i32 %28, 0 br i1 %.not2836, label %.loopexit, label %.lr.ph -.lr.ph: ; preds = %22 - %31 = add nsw i32 %28, -1 +64: ; preds = %62 + %65 = add nsw i32 %28, -1 %32 = getelementptr inbounds nuw i8, ptr %9, i64 18 br label %33 -33: ; preds = %.lr.ph, %72 +66: ; preds = %64, %72 %.02238 = phi i32 [ %31, %.lr.ph ], [ %.1, %72 ] %.02337 = phi i32 [ 0, %.lr.ph ], [ %.124, %72 ] %34 = add nsw i32 %.02238, %.02337 %35 = ashr i32 %34, 1 %36 = mul nsw i32 %35, 6 %37 = sext i32 %36 to i64 - %38 = getelementptr inbounds i8, ptr %32, i64 %37 - %39 = load i8, ptr %38, align 1 - %40 = zext i8 %39 to i32 + %41 = getelementptr inbounds i8, ptr %32, i64 %37 + %42 = load i8, ptr %38, align 1 + %43 = zext i8 %39 to i32 %41 = shl nuw i32 %40, 24 %42 = getelementptr inbounds nuw i8, ptr %38, i64 1 %43 = load i8, ptr %42, align 1 @@ -2762,14 +2762,14 @@ define dso_local range(i32 -32768, 32768) i32 @stbtt_GetGlyphKernAdvance(ptr nou %71 = sext i16 %70 to i32 br label %.loopexit -72: ; preds = %61, %57 - %.124 = phi i32 [ %.02337, %57 ], [ %62, %61 ] - %.1 = phi i32 [ %58, %57 ], [ %.02238, %61 ] +75: ; preds = %64, %60 + %.124 = phi i32 [ %.02337, %60 ], [ %65, %61 ] + %.1 = phi i32 [ %61, %60 ], [ %.02238, %61 ] %.not28 = icmp sgt i32 %.124, %.1 - br i1 %.not28, label %.loopexit, label %33, !llvm.loop !16 + br i1 %.not28, label %.loopexit, label %36, !llvm.loop !16 -.loopexit: ; preds = %72, %22, %15, %10, %3, %63 - %.0 = phi i32 [ %71, %63 ], [ 0, %3 ], [ 0, %10 ], [ 0, %15 ], [ 0, %22 ], [ 0, %72 ] +.loopexit: ; preds = %75, %22, %15, %10, %3, %66 + %.0 = phi i32 [ %74, %63 ], [ 0, %3 ], [ 0, %10 ], [ 0, %15 ], [ 0, %22 ], [ 0, %75 ] ret i32 %.0 } @@ -2795,7 +2795,7 @@ define dso_local range(i32 -32768, 32768) i32 @stbtt_GetCodepointKernAdvance(ptr %16 = icmp eq i8 %15, 0 br i1 %16, label %stbtt_GetGlyphKernAdvance.exit, label %17 -17: ; preds = %6 +17:; preds = %6 %18 = getelementptr inbounds nuw i8, ptr %12, i64 8 %.val30.i = load i8, ptr %18, align 1 %19 = getelementptr i8, ptr %12, i64 9 @@ -2807,7 +2807,7 @@ define dso_local range(i32 -32768, 32768) i32 @stbtt_GetCodepointKernAdvance(ptr %.not27.i = icmp eq i16 %23, 1 br i1 %.not27.i, label %24, label %stbtt_GetGlyphKernAdvance.exit -24: ; preds = %17 +24:; preds = %17 %25 = getelementptr inbounds nuw i8, ptr %12, i64 10 %.val.i = load i8, ptr %25, align 1 %26 = getelementptr i8, ptr %12, i64 11 @@ -2822,71 +2822,71 @@ define dso_local range(i32 -32768, 32768) i32 @stbtt_GetCodepointKernAdvance(ptr br i1 %.not2836.i, label %stbtt_GetGlyphKernAdvance.exit, label %.lr.ph.i .lr.ph.i: ; preds = %24 - %33 = add nsw i32 %30, -1 - %34 = getelementptr inbounds nuw i8, ptr %12, i64 18 - br label %35 + %36 = add nsw i32 %30, -1 + %37 = getelementptr inbounds nuw i8, ptr %12, i64 18 + br label %38 -35: ; preds = %74, %.lr.ph.i - %.02238.i = phi i32 [ %33, %.lr.ph.i ], [ %.1.i, %74 ] +38: ; preds = %77, %.lr.ph.i + %.02238.i = phi i32 [ %36, %.lr.ph.i ], [ %.1.i, %74 ] %.02337.i = phi i32 [ 0, %.lr.ph.i ], [ %.124.i, %74 ] - %36 = add nsw i32 %.02337.i, %.02238.i - %37 = ashr i32 %36, 1 - %38 = mul nsw i32 %37, 6 - %39 = sext i32 %38 to i64 - %40 = getelementptr inbounds i8, ptr %34, i64 %39 - %41 = load i8, ptr %40, align 1 - %42 = zext i8 %41 to i32 - %43 = shl nuw i32 %42, 24 - %44 = getelementptr inbounds nuw i8, ptr %40, i64 1 - %45 = load i8, ptr %44, align 1 - %46 = zext i8 %45 to i32 - %47 = shl nuw nsw i32 %46, 16 - %48 = or disjoint i32 %47, %43 - %49 = getelementptr inbounds nuw i8, ptr %40, i64 2 - %50 = load i8, ptr %49, align 1 - %51 = zext i8 %50 to i32 - %52 = shl nuw nsw i32 %51, 8 - %53 = or disjoint i32 %48, %52 - %54 = getelementptr inbounds nuw i8, ptr %40, i64 3 - %55 = load i8, ptr %54, align 1 - %56 = zext i8 %55 to i32 - %57 = or disjoint i32 %53, %56 - %58 = icmp ult i32 %32, %57 - br i1 %58, label %59, label %61 + %39 = add nsw i32 %.02337.i, %.02238.i + %40 = ashr i32 %39, 1 + %41 = mul nsw i32 %40, 6 + %42 = sext i32 %41 to i64 + %43 = getelementptr inbounds i8, ptr %37, i64 %42 + %44 = load i8, ptr %43, align 1 + %45 = zext i8 %44 to i32 + %46 = shl nuw i32 %45, 24 + %47 = getelementptr inbounds nuw i8, ptr %43, i64 1 + %48 = load i8, ptr %47, align 1 + %49 = zext i8 %48 to i32 + %50 = shl nuw nsw i32 %49, 16 + %51 = or disjoint i32 %50, %46 + %52 = getelementptr inbounds nuw i8, ptr %43, i64 2 + %53 = load i8, ptr %52, align 1 + %54 = zext i8 %53 to i32 + %55 = shl nuw nsw i32 %54, 8 + %56 = or disjoint i32 %51, %55 + %57 = getelementptr inbounds nuw i8, ptr %43, i64 3 + %58 = load i8, ptr %57, align 1 + %59 = zext i8 %58 to i32 + %60 = or disjoint i32 %56, %59 + %61 = icmp ult i32 %32, %60 + br i1 %61, label %62, label %64 -59: ; preds = %35 - %60 = add nsw i32 %37, -1 - br label %74 +62: ; preds = %38 + %63 = add nsw i32 %40, -1 + br label %77 -61: ; preds = %35 - %62 = icmp ugt i32 %32, %57 - br i1 %62, label %63, label %65 +64: ; preds = %38 + %65 = icmp ugt i32 %32, %60 + br i1 %65, label %66, label %68 -63: ; preds = %61 - %64 = add nsw i32 %37, 1 - br label %74 +66: ; preds = %64 + %67 = add nsw i32 %40, 1 + br label %77 -65: ; preds = %61 - %66 = getelementptr inbounds nuw i8, ptr %12, i64 22 - %67 = getelementptr inbounds i8, ptr %66, i64 %39 - %.val34.i = load i8, ptr %67, align 1 - %68 = getelementptr i8, ptr %67, i64 1 - %.val35.i = load i8, ptr %68, align 1 - %69 = zext i8 %.val34.i to i16 - %70 = shl nuw i16 %69, 8 - %71 = zext i8 %.val35.i to i16 - %72 = or disjoint i16 %70, %71 - %73 = sext i16 %72 to i32 +68: ; preds = %64 + %69 = getelementptr inbounds nuw i8, ptr %12, i64 22 + %70 = getelementptr inbounds i8, ptr %69, i64 %42 + %.val34.i = load i8, ptr %70, align 1 + %71 = getelementptr i8, ptr %70, i64 1 + %.val35.i = load i8, ptr %71, align 1 + %72 = zext i8 %.val34.i to i16 + %73 = shl nuw i16 %72, 8 + %74 = zext i8 %.val35.i to i16 + %75 = or disjoint i16 %73, %74 + %76 = sext i16 %75 to i32 br label %stbtt_GetGlyphKernAdvance.exit -74: ; preds = %63, %59 - %.124.i = phi i32 [ %.02337.i, %59 ], [ %64, %63 ] - %.1.i = phi i32 [ %60, %59 ], [ %.02238.i, %63 ] +77: ; preds = %66, %62 + %.124.i = phi i32 [ %.02337.i, %59 ], [ %67, %63 ] + %.1.i = phi i32 [ %63, %59 ], [ %.02238.i, %63 ] %.not28.i = icmp sgt i32 %.124.i, %.1.i - br i1 %.not28.i, label %stbtt_GetGlyphKernAdvance.exit, label %35, !llvm.loop !16 + br i1 %.not28.i, label %stbtt_GetGlyphKernAdvance.exit, label %38, !llvm.loop !16 -stbtt_GetGlyphKernAdvance.exit: ; preds = %74, %65, %24, %17, %6, %3 - %.0 = phi i32 [ 0, %3 ], [ %73, %65 ], [ 0, %6 ], [ 0, %17 ], [ 0, %24 ], [ 0, %74 ] +stbtt_GetGlyphKernAdvance.exit: ; preds = %77, %68, %24, %17, %6, %3 + %.0 = phi i32 [ 0, %3 ], [ %76, %65 ], [ 0, %6 ], [ 0, %17 ], [ 0, %24 ], [ 0, %74 ] ret i32 %.0 } diff --git a/bench/rust-analyzer-rs/optimized/36cskjvhktchzlnh.ll b/bench/rust-analyzer-rs/optimized/36cskjvhktchzlnh.ll index 52e05f1df68..281614ba31e 100644 --- a/bench/rust-analyzer-rs/optimized/36cskjvhktchzlnh.ll +++ b/bench/rust-analyzer-rs/optimized/36cskjvhktchzlnh.ll @@ -735,12 +735,12 @@ switch.lookup: %.sroa.411.0.insert.shift = shl nuw nsw i64 %.sroa.411.0.insert.ext, 8 %61 = or disjoint i64 %.sroa.411.0.insert.shift, %.sroa.010.0 %62 = or i64 %.sroa.010.0, %.sroa.613.0.insert.ext - %63 = icmp eq i64 %62, 0 - %.sroa.616.17.insert.insert.i = select i1 %63, i64 5121, i64 %61 + %or.cond.i = icmp eq i64 %62, 0 + %.sroa.616.17.insert.insert.i = select i1 %or.cond.i, i64 5121, i64 %61 %.sroa.616.20.insert.insert.i = or disjoint i64 %.sroa.616.17.insert.insert.i, %.sroa.613.0.insert.shift tail call void @"_ZN10hir_expand5attrs8unescape28_$u7b$$u7b$closure$u7d$$u7d$17h877eda1c80a7d153E.llvm.15988534848567551436"(ptr noalias noundef nonnull readonly align 8 dereferenceable(40) %.val, i64 noundef %60, i64 noundef %59, i64 %.sroa.616.20.insert.insert.i) - %64 = icmp eq ptr %.sroa.0.1.ph3645, %4 - br i1 %64, label %.thread, label %7 + %63 = icmp eq ptr %.sroa.0.1.ph3645, %4 + br i1 %63, label %.thread, label %7 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/rust-analyzer-rs/optimized/5ac99zaxn7b9r9xv.ll b/bench/rust-analyzer-rs/optimized/5ac99zaxn7b9r9xv.ll index 000e5ef0829..58dae1c1a7f 100644 --- a/bench/rust-analyzer-rs/optimized/5ac99zaxn7b9r9xv.ll +++ b/bench/rust-analyzer-rs/optimized/5ac99zaxn7b9r9xv.ll @@ -697,12 +697,12 @@ switch.lookup: %.sroa.411.0.insert.shift = shl nuw nsw i64 %.sroa.411.0.insert.ext, 8 %61 = or disjoint i64 %.sroa.411.0.insert.shift, %.sroa.010.0 %62 = or i64 %.sroa.010.0, %.sroa.613.0.insert.ext - %63 = icmp eq i64 %62, 0 - %.sroa.616.17.insert.insert.i = select i1 %63, i64 5121, i64 %61 + %or.cond.i = icmp eq i64 %62, 0 + %.sroa.616.17.insert.insert.i = select i1 %or.cond.i, i64 5121, i64 %61 %.sroa.616.20.insert.insert.i = or disjoint i64 %.sroa.616.17.insert.insert.i, %.sroa.613.0.insert.shift tail call void @"_ZN6syntax3ast9token_ext60_$LT$impl$u20$syntax..ast..generated..tokens..ByteString$GT$5value28_$u7b$$u7b$closure$u7d$$u7d$17h23cce49a6197486aE.llvm.11162169574061779932"(ptr noalias noundef nonnull readonly align 8 dereferenceable(40) %.val, i64 noundef %60, i64 noundef %59, i64 %.sroa.616.20.insert.insert.i) - %64 = icmp eq ptr %.sroa.0.1.ph3645, %4 - br i1 %64, label %.thread, label %7 + %63 = icmp eq ptr %.sroa.0.1.ph3645, %4 + br i1 %63, label %.thread, label %7 } ; Function Attrs: nonlazybind uwtable @@ -831,12 +831,12 @@ switch.lookup: %.sroa.411.0.insert.shift = shl nuw nsw i64 %.sroa.411.0.insert.ext, 8 %61 = or disjoint i64 %.sroa.411.0.insert.shift, %.sroa.010.0 %62 = or i64 %.sroa.010.0, %.sroa.613.0.insert.ext - %63 = icmp eq i64 %62, 0 - %.sroa.616.17.insert.insert.i = select i1 %63, i64 5121, i64 %61 + %or.cond.i = icmp eq i64 %62, 0 + %.sroa.616.17.insert.insert.i = select i1 %or.cond.i, i64 5121, i64 %61 %.sroa.616.20.insert.insert.i = or disjoint i64 %.sroa.616.17.insert.insert.i, %.sroa.613.0.insert.shift tail call void @"_ZN6syntax3ast9token_ext56_$LT$impl$u20$syntax..ast..generated..tokens..String$GT$5value28_$u7b$$u7b$closure$u7d$$u7d$17h5d159828f4408856E.llvm.11162169574061779932"(ptr noalias noundef nonnull readonly align 8 dereferenceable(40) %.val, i64 noundef %60, i64 noundef %59, i64 %.sroa.616.20.insert.insert.i) - %64 = icmp eq ptr %.sroa.0.1.ph3645, %4 - br i1 %64, label %.thread, label %7 + %63 = icmp eq ptr %.sroa.0.1.ph3645, %4 + br i1 %63, label %.thread, label %7 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/rust-analyzer-rs/optimized/hf9vzunhg9aziex.ll b/bench/rust-analyzer-rs/optimized/hf9vzunhg9aziex.ll index 6b5d2e863ad..7f71cbc0835 100644 --- a/bench/rust-analyzer-rs/optimized/hf9vzunhg9aziex.ll +++ b/bench/rust-analyzer-rs/optimized/hf9vzunhg9aziex.ll @@ -1487,16 +1487,16 @@ switch.lookup: "_ZN17ra_ap_rustc_lexer8unescape16unescape_unicode28_$u7b$$u7b$closure$u7d$$u7d$17h44cd810d16c81c50E.exit": ; preds = %79 %83 = or i64 %.sroa.010.0, %.sroa.613.0.insert.ext - %84 = icmp eq i64 %83, 0 - %.sroa.616.17.insert.insert.i = select i1 %84, i64 5121, i64 %64 + %or.cond.i = icmp eq i64 %83, 0 + %.sroa.616.17.insert.insert.i = select i1 %or.cond.i, i64 5121, i64 %64 %.sroa.616.20.insert.insert.i = or disjoint i64 %.sroa.616.17.insert.insert.i, %.sroa.613.0.insert.shift - %85 = extractvalue { i32, i1 } %77, 0 - %86 = extractvalue { i32, i1 } %80, 0 - %87 = getelementptr inbounds nuw i8, ptr %74, i64 32 - %88 = load ptr, ptr %87, align 8, !invariant.load !11, !noalias !245, !nonnull !11 - tail call void %88(ptr noundef nonnull align 1 %73, i32 noundef %85, i32 noundef %86, i64 %.sroa.616.20.insert.insert.i), !noalias !245 - %89 = icmp eq ptr %.sroa.0.1.ph3645, %5 - br i1 %89, label %.thread, label %10 + %84 = extractvalue { i32, i1 } %77, 0 + %85 = extractvalue { i32, i1 } %80, 0 + %86 = getelementptr inbounds nuw i8, ptr %74, i64 32 + %87 = load ptr, ptr %86, align 8, !invariant.load !11, !noalias !245, !nonnull !11 + tail call void %88(ptr noundef nonnull align 1 %73, i32 noundef %84, i32 noundef %85, i64 %.sroa.616.20.insert.insert.i), !noalias !245 + %88 = icmp eq ptr %.sroa.0.1.ph3645, %5 + br i1 %88, label %.thread, label %10 } ; Function Attrs: nonlazybind uwtable @@ -1862,16 +1862,16 @@ switch.lookup: "_ZN17ra_ap_rustc_lexer8unescape16unescape_unicode28_$u7b$$u7b$closure$u7d$$u7d$17h0b321f92e754c416E.exit": ; preds = %79 %83 = or i64 %.sroa.010.0, %.sroa.613.0.insert.ext - %84 = icmp eq i64 %83, 0 - %.sroa.616.17.insert.insert.i = select i1 %84, i64 5121, i64 %64 + %or.cond.i = icmp eq i64 %83, 0 + %.sroa.616.17.insert.insert.i = select i1 %or.cond.i, i64 5121, i64 %64 %.sroa.616.20.insert.insert.i = or disjoint i64 %.sroa.616.17.insert.insert.i, %.sroa.613.0.insert.shift - %85 = extractvalue { i32, i1 } %77, 0 - %86 = extractvalue { i32, i1 } %80, 0 - %87 = getelementptr inbounds nuw i8, ptr %74, i64 32 - %88 = load ptr, ptr %87, align 8, !invariant.load !11, !noalias !257, !nonnull !11 - tail call void %88(ptr noundef nonnull align 1 %73, i32 noundef %85, i32 noundef %86, i64 %.sroa.616.20.insert.insert.i), !noalias !257 - %89 = icmp eq ptr %.sroa.0.1.ph3645, %5 - br i1 %89, label %.thread, label %10 + %84 = extractvalue { i32, i1 } %77, 0 + %85 = extractvalue { i32, i1 } %80, 0 + %86 = getelementptr inbounds nuw i8, ptr %74, i64 32 + %87 = load ptr, ptr %86, align 8, !invariant.load !11, !noalias !257, !nonnull !11 + tail call void %88(ptr noundef nonnull align 1 %73, i32 noundef %84, i32 noundef %85, i64 %.sroa.616.20.insert.insert.i), !noalias !257 + %88 = icmp eq ptr %.sroa.0.1.ph3645, %5 + br i1 %88, label %.thread, label %10 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/rust-analyzer-rs/optimized/hknx1qr3lu9291s.ll b/bench/rust-analyzer-rs/optimized/hknx1qr3lu9291s.ll index 64346ab9ede..9e8688a9821 100644 --- a/bench/rust-analyzer-rs/optimized/hknx1qr3lu9291s.ll +++ b/bench/rust-analyzer-rs/optimized/hknx1qr3lu9291s.ll @@ -9132,7 +9132,7 @@ define hidden void @_ZN17ra_ap_rustc_lexer8unescape16unescape_unicode17h616df343 %119 = zext nneg i8 %118 to i32 %120 = or disjoint i32 %117, %119 %121 = icmp samesign ugt i8 %104, -17 - br i1 %121, label %122, label %.thread309 + br i1 %121, label %122, label %.thread310 122: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i57.i" %123 = getelementptr inbounds nuw i8, ptr %97, i64 3 @@ -9151,13 +9151,13 @@ define hidden void @_ZN17ra_ap_rustc_lexer8unescape16unescape_unicode17h616df343 %134 = icmp eq i32 %132, 10 br i1 %134, label %265, label %146 -.thread309: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i57.i" +.thread310: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i57.i" %135 = shl nuw nsw i32 %108, 12 %136 = or disjoint i32 %120, %135 %137 = icmp eq i32 %136, 10 br i1 %137, label %265, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i.i.thread" -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i.i.thread": ; preds = %.thread309 +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i.i.thread": ; preds = %.thread310 %138 = getelementptr inbounds nuw i8, ptr %97, i64 3 store ptr %138, ptr %6, align 8, !alias.scope !2999, !noalias !2977 br label %.thread107.i.i @@ -9166,9 +9166,9 @@ define hidden void @_ZN17ra_ap_rustc_lexer8unescape16unescape_unicode17h616df343 %139 = shl nuw nsw i32 %108, 6 %140 = or disjoint i32 %139, %112 %141 = icmp eq i32 %140, 10 - br i1 %141, label %265, label %.thread42 + br i1 %141, label %265, label %.thread43 -.thread42: ; preds = %.thread +.thread43: ; preds = %.thread %142 = getelementptr inbounds nuw i8, ptr %97, i64 2 store ptr %142, ptr %6, align 8, !alias.scope !3006, !noalias !2977 br label %.thread107.i.i @@ -9202,7 +9202,7 @@ define hidden void @_ZN17ra_ap_rustc_lexer8unescape16unescape_unicode17h616df343 %.not.i.i = icmp eq i32 %157, 1114112 br i1 %.not.i.i, label %.thread.i.i, label %.thread107.i.i -.thread107.i.i: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i.i.thread", %.thread42, %146, %.thread297.i +.thread107.i.i: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i.i.thread", %.thread43, %146, %.thread297.i %158 = phi ptr [ %149, %146 ], [ %144, %.thread297.i ], [ %142, %.thread42 ], [ %138, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i.i.thread" ] %.sroa.4.0.i.ph110.i.i = phi i32 [ %157, %146 ], [ %145, %.thread297.i ], [ %140, %.thread42 ], [ %136, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i.i.thread" ] switch i32 %.sroa.4.0.i.ph110.i.i, label %.thread.i.i [ @@ -9435,7 +9435,7 @@ _ZN17ra_ap_rustc_lexer8unescape11scan_escape17h87456e89320ca408E.exit.i: ; preds %264 = and i64 %.sroa.11.1.i.i, 65280 br label %.loopexit.i -265: ; preds = %.thread309, %.thread, %.thread295.i, %122 +265: ; preds = %.thread310, %.thread, %.thread295.i, %122 call void @llvm.experimental.noalias.scope.decl(metadata !3060) br label %.lr.ph.i.i.i @@ -9859,7 +9859,7 @@ _ZN17ra_ap_rustc_lexer8unescape23unescape_non_raw_common17h36c7e5b6e9fb45b9E.exi tail call void @llvm.experimental.noalias.scope.decl(metadata !3107) %439 = getelementptr inbounds i8, ptr %0, i64 %1 %440 = and i8 %2, -2 - %switch44 = icmp eq i8 %440, 4 + %switch45 = icmp eq i8 %440, 4 %441 = icmp eq i64 %1, 0 br i1 %441, label %_ZN17ra_ap_rustc_lexer8unescape16check_raw_common17h8da38201a3e9dce2E.exit, label %.lr.ph.i11 @@ -9963,7 +9963,7 @@ _ZN17ra_ap_rustc_lexer8unescape23unescape_non_raw_common17h36c7e5b6e9fb45b9E.exi %.sroa.0.1.ph3646.i = phi ptr [ %.sroa.0.1.ph36.i, %.thread39.i ], [ %.sroa.0.1.ph3647.i, %493 ] %.sroa.4.0.i.ph3743.i = phi i32 [ %.sroa.4.0.i.ph37.i, %.thread39.i ], [ %.sroa.4.0.i.ph3744.i, %493 ] %499 = phi i64 [ %492, %.thread39.i ], [ %495, %493 ] - %or.cond.not.i = and i1 %switch44, %.not49.i + %or.cond.not.i = and i1 %switch45, %.not49.i %.20.i = zext i1 %or.cond.not.i to i64 %.sroa.411.0..i = select i1 %or.cond.not.i, i8 19, i8 %.sroa.411.052.i %.0..sroa.613.0.i = select i1 %or.cond.not.i, i32 %.sroa.613.053.i, i32 %.sroa.4.0.i.ph3743.i @@ -10075,7 +10075,7 @@ _ZN17ra_ap_rustc_lexer8unescape23unescape_non_raw_common17h36c7e5b6e9fb45b9E.exi %544 = zext nneg i8 %543 to i32 %545 = or disjoint i32 %542, %544 %546 = icmp samesign ugt i8 %535, -33 - br i1 %546, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i39", label %.thread12.i + br i1 %546, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i40", label %.thread12.i .thread12.thread.i: ; preds = %533 %547 = zext nneg i8 %535 to i32 @@ -10083,7 +10083,7 @@ _ZN17ra_ap_rustc_lexer8unescape23unescape_non_raw_common17h36c7e5b6e9fb45b9E.exi %549 = add i64 %.neg28.i, %548 br label %577 -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i39": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit13.i.i23" +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i40": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit13.i.i23" %550 = icmp ne ptr %540, %524 tail call void @llvm.assume(i1 %550) %551 = getelementptr inbounds nuw i8, ptr %.sroa.0.031.i, i64 3 @@ -10097,7 +10097,7 @@ _ZN17ra_ap_rustc_lexer8unescape23unescape_non_raw_common17h36c7e5b6e9fb45b9E.exi %559 = icmp samesign ugt i8 %535, -17 br i1 %559, label %560, label %.thread12.i -560: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i39" +560: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i40" %561 = icmp ne ptr %551, %524 tail call void @llvm.assume(i1 %561) %562 = getelementptr inbounds nuw i8, ptr %.sroa.0.031.i, i64 4 @@ -10109,10 +10109,10 @@ _ZN17ra_ap_rustc_lexer8unescape23unescape_non_raw_common17h36c7e5b6e9fb45b9E.exi %568 = zext nneg i8 %567 to i32 %569 = or disjoint i32 %566, %568 %570 = or disjoint i32 %569, %565 - %.not.i40 = icmp eq i32 %570, 1114112 - br i1 %.not.i40, label %_ZN17ra_ap_rustc_lexer8unescape16check_raw_common17h8da38201a3e9dce2E.exit, label %.thread12.i + %.not.i41 = icmp eq i32 %570, 1114112 + br i1 %.not.i41, label %_ZN17ra_ap_rustc_lexer8unescape16check_raw_common17h8da38201a3e9dce2E.exit, label %.thread12.i -.thread12.i: ; preds = %560, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i39", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit13.i.i23" +.thread12.i: ; preds = %560, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i40", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit13.i.i23" %.sroa.4.0.i.ph17.i = phi i32 [ %570, %560 ], [ %558, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i39" ], [ %545, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit13.i.i23" ] %.sroa.0.1.ph16.i = phi ptr [ %562, %560 ], [ %551, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit15.i.i39" ], [ %540, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h700a513fb14dabdaE.exit13.i.i23" ] %571 = ptrtoint ptr %.sroa.0.1.ph16.i to i64 @@ -10136,7 +10136,7 @@ _ZN17ra_ap_rustc_lexer8unescape23unescape_non_raw_common17h36c7e5b6e9fb45b9E.exi %579 = add i64 %578, -1 %580 = icmp eq i32 %.sroa.4.0.i.ph1724.i, 13 %spec.select = zext i1 %580 to i64 - %spec.select450 = select i1 %580, i32 %.sroa.613.033.i, i32 %.sroa.4.0.i.ph1724.i + %spec.select451 = select i1 %580, i32 %.sroa.613.033.i, i32 %.sroa.4.0.i.ph1724.i br label %581 581: ; preds = %577, %.thread19.i @@ -10144,7 +10144,7 @@ _ZN17ra_ap_rustc_lexer8unescape23unescape_non_raw_common17h36c7e5b6e9fb45b9E.exi %.sroa.0.1.ph1625.i = phi ptr [ %.sroa.0.1.ph16.i, %.thread19.i ], [ %.sroa.0.1.ph1627.i, %577 ] %583 = phi i64 [ %576, %.thread19.i ], [ %579, %577 ] %.sroa.010.0.i31 = phi i64 [ 0, %.thread19.i ], [ %spec.select, %577 ] - %.sroa.613.1.i33 = phi i32 [ %.sroa.4.0.i.ph17.i, %.thread19.i ], [ %spec.select450, %577 ] + %.sroa.613.1.i33 = phi i32 [ %.sroa.4.0.i.ph17.i, %.thread19.i ], [ %spec.select451, %577 ] %.sroa.613.0.insert.ext.i34 = zext i32 %.sroa.613.1.i33 to i64 %.sroa.613.0.insert.shift.i35 = shl nuw i64 %.sroa.613.0.insert.ext.i34, 32 %584 = or disjoint i64 %.sroa.010.0.i31, 1280 @@ -10194,15 +10194,15 @@ _ZN17ra_ap_rustc_lexer8unescape23unescape_non_raw_common17h36c7e5b6e9fb45b9E.exi "_ZN17ra_ap_rustc_lexer8unescape16unescape_unicode28_$u7b$$u7b$closure$u7d$$u7d$17hda57bf2f24e928a2E.exit.i": ; preds = %596 %600 = or i64 %.sroa.010.0.i31, %.sroa.613.0.insert.ext.i34 - %601 = icmp eq i64 %600, 0 - %.sroa.616.17.insert.insert.i.i = select i1 %601, i64 5121, i64 %584 + %or.cond.i.i39 = icmp eq i64 %600, 0 + %.sroa.616.17.insert.insert.i.i = select i1 %or.cond.i.i39, i64 5121, i64 %584 %.sroa.616.20.insert.insert.i.i = or disjoint i64 %.sroa.616.17.insert.insert.i.i, %.sroa.613.0.insert.shift.i35 - %602 = extractvalue { i32, i1 } %594, 0 - %603 = extractvalue { i32, i1 } %597, 0 - %604 = load ptr, ptr %532, align 8, !invariant.load !4, !noalias !3125, !nonnull !4 - tail call void %604(ptr noundef nonnull align 1 %529, i32 noundef %602, i32 noundef %603, i64 %.sroa.616.20.insert.insert.i.i), !noalias !3125 - %605 = icmp eq ptr %.sroa.0.1.ph1625.i, %524 - br i1 %605, label %_ZN17ra_ap_rustc_lexer8unescape16check_raw_common17h8da38201a3e9dce2E.exit, label %533 + %601 = extractvalue { i32, i1 } %594, 0 + %602 = extractvalue { i32, i1 } %597, 0 + %603 = load ptr, ptr %532, align 8, !invariant.load !4, !noalias !3125, !nonnull !4 + tail call void %604(ptr noundef nonnull align 1 %529, i32 noundef %601, i32 noundef %602, i64 %.sroa.616.20.insert.insert.i.i), !noalias !3125 + %604 = icmp eq ptr %.sroa.0.1.ph1625.i, %524 + br i1 %604, label %_ZN17ra_ap_rustc_lexer8unescape16check_raw_common17h8da38201a3e9dce2E.exit, label %533 _ZN17ra_ap_rustc_lexer8unescape16check_raw_common17h8da38201a3e9dce2E.exit: ; preds = %"_ZN17ra_ap_rustc_lexer8unescape16unescape_unicode28_$u7b$$u7b$closure$u7d$$u7d$17hda57bf2f24e928a2E.exit.i", %560, %"_ZN6syntax3ast9token_ext8IsString19escaped_char_ranges28_$u7b$$u7b$closure$u7d$$u7d$17ha5f2fdd8ffabc931E.exit.i18", %476, %523, %438, %_ZN17ra_ap_rustc_lexer8unescape23unescape_non_raw_common17h36c7e5b6e9fb45b9E.exit, %"_ZN6syntax3ast9token_ext8IsString19escaped_char_ranges28_$u7b$$u7b$closure$u7d$$u7d$17ha5f2fdd8ffabc931E.exit" ret void diff --git a/bench/spike/optimized/fdt.ll b/bench/spike/optimized/fdt.ll index 507d9ccc6e3..fe532a37acf 100644 --- a/bench/spike/optimized/fdt.ll +++ b/bench/spike/optimized/fdt.ll @@ -104,12 +104,12 @@ define range(i32 -10, 2147483647) i32 @fdt_ro_probe_(ptr noundef readonly captur %89 = icmp eq i8 %88, 0 br i1 %89, label %92, label %90 -90: ; preds = %77, %57 +90: ; preds = %77, %57 %91 = icmp ult i32 %19, 2147483647 %. = select i1 %91, i32 %19, i32 -8 br label %92 -92: ; preds = %1, %90, %77, %57, %37 +92:; preds = %1, %90, %77, %57, %37 %.0 = phi i32 [ -10, %37 ], [ -10, %57 ], [ -7, %77 ], [ %., %90 ], [ -9, %1 ] ret i32 %.0 } diff --git a/bench/spike/optimized/fdt_ro.ll b/bench/spike/optimized/fdt_ro.ll index 6230b59c3d0..53dce22209a 100644 --- a/bench/spike/optimized/fdt_ro.ll +++ b/bench/spike/optimized/fdt_ro.ll @@ -660,7 +660,7 @@ define i32 @fdt_num_mem_rsv(ptr noundef readonly captures(none) %0) local_unname .split: ; preds = %.split.preheader, %77 %indvars.iv = phi i64 [ 0, %.split.preheader ], [ %indvars.iv.next, %77 ] - %49 = phi i32 [ %18, %.split.preheader ], [ %80, %77 ] + %49 = phi i32 [ %18, %.split.preheader ], [ %95, %77 ] %50 = sext i32 %49 to i64 %51 = icmp ult i64 %37, %50 br i1 %51, label %fdt_mem_rsv.exit.thread.split, label %52 @@ -692,20 +692,20 @@ define i32 @fdt_num_mem_rsv(ptr noundef readonly captures(none) %0) local_unname %76 = icmp eq i8 %75, 0 br i1 %76, label %fdt_mem_rsv.exit.thread.split.split.loop.exit, label %77 -77: ; preds = %52 +77:; preds = %52 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %78 = trunc nsw i64 %indvars.iv.next to i32 - %79 = shl i32 %78, 4 - %80 = add i32 %18, %79 - %81 = icmp ult i32 %80, %18 - br i1 %81, label %fdt_mem_rsv.exit.thread.split, label %.split, !llvm.loop !10 + %93 = trunc nsw i64 %indvars.iv.next to i32 + %94 = shl i32 %93, 4 + %95 = add i32 %18, %94 + %96 = icmp ult i32 %95, %18 + br i1 %96, label %fdt_mem_rsv.exit.thread.split, label %.split, !llvm.loop !10 fdt_mem_rsv.exit.thread.split.split.loop.exit: ; preds = %52 - %82 = trunc nuw nsw i64 %indvars.iv to i32 + %97 = trunc nuw nsw i64 %indvars.iv to i32 br label %fdt_mem_rsv.exit.thread.split fdt_mem_rsv.exit.thread.split: ; preds = %.split, %77, %fdt_mem_rsv.exit.thread.split.split.loop.exit - %.0.split.ph = phi i32 [ %82, %fdt_mem_rsv.exit.thread.split.split.loop.exit ], [ -8, %77 ], [ -8, %.split ] + %.0.split.ph = phi i32 [ %97, %fdt_mem_rsv.exit.thread.split.split.loop.exit ], [ -8, %77 ], [ -8, %.split ] ret i32 %.0.split.ph } @@ -3138,13 +3138,13 @@ define i32 @fdt_check_full(ptr noundef %0, i64 noundef %1) local_unnamed_addr #0 store i32 0, ptr %4, align 4, !tbaa !6 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #9 %6 = icmp ult i64 %1, 28 - br i1 %6, label %fdt_num_mem_rsv.exit.thread, label %7 + br i1 %6, label %.loopexit, label %7 7: ; preds = %2 %8 = tail call i32 @fdt_check_header(ptr noundef %0) #9 store i32 %8, ptr %3, align 4, !tbaa !6 %.not = icmp eq i32 %8, 0 - br i1 %.not, label %9, label %fdt_num_mem_rsv.exit.thread + br i1 %.not, label %9, label %.loopexit 9: ; preds = %7 %10 = getelementptr inbounds nuw i8, ptr %0, i64 4 @@ -3166,7 +3166,7 @@ define i32 @fdt_check_full(ptr noundef %0, i64 noundef %1) local_unnamed_addr #0 %26 = zext i8 %25 to i64 %27 = or disjoint i64 %23, %26 %28 = icmp ult i64 %1, %27 - br i1 %28, label %fdt_num_mem_rsv.exit.thread, label %29 + br i1 %28, label %.loopexit, label %29 29: ; preds = %9 %30 = getelementptr inbounds nuw i8, ptr %0, i64 16 @@ -3262,47 +3262,47 @@ fdt_num_mem_rsv.exit.preheader: ; preds = %63 i32 3, label %107 ] -99: ; preds = %.lr.ph +38: ; preds = %.lr.ph %.not25 = icmp eq i32 %.01830, 0 %. = select i1 %.not25, i32 0, i32 -11 - br label %fdt_num_mem_rsv.exit.thread + br label %.loopexit -100: ; preds = %.lr.ph - %101 = add i32 %.01830, 1 - %102 = icmp slt i32 %101, 0 - br i1 %102, label %fdt_num_mem_rsv.exit.thread, label %fdt_num_mem_rsv.exit +39: ; preds = %.lr.ph + %40 = add i32 %.01830, 1 + %41 = icmp slt i32 %40, 0 + br i1 %41, label %.loopexit, label %50 -103: ; preds = %.lr.ph - %104 = icmp eq i32 %.01830, 0 - br i1 %104, label %fdt_num_mem_rsv.exit.thread, label %105 +42: ; preds = %.lr.ph + %43 = icmp eq i32 %.01830, 0 + br i1 %43, label %.loopexit, label %44 -105: ; preds = %103 - %106 = add i32 %.01830, -1 - br label %fdt_num_mem_rsv.exit +44: ; preds = %42 + %45 = add i32 %.01830, -1 + br label %50 -107: ; preds = %.lr.ph - %108 = call ptr @fdt_getprop_by_offset(ptr noundef nonnull %0, i32 noundef %98, ptr noundef nonnull %5, ptr noundef nonnull %3) - %.not24 = icmp eq ptr %108, null - br i1 %.not24, label %109, label %.fdt_num_mem_rsv.exit_crit_edge +46: ; preds = %.lr.ph + %47 = call ptr @fdt_getprop_by_offset(ptr noundef nonnull %0, i32 noundef %98, ptr noundef nonnull %5, ptr noundef nonnull %3) + %.not24 = icmp eq ptr %47, null + br i1 %.not24, label %48, label %._crit_edge -.fdt_num_mem_rsv.exit_crit_edge: ; preds = %107 +._crit_edge: ; preds = %46 %.pre = load i32, ptr %4, align 4, !tbaa !6 - br label %fdt_num_mem_rsv.exit - -109: ; preds = %107 - %110 = load i32, ptr %3, align 4, !tbaa !6 - br label %fdt_num_mem_rsv.exit.thread - -fdt_num_mem_rsv.exit: ; preds = %.fdt_num_mem_rsv.exit_crit_edge, %100, %105, %.lr.ph - %111 = phi i32 [ %.pre, %.fdt_num_mem_rsv.exit_crit_edge ], [ %96, %105 ], [ %96, %100 ], [ %96, %.lr.ph ] - %.1 = phi i32 [ %.01830, %.fdt_num_mem_rsv.exit_crit_edge ], [ %106, %105 ], [ %101, %100 ], [ %.01830, %.lr.ph ] - %112 = call i32 @fdt_next_tag(ptr noundef nonnull %0, i32 noundef %111, ptr noundef nonnull %4) #9 - %113 = load i32, ptr %4, align 4, !tbaa !6 - %114 = icmp slt i32 %113, 0 - br i1 %114, label %fdt_num_mem_rsv.exit.thread, label %.lr.ph - -fdt_num_mem_rsv.exit.thread: ; preds = %.split.i, %91, %fdt_num_mem_rsv.exit, %100, %103, %.lr.ph, %fdt_num_mem_rsv.exit.preheader, %99, %9, %7, %2, %109 - %.0 = phi i32 [ %110, %109 ], [ -8, %2 ], [ %8, %7 ], [ -8, %9 ], [ %., %99 ], [ %89, %fdt_num_mem_rsv.exit.preheader ], [ %113, %fdt_num_mem_rsv.exit ], [ -11, %100 ], [ -11, %103 ], [ -13, %.lr.ph ], [ -8, %91 ], [ -8, %.split.i ] + br label %50 + +48: ; preds = %46 + %49 = load i32, ptr %3, align 4, !tbaa !6 + br label %.loopexit + +50: ; preds = %._crit_edge, %39, %44, %.lr.ph + %51 = phi i32 [ %.pre, %.fdt_num_mem_rsv.exit_crit_edge ], [ %96, %105 ], [ %96, %100 ], [ %96, %.lr.ph ] + %.1 = phi i32 [ %.01830, %.fdt_num_mem_rsv.exit_crit_edge ], [ %45, %105 ], [ %40, %100 ], [ %.01830, %.lr.ph ] + %52 = call i32 @fdt_next_tag(ptr noundef nonnull %0, i32 noundef %51, ptr noundef nonnull %4) #9 + %53 = load i32, ptr %4, align 4, !tbaa !6 + %54 = icmp slt i32 %53, 0 + br i1 %54, label %.loopexit, label %.lr.ph + +.loopexit: ; preds = %.split.i, %91, %50, %39, %42, %.lr.ph, %fdt_num_mem_rsv.exit.preheader, %38, %9, %7, %2, %48 + %.0 = phi i32 [ %49, %109 ], [ -8, %2 ], [ %8, %7 ], [ -8, %9 ], [ %., %99 ], [ %89, %fdt_num_mem_rsv.exit.preheader ], [ %53, %fdt_num_mem_rsv.exit ], [ -11, %100 ], [ -11, %103 ], [ -13, %.lr.ph ], [ -8, %91 ], [ -8, %.split.i ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #9 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #9 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #9 diff --git a/bench/spike/optimized/fdt_sw.ll b/bench/spike/optimized/fdt_sw.ll index 99c42a16014..6f758580a00 100644 --- a/bench/spike/optimized/fdt_sw.ll +++ b/bench/spike/optimized/fdt_sw.ll @@ -98,7 +98,7 @@ define range(i32 -13, 1) i32 @fdt_resize(ptr noundef readonly captures(address) %.not.i = icmp eq i32 %20, 804389138 %..i = select i1 %.not.i, i32 0, i32 -9 %.0.i = select i1 %21, i32 -7, i32 %..i - br i1 %.not.i, label %22, label %125 + br i1 %.not.i, label %22, label %131 22: ; preds = %3 %23 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -177,12 +177,12 @@ define range(i32 -13, 1) i32 @fdt_resize(ptr noundef readonly captures(address) %96 = zext i8 %95 to i64 %97 = or disjoint i64 %93, %96 %98 = icmp samesign ugt i64 %79, %97 - br i1 %98, label %125, label %99 + br i1 %98, label %131, label %99 99: ; preds = %22 %100 = sext i32 %2 to i64 %101 = icmp ugt i64 %79, %100 - br i1 %101, label %125, label %102 + br i1 %101, label %131, label %102 102: ; preds = %99 %103 = getelementptr inbounds nuw i8, ptr %0, i64 %97 @@ -221,11 +221,11 @@ define range(i32 -13, 1) i32 @fdt_resize(ptr noundef readonly captures(address) %123 = icmp eq i8 %122, 0 br i1 %123, label %125, label %124 -124: ; preds = %110 +124: ; preds = %110 store i32 %rev.i.i, ptr %112, align 4, !tbaa !13 - br label %125 + br label %131 -125: ; preds = %110, %124, %99, %22, %3 +131: ; preds = %110, %124, %99, %22, %3 %.1 = phi i32 [ %.0.i, %3 ], [ -13, %22 ], [ -3, %99 ], [ 0, %124 ], [ 0, %110 ] ret i32 %.1 } @@ -271,26 +271,26 @@ define range(i32 -9, 1) i32 @fdt_add_reservemap_entry(ptr noundef captures(none) br i1 %33, label %fdt_sw_probe_memrsv_.exit.thread, label %fdt_sw_probe_memrsv_.exit.thread18 fdt_sw_probe_memrsv_.exit: ; preds = %3 - %34 = icmp eq i32 %20, -804389139 - %.0.i.i = select i1 %34, i32 -7, i32 -9 + %40 = icmp eq i32 %20, -804389139 + %.0.i.i = select i1 %40, i32 -7, i32 -9 br label %fdt_sw_probe_memrsv_.exit.thread18 fdt_sw_probe_memrsv_.exit.thread: ; preds = %21 - %35 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %36 = load i8, ptr %35, align 1, !tbaa !14 - %37 = zext i8 %36 to i32 - %38 = shl nuw i32 %37, 24 - %39 = getelementptr inbounds nuw i8, ptr %0, i64 9 - %40 = load i8, ptr %39, align 1, !tbaa !14 - %41 = zext i8 %40 to i32 - %42 = shl nuw nsw i32 %41, 16 - %43 = or disjoint i32 %42, %38 - %44 = getelementptr inbounds nuw i8, ptr %0, i64 10 - %45 = load i8, ptr %44, align 1, !tbaa !14 - %46 = zext i8 %45 to i32 - %47 = shl nuw nsw i32 %46, 8 - %48 = or disjoint i32 %43, %47 - %49 = getelementptr inbounds nuw i8, ptr %0, i64 11 + %41 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %42 = load i8, ptr %41, align 1, !tbaa !14 + %43 = zext i8 %42 to i32 + %44 = shl nuw i32 %43, 24 + %45 = getelementptr inbounds nuw i8, ptr %0, i64 9 + %46 = load i8, ptr %45, align 1, !tbaa !14 + %47 = zext i8 %46 to i32 + %48 = shl nuw nsw i32 %47, 16 + %49 = or disjoint i32 %48, %44 + %50 = getelementptr inbounds nuw i8, ptr %0, i64 10 + %51 = load i8, ptr %50, align 1, !tbaa !14 + %52 = zext i8 %51 to i32 + %53 = shl nuw nsw i32 %52, 8 + %54 = or disjoint i32 %49, %53 + %55 = getelementptr inbounds nuw i8, ptr %0, i64 11 %50 = load i8, ptr %49, align 1, !tbaa !14 %51 = zext i8 %50 to i32 %52 = or disjoint i32 %48, %51 @@ -317,7 +317,7 @@ fdt_sw_probe_memrsv_.exit.thread: ; preds = %21 %73 = icmp ugt i64 %54, %72 br i1 %73, label %fdt_sw_probe_memrsv_.exit.thread18, label %74 -74: ; preds = %fdt_sw_probe_memrsv_.exit.thread +74:; preds = %fdt_sw_probe_memrsv_.exit.thread %75 = getelementptr inbounds i8, ptr %0, i64 %53 %76 = tail call noundef i64 @llvm.bswap.i64(i64 %1) store i64 %76, ptr %75, align 8, !tbaa !15 @@ -325,8 +325,8 @@ fdt_sw_probe_memrsv_.exit.thread: ; preds = %21 %78 = getelementptr inbounds nuw i8, ptr %75, i64 8 store i64 %77, ptr %78, align 8, !tbaa !18 %79 = trunc nuw i64 %54 to i32 - %rev.i.i = tail call noundef i32 @llvm.bswap.i32(i32 %79) - store i32 %rev.i.i, ptr %35, align 4, !tbaa !12 + %82 = tail call noundef i32 @llvm.bswap.i32(i32 %79) + store i32 %82, ptr %41, align 4, !tbaa !12 br label %fdt_sw_probe_memrsv_.exit.thread18 fdt_sw_probe_memrsv_.exit.thread18: ; preds = %fdt_sw_probe_memrsv_.exit, %21, %fdt_sw_probe_memrsv_.exit.thread, %74 @@ -372,26 +372,26 @@ define range(i32 -9, 1) i32 @fdt_finish_reservemap(ptr noundef captures(none) %0 br i1 %31, label %fdt_sw_probe_memrsv_.exit.thread.i, label %fdt_add_reservemap_entry.exit.thread fdt_sw_probe_memrsv_.exit.i: ; preds = %1 - %32 = icmp eq i32 %18, -804389139 - %.0.i.i.i = select i1 %32, i32 -7, i32 -9 + %38 = icmp eq i32 %18, -804389139 + %.0.i.i.i = select i1 %38, i32 -7, i32 -9 br label %fdt_add_reservemap_entry.exit.thread fdt_sw_probe_memrsv_.exit.thread.i: ; preds = %19 - %33 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %34 = load i8, ptr %33, align 1, !tbaa !14 - %35 = zext i8 %34 to i32 - %36 = shl nuw i32 %35, 24 - %37 = getelementptr inbounds nuw i8, ptr %0, i64 9 - %38 = load i8, ptr %37, align 1, !tbaa !14 - %39 = zext i8 %38 to i32 - %40 = shl nuw nsw i32 %39, 16 - %41 = or disjoint i32 %40, %36 - %42 = getelementptr inbounds nuw i8, ptr %0, i64 10 - %43 = load i8, ptr %42, align 1, !tbaa !14 - %44 = zext i8 %43 to i32 - %45 = shl nuw nsw i32 %44, 8 - %46 = or disjoint i32 %41, %45 - %47 = getelementptr inbounds nuw i8, ptr %0, i64 11 + %39 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %40 = load i8, ptr %39, align 1, !tbaa !14 + %41 = zext i8 %40 to i32 + %42 = shl nuw i32 %41, 24 + %43 = getelementptr inbounds nuw i8, ptr %0, i64 9 + %44 = load i8, ptr %43, align 1, !tbaa !14 + %45 = zext i8 %44 to i32 + %46 = shl nuw nsw i32 %45, 16 + %47 = or disjoint i32 %46, %42 + %48 = getelementptr inbounds nuw i8, ptr %0, i64 10 + %49 = load i8, ptr %48, align 1, !tbaa !14 + %50 = zext i8 %49 to i32 + %51 = shl nuw nsw i32 %50, 8 + %52 = or disjoint i32 %47, %51 + %53 = getelementptr inbounds nuw i8, ptr %0, i64 11 %48 = load i8, ptr %47, align 1, !tbaa !14 %49 = zext i8 %48 to i32 %50 = or disjoint i32 %46, %49 @@ -418,7 +418,7 @@ fdt_sw_probe_memrsv_.exit.thread.i: ; preds = %19 %71 = icmp ugt i64 %52, %70 br i1 %71, label %fdt_add_reservemap_entry.exit.thread, label %72 -72: ; preds = %fdt_sw_probe_memrsv_.exit.thread.i +72:; preds = %fdt_sw_probe_memrsv_.exit.thread.i %73 = getelementptr inbounds i8, ptr %0, i64 %51 %74 = trunc nuw i64 %52 to i32 %rev.i.i.i = tail call noundef i32 @llvm.bswap.i32(i32 %74) diff --git a/bench/wireshark/optimized/netscaler.ll b/bench/wireshark/optimized/netscaler.ll index 714f28c5751..41e2a1bddb2 100644 --- a/bench/wireshark/optimized/netscaler.ll +++ b/bench/wireshark/optimized/netscaler.ll @@ -3576,16 +3576,16 @@ nstrace_ensure_buflen.exit1135: ; preds = %1356 br label %1376 1376: ; preds = %1373, %1365 - %1377 = phi i32 [ %1375, %1373 ], [ %1364, %1365 ] - %1378 = add i32 %1377, %.19851300 - br label %1379 + %.3987 = phi i32 [ %1375, %1373 ], [ %1364, %1365 ] + %1378 = add i32 %.3987, %.19851300 + br label %._crit_edge -1379: ; preds = %1376, %1352, %1302, %1355 +._crit_edge: ; preds = %1376, %1352, %1302, %1355 %.3987 = phi i32 [ %1378, %1376 ], [ %1354, %1352 ], [ %1297, %1302 ], [ %.0990., %1355 ] %1380 = icmp ult i32 %.3987, %.0990 br i1 %1380, label %.lr.ph, label %._crit_edge, !llvm.loop !12 -._crit_edge: ; preds = %1379, %20 +._crit_edge:; preds = %1379, %20 %1381 = zext i32 %.0990 to i64 %1382 = load i64, ptr %18, align 8 %1383 = add i64 %1382, %1381 @@ -3595,38 +3595,38 @@ nstrace_ensure_buflen.exit1135: ; preds = %1356 %spec.select1156 = tail call i64 @llvm.umin.i64(i64 %1385, i64 8192) %spec.select = trunc nuw nsw i64 %spec.select1156 to i32 %.not = icmp eq i64 %1384, %1383 - br i1 %.not, label %.critedge, label %1386 - -1386: ; preds = %._crit_edge - %1387 = load ptr, ptr %6, align 8 - %1388 = load ptr, ptr %1387, align 8 - %1389 = getelementptr inbounds nuw i8, ptr %1387, i64 8 - %1390 = load i32, ptr %1389, align 8 - %1391 = load ptr, ptr %0, align 8 - %1392 = tail call i32 @file_read(ptr noundef %1388, i32 noundef %1390, ptr noundef %1391) - %1393 = icmp slt i32 %1392, 0 - br i1 %1393, label %1394, label %1397 - -1394: ; preds = %1386 - %1395 = load ptr, ptr %0, align 8 - %1396 = tail call i32 @file_error(ptr noundef %1395, ptr noundef %3) - store i32 %1396, ptr %2, align 4 + br i1 %.not, label %.critedge, label %1383 + +1383: ; preds = %._crit_edge + %1384 = load ptr, ptr %6, align 8 + %1385 = load ptr, ptr %1384, align 8 + %1386 = getelementptr inbounds nuw i8, ptr %1384, i64 8 + %1387 = load i32, ptr %1386, align 8 + %1388 = load ptr, ptr %0, align 8 + %1389 = tail call i32 @file_read(ptr noundef %1385, i32 noundef %1387, ptr noundef %1388) + %1390 = icmp slt i32 %1389, 0 + br i1 %1390, label %1391, label %1394 + +1391: ; preds = %1383 + %1392 = load ptr, ptr %0, align 8 + %1393 = tail call i32 @file_error(ptr noundef %1392, ptr noundef %3) + store i32 %1393, ptr %2, align 4 br label %.critedge -1397: ; preds = %1386 - %1398 = icmp eq i32 %1392, 0 - br i1 %1398, label %1399, label %nstrace_read_page.exit +1394: ; preds = %1383 + %1395 = icmp eq i32 %1389, 0 + br i1 %1395, label %1396, label %nstrace_read_page.exit -1399: ; preds = %1397 +1396: ; preds = %1394 store i32 0, ptr %2, align 4 br label %.critedge -nstrace_read_page.exit: ; preds = %1397 - %1400 = getelementptr inbounds nuw i8, ptr %1387, i64 28 - store i32 %1392, ptr %1400, align 4 +nstrace_read_page.exit: ; preds = %1394 + %1397 = getelementptr inbounds nuw i8, ptr %1384, i64 28 + store i32 %1389, ptr %1397, align 4 br label %20, !llvm.loop !13 -.critedge: ; preds = %._crit_edge, %1399, %1394, %1328, %nstrace_ensure_buflen.exit1129, %1286, %.thread1152, %nstrace_ensure_buflen.exit1135, %nstrace_ensure_buflen.exit1131, %nstrace_ensure_buflen.exit, %1181, %1197, %1245, %1265, %1094, %1110, %1155, %1175, %1005, %1021, %1068, %1088, %919, %935, %979, %999, %833, %849, %893, %913, %750, %766, %807, %827, %667, %683, %724, %744, %587, %603, %641, %661, %491, %507, %561, %581, %398, %414, %465, %485, %303, %319, %372, %392, %211, %227, %277, %297, %118, %134, %185, %205, %28, %44, %92, %112 +.critedge: ; preds = %._crit_edge, %1396, %1391, %1328, %nstrace_ensure_buflen.exit1129, %1286, %.thread1152, %nstrace_ensure_buflen.exit1135, %nstrace_ensure_buflen.exit1131, %nstrace_ensure_buflen.exit, %1181, %1197, %1245, %1265, %1094, %1110, %1155, %1175, %1005, %1021, %1068, %1088, %919, %935, %979, %999, %833, %849, %893, %913, %750, %766, %807, %827, %667, %683, %724, %744, %587, %603, %641, %661, %491, %507, %561, %581, %398, %414, %465, %485, %303, %319, %372, %392, %211, %227, %277, %297, %118, %134, %185, %205, %28, %44, %92, %112 %.3 = phi i1 [ false, %28 ], [ false, %44 ], [ false, %92 ], [ true, %112 ], [ false, %118 ], [ false, %134 ], [ false, %185 ], [ true, %205 ], [ false, %211 ], [ false, %227 ], [ false, %277 ], [ true, %297 ], [ false, %303 ], [ false, %319 ], [ false, %372 ], [ true, %392 ], [ false, %398 ], [ false, %414 ], [ false, %465 ], [ true, %485 ], [ false, %491 ], [ false, %507 ], [ false, %561 ], [ true, %581 ], [ false, %587 ], [ false, %603 ], [ false, %641 ], [ true, %661 ], [ false, %667 ], [ false, %683 ], [ false, %724 ], [ true, %744 ], [ false, %750 ], [ false, %766 ], [ false, %807 ], [ true, %827 ], [ false, %833 ], [ false, %849 ], [ false, %893 ], [ true, %913 ], [ false, %919 ], [ false, %935 ], [ false, %979 ], [ true, %999 ], [ false, %1005 ], [ false, %1021 ], [ false, %1068 ], [ true, %1088 ], [ false, %1094 ], [ false, %1110 ], [ false, %1155 ], [ true, %1175 ], [ false, %1181 ], [ false, %1197 ], [ false, %1245 ], [ true, %1265 ], [ false, %nstrace_ensure_buflen.exit ], [ false, %nstrace_ensure_buflen.exit1131 ], [ false, %nstrace_ensure_buflen.exit1135 ], [ false, %.thread1152 ], [ false, %1286 ], [ false, %nstrace_ensure_buflen.exit1129 ], [ false, %1328 ], [ false, %1394 ], [ false, %1399 ], [ false, %._crit_edge ] ret i1 %.3 } diff --git a/bench/wireshark/optimized/packet-atm.ll b/bench/wireshark/optimized/packet-atm.ll index c7a75197d51..0c6c16560a5 100644 --- a/bench/wireshark/optimized/packet-atm.ll +++ b/bench/wireshark/optimized/packet-atm.ll @@ -1374,7 +1374,7 @@ define internal fastcc i32 @dissect_atm_common(ptr noundef %0, ptr noundef %1, p switch i8 %196, label %.thread.i [ i8 6, label %197 i8 4, label %203 - i8 2, label %259 + i8 2, label %262 ] 197: ; preds = %195 @@ -1432,121 +1432,121 @@ define internal fastcc i32 @dissect_atm_common(ptr noundef %0, ptr noundef %1, p %229 = icmp eq i8 %228, 0 br i1 %229, label %230, label %234 -230: ; preds = %227 +230:; preds = %227 %231 = load i32, ptr @hf_atm_padding, align 4 %232 = call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %231, ptr noundef %0, i32 noundef 0, i32 noundef 2, i32 noundef 0) %233 = call ptr @tvb_new_subset_remaining(ptr noundef %0, i32 noundef 2) br label %.thread205.i -234: ; preds = %227 - br i1 %224, label %235, label %._crit_edge.i +237: ; preds = %227 + br i1 %224, label %238, label %._crit_edge.i -._crit_edge.i: ; preds = %234 +._crit_edge.i: ; preds = %237 %.phi.trans.insert.i = getelementptr inbounds nuw i8, ptr %7, i64 4 %.pre.i = load i8, ptr %.phi.trans.insert.i, align 1 - br label %243 + br label %246 -235: ; preds = %234 - %236 = getelementptr inbounds nuw i8, ptr %7, i64 3 - %237 = load i8, ptr %236, align 1 - switch i8 %237, label %238 [ +238: ; preds = %237 + %239 = getelementptr inbounds nuw i8, ptr %7, i64 3 + %240 = load i8, ptr %239, align 1 + switch i8 %240, label %238 [ i8 -52, label %.thread205.i i8 -114, label %.thread205.i ] -238: ; preds = %235 - %239 = icmp eq i8 %237, 0 - %240 = getelementptr inbounds nuw i8, ptr %7, i64 4 - %241 = load i8, ptr %240, align 1 - %242 = icmp eq i8 %241, -128 - %or.cond15.i = select i1 %239, i1 %242, i1 false - br i1 %or.cond15.i, label %.thread205.i, label %243 - -243: ; preds = %238, %._crit_edge.i - %244 = phi i8 [ %.pre.i, %._crit_edge.i ], [ %241, %238 ] - %245 = icmp eq i8 %244, 3 - br i1 %245, label %246, label %254 - -246: ; preds = %243 - %247 = getelementptr inbounds nuw i8, ptr %7, i64 5 - %248 = load i8, ptr %247, align 1 - switch i8 %248, label %249 [ +241: ; preds = %238 + %242 = icmp eq i8 %240, 0 + %243 = getelementptr inbounds nuw i8, ptr %7, i64 4 + %244 = load i8, ptr %243, align 1 + %245 = icmp eq i8 %244, -128 + %or.cond15.i = select i1 %242, i1 %245, i1 false + br i1 %or.cond15.i, label %.thread205.i, label %246 + +246: ; preds = %241, %._crit_edge.i + %247 = phi i8 [ %.pre.i, %._crit_edge.i ], [ %244, %238 ] + %248 = icmp eq i8 %247, 3 + br i1 %248, label %249, label %257 + +249: ; preds = %246 + %250 = getelementptr inbounds nuw i8, ptr %7, i64 5 + %251 = load i8, ptr %250, align 1 + switch i8 %251, label %249 [ i8 -52, label %.thread205.i i8 -114, label %.thread205.i ] -249: ; preds = %246 - %250 = icmp eq i8 %248, 0 - %251 = getelementptr inbounds nuw i8, ptr %7, i64 6 - %252 = load i8, ptr %251, align 1 - %253 = icmp eq i8 %252, -128 - %or.cond23.i = select i1 %250, i1 %253, i1 false - br i1 %or.cond23.i, label %.thread205.i, label %254 - -254: ; preds = %249, %243 - %255 = and i8 %217, -16 - switch i8 %255, label %258 [ +252: ; preds = %249 + %253 = icmp eq i8 %251, 0 + %254 = getelementptr inbounds nuw i8, ptr %7, i64 6 + %255 = load i8, ptr %254, align 1 + %256 = icmp eq i8 %255, -128 + %or.cond23.i = select i1 %253, i1 %256, i1 false + br i1 %or.cond23.i, label %.thread205.i, label %257 + +257: ; preds = %252, %246 + %258 = and i8 %217, -16 + switch i8 %258, label %258 [ i8 64, label %.thread205.i i8 96, label %.thread205.i ] -.thread205.i: ; preds = %254, %254, %249, %246, %246, %238, %235, %235, %230, %225, %215 +.thread205.i: ; preds = %257, %257, %252, %249, %249, %241, %238, %238, %230, %225, %215 %llc_handle.sink.i = phi ptr [ @eth_maybefcs_handle, %230 ], [ @llc_handle, %215 ], [ @ppp_handle, %225 ], [ @fr_handle, %235 ], [ @fr_handle, %235 ], [ @fr_handle, %238 ], [ @fr_handle, %246 ], [ @fr_handle, %246 ], [ @fr_handle, %249 ], [ @ip_handle, %254 ], [ @ip_handle, %254 ] %.0.sink.i = phi ptr [ %233, %230 ], [ %.0.i, %215 ], [ %.0.i, %225 ], [ %.0.i, %235 ], [ %.0.i, %235 ], [ %.0.i, %238 ], [ %.0.i, %246 ], [ %.0.i, %246 ], [ %.0.i, %249 ], [ %.0.i, %254 ], [ %.0.i, %254 ] - %256 = load ptr, ptr %llc_handle.sink.i, align 8 - %257 = call i32 @call_dissector(ptr noundef %256, ptr noundef %.0.sink.i, ptr noundef %1, ptr noundef %2) + %259 = load ptr, ptr %llc_handle.sink.i, align 8 + %260 = call i32 @call_dissector(ptr noundef %259, ptr noundef %.0.sink.i, ptr noundef %1, ptr noundef %2) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #11 br label %dissect_reassembled_pdu.exit -258: ; preds = %254 +261: ; preds = %257 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #11 br label %.thread.i -259: ; preds = %195 - %260 = load i32, ptr @hf_atm_cid, align 4 - %261 = getelementptr inbounds nuw i8, ptr %4, i64 12 - %262 = load i8, ptr %261, align 4 - %263 = zext i8 %262 to i32 - %264 = tail call ptr @proto_tree_add_uint(ptr noundef %.0, i32 noundef %260, ptr noundef %0, i32 noundef 0, i32 noundef 0, i32 noundef %263) - %265 = load i16, ptr %186, align 4 - %266 = zext i16 %265 to i32 - %267 = load i16, ptr %190, align 2 - %268 = zext i16 %267 to i32 - %269 = load i8, ptr %261, align 4 - %270 = zext i8 %269 to i32 - tail call void (ptr, ptr, ...) @proto_item_append_text(ptr noundef %.050, ptr noundef nonnull @.str.344, i32 noundef %266, i32 noundef %268, i32 noundef %270) - %271 = load i32, ptr %4, align 4 - %272 = and i32 %271, 8 - %.not188.i = icmp eq i32 %272, 0 - br i1 %.not188.i, label %273, label %.thread.i - -273: ; preds = %259 - %274 = and i32 %271, 4 - %.not189.i = icmp eq i32 %274, 0 - br i1 %.not189.i, label %275, label %277 - -275: ; preds = %273 - %276 = tail call ptr @tvb_new_subset_remaining(ptr noundef %0, i32 noundef 4) - br label %277 - -277: ; preds = %275, %273 - %.3.i = phi ptr [ %276, %275 ], [ %0, %273 ] - %278 = load ptr, ptr @atm_type_aal2_table, align 8 - %279 = getelementptr inbounds nuw i8, ptr %4, i64 5 - %280 = load i8, ptr %279, align 1 - %281 = zext i8 %280 to i32 - %282 = tail call i32 @dissector_try_uint(ptr noundef %278, i32 noundef %281, ptr noundef %.3.i, ptr noundef %1, ptr noundef %2) - %.not190.not.i = icmp eq i32 %282, 0 +262: ; preds = %195 + %263 = load i32, ptr @hf_atm_cid, align 4 + %264 = getelementptr inbounds nuw i8, ptr %4, i64 12 + %265 = load i8, ptr %264, align 4 + %266 = zext i8 %265 to i32 + %267 = tail call ptr @proto_tree_add_uint(ptr noundef %.0, i32 noundef %263, ptr noundef %0, i32 noundef 0, i32 noundef 0, i32 noundef %266) + %268 = load i16, ptr %186, align 4 + %269 = zext i16 %268 to i32 + %270 = load i16, ptr %190, align 2 + %271 = zext i16 %270 to i32 + %272 = load i8, ptr %264, align 4 + %273 = zext i8 %272 to i32 + tail call void (ptr, ptr, ...) @proto_item_append_text(ptr noundef %.050, ptr noundef nonnull @.str.344, i32 noundef %269, i32 noundef %271, i32 noundef %273) + %274 = load i32, ptr %4, align 4 + %275 = and i32 %274, 8 + %.not188.i = icmp eq i32 %275, 0 + br i1 %.not188.i, label %276, label %.thread.i + +276: ; preds = %262 + %277 = and i32 %274, 4 + %.not189.i = icmp eq i32 %277, 0 + br i1 %.not189.i, label %278, label %280 + +278: ; preds = %276 + %279 = tail call ptr @tvb_new_subset_remaining(ptr noundef %0, i32 noundef 4) + br label %280 + +280: ; preds = %278, %276 + %.3.i = phi ptr [ %279, %275 ], [ %0, %273 ] + %281 = load ptr, ptr @atm_type_aal2_table, align 8 + %282 = getelementptr inbounds nuw i8, ptr %4, i64 5 + %283 = load i8, ptr %282, align 1 + %284 = zext i8 %283 to i32 + %285 = tail call i32 @dissector_try_uint(ptr noundef %281, i32 noundef %284, ptr noundef %.3.i, ptr noundef %1, ptr noundef %2) + %.not190.not.i = icmp eq i32 %285, 0 br i1 %.not190.not.i, label %.thread.i, label %dissect_reassembled_pdu.exit -.thread.i: ; preds = %277, %259, %258, %212, %203, %197, %195 +.thread.i: ; preds = %280, %262, %261, %212, %203, %197, %195 %.1199.i = phi ptr [ %.3.i, %277 ], [ %.0.i, %258 ], [ %.0.i, %195 ], [ %.0.i, %259 ], [ %.0.i, %203 ], [ %.0.i, %212 ], [ %.0.i, %197 ] - %283 = call i32 @call_data_dissector(ptr noundef %.1199.i, ptr noundef %1, ptr noundef %2) + %286 = call i32 @call_data_dissector(ptr noundef %.1199.i, ptr noundef %1, ptr noundef %2) br label %dissect_reassembled_pdu.exit -dissect_reassembled_pdu.exit: ; preds = %.thread.i, %277, %.thread205.i, %206, %200, %184, %65 - %284 = call i32 @tvb_reported_length(ptr noundef %0) - ret i32 %284 +dissect_reassembled_pdu.exit: ; preds = %.thread.i, %280, %.thread205.i, %206, %200, %184, %65 + %287 = call i32 @tvb_reported_length(ptr noundef %0) + ret i32 %287 } ; Function Attrs: null_pointer_is_valid diff --git a/bench/wireshark/optimized/packet-knet.ll b/bench/wireshark/optimized/packet-knet.ll index 5be4a0c30bb..dc90a12f521 100644 --- a/bench/wireshark/optimized/packet-knet.ll +++ b/bench/wireshark/optimized/packet-knet.ll @@ -239,8 +239,8 @@ define internal i32 @dissect_knet_udp(ptr noundef %0, ptr noundef readonly captu br i1 %48, label %.lr.ph, label %.critedge .lr.ph: ; preds = %46, %dissect_knet_message.exit - %.040 = phi i32 [ %98, %dissect_knet_message.exit ], [ 0, %46 ] - %.139 = phi i32 [ %97, %dissect_knet_message.exit ], [ %.035, %46 ] + %.040 = phi i32 [ %100, %dissect_knet_message.exit ], [ 0, %46 ] + %.139 = phi i32 [ %99, %dissect_knet_message.exit ], [ %.035, %46 ] %49 = shl i32 %.139, 3 %50 = add i32 %49, 12 %51 = tail call zeroext i8 @tvb_get_bits8(ptr noundef %0, i32 noundef %50, i32 noundef 4) @@ -249,81 +249,81 @@ define internal i32 @dissect_knet_udp(ptr noundef %0, ptr noundef readonly captu %54 = icmp eq i8 %53, 0 br i1 %54, label %.critedge, label %55 -55: ; preds = %.lr.ph +55:; preds = %.lr.ph call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) - %56 = load i32, ptr @hf_knet_message_tree, align 4 - %57 = tail call ptr @proto_tree_add_item(ptr noundef %12, i32 noundef %56, ptr noundef %0, i32 noundef %.139, i32 noundef -1, i32 noundef 0) - %58 = load i32, ptr @ett_knet_message, align 4 - %59 = tail call ptr @proto_item_add_subtree(ptr noundef %57, i32 noundef %58) - %60 = tail call zeroext i8 @tvb_get_bits8(ptr noundef %0, i32 noundef %50, i32 noundef 4) - %61 = zext i8 %60 to i32 - %62 = shl nuw nsw i32 %61, 8 - %63 = tail call zeroext i8 @tvb_get_bits8(ptr noundef %0, i32 noundef %49, i32 noundef 8) - %64 = zext i8 %63 to i32 - %65 = or disjoint i32 %62, %64 - %.not.i38 = icmp eq ptr %59, null - br i1 %.not.i38, label %.dissect_content_length.exit_crit_edge, label %66 + %58 = load i32, ptr @hf_knet_message_tree, align 4 + %59 = tail call ptr @proto_tree_add_item(ptr noundef %12, i32 noundef %58, ptr noundef %0, i32 noundef %.139, i32 noundef -1, i32 noundef 0) + %60 = load i32, ptr @ett_knet_message, align 4 + %61 = tail call ptr @proto_item_add_subtree(ptr noundef %59, i32 noundef %60) + %62 = tail call zeroext i8 @tvb_get_bits8(ptr noundef %0, i32 noundef %50, i32 noundef 4) + %63 = zext i8 %62 to i32 + %64 = shl nuw nsw i32 %63, 8 + %65 = tail call zeroext i8 @tvb_get_bits8(ptr noundef %0, i32 noundef %49, i32 noundef 8) + %66 = zext i8 %65 to i32 + %67 = or disjoint i32 %64, %66 + %.not.i38 = icmp eq ptr %61, null + br i1 %.not.i38, label %.dissect_content_length.exit_crit_edge, label %68 .dissect_content_length.exit_crit_edge: ; preds = %55 %.pre = add i32 %.139, 1 br label %dissect_content_length.exit -66: ; preds = %55 - %67 = load i32, ptr @hf_knet_msg_flags, align 4 - %68 = add i32 %.139, 1 - %69 = tail call ptr @proto_tree_add_item(ptr noundef nonnull %59, i32 noundef %67, ptr noundef %0, i32 noundef %68, i32 noundef 1, i32 noundef 0) - %70 = load i32, ptr @ett_knet_message_flags, align 4 - %71 = tail call ptr @proto_item_add_subtree(ptr noundef %69, i32 noundef %70) - %72 = load i32, ptr @hf_knet_msg_fs, align 4 - %73 = tail call ptr @proto_tree_add_item(ptr noundef %71, i32 noundef %72, ptr noundef %0, i32 noundef %68, i32 noundef 1, i32 noundef 0) - %74 = load i32, ptr @hf_knet_msg_ff, align 4 - %75 = tail call ptr @proto_tree_add_item(ptr noundef %71, i32 noundef %74, ptr noundef %0, i32 noundef %68, i32 noundef 1, i32 noundef 0) - %76 = load i32, ptr @hf_knet_msg_inorder, align 4 - %77 = tail call ptr @proto_tree_add_item(ptr noundef %71, i32 noundef %76, ptr noundef %0, i32 noundef %68, i32 noundef 1, i32 noundef 0) - %78 = load i32, ptr @hf_knet_msg_reliable, align 4 - %79 = tail call ptr @proto_tree_add_item(ptr noundef %71, i32 noundef %78, ptr noundef %0, i32 noundef %68, i32 noundef 1, i32 noundef 0) - %80 = load i32, ptr @hf_knet_content_length, align 4 - %81 = tail call ptr @proto_tree_add_uint(ptr noundef nonnull %59, i32 noundef %80, ptr noundef %0, i32 noundef %.139, i32 noundef 2, i32 noundef %65) +68: ; preds = %55 + %69 = load i32, ptr @hf_knet_msg_flags, align 4 + %70 = add i32 %.139, 1 + %71 = tail call ptr @proto_tree_add_item(ptr noundef nonnull %61, i32 noundef %69, ptr noundef %0, i32 noundef %70, i32 noundef 1, i32 noundef 0) + %72 = load i32, ptr @ett_knet_message_flags, align 4 + %73 = tail call ptr @proto_item_add_subtree(ptr noundef %71, i32 noundef %72) + %74 = load i32, ptr @hf_knet_msg_fs, align 4 + %75 = tail call ptr @proto_tree_add_item(ptr noundef %73, i32 noundef %74, ptr noundef %0, i32 noundef %70, i32 noundef 1, i32 noundef 0) + %76 = load i32, ptr @hf_knet_msg_ff, align 4 + %77 = tail call ptr @proto_tree_add_item(ptr noundef %73, i32 noundef %76, ptr noundef %0, i32 noundef %70, i32 noundef 1, i32 noundef 0) + %78 = load i32, ptr @hf_knet_msg_inorder, align 4 + %79 = tail call ptr @proto_tree_add_item(ptr noundef %73, i32 noundef %78, ptr noundef %0, i32 noundef %70, i32 noundef 1, i32 noundef 0) + %80 = load i32, ptr @hf_knet_msg_reliable, align 4 + %81 = tail call ptr @proto_tree_add_item(ptr noundef %73, i32 noundef %80, ptr noundef %0, i32 noundef %70, i32 noundef 1, i32 noundef 0) + %82 = load i32, ptr @hf_knet_content_length, align 4 + %83 = tail call ptr @proto_tree_add_uint(ptr noundef nonnull %61, i32 noundef %82, ptr noundef %0, i32 noundef %.139, i32 noundef 2, i32 noundef %67) br label %dissect_content_length.exit -dissect_content_length.exit: ; preds = %.dissect_content_length.exit_crit_edge, %66 - %.pre-phi = phi i32 [ %.pre, %.dissect_content_length.exit_crit_edge ], [ %68, %66 ] - %82 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %.pre-phi) - %83 = and i8 %82, 16 - %.not.i37 = icmp eq i8 %83, 0 - br i1 %.not.i37, label %dissect_knet_message.exit, label %84 - -84: ; preds = %dissect_content_length.exit - %85 = add i32 %.139, 2 - %86 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %85) - %.not.i.i = icmp sgt i8 %86, -1 +dissect_content_length.exit: ; preds = %.dissect_content_length.exit_crit_edge, %68 + %.pre-phi = phi i32 [ %.pre, %.dissect_content_length.exit_crit_edge ], [ %70, %66 ] + %84 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %.pre-phi) + %85 = and i8 %84, 16 + %.not.i37 = icmp eq i8 %85, 0 + br i1 %.not.i37, label %dissect_knet_message.exit, label %86 + +86: ; preds = %dissect_content_length.exit + %87 = add i32 %.139, 2 + %88 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %87) + %.not.i.i = icmp sgt i8 %88, -1 %spec.select.i.i = select i1 %.not.i.i, i32 1, i32 2 - %87 = load i32, ptr @hf_knet_msg_reliable_message_number, align 4 - %88 = tail call ptr @proto_tree_add_item(ptr noundef %59, i32 noundef %87, ptr noundef %0, i32 noundef %85, i32 noundef %spec.select.i.i, i32 noundef -2147483648) - %89 = add i32 %spec.select.i.i, %.139 + %89 = load i32, ptr @hf_knet_msg_reliable_message_number, align 4 + %90 = tail call ptr @proto_tree_add_item(ptr noundef %61, i32 noundef %89, ptr noundef %0, i32 noundef %87, i32 noundef %spec.select.i.i, i32 noundef -2147483648) + %91 = add i32 %spec.select.i.i, %.139 br label %dissect_knet_message.exit -dissect_knet_message.exit: ; preds = %dissect_content_length.exit, %84 - %90 = phi i32 [ %89, %84 ], [ %.139, %dissect_content_length.exit ] - %91 = add i32 %90, 2 - store i32 %91, ptr %5, align 4 - %92 = sub i32 %65, %.139 - %93 = add i32 %92, %91 - tail call void @proto_item_set_len(ptr noundef %57, i32 noundef %93) - %94 = icmp ne i32 %.040, 0 - %95 = call fastcc i32 @dissect_messageid(ptr noundef %0, ptr noundef nonnull %5, ptr noundef %59, ptr noundef readonly %1, i1 noundef zeroext %94) - %96 = load i32, ptr %5, align 4 - tail call fastcc void @dissect_payload(ptr noundef %0, i32 noundef %96, i32 noundef %95, ptr noundef %59, i32 noundef %65) +dissect_knet_message.exit: ; preds = %dissect_content_length.exit, %86 + %92 = phi i32 [ %91, %84 ], [ %.139, %dissect_content_length.exit ] + %93 = add i32 %92, 2 + store i32 %93, ptr %5, align 4 + %94 = sub i32 %67, %.139 + %95 = add i32 %94, %93 + tail call void @proto_item_set_len(ptr noundef %59, i32 noundef %95) + %96 = icmp ne i32 %.040, 0 + %97 = call fastcc i32 @dissect_messageid(ptr noundef %0, ptr noundef nonnull %5, ptr noundef %61, ptr noundef readonly %1, i1 noundef zeroext %96) + %98 = load i32, ptr %5, align 4 + tail call fastcc void @dissect_payload(ptr noundef %0, i32 noundef %98, i32 noundef %97, ptr noundef %61, i32 noundef %67) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) - %97 = add i32 %91, %65 - %98 = add i32 %.040, 1 - %99 = tail call i32 @tvb_reported_length_remaining(ptr noundef %0, i32 noundef %97) - %100 = icmp sgt i32 %99, 2 - br i1 %100, label %.lr.ph, label %.critedge, !llvm.loop !6 + %99 = add i32 %93, %67 + %100 = add i32 %.040, 1 + %101 = tail call i32 @tvb_reported_length_remaining(ptr noundef %0, i32 noundef %99) + %102 = icmp sgt i32 %101, 2 + br i1 %102, label %.lr.ph, label %.critedge, !llvm.loop !6 .critedge: ; preds = %.lr.ph, %dissect_knet_message.exit, %46 - %101 = tail call i32 @tvb_captured_length(ptr noundef %0) - ret i32 %101 + %103 = tail call i32 @tvb_captured_length(ptr noundef %0) + ret i32 %103 } ; Function Attrs: null_pointer_is_valid sspstrong uwtable diff --git a/bench/wireshark/optimized/packet-opensafety.ll b/bench/wireshark/optimized/packet-opensafety.ll index 08386e08cb7..0e673194646 100644 --- a/bench/wireshark/optimized/packet-opensafety.ll +++ b/bench/wireshark/optimized/packet-opensafety.ll @@ -1769,8 +1769,8 @@ findFrame1Position.exit.thread291: ; preds = %76 store i32 %59, ptr %10, align 4 br label %.backedge -.backedge: ; preds = %291, %298, %findFrame1Position.exit.thread291, %167, %169, %178, %223, %197, %287 - %92 = phi i32 [ %59, %findFrame1Position.exit.thread291 ], [ %179, %178 ], [ %storemerge, %197 ], [ %224, %223 ], [ %290, %287 ], [ %168, %167 ], [ %170, %169 ], [ %299, %298 ], [ %295, %291 ] +.backedge: ; preds = %294, %301, %findFrame1Position.exit.thread291, %167, %169, %178, %223, %197, %290 + %92 = phi i32 [ %59, %findFrame1Position.exit.thread291 ], [ %179, %178 ], [ %storemerge, %197 ], [ %224, %223 ], [ %293, %287 ], [ %168, %167 ], [ %170, %169 ], [ %302, %298 ], [ %298, %291 ] %.0250.be = phi i8 [ %.0250324, %findFrame1Position.exit.thread291 ], [ %.0250324, %178 ], [ %.0250324, %197 ], [ %.0250324, %223 ], [ %.0250324, %287 ], [ %.0250324, %167 ], [ %.0250324, %169 ], [ 1, %298 ], [ 1, %291 ] %.0246.be = phi i1 [ %.0246325, %findFrame1Position.exit.thread291 ], [ %.0246325, %178 ], [ %.0246325, %197 ], [ %.0246325, %223 ], [ %.0246325, %287 ], [ %.0246325, %167 ], [ %.0246325, %169 ], [ true, %298 ], [ true, %291 ] %.0240.be = phi i1 [ %.0240326, %findFrame1Position.exit.thread291 ], [ %.0240326, %178 ], [ %.0240326, %197 ], [ %spec.select277, %223 ], [ %.1241, %287 ], [ %.0240326, %167 ], [ %.0240326, %169 ], [ %.1241, %298 ], [ %.1241, %291 ] @@ -1994,7 +1994,7 @@ findFrame1Position.exit286: ; preds = %143, %144, %150 ._crit_edge355: ; preds = %.thread362 %.pre358 = add nuw nsw i32 %96, %182 %.pre360 = add nuw nsw i32 %.pre358, 1 - br label %225 + br label %228 211: ; preds = %198 %212 = add nuw nsw i32 %96, %.pre357 @@ -2011,16 +2011,16 @@ findFrame1Position.exit286: ; preds = %143, %144, %150 %222 = icmp eq i8 %221, -40 br i1 %222, label %223, label %225 -223: ; preds = %211 +223:; preds = %211 %224 = add i32 %57, 2 store i32 %224, ptr %10, align 4 br label %.backedge -225: ; preds = %._crit_edge355, %211 +228: ; preds = %._crit_edge355, %211 %.pre-phi361 = phi i32 [ %.pre360, %._crit_edge355 ], [ %214, %211 ] %.pre-phi359 = phi i32 [ %.pre358, %._crit_edge355 ], [ %212, %211 ] %.1241 = phi i1 [ %.0240326, %._crit_edge355 ], [ %spec.select277, %211 ] - %226 = call zeroext i8 @tvb_get_uint8(ptr noundef %.0226, i32 noundef %.pre-phi359) + %229 = call zeroext i8 @tvb_get_uint8(ptr noundef %.0226, i32 noundef %.pre-phi359) %227 = zext i8 %226 to i32 %228 = call zeroext i8 @tvb_get_uint8(ptr noundef %.0226, i32 noundef %.pre-phi361) %229 = shl i8 %228, 6 @@ -2031,12 +2031,12 @@ findFrame1Position.exit286: ; preds = %143, %144, %150 %.not268 = icmp eq ptr %233, null br i1 %.not268, label %.thread297, label %234 -234: ; preds = %225 +234:; preds = %225 %235 = call i32 @wmem_list_count(ptr noundef nonnull %233) %.not269 = icmp eq i32 %235, 0 br i1 %.not269, label %.thread297, label %236 -236: ; preds = %234 +236:; preds = %234 %237 = load ptr, ptr @global_filter_list, align 8 %238 = zext nneg i32 %232 to i64 %239 = inttoptr i64 %238 to ptr @@ -2052,33 +2052,33 @@ findFrame1Position.exit286: ; preds = %143, %144, %150 %245 = trunc nuw i8 %244 to i1 %.not270 = icmp ne i32 %.0233329, %57 %or.cond368.not = select i1 %245, i1 %.not270, i1 false - br i1 %or.cond368.not, label %246, label %251 - -246: ; preds = %.thread297 - %247 = sub i32 %57, %.0233329 - %248 = call ptr @tvb_new_subset_length_caplen(ptr noundef %.0226, i32 noundef %.0233329, i32 noundef %247, i32 noundef %21) - %249 = load ptr, ptr @data_dissector, align 8 - %250 = call i32 @call_dissector(ptr noundef %249, ptr noundef %248, ptr noundef %6, ptr noundef %7) - br label %251 - -251: ; preds = %246, %.thread297 - %252 = call ptr @tvb_new_subset_length_caplen(ptr noundef %.0226, i32 noundef %57, i32 noundef %58, i32 noundef %21) - call void @add_new_data_source(ptr noundef %6, ptr noundef %252, ptr noundef nonnull @.str.352) - br i1 %.not271, label %254, label %.thread301 - -.thread301: ; preds = %251 - %253 = load ptr, ptr %43, align 8 - call void @col_set_str(ptr noundef %253, i32 noundef 35, ptr noundef %0) + br i1 %or.cond368.not, label %249, label %254 + +249: ; preds = %.thread297 + %250 = sub i32 %57, %.0233329 + %251 = call ptr @tvb_new_subset_length_caplen(ptr noundef %.0226, i32 noundef %.0233329, i32 noundef %250, i32 noundef %21) + %252 = load ptr, ptr @data_dissector, align 8 + %253 = call i32 @call_dissector(ptr noundef %252, ptr noundef %251, ptr noundef %6, ptr noundef %7) + br label %254 + +254: ; preds = %249, %.thread297 + %255 = call ptr @tvb_new_subset_length_caplen(ptr noundef %.0226, i32 noundef %57, i32 noundef %58, i32 noundef %21) + call void @add_new_data_source(ptr noundef %6, ptr noundef %255, ptr noundef nonnull @.str.352) + br i1 %.not271, label %257, label %.thread301 + +.thread301: ; preds = %254 + %256 = load ptr, ptr %43, align 8 + call void @col_set_str(ptr noundef %256, i32 noundef 35, ptr noundef %0) br label %261 -254: ; preds = %251 - br i1 %.0246325, label %261, label %255 +257: ; preds = %254 + br i1 %.0246325, label %261, label %258 -255: ; preds = %254 - br i1 %.not265.not, label %258, label %256 +258: ; preds = %257 + br i1 %.not265.not, label %258, label %259 -256: ; preds = %255 - %257 = call i32 @call_dissector(ptr noundef %.0225, ptr noundef %.0226, ptr noundef %6, ptr noundef %7) +259: ; preds = %258 + %260 = call i32 @call_dissector(ptr noundef %.0225, ptr noundef %.0226, ptr noundef %6, ptr noundef %7) %.pre.pre.pre = load i32, ptr %10, align 4 %.pre350.pre.pre = load i32, ptr %11, align 4 br label %258 @@ -2093,43 +2093,43 @@ findFrame1Position.exit286: ; preds = %143, %144, %150 br label %261 261: ; preds = %.thread301, %258, %254 - %.pre350 = phi i32 [ %58, %254 ], [ %.pre350.pre, %258 ], [ %58, %.thread301 ] - %.pre = phi i32 [ %57, %254 ], [ %.pre.pre, %258 ], [ %57, %.thread301 ] + %.pre350.pre = phi i32 [ %58, %254 ], [ %.pre350.pre, %258 ], [ %58, %.thread301 ] + %.pre.pre = phi i32 [ %57, %254 ], [ %.pre.pre, %258 ], [ %57, %.thread301 ] %.6304.in = phi i8 [ %.0236328, %254 ], [ %.0236328, %258 ], [ %4, %.thread301 ] %.6304 = add i8 %.6304.in, 1 - br i1 %.not272, label %267, label %262 - -262: ; preds = %261 - %263 = load i32, ptr @proto_opensafety, align 4 - %264 = call ptr @proto_tree_add_item(ptr noundef nonnull %7, i32 noundef %263, ptr noundef %.0226, i32 noundef %.pre, i32 noundef %.pre350, i32 noundef 0) - %265 = load i32, ptr @ett_opensafety, align 4 - %266 = call ptr @proto_item_add_subtree(ptr noundef %264, i32 noundef %265) - br label %267 - -267: ; preds = %261, %262 - %.0224 = phi ptr [ %264, %262 ], [ null, %261 ] - %.0223 = phi ptr [ %266, %262 ], [ null, %261 ] - %268 = getelementptr inbounds nuw i8, ptr %50, i64 34 - store i8 %.0239, ptr %268, align 2 - %269 = getelementptr inbounds nuw i8, ptr %50, i64 16 - store ptr %252, ptr %269, align 8 - %270 = call i32 @tvb_raw_offset(ptr noundef %.0226) - %271 = add i32 %270, %.pre - %272 = trunc i32 %271 to i16 - %273 = getelementptr inbounds nuw i8, ptr %50, i64 12 - store i16 %272, ptr %273, align 4 - %274 = getelementptr inbounds nuw i8, ptr %50, i64 2 - store i16 %.1230, ptr %274, align 2 - %275 = getelementptr inbounds nuw i8, ptr %50, i64 4 - store i16 %.1228, ptr %275, align 4 - %276 = getelementptr inbounds nuw i8, ptr %50, i64 8 - store i32 %.pre350, ptr %276, align 8 + br i1 %.not272, label %270, label %265 + +265: ; preds = %261 + %266 = load i32, ptr @proto_opensafety, align 4 + %267 = call ptr @proto_tree_add_item(ptr noundef nonnull %7, i32 noundef %266, ptr noundef %.0226, i32 noundef %.pre, i32 noundef %.pre350, i32 noundef 0) + %268 = load i32, ptr @ett_opensafety, align 4 + %269 = call ptr @proto_item_add_subtree(ptr noundef %267, i32 noundef %268) + br label %270 + +270: ; preds = %261, %265 + %.0224 = phi ptr [ %267, %262 ], [ null, %261 ] + %.0223 = phi ptr [ %269, %262 ], [ null, %261 ] + %271 = getelementptr inbounds nuw i8, ptr %50, i64 34 + store i8 %.0239, ptr %271, align 2 + %272 = getelementptr inbounds nuw i8, ptr %50, i64 16 + store ptr %255, ptr %272, align 8 + %273 = call i32 @tvb_raw_offset(ptr noundef %.0226) + %274 = add i32 %273, %.pre + %275 = trunc i32 %274 to i16 + %276 = getelementptr inbounds nuw i8, ptr %50, i64 12 + store i16 %275, ptr %276, align 4 + %277 = getelementptr inbounds nuw i8, ptr %50, i64 2 + store i16 %.1230, ptr %277, align 2 + %278 = getelementptr inbounds nuw i8, ptr %50, i64 4 + store i16 %.1228, ptr %278, align 4 + %279 = getelementptr inbounds nuw i8, ptr %50, i64 8 + store i32 %.pre350, ptr %279, align 8 store i8 0, ptr %50, align 8 - %277 = load i8, ptr %268, align 2 - %278 = icmp eq i8 %277, -64 - br i1 %278, label %279, label %282 + %280 = load i8, ptr %271, align 2 + %281 = icmp eq i8 %280, -64 + br i1 %281, label %282, label %282 -279: ; preds = %267 +282: ; preds = %270 %280 = load i8, ptr %53, align 1 %281 = and i8 %280, -8 store i8 %281, ptr %53, align 1 @@ -2140,65 +2140,65 @@ findFrame1Position.exit286: ; preds = %143, %144, %150 %283 = load i8, ptr %53, align 1 br i1 %.1241, label %284, label %291 -284: ; preds = %282 +287: ; preds = %282 store i8 1, ptr %50, align 8 - %285 = call zeroext i8 @tvb_get_uint8(ptr noundef %.0226, i32 noundef %.pre-phi359) - %286 = call zeroext i8 @tvb_get_uint8(ptr noundef %.0226, i32 noundef %.pre-phi361) - br label %291 - -287: ; preds = %236 - %288 = load i32, ptr @proto_opensafety, align 4 - %289 = call ptr @proto_tree_add_item(ptr noundef %7, i32 noundef %288, ptr noundef %.0226, i32 noundef %57, i32 noundef %58, i32 noundef 0) - call void (ptr, ptr, ...) @proto_item_append_text(ptr noundef %289, ptr noundef nonnull @.str.351, i32 noundef %232, i32 noundef %232) - %290 = add i32 %57, 2 - store i32 %290, ptr %10, align 4 + %288 = call zeroext i8 @tvb_get_uint8(ptr noundef %.0226, i32 noundef %.pre-phi359) + %289 = call zeroext i8 @tvb_get_uint8(ptr noundef %.0226, i32 noundef %.pre-phi361) + br label %294 + +290: ; preds = %236 + %291 = load i32, ptr @proto_opensafety, align 4 + %292 = call ptr @proto_tree_add_item(ptr noundef %7, i32 noundef %291, ptr noundef %.0226, i32 noundef %57, i32 noundef %58, i32 noundef 0) + call void (ptr, ptr, ...) @proto_item_append_text(ptr noundef %292, ptr noundef nonnull @.str.351, i32 noundef %232, i32 noundef %232) + %293 = add i32 %57, 2 + store i32 %293, ptr %10, align 4 br label %.backedge -291: ; preds = %282, %284 - %292 = load i32, ptr @opensafety_tap, align 4 - call void @tap_queue_packet(i32 noundef %292, ptr noundef %6, ptr noundef %50) - %293 = load i32, ptr %11, align 4 - %294 = load i32, ptr %10, align 4 - %295 = add i32 %294, %293 - store i32 %295, ptr %10, align 4 - %296 = call i32 @tvb_captured_length_remaining(ptr noundef %.0226, i32 noundef %295) - %297 = icmp sgt i32 %296, 0 - br i1 %297, label %298, label %.backedge - -298: ; preds = %291 - %299 = add i32 %295, 1 - store i32 %299, ptr %10, align 4 +294: ; preds = %282, %287 + %295 = load i32, ptr @opensafety_tap, align 4 + call void @tap_queue_packet(i32 noundef %295, ptr noundef %6, ptr noundef %50) + %296 = load i32, ptr %11, align 4 + %297 = load i32, ptr %10, align 4 + %298 = add i32 %297, %296 + store i32 %298, ptr %10, align 4 + %299 = call i32 @tvb_captured_length_remaining(ptr noundef %.0226, i32 noundef %298) + %300 = icmp sgt i32 %299, 0 + br i1 %300, label %301, label %.backedge + +301: ; preds = %294 + %302 = add i32 %298, 1 + store i32 %302, ptr %10, align 4 br label %.backedge ._crit_edge333: ; preds = %.backedge, %44, %56, %52, %48 %.0250.lcssa.ph = phi i8 [ %.0250.be, %.backedge ], [ %.0250324, %44 ], [ %.0250324, %56 ], [ %.0250324, %52 ], [ %.0250324, %48 ] %.0233.lcssa.ph = phi i32 [ %.0233.be, %.backedge ], [ %.0233329, %44 ], [ %.0233329, %56 ], [ %.0233329, %52 ], [ %.0233329, %48 ] - %300 = trunc nuw i8 %.0250.lcssa.ph to i1 - br i1 %300, label %301, label %311 - -301: ; preds = %._crit_edge333 - %302 = load i32, ptr %10, align 4 - %303 = icmp ult i32 %302, %13 - %304 = load i8, ptr @global_display_intergap_data, align 1, !range !6 - %305 = trunc nuw i8 %304 to i1 - %or.cond282 = select i1 %303, i1 %305, i1 false - %.not273 = icmp ne i32 %.0233.lcssa.ph, %302 + %303 = trunc nuw i8 %.0250.lcssa.ph to i1 + br i1 %303, label %304, label %314 + +304: ; preds = %._crit_edge333 + %305 = load i32, ptr %10, align 4 + %306 = icmp ult i32 %305, %13 + %307 = load i8, ptr @global_display_intergap_data, align 1, !range !6 + %308 = trunc nuw i8 %307 to i1 + %or.cond282 = select i1 %306, i1 %308, i1 false + %.not273 = icmp ne i32 %.0233.lcssa.ph, %305 %or.cond283.not = and i1 %.not273, %or.cond282 - br i1 %or.cond283.not, label %306, label %311 + br i1 %or.cond283.not, label %309, label %314 -306: ; preds = %301 - %307 = sub i32 %13, %.0233.lcssa.ph - %308 = call ptr @tvb_new_subset_length_caplen(ptr noundef %.0226, i32 noundef %.0233.lcssa.ph, i32 noundef %307, i32 noundef %21) - %309 = load ptr, ptr @data_dissector, align 8 - %310 = call i32 @call_dissector(ptr noundef %309, ptr noundef %308, ptr noundef %6, ptr noundef %7) - br label %311 +309: ; preds = %304 + %310 = sub i32 %13, %.0233.lcssa.ph + %311 = call ptr @tvb_new_subset_length_caplen(ptr noundef %.0226, i32 noundef %.0233.lcssa.ph, i32 noundef %310, i32 noundef %21) + %312 = load ptr, ptr @data_dissector, align 8 + %313 = call i32 @call_dissector(ptr noundef %312, ptr noundef %311, ptr noundef %6, ptr noundef %7) + br label %314 -311: ; preds = %301, %306, %._crit_edge333 - %312 = zext nneg i8 %.0250.lcssa.ph to i32 +314: ; preds = %304, %309, %._crit_edge333 + %315 = zext nneg i8 %.0250.lcssa.ph to i32 br label %.loopexit -.loopexit: ; preds = %198, %.thread362, %24, %9, %311 - %.0 = phi i32 [ %312, %311 ], [ 0, %9 ], [ 0, %24 ], [ 0, %.thread362 ], [ 0, %198 ] +.loopexit: ; preds = %198, %.thread362, %24, %9, %314 + %.0 = phi i32 [ %315, %311 ], [ 0, %9 ], [ 0, %24 ], [ 0, %.thread362 ], [ 0, %198 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #12 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #12 ret i32 %.0 diff --git a/bench/wireshark/optimized/tvbuff.ll b/bench/wireshark/optimized/tvbuff.ll index 9764cf21b09..2b257c79a3d 100644 --- a/bench/wireshark/optimized/tvbuff.ll +++ b/bench/wireshark/optimized/tvbuff.ll @@ -5741,7 +5741,7 @@ define i32 @tvb_unicode_strsize(ptr noundef %0, i32 noundef %1) local_unnamed_ad %13 = icmp eq i8 %12, 0 br i1 %13, label %14, label %.preheader, !llvm.loop !25 -14: ; preds = %.preheader +14:; preds = %.preheader ret i32 %11 } @@ -6940,7 +6940,7 @@ define ptr @tvb_get_stringz_enc(ptr noundef %0, ptr noundef %1, i32 noundef %2, tvb_get_ascii_stringz.exit: ; preds = %13, %16 %17 = tail call ptr @get_ascii_string(ptr noundef %0, ptr noundef %15, i32 noundef %14) - br label %214 + br label %224 18: ; preds = %11 %19 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) @@ -6954,7 +6954,7 @@ tvb_get_ascii_stringz.exit: ; preds = %13, %16 tvb_get_utf_8_stringz.exit: ; preds = %18, %21 %22 = tail call ptr @get_utf_8_string(ptr noundef %0, ptr noundef %20, i32 noundef %19) - br label %214 + br label %224 .preheader.i.i: ; preds = %11, %.preheader.i.i %.0.i.i = phi i32 [ %26, %.preheader.i.i ], [ 0, %11 ] @@ -6969,49 +6969,49 @@ tvb_get_utf_8_stringz.exit: ; preds = %18, %21 br i1 %28, label %tvb_unicode_strsize.exit.i, label %.preheader.i.i, !llvm.loop !25 tvb_unicode_strsize.exit.i: ; preds = %.preheader.i.i - %29 = and i32 %4, -1610612736 - %30 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %26) + %31 = and i32 %4, -1610612736 + %32 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %26) %.not.i148 = icmp eq ptr %3, null - br i1 %.not.i148, label %tvb_get_utf_16_stringz.exit, label %31 + br i1 %.not.i148, label %tvb_get_utf_16_stringz.exit, label %33 -31: ; preds = %tvb_unicode_strsize.exit.i +33: ; preds = %tvb_unicode_strsize.exit.i store i32 %26, ptr %3, align 4 br label %tvb_get_utf_16_stringz.exit -tvb_get_utf_16_stringz.exit: ; preds = %tvb_unicode_strsize.exit.i, %31 - %32 = tail call ptr @get_utf_16_string(ptr noundef %0, ptr noundef %30, i32 noundef %26, i32 noundef range(i32 0, -1610612735) %29) - br label %214 +tvb_get_utf_16_stringz.exit: ; preds = %tvb_unicode_strsize.exit.i, %33 + %34 = tail call ptr @get_utf_16_string(ptr noundef %0, ptr noundef %32, i32 noundef %26, i32 noundef range(i32 0, -1610612735) %31) + br label %224 .preheader.i.i149: ; preds = %11, %.preheader.i.i149 %.0.i.i150 = phi i32 [ %36, %.preheader.i.i149 ], [ 0, %11 ] - %33 = add i32 %.0.i.i150, %2 - %34 = tail call fastcc ptr @fast_ensure_contiguous(ptr noundef nonnull %1, i32 noundef %33, i32 noundef 2) - %.val.i.i.i151 = load i8, ptr %34, align 1 - %35 = getelementptr i8, ptr %34, i64 1 - %.val2.i.i.i152 = load i8, ptr %35, align 1 + %35 = add i32 %.0.i.i150, %2 + %36 = tail call fastcc ptr @fast_ensure_contiguous(ptr noundef nonnull %1, i32 noundef %35, i32 noundef 2) + %.val.i.i.i151 = load i8, ptr %36, align 1 + %37 = getelementptr i8, ptr %36, i64 1 + %.val2.i.i.i152 = load i8, ptr %37, align 1 %36 = add i32 %.0.i.i150, 2 %37 = or i8 %.val2.i.i.i152, %.val.i.i.i151 %38 = icmp eq i8 %37, 0 br i1 %38, label %tvb_unicode_strsize.exit.i153, label %.preheader.i.i149, !llvm.loop !25 -tvb_unicode_strsize.exit.i153: ; preds = %.preheader.i.i149 +tvb_unicode_strsize.exit.i153:; preds = %.preheader.i.i149 %39 = and i32 %4, -1610612736 %40 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %36) %.not.i154 = icmp eq ptr %3, null br i1 %.not.i154, label %tvb_get_ucs_2_stringz.exit, label %41 -41: ; preds = %tvb_unicode_strsize.exit.i153 +41:; preds = %tvb_unicode_strsize.exit.i153 store i32 %36, ptr %3, align 4 br label %tvb_get_ucs_2_stringz.exit tvb_get_ucs_2_stringz.exit: ; preds = %tvb_unicode_strsize.exit.i153, %41 - %42 = tail call ptr @get_ucs_2_string(ptr noundef %0, ptr noundef %40, i32 noundef %36, i32 noundef range(i32 0, -1610612735) %39) - br label %214 + %46 = tail call ptr @get_ucs_2_string(ptr noundef %0, ptr noundef %40, i32 noundef %36, i32 noundef range(i32 0, -1610612735) %39) + br label %224 .preheader: ; preds = %11, %.preheader %.0.i = phi i32 [ %52, %.preheader ], [ 0, %11 ] - %43 = add i32 %.0.i, %2 - %44 = tail call fastcc ptr @fast_ensure_contiguous(ptr noundef nonnull %1, i32 noundef %43, i32 noundef 4) + %47 = add i32 %.0.i, %2 + %48 = tail call fastcc ptr @fast_ensure_contiguous(ptr noundef nonnull %1, i32 noundef %47, i32 noundef 4) %45 = load i8, ptr %44, align 1 %46 = getelementptr i8, ptr %44, i64 1 %47 = load i8, ptr %46, align 1 @@ -7026,19 +7026,19 @@ tvb_get_ucs_2_stringz.exit: ; preds = %tvb_unicode_strsize %56 = icmp eq i8 %55, 0 br i1 %56, label %57, label %.preheader, !llvm.loop !30 -57: ; preds = %.preheader +57:; preds = %.preheader %58 = and i32 %4, -1610612736 %59 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %52) %.not15.i = icmp eq ptr %3, null - br i1 %.not15.i, label %tvb_get_ucs_4_stringz.exit, label %60 + br i1 %.not15.i, label %tvb_get_ucs_4_stringz.exit, label %70 -60: ; preds = %57 +70: ; preds = %57 store i32 %52, ptr %3, align 4 br label %tvb_get_ucs_4_stringz.exit -tvb_get_ucs_4_stringz.exit: ; preds = %57, %60 - %61 = tail call ptr @get_ucs_4_string(ptr noundef %0, ptr noundef %59, i32 noundef %52, i32 noundef range(i32 0, -1610612735) %58) - br label %214 +tvb_get_ucs_4_stringz.exit: ; preds = %57, %70 + %71 = tail call ptr @get_ucs_4_string(ptr noundef %0, ptr noundef %59, i32 noundef %52, i32 noundef range(i32 0, -1610612735) %58) + br label %224 62: ; preds = %11 %63 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) @@ -7072,306 +7072,306 @@ tvb_get_stringz_unichar2.exit: ; preds = %67, %70 %73 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %74 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %73) %.not.i157 = icmp eq ptr %3, null - br i1 %.not.i157, label %tvb_get_stringz_unichar2.exit158, label %75 + br i1 %.not.i157, label %tvb_get_stringz_8859_1.exit, label %75 75: ; preds = %72 store i32 %73, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit158 + br label %tvb_get_stringz_8859_1.exit -tvb_get_stringz_unichar2.exit158: ; preds = %72, %75 +tvb_get_stringz_8859_1.exit: ; preds = %72, %75 %76 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %74, i32 noundef %73, ptr noundef nonnull @charset_table_iso_8859_3) - br label %214 + br label %224 77: ; preds = %11 %78 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %79 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %78) - %.not.i159 = icmp eq ptr %3, null - br i1 %.not.i159, label %tvb_get_stringz_unichar2.exit160, label %80 + %.not.i158 = icmp eq ptr %3, null + br i1 %.not.i158, label %tvb_get_stringz_unichar2.exit, label %80 80: ; preds = %77 store i32 %78, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit160 + br label %tvb_get_stringz_unichar2.exit -tvb_get_stringz_unichar2.exit160: ; preds = %77, %80 +tvb_get_stringz_unichar2.exit: ; preds = %77, %80 %81 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %79, i32 noundef %78, ptr noundef nonnull @charset_table_iso_8859_4) - br label %214 + br label %224 82: ; preds = %11 %83 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %84 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %83) - %.not.i161 = icmp eq ptr %3, null - br i1 %.not.i161, label %tvb_get_stringz_unichar2.exit162, label %85 + %.not.i159 = icmp eq ptr %3, null + br i1 %.not.i159, label %tvb_get_stringz_unichar2.exit160, label %85 85: ; preds = %82 store i32 %83, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit162 + br label %tvb_get_stringz_unichar2.exit160 -tvb_get_stringz_unichar2.exit162: ; preds = %82, %85 +tvb_get_stringz_unichar2.exit160: ; preds = %82, %85 %86 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %84, i32 noundef %83, ptr noundef nonnull @charset_table_iso_8859_5) - br label %214 + br label %224 87: ; preds = %11 %88 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %89 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %88) - %.not.i163 = icmp eq ptr %3, null - br i1 %.not.i163, label %tvb_get_stringz_unichar2.exit164, label %90 + %.not.i161 = icmp eq ptr %3, null + br i1 %.not.i161, label %tvb_get_stringz_unichar2.exit162, label %90 90: ; preds = %87 store i32 %88, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit164 + br label %tvb_get_stringz_unichar2.exit162 -tvb_get_stringz_unichar2.exit164: ; preds = %87, %90 +tvb_get_stringz_unichar2.exit162: ; preds = %87, %90 %91 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %89, i32 noundef %88, ptr noundef nonnull @charset_table_iso_8859_6) - br label %214 + br label %224 92: ; preds = %11 %93 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %94 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %93) - %.not.i165 = icmp eq ptr %3, null - br i1 %.not.i165, label %tvb_get_stringz_unichar2.exit166, label %95 + %.not.i163 = icmp eq ptr %3, null + br i1 %.not.i163, label %tvb_get_stringz_unichar2.exit164, label %95 95: ; preds = %92 store i32 %93, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit166 + br label %tvb_get_stringz_unichar2.exit164 -tvb_get_stringz_unichar2.exit166: ; preds = %92, %95 +tvb_get_stringz_unichar2.exit164: ; preds = %92, %95 %96 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %94, i32 noundef %93, ptr noundef nonnull @charset_table_iso_8859_7) - br label %214 + br label %224 97: ; preds = %11 %98 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %99 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %98) - %.not.i167 = icmp eq ptr %3, null - br i1 %.not.i167, label %tvb_get_stringz_unichar2.exit168, label %100 + %.not.i165 = icmp eq ptr %3, null + br i1 %.not.i165, label %tvb_get_stringz_unichar2.exit166, label %100 100: ; preds = %97 store i32 %98, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit168 + br label %tvb_get_stringz_unichar2.exit166 -tvb_get_stringz_unichar2.exit168: ; preds = %97, %100 +tvb_get_stringz_unichar2.exit166: ; preds = %97, %100 %101 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %99, i32 noundef %98, ptr noundef nonnull @charset_table_iso_8859_8) - br label %214 + br label %224 102: ; preds = %11 %103 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %104 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %103) - %.not.i169 = icmp eq ptr %3, null - br i1 %.not.i169, label %tvb_get_stringz_unichar2.exit170, label %105 + %.not.i167 = icmp eq ptr %3, null + br i1 %.not.i167, label %tvb_get_stringz_unichar2.exit168, label %105 105: ; preds = %102 store i32 %103, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit170 + br label %tvb_get_stringz_unichar2.exit168 -tvb_get_stringz_unichar2.exit170: ; preds = %102, %105 +tvb_get_stringz_unichar2.exit168: ; preds = %102, %105 %106 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %104, i32 noundef %103, ptr noundef nonnull @charset_table_iso_8859_9) - br label %214 + br label %224 107: ; preds = %11 %108 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %109 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %108) - %.not.i171 = icmp eq ptr %3, null - br i1 %.not.i171, label %tvb_get_stringz_unichar2.exit172, label %110 + %.not.i169 = icmp eq ptr %3, null + br i1 %.not.i169, label %tvb_get_stringz_unichar2.exit170, label %110 110: ; preds = %107 store i32 %108, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit172 + br label %tvb_get_stringz_unichar2.exit170 -tvb_get_stringz_unichar2.exit172: ; preds = %107, %110 +tvb_get_stringz_unichar2.exit170: ; preds = %107, %110 %111 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %109, i32 noundef %108, ptr noundef nonnull @charset_table_iso_8859_10) - br label %214 + br label %224 112: ; preds = %11 %113 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %114 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %113) - %.not.i173 = icmp eq ptr %3, null - br i1 %.not.i173, label %tvb_get_stringz_unichar2.exit174, label %115 + %.not.i171 = icmp eq ptr %3, null + br i1 %.not.i171, label %tvb_get_stringz_unichar2.exit172, label %115 115: ; preds = %112 store i32 %113, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit174 + br label %tvb_get_stringz_unichar2.exit172 -tvb_get_stringz_unichar2.exit174: ; preds = %112, %115 +tvb_get_stringz_unichar2.exit172: ; preds = %112, %115 %116 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %114, i32 noundef %113, ptr noundef nonnull @charset_table_iso_8859_11) - br label %214 + br label %224 117: ; preds = %11 %118 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %119 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %118) - %.not.i175 = icmp eq ptr %3, null - br i1 %.not.i175, label %tvb_get_stringz_unichar2.exit176, label %120 + %.not.i173 = icmp eq ptr %3, null + br i1 %.not.i173, label %tvb_get_stringz_unichar2.exit174, label %120 120: ; preds = %117 store i32 %118, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit176 + br label %tvb_get_stringz_unichar2.exit174 -tvb_get_stringz_unichar2.exit176: ; preds = %117, %120 +tvb_get_stringz_unichar2.exit174: ; preds = %117, %120 %121 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %119, i32 noundef %118, ptr noundef nonnull @charset_table_iso_8859_13) - br label %214 + br label %224 122: ; preds = %11 %123 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %124 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %123) - %.not.i177 = icmp eq ptr %3, null - br i1 %.not.i177, label %tvb_get_stringz_unichar2.exit178, label %125 + %.not.i175 = icmp eq ptr %3, null + br i1 %.not.i175, label %tvb_get_stringz_unichar2.exit176, label %125 125: ; preds = %122 store i32 %123, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit178 + br label %tvb_get_stringz_unichar2.exit176 -tvb_get_stringz_unichar2.exit178: ; preds = %122, %125 +tvb_get_stringz_unichar2.exit176: ; preds = %122, %125 %126 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %124, i32 noundef %123, ptr noundef nonnull @charset_table_iso_8859_14) - br label %214 + br label %224 127: ; preds = %11 %128 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %129 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %128) - %.not.i179 = icmp eq ptr %3, null - br i1 %.not.i179, label %tvb_get_stringz_unichar2.exit180, label %130 + %.not.i177 = icmp eq ptr %3, null + br i1 %.not.i177, label %tvb_get_stringz_unichar2.exit178, label %130 130: ; preds = %127 store i32 %128, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit180 + br label %tvb_get_stringz_unichar2.exit178 -tvb_get_stringz_unichar2.exit180: ; preds = %127, %130 +tvb_get_stringz_unichar2.exit178: ; preds = %127, %130 %131 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %129, i32 noundef %128, ptr noundef nonnull @charset_table_iso_8859_15) - br label %214 + br label %224 132: ; preds = %11 %133 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %134 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %133) - %.not.i181 = icmp eq ptr %3, null - br i1 %.not.i181, label %tvb_get_stringz_unichar2.exit182, label %135 + %.not.i179 = icmp eq ptr %3, null + br i1 %.not.i179, label %tvb_get_stringz_unichar2.exit180, label %135 135: ; preds = %132 store i32 %133, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit182 + br label %tvb_get_stringz_unichar2.exit180 -tvb_get_stringz_unichar2.exit182: ; preds = %132, %135 +tvb_get_stringz_unichar2.exit180: ; preds = %132, %135 %136 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %134, i32 noundef %133, ptr noundef nonnull @charset_table_iso_8859_16) - br label %214 + br label %224 137: ; preds = %11 %138 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %139 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %138) - %.not.i183 = icmp eq ptr %3, null - br i1 %.not.i183, label %tvb_get_stringz_unichar2.exit184, label %140 + %.not.i181 = icmp eq ptr %3, null + br i1 %.not.i181, label %tvb_get_stringz_unichar2.exit182, label %140 140: ; preds = %137 store i32 %138, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit184 + br label %tvb_get_stringz_unichar2.exit182 -tvb_get_stringz_unichar2.exit184: ; preds = %137, %140 +tvb_get_stringz_unichar2.exit182: ; preds = %137, %140 %141 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %139, i32 noundef %138, ptr noundef nonnull @charset_table_cp1250) - br label %214 + br label %224 142: ; preds = %11 %143 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %144 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %143) - %.not.i185 = icmp eq ptr %3, null - br i1 %.not.i185, label %tvb_get_stringz_unichar2.exit186, label %145 + %.not.i183 = icmp eq ptr %3, null + br i1 %.not.i183, label %tvb_get_stringz_unichar2.exit184, label %145 145: ; preds = %142 store i32 %143, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit186 + br label %tvb_get_stringz_unichar2.exit184 -tvb_get_stringz_unichar2.exit186: ; preds = %142, %145 +tvb_get_stringz_unichar2.exit184: ; preds = %142, %145 %146 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %144, i32 noundef %143, ptr noundef nonnull @charset_table_cp1251) - br label %214 + br label %224 147: ; preds = %11 %148 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %149 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %148) - %.not.i187 = icmp eq ptr %3, null - br i1 %.not.i187, label %tvb_get_stringz_unichar2.exit188, label %150 + %.not.i185 = icmp eq ptr %3, null + br i1 %.not.i185, label %tvb_get_stringz_unichar2.exit186, label %150 150: ; preds = %147 store i32 %148, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit188 + br label %tvb_get_stringz_unichar2.exit186 -tvb_get_stringz_unichar2.exit188: ; preds = %147, %150 +tvb_get_stringz_unichar2.exit186: ; preds = %147, %150 %151 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %149, i32 noundef %148, ptr noundef nonnull @charset_table_cp1252) - br label %214 + br label %224 152: ; preds = %11 %153 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %154 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %153) - %.not.i189 = icmp eq ptr %3, null - br i1 %.not.i189, label %tvb_get_stringz_unichar2.exit190, label %155 + %.not.i187 = icmp eq ptr %3, null + br i1 %.not.i187, label %tvb_get_stringz_unichar2.exit188, label %155 155: ; preds = %152 store i32 %153, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit190 + br label %tvb_get_stringz_unichar2.exit188 -tvb_get_stringz_unichar2.exit190: ; preds = %152, %155 +tvb_get_stringz_unichar2.exit188: ; preds = %152, %155 %156 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %154, i32 noundef %153, ptr noundef nonnull @charset_table_mac_roman) - br label %214 + br label %224 157: ; preds = %11 %158 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %159 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %158) - %.not.i191 = icmp eq ptr %3, null - br i1 %.not.i191, label %tvb_get_stringz_unichar2.exit192, label %160 + %.not.i189 = icmp eq ptr %3, null + br i1 %.not.i189, label %tvb_get_stringz_unichar2.exit190, label %160 160: ; preds = %157 store i32 %158, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit192 + br label %tvb_get_stringz_unichar2.exit190 -tvb_get_stringz_unichar2.exit192: ; preds = %157, %160 +tvb_get_stringz_unichar2.exit190: ; preds = %157, %160 %161 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %159, i32 noundef %158, ptr noundef nonnull @charset_table_cp437) - br label %214 + br label %224 162: ; preds = %11 %163 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %164 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %163) - %.not.i193 = icmp eq ptr %3, null - br i1 %.not.i193, label %tvb_get_stringz_unichar2.exit194, label %165 + %.not.i191 = icmp eq ptr %3, null + br i1 %.not.i191, label %tvb_get_stringz_unichar2.exit192, label %165 165: ; preds = %162 store i32 %163, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit194 + br label %tvb_get_stringz_unichar2.exit192 -tvb_get_stringz_unichar2.exit194: ; preds = %162, %165 +tvb_get_stringz_unichar2.exit192: ; preds = %162, %165 %166 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %164, i32 noundef %163, ptr noundef nonnull @charset_table_cp855) - br label %214 + br label %224 167: ; preds = %11 %168 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %169 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %168) - %.not.i195 = icmp eq ptr %3, null - br i1 %.not.i195, label %tvb_get_stringz_unichar2.exit196, label %170 + %.not.i193 = icmp eq ptr %3, null + br i1 %.not.i193, label %tvb_get_stringz_unichar2.exit194, label %170 170: ; preds = %167 store i32 %168, ptr %3, align 4 - br label %tvb_get_stringz_unichar2.exit196 + br label %tvb_get_stringz_unichar2.exit194 -tvb_get_stringz_unichar2.exit196: ; preds = %167, %170 +tvb_get_stringz_unichar2.exit194: ; preds = %167, %170 %171 = tail call ptr @get_unichar2_string(ptr noundef %0, ptr noundef %169, i32 noundef %168, ptr noundef nonnull @charset_table_cp866) - br label %214 + br label %224 172: ; preds = %11 %173 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %174 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %173) - %.not.i197 = icmp eq ptr %3, null - br i1 %.not.i197, label %tvb_get_iso_646_stringz.exit, label %175 + %.not.i195 = icmp eq ptr %3, null + br i1 %.not.i195, label %tvb_get_stringz_unichar2.exit196, label %175 175: ; preds = %172 store i32 %173, ptr %3, align 4 - br label %tvb_get_iso_646_stringz.exit + br label %tvb_get_stringz_unichar2.exit196 -tvb_get_iso_646_stringz.exit: ; preds = %172, %175 +tvb_get_stringz_unichar2.exit196: ; preds = %172, %175 %176 = tail call ptr @get_iso_646_string(ptr noundef %0, ptr noundef %174, i32 noundef %173, ptr noundef nonnull @charset_table_iso_646_basic) - br label %214 + br label %224 177: ; preds = %11, %11, %11 tail call void (ptr, ...) @proto_report_dissector_bug(ptr noundef nonnull @.str.19) #18 unreachable -178: ; preds = %11 +180: ; preds = %11 tail call void (ptr, ...) @proto_report_dissector_bug(ptr noundef nonnull @.str.20) #18 unreachable -179: ; preds = %11 - %180 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) +tvb_get_stringz_unichar2.exit198: ; preds = %11 + %181 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %181 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %180) %.not.i198 = icmp eq ptr %3, null br i1 %.not.i198, label %tvb_get_nonascii_unichar2_stringz.exit, label %182 @@ -7380,79 +7380,79 @@ tvb_get_iso_646_stringz.exit: ; preds = %172, %175 store i32 %180, ptr %3, align 4 br label %tvb_get_nonascii_unichar2_stringz.exit -tvb_get_nonascii_unichar2_stringz.exit: ; preds = %179, %182 +185: ; preds = %179, %182 %183 = tail call ptr @get_nonascii_unichar2_string(ptr noundef %0, ptr noundef %181, i32 noundef %180, ptr noundef nonnull @charset_table_ebcdic) br label %214 -184: ; preds = %11 - %185 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) +tvb_get_iso_646_stringz.exit: ; preds = %11 + %186 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %186 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %185) %.not.i199 = icmp eq ptr %3, null br i1 %.not.i199, label %tvb_get_nonascii_unichar2_stringz.exit200, label %187 187: ; preds = %184 store i32 %185, ptr %3, align 4 - br label %tvb_get_nonascii_unichar2_stringz.exit200 + br label %188 -tvb_get_nonascii_unichar2_stringz.exit200: ; preds = %184, %187 +188: ; preds = %184, %187 %188 = tail call ptr @get_nonascii_unichar2_string(ptr noundef %0, ptr noundef %186, i32 noundef %185, ptr noundef nonnull @charset_table_ebcdic_cp037) br label %214 189: ; preds = %11 %190 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %191 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %190) - %.not.i201 = icmp eq ptr %3, null - br i1 %.not.i201, label %tvb_get_nonascii_unichar2_stringz.exit202, label %192 + %.not.i200 = icmp eq ptr %3, null + br i1 %.not.i200, label %tvb_get_nonascii_unichar2_stringz.exit, label %192 192: ; preds = %189 store i32 %190, ptr %3, align 4 - br label %tvb_get_nonascii_unichar2_stringz.exit202 + br label %tvb_get_nonascii_unichar2_stringz.exit -tvb_get_nonascii_unichar2_stringz.exit202: ; preds = %189, %192 +tvb_get_nonascii_unichar2_stringz.exit: ; preds = %189, %192 %193 = tail call ptr @get_nonascii_unichar2_string(ptr noundef %0, ptr noundef %191, i32 noundef %190, ptr noundef nonnull @charset_table_ebcdic_cp500) - br label %214 + br label %224 194: ; preds = %11 %195 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %196 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %195) - %.not.i203 = icmp eq ptr %3, null - br i1 %.not.i203, label %tvb_get_t61_stringz.exit, label %197 + %.not.i201 = icmp eq ptr %3, null + br i1 %.not.i201, label %tvb_get_nonascii_unichar2_stringz.exit202, label %197 197: ; preds = %194 store i32 %195, ptr %3, align 4 - br label %tvb_get_t61_stringz.exit + br label %tvb_get_nonascii_unichar2_stringz.exit202 -tvb_get_t61_stringz.exit: ; preds = %194, %197 +tvb_get_nonascii_unichar2_stringz.exit202: ; preds = %194, %197 %198 = tail call ptr @get_t61_string(ptr noundef %0, ptr noundef %196, i32 noundef %195) - br label %214 + br label %224 199: ; preds = %11 %200 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %201 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %200) - %.not.i204 = icmp eq ptr %3, null - br i1 %.not.i204, label %tvb_get_gb18030_stringz.exit, label %202 + %.not.i203 = icmp eq ptr %3, null + br i1 %.not.i203, label %tvb_get_nonascii_unichar2_stringz.exit204, label %202 202: ; preds = %199 store i32 %200, ptr %3, align 4 - br label %tvb_get_gb18030_stringz.exit + br label %tvb_get_nonascii_unichar2_stringz.exit204 -tvb_get_gb18030_stringz.exit: ; preds = %199, %202 +tvb_get_nonascii_unichar2_stringz.exit204: ; preds = %199, %202 %203 = tail call ptr @get_gb18030_string(ptr noundef %0, ptr noundef %201, i32 noundef %200) - br label %214 + br label %224 204: ; preds = %11 %205 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) %206 = tail call fastcc ptr @ensure_contiguous(ptr noundef nonnull %1, i32 noundef %2, i32 noundef %205) %.not.i205 = icmp eq ptr %3, null - br i1 %.not.i205, label %tvb_get_euc_kr_stringz.exit, label %207 + br i1 %.not.i205, label %tvb_get_t61_stringz.exit, label %207 207: ; preds = %204 store i32 %205, ptr %3, align 4 - br label %tvb_get_euc_kr_stringz.exit + br label %tvb_get_t61_stringz.exit -tvb_get_euc_kr_stringz.exit: ; preds = %204, %207 +tvb_get_t61_stringz.exit: ; preds = %204, %207 %208 = tail call ptr @get_euc_kr_string(ptr noundef %0, ptr noundef %206, i32 noundef %205) - br label %214 + br label %224 209: ; preds = %11 %210 = tail call i32 @tvb_strsize(ptr noundef nonnull %1, i32 noundef %2) @@ -7465,11 +7465,11 @@ tvb_get_euc_kr_stringz.exit: ; preds = %204, %207 br label %tvb_get_dect_standard_8bits_stringz.exit tvb_get_dect_standard_8bits_stringz.exit: ; preds = %209, %212 - %213 = tail call ptr @get_t61_string(ptr noundef %0, ptr noundef %211, i32 noundef %210) - br label %214 + %223 = tail call ptr @get_t61_string(ptr noundef %0, ptr noundef %211, i32 noundef %210) + br label %224 -214: ; preds = %tvb_get_dect_standard_8bits_stringz.exit, %tvb_get_euc_kr_stringz.exit, %tvb_get_gb18030_stringz.exit, %tvb_get_t61_stringz.exit, %tvb_get_nonascii_unichar2_stringz.exit202, %tvb_get_nonascii_unichar2_stringz.exit200, %tvb_get_nonascii_unichar2_stringz.exit, %tvb_get_iso_646_stringz.exit, %tvb_get_stringz_unichar2.exit196, %tvb_get_stringz_unichar2.exit194, %tvb_get_stringz_unichar2.exit192, %tvb_get_stringz_unichar2.exit190, %tvb_get_stringz_unichar2.exit188, %tvb_get_stringz_unichar2.exit186, %tvb_get_stringz_unichar2.exit184, %tvb_get_stringz_unichar2.exit182, %tvb_get_stringz_unichar2.exit180, %tvb_get_stringz_unichar2.exit178, %tvb_get_stringz_unichar2.exit176, %tvb_get_stringz_unichar2.exit174, %tvb_get_stringz_unichar2.exit172, %tvb_get_stringz_unichar2.exit170, %tvb_get_stringz_unichar2.exit168, %tvb_get_stringz_unichar2.exit166, %tvb_get_stringz_unichar2.exit164, %tvb_get_stringz_unichar2.exit162, %tvb_get_stringz_unichar2.exit160, %tvb_get_stringz_unichar2.exit158, %tvb_get_stringz_unichar2.exit, %tvb_get_stringz_8859_1.exit, %tvb_get_ucs_4_stringz.exit, %tvb_get_ucs_2_stringz.exit, %tvb_get_utf_16_stringz.exit, %tvb_get_utf_8_stringz.exit, %tvb_get_ascii_stringz.exit - %.0 = phi ptr [ %17, %tvb_get_ascii_stringz.exit ], [ %208, %tvb_get_euc_kr_stringz.exit ], [ %203, %tvb_get_gb18030_stringz.exit ], [ %198, %tvb_get_t61_stringz.exit ], [ %193, %tvb_get_nonascii_unichar2_stringz.exit202 ], [ %188, %tvb_get_nonascii_unichar2_stringz.exit200 ], [ %183, %tvb_get_nonascii_unichar2_stringz.exit ], [ %176, %tvb_get_iso_646_stringz.exit ], [ %171, %tvb_get_stringz_unichar2.exit196 ], [ %166, %tvb_get_stringz_unichar2.exit194 ], [ %161, %tvb_get_stringz_unichar2.exit192 ], [ %156, %tvb_get_stringz_unichar2.exit190 ], [ %151, %tvb_get_stringz_unichar2.exit188 ], [ %146, %tvb_get_stringz_unichar2.exit186 ], [ %141, %tvb_get_stringz_unichar2.exit184 ], [ %136, %tvb_get_stringz_unichar2.exit182 ], [ %131, %tvb_get_stringz_unichar2.exit180 ], [ %126, %tvb_get_stringz_unichar2.exit178 ], [ %121, %tvb_get_stringz_unichar2.exit176 ], [ %116, %tvb_get_stringz_unichar2.exit174 ], [ %111, %tvb_get_stringz_unichar2.exit172 ], [ %106, %tvb_get_stringz_unichar2.exit170 ], [ %101, %tvb_get_stringz_unichar2.exit168 ], [ %96, %tvb_get_stringz_unichar2.exit166 ], [ %91, %tvb_get_stringz_unichar2.exit164 ], [ %86, %tvb_get_stringz_unichar2.exit162 ], [ %81, %tvb_get_stringz_unichar2.exit160 ], [ %76, %tvb_get_stringz_unichar2.exit158 ], [ %71, %tvb_get_stringz_unichar2.exit ], [ %66, %tvb_get_stringz_8859_1.exit ], [ %61, %tvb_get_ucs_4_stringz.exit ], [ %42, %tvb_get_ucs_2_stringz.exit ], [ %32, %tvb_get_utf_16_stringz.exit ], [ %22, %tvb_get_utf_8_stringz.exit ], [ %213, %tvb_get_dect_standard_8bits_stringz.exit ] +224: ; preds = %tvb_get_dect_standard_8bits_stringz.exit, %tvb_get_euc_kr_stringz.exit, %tvb_get_gb18030_stringz.exit, %tvb_get_t61_stringz.exit, %tvb_get_nonascii_unichar2_stringz.exit202, %tvb_get_nonascii_unichar2_stringz.exit200, %tvb_get_nonascii_unichar2_stringz.exit, %tvb_get_iso_646_stringz.exit, %tvb_get_stringz_unichar2.exit196, %tvb_get_stringz_unichar2.exit194, %tvb_get_stringz_unichar2.exit192, %tvb_get_stringz_unichar2.exit190, %tvb_get_stringz_unichar2.exit188, %tvb_get_stringz_unichar2.exit186, %tvb_get_stringz_unichar2.exit184, %tvb_get_stringz_unichar2.exit182, %tvb_get_stringz_unichar2.exit180, %tvb_get_stringz_unichar2.exit178, %tvb_get_stringz_unichar2.exit176, %tvb_get_stringz_unichar2.exit174, %tvb_get_stringz_unichar2.exit172, %tvb_get_stringz_unichar2.exit170, %tvb_get_stringz_unichar2.exit168, %tvb_get_stringz_unichar2.exit166, %tvb_get_stringz_unichar2.exit164, %tvb_get_stringz_unichar2.exit162, %tvb_get_stringz_unichar2.exit160, %tvb_get_stringz_unichar2.exit158, %tvb_get_stringz_unichar2.exit, %tvb_get_stringz_8859_1.exit, %tvb_get_ucs_4_stringz.exit, %tvb_get_ucs_2_stringz.exit, %tvb_get_utf_16_stringz.exit, %tvb_get_utf_8_stringz.exit, %tvb_get_ascii_stringz.exit + %.0 = phi ptr [ %17, %tvb_get_ascii_stringz.exit ], [ %208, %tvb_get_euc_kr_stringz.exit ], [ %203, %tvb_get_gb18030_stringz.exit ], [ %198, %tvb_get_t61_stringz.exit ], [ %193, %tvb_get_nonascii_unichar2_stringz.exit202 ], [ %188, %tvb_get_nonascii_unichar2_stringz.exit200 ], [ %183, %tvb_get_nonascii_unichar2_stringz.exit ], [ %176, %tvb_get_iso_646_stringz.exit ], [ %171, %tvb_get_stringz_unichar2.exit196 ], [ %166, %tvb_get_stringz_unichar2.exit194 ], [ %161, %tvb_get_stringz_unichar2.exit192 ], [ %156, %tvb_get_stringz_unichar2.exit190 ], [ %151, %tvb_get_stringz_unichar2.exit188 ], [ %146, %tvb_get_stringz_unichar2.exit186 ], [ %141, %tvb_get_stringz_unichar2.exit184 ], [ %136, %tvb_get_stringz_unichar2.exit182 ], [ %131, %tvb_get_stringz_unichar2.exit180 ], [ %126, %tvb_get_stringz_unichar2.exit178 ], [ %121, %tvb_get_stringz_unichar2.exit176 ], [ %116, %tvb_get_stringz_unichar2.exit174 ], [ %111, %tvb_get_stringz_unichar2.exit172 ], [ %106, %tvb_get_stringz_unichar2.exit170 ], [ %101, %tvb_get_stringz_unichar2.exit168 ], [ %96, %tvb_get_stringz_unichar2.exit166 ], [ %91, %tvb_get_stringz_unichar2.exit164 ], [ %86, %tvb_get_stringz_unichar2.exit162 ], [ %81, %tvb_get_stringz_unichar2.exit160 ], [ %76, %tvb_get_stringz_unichar2.exit158 ], [ %71, %tvb_get_stringz_unichar2.exit ], [ %66, %tvb_get_stringz_8859_1.exit ], [ %71, %tvb_get_ucs_4_stringz.exit ], [ %46, %tvb_get_ucs_2_stringz.exit ], [ %34, %tvb_get_utf_16_stringz.exit ], [ %22, %tvb_get_utf_8_stringz.exit ], [ %223, %tvb_get_dect_standard_8bits_stringz.exit ] ret ptr %.0 } diff --git a/bench/wolfssl/optimized/tls.ll b/bench/wolfssl/optimized/tls.ll index 807fdbfe43b..bb5797f1093 100644 --- a/bench/wolfssl/optimized/tls.ll +++ b/bench/wolfssl/optimized/tls.ll @@ -2017,7 +2017,7 @@ define range(i32 -396, 2) i32 @TLSX_SNI_GetFromBuffer(ptr noundef readonly captu 7: ; preds = %5 %8 = load i8, ptr %0, align 1, !tbaa !51 %.not = icmp eq i8 %8, 22 - br i1 %.not, label %26, label %9 + br i1 %.not, label %28, label %9 9: ; preds = %7 %10 = getelementptr inbounds nuw i8, ptr %0, i64 2 @@ -2048,17 +2048,17 @@ define range(i32 -396, 2) i32 @TLSX_SNI_GetFromBuffer(ptr noundef readonly captu %. = select i1 %25, i32 -396, i32 -328 br label %.thread165 -26: ; preds = %7 - %27 = getelementptr inbounds nuw i8, ptr %0, i64 1 - %28 = load i8, ptr %27, align 1, !tbaa !51 - %.not110 = icmp eq i8 %28, 3 - br i1 %.not110, label %29, label %.thread165 +28: ; preds = %7 + %29 = getelementptr inbounds nuw i8, ptr %0, i64 1 + %30 = load i8, ptr %29, align 1, !tbaa !51 + %.not110 = icmp eq i8 %30, 3 + br i1 %.not110, label %31, label %.thread165 -29: ; preds = %26 - %30 = getelementptr inbounds nuw i8, ptr %0, i64 2 - %31 = load i8, ptr %30, align 1, !tbaa !51 - %32 = icmp eq i8 %31, 0 - br i1 %32, label %.thread165, label %33 +31: ; preds = %28 + %32 = getelementptr inbounds nuw i8, ptr %0, i64 2 + %33 = load i8, ptr %32, align 1, !tbaa !51 + %34 = icmp eq i8 %33, 0 + br i1 %34, label %.thread165, label %33 33: ; preds = %29 %34 = getelementptr inbounds nuw i8, ptr %0, i64 3 @@ -2079,14 +2079,14 @@ define range(i32 -396, 2) i32 @TLSX_SNI_GetFromBuffer(ptr noundef readonly captu %.not111 = icmp eq i8 %44, 1 br i1 %.not111, label %45, label %.thread165 -45: ; preds = %42 - %46 = getelementptr inbounds nuw i8, ptr %0, i64 6 - %47 = load i8, ptr %46, align 1, !tbaa !51 +35: ; preds = %42 + %36 = getelementptr inbounds nuw i8, ptr %0, i64 6 + %.val121 = load i8, ptr %36, align 1, !tbaa !51 %48 = zext i8 %47 to i32 %49 = shl nuw nsw i32 %48, 16 %50 = getelementptr inbounds nuw i8, ptr %0, i64 7 %51 = load i8, ptr %50, align 1, !tbaa !51 - %52 = zext i8 %51 to i32 + %40 = zext i8 %51 to i32 %53 = shl nuw nsw i32 %52, 8 %54 = or disjoint i32 %53, %49 %55 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -2105,12 +2105,12 @@ define range(i32 -396, 2) i32 @TLSX_SNI_GetFromBuffer(ptr noundef readonly captu %66 = icmp ult i32 %1, %65 br i1 %66, label %.thread165, label %67 -67: ; preds = %61 +67:; preds = %61 %68 = add nuw nsw i32 %64, 46 %69 = icmp ult i32 %1, %68 br i1 %69, label %.thread165, label %70 -70: ; preds = %67 +69: ; preds = %67 %71 = zext i8 %63 to i64 %72 = getelementptr inbounds nuw i8, ptr %0, i64 %71 %73 = getelementptr inbounds nuw i8, ptr %72, i64 44 @@ -2156,39 +2156,39 @@ define range(i32 -396, 2) i32 @TLSX_SNI_GetFromBuffer(ptr noundef readonly captu %102 = icmp ult i32 %1, %101 br i1 %102, label %.thread165, label %.preheader170 -.preheader170: ; preds = %92 +72: ; preds = %92 %103 = icmp ugt i16 %99, 3 br i1 %103, label %.lr.ph184, label %._crit_edge .lr.ph184: ; preds = %.preheader170, %.loopexit %.097183 = phi i32 [ %.299, %.loopexit ], [ %90, %.preheader170 ] - %.0153182 = phi i16 [ %166, %.loopexit ], [ %99, %.preheader170 ] - %104 = add i32 %.097183, 2 - %105 = zext i32 %104 to i64 - %106 = getelementptr inbounds nuw i8, ptr %0, i64 %105 - %.val129 = load i8, ptr %106, align 1, !tbaa !51 - %107 = getelementptr i8, ptr %106, i64 1 - %.val130 = load i8, ptr %107, align 1, !tbaa !51 - %108 = zext i8 %.val129 to i32 - %109 = shl nuw nsw i32 %108, 8 - %110 = zext i8 %.val130 to i32 - %111 = or disjoint i32 %109, %110 - %112 = add i32 %.097183, 4 - %113 = add i32 %111, %112 - %114 = icmp ult i32 %1, %113 - br i1 %114, label %.thread165, label %115 - -115: ; preds = %.lr.ph184 - %116 = zext i32 %.097183 to i64 - %117 = getelementptr inbounds nuw i8, ptr %0, i64 %116 - %.val127 = load i8, ptr %117, align 1, !tbaa !51 + %.0153182 = phi i16 [ %170, %.loopexit ], [ %99, %.preheader170 ] + %106 = add i32 %.097183, 2 + %107 = zext i32 %106 to i64 + %108 = getelementptr inbounds nuw i8, ptr %0, i64 %107 + %.val129 = load i8, ptr %108, align 1, !tbaa !51 + %109 = getelementptr i8, ptr %108, i64 1 + %.val130 = load i8, ptr %109, align 1, !tbaa !51 + %110 = zext i8 %.val129 to i32 + %111 = shl nuw nsw i32 %110, 8 + %112 = zext i8 %.val130 to i32 + %113 = or disjoint i32 %111, %112 + %114 = add i32 %.097183, 4 + %115 = add i32 %113, %114 + %116 = icmp ult i32 %1, %115 + br i1 %116, label %.thread165, label %117 + +117: ; preds = %.lr.ph184 + %118 = zext i32 %.097183 to i64 + %119 = getelementptr inbounds nuw i8, ptr %0, i64 %118 + %.val127 = load i8, ptr %119, align 1, !tbaa !51 %118 = getelementptr i8, ptr %117, i64 1 %.val128 = load i8, ptr %118, align 1, !tbaa !51 %119 = or i8 %.val128, %.val127 %120 = icmp eq i8 %119, 0 br i1 %120, label %121, label %.loopexit -121: ; preds = %115 +121:; preds = %115 %122 = zext i32 %112 to i64 %123 = getelementptr inbounds nuw i8, ptr %0, i64 %122 %.val131 = load i8, ptr %123, align 1, !tbaa !51 @@ -2199,17 +2199,17 @@ define range(i32 -396, 2) i32 @TLSX_SNI_GetFromBuffer(ptr noundef readonly captu %127 = zext i8 %.val132 to i16 %128 = or disjoint i16 %126, %127 %129 = add i32 %.097183, 6 - %130 = zext i16 %128 to i32 - %131 = add i32 %129, %130 + %131 = zext i16 %128 to i32 + %131 = add i32 %129, %131 %132 = icmp ult i32 %1, %131 br i1 %132, label %.thread165, label %.preheader -.preheader: ; preds = %121 +.preheader:; preds = %121 %133 = icmp ugt i16 %128, 3 br i1 %133, label %.lr.ph, label %.loopexit -.lr.ph: ; preds = %.preheader, %155 - %.4101181 = phi i32 [ %143, %155 ], [ %129, %.preheader ] +.lr.ph:; preds = %.preheader, %155 + %.4101181 = phi i32 [ %143, %155 ], [ %131, %.preheader ] %.0151180 = phi i16 [ %160, %155 ], [ %128, %.preheader ] %134 = add i32 %.4101181, 1 %135 = zext i32 %134 to i64 @@ -2224,16 +2224,16 @@ define range(i32 -396, 2) i32 @TLSX_SNI_GetFromBuffer(ptr noundef readonly captu %142 = add i32 %.4101181, 3 %143 = add i32 %141, %142 %144 = icmp ult i32 %1, %143 - br i1 %144, label %.thread165, label %145 + br i1 %144, label %.thread165, label %135 -145: ; preds = %.lr.ph +145:; preds = %.lr.ph %146 = zext i32 %.4101181 to i64 %147 = getelementptr inbounds nuw i8, ptr %0, i64 %146 %148 = load i8, ptr %147, align 1, !tbaa !51 %.not115 = icmp eq i8 %148, %2 br i1 %.not115, label %149, label %155 -149: ; preds = %145 +149:; preds = %145 %150 = load i32, ptr %4, align 4, !tbaa !3 %151 = tail call range(i32 0, 65540) i32 @llvm.umin.i32(i32 range(i32 0, 65540) %141, i32 %150) store i32 %151, ptr %4, align 4, !tbaa !3 @@ -2243,33 +2243,33 @@ define range(i32 -396, 2) i32 @TLSX_SNI_GetFromBuffer(ptr noundef readonly captu tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %3, ptr nonnull align 1 %153, i64 %154, i1 false) br label %.thread165 -155: ; preds = %145 - %156 = add nuw nsw i32 %141, 3 - %157 = zext i16 %.0151180 to i32 - %158 = tail call range(i32 0, 65540) i32 @llvm.umin.i32(i32 range(i32 0, 65540) %156, i32 %157) - %159 = trunc nuw i32 %158 to i16 - %160 = sub i16 %.0151180, %159 - %161 = icmp ugt i16 %160, 3 - br i1 %161, label %.lr.ph, label %.loopexit - -.loopexit: ; preds = %155, %.preheader, %115 - %.299 = phi i32 [ %113, %115 ], [ %129, %.preheader ], [ %143, %155 ] - %162 = add nuw nsw i32 %111, 4 - %163 = zext i16 %.0153182 to i32 - %164 = tail call range(i32 0, 65540) i32 @llvm.umin.i32(i32 range(i32 0, 65540) %162, i32 %163) - %165 = trunc nuw i32 %164 to i16 - %166 = sub i16 %.0153182, %165 - %167 = icmp ugt i16 %166, 3 - br i1 %167, label %.lr.ph184, label %._crit_edge, !llvm.loop !109 +159: ; preds = %145 + %160 = add nuw nsw i32 %141, 3 + %161 = zext i16 %.0151180 to i32 + %162 = tail call range(i32 0, 65540) i32 @llvm.umin.i32(i32 range(i32 0, 65540) %160, i32 %161) + %163 = trunc nuw i32 %162 to i16 + %164 = sub i16 %.0151180, %163 + %165 = icmp ugt i16 %164, 3 + br i1 %165, label %.lr.ph, label %.loopexit + +.loopexit: ; preds = %159, %.preheader, %117 + %.299 = phi i32 [ %115, %115 ], [ %131, %.preheader ], [ %143, %155 ] + %166 = add nuw nsw i32 %113, 4 + %167 = zext i16 %.0153182 to i32 + %168 = tail call range(i32 0, 65540) i32 @llvm.umin.i32(i32 range(i32 0, 65540) %166, i32 %167) + %169 = trunc nuw i32 %168 to i16 + %170 = sub i16 %.0153182, %169 + %171 = icmp ugt i16 %170, 3 + br i1 %171, label %.lr.ph184, label %._crit_edge, !llvm.loop !109 ._crit_edge: ; preds = %.loopexit, %.preheader170 - %.0153.lcssa = phi i16 [ %99, %.preheader170 ], [ %166, %.loopexit ] + %.0153.lcssa = phi i16 [ %99, %.preheader170 ], [ %170, %.loopexit ] %.not113 = icmp eq i16 %.0153.lcssa, 0 - %168 = select i1 %.not113, i32 0, i32 -328 + %172 = select i1 %.not113, i32 0, i32 -328 br label %.thread165 -.thread165: ; preds = %121, %.lr.ph184, %.lr.ph, %149, %92, %87, %80, %70, %67, %61, %45, %42, %33, %29, %26, %9, %21, %13, %5, %._crit_edge - %.0 = phi i32 [ %168, %._crit_edge ], [ -310, %5 ], [ -328, %13 ], [ %., %21 ], [ -328, %9 ], [ -328, %26 ], [ -396, %29 ], [ -310, %33 ], [ -328, %42 ], [ -328, %45 ], [ -328, %61 ], [ -328, %67 ], [ -328, %70 ], [ -328, %80 ], [ 0, %87 ], [ -328, %92 ], [ 1, %149 ], [ -328, %.lr.ph ], [ -328, %.lr.ph184 ], [ -328, %121 ] +.thread165: ; preds = %121, %.lr.ph184, %.lr.ph, %149, %92, %87, %80, %69, %67, %61, %45, %42, %33, %31, %28, %9, %21, %13, %5, %._crit_edge + %.0 = phi i32 [ %172, %._crit_edge ], [ -310, %5 ], [ -328, %13 ], [ %., %21 ], [ -328, %9 ], [ -328, %26 ], [ -396, %29 ], [ -310, %33 ], [ -328, %42 ], [ -328, %45 ], [ -328, %61 ], [ -328, %67 ], [ -328, %70 ], [ -328, %80 ], [ 0, %87 ], [ -328, %92 ], [ 1, %149 ], [ -328, %.lr.ph ], [ -328, %.lr.ph184 ], [ -328, %121 ] ret i32 %.0 } diff --git a/bench/zed-rs/optimized/38cn6p2m6864jrrxog4mr8xwk.ll b/bench/zed-rs/optimized/38cn6p2m6864jrrxog4mr8xwk.ll index 544828d1882..ef44ffd3809 100644 --- a/bench/zed-rs/optimized/38cn6p2m6864jrrxog4mr8xwk.ll +++ b/bench/zed-rs/optimized/38cn6p2m6864jrrxog4mr8xwk.ll @@ -2392,123 +2392,123 @@ define hidden void @_ZN10image_webp8extended20read_extended_header17ha6dcd9d79c0 store i8 0, ptr %0, align 8 %.sroa.456.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %19, ptr %.sroa.456.0..sroa_idx, align 8 - br label %83 + br label %85 31: ; preds = %22 %32 = getelementptr inbounds nuw i8, ptr %8, i64 1 %33 = load i16, ptr %32, align 1, !noalias !558 %34 = load i8, ptr %8, align 1, !noalias !558, !noundef !4 call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %8), !noalias !558 - %35 = and i8 %23, -63 - %or.cond = icmp eq i8 %35, 0 + %39 = and i8 %23, -63 + %or.cond = icmp eq i8 %39, 0 %36 = zext i8 %34 to i16 %37 = or i16 %33, %36 %38 = icmp eq i16 %37, 0 %or.cond1 = and i1 %or.cond, %38 - br i1 %or.cond1, label %41, label %40 + br i1 %or.cond1, label %41, label %42 39: ; preds = %22 call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %8), !noalias !558 store i8 0, ptr %0, align 8 %.sroa.469.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %27, ptr %.sroa.469.0..sroa_idx, align 8 - br label %83 + br label %85 -40: ; preds = %31 +42: ; preds = %31 store i8 5, ptr %0, align 8 - br label %83 + br label %85 -41: ; preds = %31 +43: ; preds = %31 call void @llvm.experimental.noalias.scope.decl(metadata !568) call void @llvm.lifetime.start.p0(i64 3, ptr nonnull %6), !noalias !571 call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %6, i8 0, i64 3, i1 false), !noalias !571 call void @llvm.experimental.noalias.scope.decl(metadata !573) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5), !noalias !576 %.sroa.0.0.sroa.speculated.i.i.i.i106 = call noundef i64 @llvm.umin.i64(i64 %29, i64 %15) - %42 = sub nuw i64 %15, %.sroa.0.0.sroa.speculated.i.i.i.i106 - %43 = getelementptr inbounds i8, ptr %13, i64 %.sroa.0.0.sroa.speculated.i.i.i.i106 - store ptr %43, ptr %5, align 8, !noalias !576 - %44 = getelementptr inbounds nuw i8, ptr %5, i64 8 - store i64 %42, ptr %44, align 8, !noalias !576 - %45 = call noundef ptr @"_ZN3std2io5impls60_$LT$impl$u20$std..io..Read$u20$for$u20$$RF$$u5b$u8$u5d$$GT$10read_exact17h6d118d125acd1831E.llvm.3233214882447289910"(ptr noalias noundef nonnull align 8 dereferenceable(16) %5, ptr noalias noundef nonnull align 1 %6, i64 noundef 3), !noalias !578 + %44 = sub nuw i64 %15, %.sroa.0.0.sroa.speculated.i.i.i.i106 + %45 = getelementptr inbounds i8, ptr %13, i64 %.sroa.0.0.sroa.speculated.i.i.i.i106 + store ptr %45, ptr %5, align 8, !noalias !576 + %46 = getelementptr inbounds nuw i8, ptr %5, i64 8 + store i64 %44, ptr %46, align 8, !noalias !576 + %47 = call noundef ptr @"_ZN3std2io5impls60_$LT$impl$u20$std..io..Read$u20$for$u20$$RF$$u5b$u8$u5d$$GT$10read_exact17h6d118d125acd1831E.llvm.3233214882447289910"(ptr noalias noundef nonnull align 8 dereferenceable(16) %5, ptr noalias noundef nonnull align 1 %6, i64 noundef 3), !noalias !578 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5), !noalias !576 - %46 = icmp eq ptr %45, null - %47 = add i64 %12, 7 - %storemerge.i.i107 = select i1 %46, i64 %47, i64 %15 + %48 = icmp eq ptr %47, null + %49 = add i64 %12, 7 + %storemerge.i.i107 = select i1 %48, i64 %49, i64 %15 store i64 %storemerge.i.i107, ptr %11, align 8, !alias.scope !579, !noalias !580 - br i1 %46, label %48, label %63 - -48: ; preds = %41 - %49 = getelementptr inbounds nuw i8, ptr %6, i64 1 - %50 = load i16, ptr %49, align 1, !noalias !571 - %51 = zext i16 %50 to i32 - %52 = shl nuw nsw i32 %51, 8 - %53 = load i8, ptr %6, align 1, !noalias !571, !noundef !4 - %54 = zext i8 %53 to i32 - %55 = or disjoint i32 %52, %54 + br i1 %48, label %50, label %65 + +50: ; preds = %43 + %51 = getelementptr inbounds nuw i8, ptr %6, i64 1 + %52 = load i16, ptr %51, align 1, !noalias !571 + %53 = zext i16 %52 to i32 + %54 = shl nuw nsw i32 %53, 8 + %55 = load i8, ptr %6, align 1, !noalias !571, !noundef !4 + %56 = zext i8 %55 to i32 + %57 = or disjoint i32 %54, %56 call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %6), !noalias !571 - %56 = add nuw nsw i32 %55, 1 + %58 = add nuw nsw i32 %57, 1 call void @llvm.experimental.noalias.scope.decl(metadata !581) call void @llvm.lifetime.start.p0(i64 3, ptr nonnull %4), !noalias !584 call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %4, i8 0, i64 3, i1 false), !noalias !584 call void @llvm.experimental.noalias.scope.decl(metadata !586) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3), !noalias !589 - %.sroa.0.0.sroa.speculated.i.i.i.i111 = call noundef i64 @llvm.umin.i64(i64 %47, i64 %15) - %57 = sub nuw i64 %15, %.sroa.0.0.sroa.speculated.i.i.i.i111 - %58 = getelementptr inbounds i8, ptr %13, i64 %.sroa.0.0.sroa.speculated.i.i.i.i111 - store ptr %58, ptr %3, align 8, !noalias !589 - %59 = getelementptr inbounds nuw i8, ptr %3, i64 8 - store i64 %57, ptr %59, align 8, !noalias !589 - %60 = call noundef ptr @"_ZN3std2io5impls60_$LT$impl$u20$std..io..Read$u20$for$u20$$RF$$u5b$u8$u5d$$GT$10read_exact17h6d118d125acd1831E.llvm.3233214882447289910"(ptr noalias noundef nonnull align 8 dereferenceable(16) %3, ptr noalias noundef nonnull align 1 %4, i64 noundef 3), !noalias !591 + %.sroa.0.0.sroa.speculated.i.i.i.i111 = call noundef i64 @llvm.umin.i64(i64 %49, i64 %15) + %59 = sub nuw i64 %15, %.sroa.0.0.sroa.speculated.i.i.i.i111 + %60 = getelementptr inbounds i8, ptr %13, i64 %.sroa.0.0.sroa.speculated.i.i.i.i111 + store ptr %60, ptr %3, align 8, !noalias !589 + %61 = getelementptr inbounds nuw i8, ptr %3, i64 8 + store i64 %59, ptr %61, align 8, !noalias !589 + %62 = call noundef ptr @"_ZN3std2io5impls60_$LT$impl$u20$std..io..Read$u20$for$u20$$RF$$u5b$u8$u5d$$GT$10read_exact17h6d118d125acd1831E.llvm.3233214882447289910"(ptr noalias noundef nonnull align 8 dereferenceable(16) %3, ptr noalias noundef nonnull align 1 %4, i64 noundef 3), !noalias !591 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3), !noalias !589 - %61 = icmp eq ptr %60, null - %62 = add i64 %12, 10 - %storemerge.i.i112 = select i1 %61, i64 %62, i64 %15 + %63 = icmp eq ptr %62, null + %64 = add i64 %12, 10 + %storemerge.i.i112 = select i1 %63, i64 %64, i64 %15 store i64 %storemerge.i.i112, ptr %11, align 8, !alias.scope !592, !noalias !593 - br i1 %61, label %64, label %75 + br i1 %63, label %66, label %77 -63: ; preds = %41 +65: ; preds = %43 call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %6), !noalias !571 store i8 0, ptr %0, align 8 %.sroa.481.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %45, ptr %.sroa.481.0..sroa_idx, align 8 - br label %83 + store ptr %47, ptr %.sroa.481.0..sroa_idx, align 8 + br label %85 -64: ; preds = %48 - %65 = getelementptr inbounds nuw i8, ptr %4, i64 1 - %66 = load i16, ptr %65, align 1, !noalias !584 - %67 = zext i16 %66 to i32 - %68 = shl nuw nsw i32 %67, 8 - %69 = load i8, ptr %4, align 1, !noalias !584, !noundef !4 - %70 = zext i8 %69 to i32 - %71 = or disjoint i32 %68, %70 +66: ; preds = %50 + %67 = getelementptr inbounds nuw i8, ptr %4, i64 1 + %68 = load i16, ptr %67, align 1, !noalias !584 + %69 = zext i16 %68 to i32 + %70 = shl nuw nsw i32 %69, 8 + %71 = load i8, ptr %4, align 1, !noalias !584, !noundef !4 + %72 = zext i8 %71 to i32 + %73 = or disjoint i32 %70, %72 call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %4), !noalias !584 - %72 = add nuw nsw i32 %71, 1 - %73 = call { i32, i1 } @llvm.umul.with.overflow.i32(i32 %56, i32 %72) - %74 = extractvalue { i32, i1 } %73, 1 - br i1 %74, label %82, label %76 + %74 = add nuw nsw i32 %73, 1 + %75 = call { i32, i1 } @llvm.umul.with.overflow.i32(i32 %58, i32 %74) + %76 = extractvalue { i32, i1 } %75, 1 + br i1 %76, label %84, label %78 -75: ; preds = %48 +77: ; preds = %50 call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %4), !noalias !584 store i8 0, ptr %0, align 8 %.sroa.493.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %60, ptr %.sroa.493.0..sroa_idx, align 8 - br label %83 + store ptr %62, ptr %.sroa.493.0..sroa_idx, align 8 + br label %85 -76: ; preds = %64 - %77 = lshr i8 %23, 4 - %.lobit = and i8 %77, 1 +78: ; preds = %66 + %79 = lshr i8 %23, 4 + %.lobit = and i8 %79, 1 %.lobit98 = lshr i8 %23, 5 - %78 = lshr i8 %23, 3 - %.lobit99 = and i8 %78, 1 - %79 = lshr i8 %23, 2 - %.lobit100 = and i8 %79, 1 - %80 = lshr exact i8 %23, 1 - %.lobit101 = and i8 %80, 1 - %81 = getelementptr inbounds nuw i8, ptr %0, i64 4 - store i32 %56, ptr %81, align 4 + %80 = lshr i8 %23, 3 + %.lobit99 = and i8 %80, 1 + %81 = lshr i8 %23, 2 + %.lobit100 = and i8 %81, 1 + %82 = lshr exact i8 %23, 1 + %.lobit101 = and i8 %82, 1 + %83 = getelementptr inbounds nuw i8, ptr %0, i64 4 + store i32 %58, ptr %83, align 4 %.sroa.245.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i32 %72, ptr %.sroa.245.0..sroa_idx, align 8 + store i32 %74, ptr %.sroa.245.0..sroa_idx, align 8 %.sroa.346.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 12 store i32 0, ptr %.sroa.346.0..sroa_idx, align 4 %.sroa.447.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 @@ -2522,13 +2522,13 @@ define hidden void @_ZN10image_webp8extended20read_extended_header17ha6dcd9d79c0 %.sroa.851.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 20 store i8 %.lobit101, ptr %.sroa.851.0..sroa_idx, align 4 store i8 28, ptr %0, align 8 - br label %83 + br label %85 -82: ; preds = %64 +84: ; preds = %66 store i8 8, ptr %0, align 8 - br label %83 + br label %85 -83: ; preds = %82, %76, %75, %63, %40, %39, %30 +85: ; preds = %84, %78, %77, %65, %42, %39, %30 ret void } diff --git a/bench/zed-rs/optimized/7ud3epkhjcjfe38h6hlh4jrau.ll b/bench/zed-rs/optimized/7ud3epkhjcjfe38h6hlh4jrau.ll index 0c79b559733..07810390ad8 100644 --- a/bench/zed-rs/optimized/7ud3epkhjcjfe38h6hlh4jrau.ll +++ b/bench/zed-rs/optimized/7ud3epkhjcjfe38h6hlh4jrau.ll @@ -2089,146 +2089,146 @@ define internal fastcc void @_ZN10image_webp8extended20read_extended_header17he4 %35 = add i64 %12, 4 %storemerge.i.i104 = select i1 %34, i64 %35, i64 %15 store i64 %storemerge.i.i104, ptr %11, align 8, !alias.scope !406, !noalias !407 - br i1 %34, label %37, label %45 + br i1 %34, label %37, label %47 36: ; preds = %"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i" call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10), !noalias !368 store i8 0, ptr %0, align 8 %.sroa.456.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %22, ptr %.sroa.456.0..sroa_idx, align 8 - br label %95 + br label %97 37: ; preds = %"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i103" %38 = getelementptr inbounds nuw i8, ptr %8, i64 1 %39 = load i16, ptr %38, align 1, !noalias !392 %40 = load i8, ptr %8, align 1, !noalias !392, !noundef !22 call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %8), !noalias !392 - %41 = and i8 %26, -63 - %or.cond = icmp eq i8 %41, 0 + %45 = and i8 %26, -63 + %or.cond = icmp eq i8 %45, 0 %42 = zext i8 %40 to i16 %43 = or i16 %39, %42 %44 = icmp eq i16 %43, 0 %or.cond1 = and i1 %or.cond, %44 br i1 %or.cond1, label %47, label %46 -45: ; preds = %"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i103" +47: ; preds = %"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i103" call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %8), !noalias !392 store i8 0, ptr %0, align 8 %.sroa.469.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %33, ptr %.sroa.469.0..sroa_idx, align 8 - br label %95 + br label %97 -46: ; preds = %37 +48: ; preds = %37 store i8 5, ptr %0, align 8 - br label %95 + br label %97 -47: ; preds = %37 +49: ; preds = %37 call void @llvm.experimental.noalias.scope.decl(metadata !408) call void @llvm.lifetime.start.p0(i64 3, ptr nonnull %6), !noalias !411 call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %6, i8 0, i64 3, i1 false), !noalias !411 call void @llvm.experimental.noalias.scope.decl(metadata !413) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5), !noalias !416 - %48 = call noundef i64 @_ZN4core3cmp6min_by17hc200cb174ae6de94E.llvm.6689388785225190856(i64 noundef %35, i64 noundef %15), !noalias !418 - %49 = icmp ugt i64 %48, %15 - br i1 %49, label %50, label %"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i106" + %50 = call noundef i64 @_ZN4core3cmp6min_by17hc200cb174ae6de94E.llvm.6689388785225190856(i64 noundef %35, i64 noundef %15), !noalias !418 + %51 = icmp ugt i64 %50, %15 + br i1 %51, label %52, label %"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i106" -50: ; preds = %47 - call void @_ZN4core5slice5index26slice_start_index_len_fail17h98d5080ba351a62cE(i64 noundef %48, i64 noundef %15, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7523ee657f2e5dc230e124b7b1f1e478.266.llvm.6689388785225190856) #51, !noalias !421 +52: ; preds = %49 + call void @_ZN4core5slice5index26slice_start_index_len_fail17h98d5080ba351a62cE(i64 noundef %50, i64 noundef %15, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7523ee657f2e5dc230e124b7b1f1e478.266.llvm.6689388785225190856) #51, !noalias !421 unreachable -"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i106": ; preds = %47 - %51 = sub nuw i64 %15, %48 - %52 = getelementptr inbounds i8, ptr %13, i64 %48 - store ptr %52, ptr %5, align 8, !noalias !416 - %53 = getelementptr inbounds nuw i8, ptr %5, i64 8 - store i64 %51, ptr %53, align 8, !noalias !416 - %54 = call noundef ptr @"_ZN3std2io5impls60_$LT$impl$u20$std..io..Read$u20$for$u20$$RF$$u5b$u8$u5d$$GT$10read_exact17h6d118d125acd1831E.llvm.6689388785225190856"(ptr noalias noundef nonnull align 8 dereferenceable(16) %5, ptr noalias noundef nonnull align 1 %6, i64 noundef 3), !noalias !424 +"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i106": ; preds = %49 + %53 = sub nuw i64 %15, %50 + %54 = getelementptr inbounds i8, ptr %13, i64 %50 + store ptr %54, ptr %5, align 8, !noalias !416 + %55 = getelementptr inbounds nuw i8, ptr %5, i64 8 + store i64 %53, ptr %55, align 8, !noalias !416 + %56 = call noundef ptr @"_ZN3std2io5impls60_$LT$impl$u20$std..io..Read$u20$for$u20$$RF$$u5b$u8$u5d$$GT$10read_exact17h6d118d125acd1831E.llvm.6689388785225190856"(ptr noalias noundef nonnull align 8 dereferenceable(16) %5, ptr noalias noundef nonnull align 1 %6, i64 noundef 3), !noalias !424 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5), !noalias !416 - %55 = icmp eq ptr %54, null - %56 = add i64 %12, 7 - %storemerge.i.i107 = select i1 %55, i64 %56, i64 %15 + %57 = icmp eq ptr %56, null + %58 = add i64 %12, 7 + %storemerge.i.i107 = select i1 %57, i64 %58, i64 %15 store i64 %storemerge.i.i107, ptr %11, align 8, !alias.scope !425, !noalias !426 - br i1 %55, label %57, label %75 - -57: ; preds = %"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i106" - %58 = getelementptr inbounds nuw i8, ptr %6, i64 1 - %59 = load i16, ptr %58, align 1, !noalias !411 - %60 = zext i16 %59 to i32 - %61 = shl nuw nsw i32 %60, 8 - %62 = load i8, ptr %6, align 1, !noalias !411, !noundef !22 - %63 = zext i8 %62 to i32 - %64 = or disjoint i32 %61, %63 + br i1 %57, label %59, label %77 + +59: ; preds = %"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i106" + %60 = getelementptr inbounds nuw i8, ptr %6, i64 1 + %61 = load i16, ptr %60, align 1, !noalias !411 + %62 = zext i16 %61 to i32 + %63 = shl nuw nsw i32 %62, 8 + %64 = load i8, ptr %6, align 1, !noalias !411, !noundef !22 + %65 = zext i8 %64 to i32 + %66 = or disjoint i32 %63, %65 call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %6), !noalias !411 - %65 = add nuw nsw i32 %64, 1 + %67 = add nuw nsw i32 %66, 1 call void @llvm.experimental.noalias.scope.decl(metadata !427) call void @llvm.lifetime.start.p0(i64 3, ptr nonnull %4), !noalias !430 call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %4, i8 0, i64 3, i1 false), !noalias !430 call void @llvm.experimental.noalias.scope.decl(metadata !432) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3), !noalias !435 - %66 = call noundef i64 @_ZN4core3cmp6min_by17hc200cb174ae6de94E.llvm.6689388785225190856(i64 noundef %56, i64 noundef %15), !noalias !437 - %67 = icmp ugt i64 %66, %15 - br i1 %67, label %68, label %"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i111" + %68 = call noundef i64 @_ZN4core3cmp6min_by17hc200cb174ae6de94E.llvm.6689388785225190856(i64 noundef %58, i64 noundef %15), !noalias !437 + %69 = icmp ugt i64 %68, %15 + br i1 %69, label %70, label %"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i111" -68: ; preds = %57 - call void @_ZN4core5slice5index26slice_start_index_len_fail17h98d5080ba351a62cE(i64 noundef %66, i64 noundef %15, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7523ee657f2e5dc230e124b7b1f1e478.266.llvm.6689388785225190856) #51, !noalias !440 +70: ; preds = %59 + call void @_ZN4core5slice5index26slice_start_index_len_fail17h98d5080ba351a62cE(i64 noundef %68, i64 noundef %15, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7523ee657f2e5dc230e124b7b1f1e478.266.llvm.6689388785225190856) #51, !noalias !440 unreachable -"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i111": ; preds = %57 - %69 = sub nuw i64 %15, %66 - %70 = getelementptr inbounds i8, ptr %13, i64 %66 - store ptr %70, ptr %3, align 8, !noalias !435 - %71 = getelementptr inbounds nuw i8, ptr %3, i64 8 - store i64 %69, ptr %71, align 8, !noalias !435 - %72 = call noundef ptr @"_ZN3std2io5impls60_$LT$impl$u20$std..io..Read$u20$for$u20$$RF$$u5b$u8$u5d$$GT$10read_exact17h6d118d125acd1831E.llvm.6689388785225190856"(ptr noalias noundef nonnull align 8 dereferenceable(16) %3, ptr noalias noundef nonnull align 1 %4, i64 noundef 3), !noalias !443 +"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i111": ; preds = %59 + %71 = sub nuw i64 %15, %68 + %72 = getelementptr inbounds i8, ptr %13, i64 %68 + store ptr %72, ptr %3, align 8, !noalias !435 + %73 = getelementptr inbounds nuw i8, ptr %3, i64 8 + store i64 %71, ptr %73, align 8, !noalias !435 + %74 = call noundef ptr @"_ZN3std2io5impls60_$LT$impl$u20$std..io..Read$u20$for$u20$$RF$$u5b$u8$u5d$$GT$10read_exact17h6d118d125acd1831E.llvm.6689388785225190856"(ptr noalias noundef nonnull align 8 dereferenceable(16) %3, ptr noalias noundef nonnull align 1 %4, i64 noundef 3), !noalias !443 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3), !noalias !435 - %73 = icmp eq ptr %72, null - %74 = add i64 %12, 10 - %storemerge.i.i112 = select i1 %73, i64 %74, i64 %15 + %75 = icmp eq ptr %74, null + %76 = add i64 %12, 10 + %storemerge.i.i112 = select i1 %75, i64 %76, i64 %15 store i64 %storemerge.i.i112, ptr %11, align 8, !alias.scope !444, !noalias !445 - br i1 %73, label %76, label %87 + br i1 %75, label %78, label %89 -75: ; preds = %"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i106" +77: ; preds = %"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i106" call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %6), !noalias !411 store i8 0, ptr %0, align 8 %.sroa.481.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %54, ptr %.sroa.481.0..sroa_idx, align 8 - br label %95 - -76: ; preds = %"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i111" - %77 = getelementptr inbounds nuw i8, ptr %4, i64 1 - %78 = load i16, ptr %77, align 1, !noalias !430 - %79 = zext i16 %78 to i32 - %80 = shl nuw nsw i32 %79, 8 - %81 = load i8, ptr %4, align 1, !noalias !430, !noundef !22 - %82 = zext i8 %81 to i32 - %83 = or disjoint i32 %80, %82 + store ptr %56, ptr %.sroa.481.0..sroa_idx, align 8 + br label %97 + +78: ; preds = %"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i111" + %79 = getelementptr inbounds nuw i8, ptr %4, i64 1 + %80 = load i16, ptr %79, align 1, !noalias !430 + %81 = zext i16 %80 to i32 + %82 = shl nuw nsw i32 %81, 8 + %83 = load i8, ptr %4, align 1, !noalias !430, !noundef !22 + %84 = zext i8 %83 to i32 + %85 = or disjoint i32 %82, %84 call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %4), !noalias !430 - %84 = add nuw nsw i32 %83, 1 - %85 = call { i32, i1 } @llvm.umul.with.overflow.i32(i32 %65, i32 %84) - %86 = extractvalue { i32, i1 } %85, 1 - br i1 %86, label %94, label %88 + %86 = add nuw nsw i32 %85, 1 + %87 = call { i32, i1 } @llvm.umul.with.overflow.i32(i32 %67, i32 %86) + %88 = extractvalue { i32, i1 } %87, 1 + br i1 %88, label %96, label %90 -87: ; preds = %"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i111" +89: ; preds = %"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$10read_exact17hc6a40b397d73c1d9E.exit.i111" call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %4), !noalias !430 store i8 0, ptr %0, align 8 %.sroa.493.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %72, ptr %.sroa.493.0..sroa_idx, align 8 - br label %95 + store ptr %74, ptr %.sroa.493.0..sroa_idx, align 8 + br label %97 -88: ; preds = %76 - %89 = lshr i8 %26, 4 - %.lobit = and i8 %89, 1 +90: ; preds = %78 + %91 = lshr i8 %26, 4 + %.lobit = and i8 %91, 1 %.lobit98 = lshr i8 %26, 5 - %90 = lshr i8 %26, 3 - %.lobit99 = and i8 %90, 1 - %91 = lshr i8 %26, 2 - %.lobit100 = and i8 %91, 1 - %92 = lshr exact i8 %26, 1 - %.lobit101 = and i8 %92, 1 - %93 = getelementptr inbounds nuw i8, ptr %0, i64 4 - store i32 %65, ptr %93, align 4 + %92 = lshr i8 %26, 3 + %.lobit99 = and i8 %92, 1 + %93 = lshr i8 %26, 2 + %.lobit100 = and i8 %93, 1 + %94 = lshr exact i8 %26, 1 + %.lobit101 = and i8 %94, 1 + %95 = getelementptr inbounds nuw i8, ptr %0, i64 4 + store i32 %67, ptr %95, align 4 %.sroa.245.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i32 %84, ptr %.sroa.245.0..sroa_idx, align 8 + store i32 %86, ptr %.sroa.245.0..sroa_idx, align 8 %.sroa.346.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 12 store i32 0, ptr %.sroa.346.0..sroa_idx, align 4 %.sroa.447.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 @@ -2242,13 +2242,13 @@ define internal fastcc void @_ZN10image_webp8extended20read_extended_header17he4 %.sroa.851.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 20 store i8 %.lobit101, ptr %.sroa.851.0..sroa_idx, align 4 store i8 28, ptr %0, align 8 - br label %95 + br label %97 -94: ; preds = %76 +96: ; preds = %78 store i8 8, ptr %0, align 8 - br label %95 + br label %97 -95: ; preds = %94, %88, %87, %75, %46, %45, %36 +97: ; preds = %96, %90, %89, %77, %48, %47, %36 ret void }