diff --git a/bench/box2d/optimized/imgui_tables.ll b/bench/box2d/optimized/imgui_tables.ll index f4933d56552..c555658eb1e 100644 --- a/bench/box2d/optimized/imgui_tables.ll +++ b/bench/box2d/optimized/imgui_tables.ll @@ -4182,42 +4182,41 @@ define internal fastcc void @_ZL21TableSetupColumnFlagsP10ImGuiTableP16ImGuiTabl %45 = and i32 %.474, 34816 %or.cond82 = icmp eq i32 %45, 32768 %46 = or disjoint i32 %.061, 4 - %47 = select i1 %or.cond80, i32 8, i32 2 + %47 = select i1 %or.cond80, i32 9, i32 2 %48 = select i1 %or.cond80, i32 2, i32 1 %.166 = select i1 %or.cond82, i32 %48, i32 %.0 %.162 = select i1 %or.cond82, i32 %46, i32 %.061 - %49 = select i1 %or.cond82, i32 %47, i32 0 - %.1 = or disjoint i32 %49, %.0 + %49 = select i1 %or.cond82, i32 %47, i32 %.0 %or.cond84 = icmp eq i32 %44, 0 - br i1 %or.cond84, label %50, label %56 - -50: ; preds = %43 - %51 = or i32 %.162, 2 - %52 = shl nuw nsw i32 %.166, 1 - %53 = shl nuw nsw i32 1, %52 - %54 = or i32 %53, %.1 - %55 = add nuw nsw i32 %.166, 1 - br label %56 + br i1 %or.cond84, label %56, label %55 + +56: ; preds = %43 + %50 = or i32 %.162, 2 + %51 = shl nuw nsw i32 %.166, 1 + %52 = shl nuw nsw i32 1, %51 + %53 = or i32 %52, %.1 + %54 = add nuw nsw i32 %.166, 1 + br label %55 -56: ; preds = %50, %43 - %.267 = phi i32 [ %55, %50 ], [ %.166, %43 ] - %.263 = phi i32 [ %51, %50 ], [ %.162, %43 ] - %.2 = phi i32 [ %54, %50 ], [ %.1, %43 ] +57: ; preds = %56, %43 + %.267 = phi i32 [ %54, %49 ], [ %.166, %43 ] + %.263 = phi i32 [ %50, %49 ], [ %.162, %43 ] + %.2 = phi i32 [ %53, %49 ], [ %.1, %43 ] %or.cond86 = icmp eq i32 %45, 0 - br i1 %or.cond86, label %57, label %63 - -57: ; preds = %56 - %58 = or i32 %.263, 4 - %59 = shl nuw nsw i32 %.267, 1 - %60 = shl nuw nsw i32 2, %59 - %61 = or i32 %.2, %60 - %62 = add nuw nsw i32 %.267, 1 - br label %63 + br i1 %or.cond86, label %56, label %63 + +56: ; preds = %55 + %57 = or i32 %.263, 4 + %58 = shl nuw nsw i32 %.267, 1 + %59 = shl nuw nsw i32 2, %58 + %60 = or i32 %.2, %59 + %61 = add nuw nsw i32 %.267, 1 + br label %62 -63: ; preds = %57, %56 - %.368 = phi i32 [ %62, %57 ], [ %.267, %56 ] - %.364 = phi i32 [ %58, %57 ], [ %.263, %56 ] - %.3 = phi i32 [ %61, %57 ], [ %.2, %56 ] +63: ; preds = %56, %55 + %.368 = phi i32 [ %61, %56 ], [ %.267, %55 ] + %.364 = phi i32 [ %57, %56 ], [ %.263, %55 ] + %.3 = phi i32 [ %60, %56 ], [ %.2, %55 ] %64 = and i32 %41, 134217728 %65 = icmp ne i32 %64, 0 %66 = icmp eq i32 %.368, 0 diff --git a/bench/libigl/optimized/convex_hull.ll b/bench/libigl/optimized/convex_hull.ll index ba5422e8d34..e5fb5455cb0 100644 --- a/bench/libigl/optimized/convex_hull.ll +++ b/bench/libigl/optimized/convex_hull.ll @@ -20801,13 +20801,14 @@ define linkonce_odr dso_local noundef zeroext i1 @_ZN4CGAL11collinearC3INS_9cpp_ 35: ; preds = %33 %36 = icmp eq i32 %34, 0 - %.sroa.555.0.insert.ext = zext i1 %36 to i16 - %.sroa.555.0.insert.shift = select i1 %36, i16 256, i16 0 - %.sroa.054.0.insert.insert = or disjoint i16 %.sroa.555.0.insert.shift, %.sroa.555.0.insert.ext - %.sroa.2.0.extract.shift.i.i.i = lshr exact i16 %.sroa.555.0.insert.shift, 8 - %37 = icmp ne i16 %.sroa.2.0.extract.shift.i.i.i, %.sroa.555.0.insert.ext - %.not6.i = or i1 %36, %37 - br i1 %.not6.i, label %38, label %42 + %.sroa.054.0.insert.insert = select i1 %36, i16 257, i16 0 + %.sroa.0.0.extract.trunc.i.i.i = trunc i16 %.sroa.054.0.insert.insert to i8 + %.sroa.2.0.extract.shift.i.i.i = lshr i16 %.sroa.054.0.insert.insert, 8 + %.sroa.2.0.extract.trunc.i.i.i = trunc nuw nsw i16 %.sroa.2.0.extract.shift.i.i.i to i8 + %37 = icmp ne i8 %.sroa.0.0.extract.trunc.i.i.i, %.sroa.2.0.extract.trunc.i.i.i + %38 = trunc i16 %.sroa.054.0.insert.insert to i1 + %.not6.i = or i1 %37, %38 + br i1 %.not6.i, label %39, label %43 38: ; preds = %35 %39 = invoke noundef i32 @_ZN4CGAL19sign_of_determinantINS_9cpp_floatEEENS_3SgnIT_E11result_typeERKS3_S7_S7_S7_(ptr noundef nonnull align 16 dereferenceable(84) %12, ptr noundef nonnull align 16 dereferenceable(84) %13, ptr noundef nonnull align 16 dereferenceable(84) %14, ptr noundef nonnull align 16 dereferenceable(84) %15) @@ -20815,14 +20816,11 @@ define linkonce_odr dso_local noundef zeroext i1 @_ZN4CGAL11collinearC3INS_9cpp_ .noexc: ; preds = %38 %40 = icmp eq i32 %39, 0 - %.sroa.2.0.insert.ext.i.i = zext i1 %40 to i16 - %.sroa.2.0.insert.shift.i.i = select i1 %40, i16 256, i16 0 - %.sroa.0.0.insert.insert.i.i = or disjoint i16 %.sroa.2.0.insert.shift.i.i, %.sroa.2.0.insert.ext.i.i - %41 = and i16 %.sroa.0.0.insert.insert.i.i, %.sroa.054.0.insert.insert + %42 = select i1 %41, i16 %.sroa.054.0.insert.insert, i16 0 br label %42 42: ; preds = %35, %.noexc - %.sroa.05.0.i = phi i16 [ %41, %.noexc ], [ 0, %35 ] + %.sroa.05.0.i = phi i16 [ %42, %.noexc ], [ 0, %35 ] store i16 %.sroa.05.0.i, ptr %16, align 2 %43 = invoke noundef zeroext i1 @_ZNK4CGAL9UncertainIbE12make_certainEv(ptr noundef nonnull align 1 dereferenceable(2) %16) to label %_ZNK4CGAL9UncertainIbEcvbEv.exit unwind label %72 @@ -20890,7 +20888,7 @@ _ZN4CGAL9cpp_floatD2Ev.exit33: ; preds = %_ZN4CGAL9cpp_floatD br label %74 74: ; preds = %72, %70 - %.pn = phi { ptr, i32 } [ %73, %72 ], [ %71, %70 ] + %.pn = phi { ptr, i32 } [ %73, %73 ], [ %71, %71 ] call void @llvm.lifetime.end.p0(ptr nonnull %16) %75 = getelementptr inbounds nuw i8, ptr %15, i64 73 %76 = load i8, ptr %75, align 1, !tbaa !269, !range !10, !noundef !11 @@ -20910,7 +20908,7 @@ _ZN4CGAL9cpp_floatD2Ev.exit33: ; preds = %_ZN4CGAL9cpp_floatD br label %_ZN4CGAL9cpp_floatD2Ev.exit35 _ZN4CGAL9cpp_floatD2Ev.exit35: ; preds = %81, %74, %68 - %.pn.pn = phi { ptr, i32 } [ %69, %68 ], [ %.pn, %74 ], [ %.pn, %81 ] + %.pn.pn = phi { ptr, i32 } [ %69, %69 ], [ %.pn, %75 ], [ %.pn, %82 ] call void @llvm.lifetime.end.p0(ptr nonnull %15) %86 = getelementptr inbounds nuw i8, ptr %14, i64 73 %87 = load i8, ptr %86, align 1, !tbaa !269, !range !10, !noundef !11 @@ -20930,7 +20928,7 @@ _ZN4CGAL9cpp_floatD2Ev.exit35: ; preds = %81, %74, %68 br label %_ZN4CGAL9cpp_floatD2Ev.exit37 _ZN4CGAL9cpp_floatD2Ev.exit37: ; preds = %92, %_ZN4CGAL9cpp_floatD2Ev.exit35, %66 - %.pn.pn.pn = phi { ptr, i32 } [ %67, %66 ], [ %.pn.pn, %_ZN4CGAL9cpp_floatD2Ev.exit35 ], [ %.pn.pn, %92 ] + %.pn.pn.pn = phi { ptr, i32 } [ %67, %67 ], [ %.pn.pn, %_ZN4CGAL9cpp_floatD2Ev.exit35 ], [ %.pn.pn, %93 ] call void @llvm.lifetime.end.p0(ptr nonnull %14) br label %142 @@ -21034,7 +21032,7 @@ _ZN4CGAL9cpp_floatD2Ev.exit45: ; preds = %_ZN4CGAL9cpp_floatD br label %_ZN4CGAL9cpp_floatD2Ev.exit47 _ZN4CGAL9cpp_floatD2Ev.exit47: ; preds = %149, %142, %27 - %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %28, %27 ], [ %.pn.pn.pn.pn, %142 ], [ %.pn.pn.pn.pn, %149 ] + %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %28, %27 ], [ %.pn.pn.pn.pn, %143 ], [ %.pn.pn.pn.pn, %150 ] call void @llvm.lifetime.end.p0(ptr nonnull %13) %154 = getelementptr inbounds nuw i8, ptr %12, i64 73 %155 = load i8, ptr %154, align 1, !tbaa !269, !range !10, !noundef !11 @@ -21054,7 +21052,7 @@ _ZN4CGAL9cpp_floatD2Ev.exit47: ; preds = %149, %142, %27 br label %_ZN4CGAL9cpp_floatD2Ev.exit49 _ZN4CGAL9cpp_floatD2Ev.exit49: ; preds = %160, %_ZN4CGAL9cpp_floatD2Ev.exit47, %25 - %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %26, %25 ], [ %.pn.pn.pn.pn.pn, %_ZN4CGAL9cpp_floatD2Ev.exit47 ], [ %.pn.pn.pn.pn.pn, %160 ] + %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %26, %25 ], [ %.pn.pn.pn.pn.pn, %_ZN4CGAL9cpp_floatD2Ev.exit47 ], [ %.pn.pn.pn.pn.pn, %161 ] call void @llvm.lifetime.end.p0(ptr nonnull %12) %165 = getelementptr inbounds nuw i8, ptr %11, i64 73 %166 = load i8, ptr %165, align 1, !tbaa !269, !range !10, !noundef !11 @@ -21074,7 +21072,7 @@ _ZN4CGAL9cpp_floatD2Ev.exit49: ; preds = %160, %_ZN4CGAL9cpp_ br label %_ZN4CGAL9cpp_floatD2Ev.exit51 _ZN4CGAL9cpp_floatD2Ev.exit51: ; preds = %171, %_ZN4CGAL9cpp_floatD2Ev.exit49, %23 - %.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %24, %23 ], [ %.pn.pn.pn.pn.pn.pn, %_ZN4CGAL9cpp_floatD2Ev.exit49 ], [ %.pn.pn.pn.pn.pn.pn, %171 ] + %.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %24, %23 ], [ %.pn.pn.pn.pn.pn.pn, %_ZN4CGAL9cpp_floatD2Ev.exit49 ], [ %.pn.pn.pn.pn.pn.pn, %172 ] call void @llvm.lifetime.end.p0(ptr nonnull %11) %176 = getelementptr inbounds nuw i8, ptr %10, i64 73 %177 = load i8, ptr %176, align 1, !tbaa !269, !range !10, !noundef !11 diff --git a/bench/libigl/optimized/coplanar.ll b/bench/libigl/optimized/coplanar.ll index d7bdc1f2927..a184cc59ad8 100644 --- a/bench/libigl/optimized/coplanar.ll +++ b/bench/libigl/optimized/coplanar.ll @@ -3418,33 +3418,31 @@ define linkonce_odr dso_local noundef zeroext i1 @_ZN4CGAL11collinearC3INS_9cpp_ 35: ; preds = %33 %36 = icmp eq i32 %34, 0 - %.sroa.555.0.insert.ext = zext i1 %36 to i16 - %.sroa.555.0.insert.shift = select i1 %36, i16 256, i16 0 - %.sroa.054.0.insert.insert = or disjoint i16 %.sroa.555.0.insert.shift, %.sroa.555.0.insert.ext - %.sroa.2.0.extract.shift.i.i.i = lshr exact i16 %.sroa.555.0.insert.shift, 8 - %37 = icmp ne i16 %.sroa.2.0.extract.shift.i.i.i, %.sroa.555.0.insert.ext - %.not6.i = or i1 %36, %37 - br i1 %.not6.i, label %38, label %42 - -38: ; preds = %35 - %39 = invoke noundef i32 @_ZN4CGAL19sign_of_determinantINS_9cpp_floatEEENS_3SgnIT_E11result_typeERKS3_S7_S7_S7_(ptr noundef nonnull align 16 dereferenceable(84) %12, ptr noundef nonnull align 16 dereferenceable(84) %13, ptr noundef nonnull align 16 dereferenceable(84) %14, ptr noundef nonnull align 16 dereferenceable(84) %15) - to label %.noexc unwind label %72 - -.noexc: ; preds = %38 - %40 = icmp eq i32 %39, 0 - %.sroa.2.0.insert.ext.i.i = zext i1 %40 to i16 - %.sroa.2.0.insert.shift.i.i = select i1 %40, i16 256, i16 0 - %.sroa.0.0.insert.insert.i.i = or disjoint i16 %.sroa.2.0.insert.shift.i.i, %.sroa.2.0.insert.ext.i.i - %41 = and i16 %.sroa.0.0.insert.insert.i.i, %.sroa.054.0.insert.insert - br label %42 - -42: ; preds = %35, %.noexc - %.sroa.05.0.i = phi i16 [ %41, %.noexc ], [ 0, %35 ] + %.sroa.054.0.insert.insert = select i1 %36, i16 257, i16 0 + %.sroa.0.0.extract.trunc.i.i.i = trunc i16 %.sroa.054.0.insert.insert to i8 + %.sroa.2.0.extract.shift.i.i.i = lshr i16 %.sroa.054.0.insert.insert, 8 + %.sroa.2.0.extract.trunc.i.i.i = trunc nuw nsw i16 %.sroa.2.0.extract.shift.i.i.i to i8 + %37 = icmp ne i8 %.sroa.0.0.extract.trunc.i.i.i, %.sroa.2.0.extract.trunc.i.i.i + %38 = trunc i16 %.sroa.054.0.insert.insert to i1 + %.not6.i = or i1 %37, %38 + br i1 %.not6.i, label %39, label %43 + +39:; preds = %35 + %40 = invoke noundef i32 @_ZN4CGAL19sign_of_determinantINS_9cpp_floatEEENS_3SgnIT_E11result_typeERKS3_S7_S7_S7_(ptr noundef nonnull align 16 dereferenceable(84) %12, ptr noundef nonnull align 16 dereferenceable(84) %13, ptr noundef nonnull align 16 dereferenceable(84) %14, ptr noundef nonnull align 16 dereferenceable(84) %15) + to label %.noexc unwind label %73 + +.noexc:; preds = %39 + %41 = icmp eq i32 %40, 0 + %.sroa.2.0.insert.shift.i.i = select i1 %41, i16 %.sroa.054.0.insert.insert, i16 0 + br label %43 + +43:; preds = %35, %.noexc + %.sroa.05.0.i = phi i16 [ %42, %.noexc ], [ 0, %35 ] store i16 %.sroa.05.0.i, ptr %16, align 2 %43 = invoke noundef zeroext i1 @_ZNK4CGAL9UncertainIbE12make_certainEv(ptr noundef nonnull align 1 dereferenceable(2) %16) to label %_ZNK4CGAL9UncertainIbEcvbEv.exit unwind label %72 -_ZNK4CGAL9UncertainIbEcvbEv.exit: ; preds = %42 +_ZNK4CGAL9UncertainIbEcvbEv.exit: ; preds = %43 call void @llvm.lifetime.end.p0(ptr nonnull %16) %44 = getelementptr inbounds nuw i8, ptr %15, i64 73 %45 = load i8, ptr %44, align 1, !tbaa !67, !range !81, !noundef !82 @@ -3501,13 +3499,13 @@ _ZN4CGAL9cpp_floatD2Ev.exit33: ; preds = %_ZN4CGAL9cpp_floatD cleanup br label %74 -72: ; preds = %42, %38 +72: ; preds = %43, %39 %73 = landingpad { ptr, i32 } cleanup br label %74 74: ; preds = %72, %70 - %.pn = phi { ptr, i32 } [ %73, %72 ], [ %71, %70 ] + %.pn = phi { ptr, i32 } [ %73, %73 ], [ %71, %71 ] call void @llvm.lifetime.end.p0(ptr nonnull %16) %75 = getelementptr inbounds nuw i8, ptr %15, i64 73 %76 = load i8, ptr %75, align 1, !tbaa !67, !range !81, !noundef !82 @@ -3527,7 +3525,7 @@ _ZN4CGAL9cpp_floatD2Ev.exit33: ; preds = %_ZN4CGAL9cpp_floatD br label %_ZN4CGAL9cpp_floatD2Ev.exit35 _ZN4CGAL9cpp_floatD2Ev.exit35: ; preds = %81, %74, %68 - %.pn.pn = phi { ptr, i32 } [ %69, %68 ], [ %.pn, %74 ], [ %.pn, %81 ] + %.pn.pn = phi { ptr, i32 } [ %69, %69 ], [ %.pn, %75 ], [ %.pn, %82 ] call void @llvm.lifetime.end.p0(ptr nonnull %15) %86 = getelementptr inbounds nuw i8, ptr %14, i64 73 %87 = load i8, ptr %86, align 1, !tbaa !67, !range !81, !noundef !82 @@ -3547,7 +3545,7 @@ _ZN4CGAL9cpp_floatD2Ev.exit35: ; preds = %81, %74, %68 br label %_ZN4CGAL9cpp_floatD2Ev.exit37 _ZN4CGAL9cpp_floatD2Ev.exit37: ; preds = %92, %_ZN4CGAL9cpp_floatD2Ev.exit35, %66 - %.pn.pn.pn = phi { ptr, i32 } [ %67, %66 ], [ %.pn.pn, %_ZN4CGAL9cpp_floatD2Ev.exit35 ], [ %.pn.pn, %92 ] + %.pn.pn.pn = phi { ptr, i32 } [ %67, %67 ], [ %.pn.pn, %_ZN4CGAL9cpp_floatD2Ev.exit35 ], [ %.pn.pn, %93 ] call void @llvm.lifetime.end.p0(ptr nonnull %14) br label %142 @@ -3651,7 +3649,7 @@ _ZN4CGAL9cpp_floatD2Ev.exit45: ; preds = %_ZN4CGAL9cpp_floatD br label %_ZN4CGAL9cpp_floatD2Ev.exit47 _ZN4CGAL9cpp_floatD2Ev.exit47: ; preds = %149, %142, %27 - %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %28, %27 ], [ %.pn.pn.pn.pn, %142 ], [ %.pn.pn.pn.pn, %149 ] + %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %28, %27 ], [ %.pn.pn.pn.pn, %143 ], [ %.pn.pn.pn.pn, %150 ] call void @llvm.lifetime.end.p0(ptr nonnull %13) %154 = getelementptr inbounds nuw i8, ptr %12, i64 73 %155 = load i8, ptr %154, align 1, !tbaa !67, !range !81, !noundef !82 @@ -3671,7 +3669,7 @@ _ZN4CGAL9cpp_floatD2Ev.exit47: ; preds = %149, %142, %27 br label %_ZN4CGAL9cpp_floatD2Ev.exit49 _ZN4CGAL9cpp_floatD2Ev.exit49: ; preds = %160, %_ZN4CGAL9cpp_floatD2Ev.exit47, %25 - %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %26, %25 ], [ %.pn.pn.pn.pn.pn, %_ZN4CGAL9cpp_floatD2Ev.exit47 ], [ %.pn.pn.pn.pn.pn, %160 ] + %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %26, %25 ], [ %.pn.pn.pn.pn.pn, %_ZN4CGAL9cpp_floatD2Ev.exit47 ], [ %.pn.pn.pn.pn.pn, %161 ] call void @llvm.lifetime.end.p0(ptr nonnull %12) %165 = getelementptr inbounds nuw i8, ptr %11, i64 73 %166 = load i8, ptr %165, align 1, !tbaa !67, !range !81, !noundef !82 @@ -3691,7 +3689,7 @@ _ZN4CGAL9cpp_floatD2Ev.exit49: ; preds = %160, %_ZN4CGAL9cpp_ br label %_ZN4CGAL9cpp_floatD2Ev.exit51 _ZN4CGAL9cpp_floatD2Ev.exit51: ; preds = %171, %_ZN4CGAL9cpp_floatD2Ev.exit49, %23 - %.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %24, %23 ], [ %.pn.pn.pn.pn.pn.pn, %_ZN4CGAL9cpp_floatD2Ev.exit49 ], [ %.pn.pn.pn.pn.pn.pn, %171 ] + %.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %24, %23 ], [ %.pn.pn.pn.pn.pn.pn, %_ZN4CGAL9cpp_floatD2Ev.exit49 ], [ %.pn.pn.pn.pn.pn.pn, %172 ] call void @llvm.lifetime.end.p0(ptr nonnull %11) %176 = getelementptr inbounds nuw i8, ptr %10, i64 73 %177 = load i8, ptr %176, align 1, !tbaa !67, !range !81, !noundef !82 diff --git a/bench/libigl/optimized/intersect_other.ll b/bench/libigl/optimized/intersect_other.ll index a50b779bc16..524f51c00fe 100644 --- a/bench/libigl/optimized/intersect_other.ll +++ b/bench/libigl/optimized/intersect_other.ll @@ -45430,9 +45430,7 @@ _ZNK4CGAL9SegmentC3INS_16Simple_cartesianINS_11Interval_ntILb0EEEEEE6has_onERKNS store i16 %.sroa.2.0.insert.ext.i.i.i.i, ptr %6, align 2 %20 = call noundef zeroext i1 @_ZNK4CGAL9UncertainIbE12make_certainEv(ptr noundef nonnull align 1 dereferenceable(2) %6) call void @llvm.lifetime.end.p0(ptr nonnull %6) - %.sroa.2.0.insert.ext = zext i1 %20 to i16 - %.sroa.2.0.insert.shift = select i1 %20, i16 256, i16 0 - %.sroa.0.0.insert.insert = or disjoint i16 %.sroa.2.0.insert.shift, %.sroa.2.0.insert.ext + %.sroa.0.0.insert.insert = select i1 %20, i16 257, i16 0 ret i16 %.sroa.0.0.insert.insert } @@ -46471,13 +46469,14 @@ define linkonce_odr dso_local noundef zeroext i1 @_ZN4CGAL11collinearC3INS_9cpp_ 35: ; preds = %33 %36 = icmp eq i32 %34, 0 - %.sroa.555.0.insert.ext = zext i1 %36 to i16 - %.sroa.555.0.insert.shift = select i1 %36, i16 256, i16 0 - %.sroa.054.0.insert.insert = or disjoint i16 %.sroa.555.0.insert.shift, %.sroa.555.0.insert.ext - %.sroa.2.0.extract.shift.i.i.i = lshr exact i16 %.sroa.555.0.insert.shift, 8 - %37 = icmp ne i16 %.sroa.2.0.extract.shift.i.i.i, %.sroa.555.0.insert.ext - %.not6.i = or i1 %36, %37 - br i1 %.not6.i, label %38, label %42 + %.sroa.054.0.insert.insert = select i1 %36, i16 257, i16 0 + %.sroa.0.0.extract.trunc.i.i.i = trunc i16 %.sroa.054.0.insert.insert to i8 + %.sroa.2.0.extract.shift.i.i.i = lshr i16 %.sroa.054.0.insert.insert, 8 + %.sroa.2.0.extract.trunc.i.i.i = trunc nuw nsw i16 %.sroa.2.0.extract.shift.i.i.i to i8 + %37 = icmp ne i8 %.sroa.0.0.extract.trunc.i.i.i, %.sroa.2.0.extract.trunc.i.i.i + %38 = trunc i16 %.sroa.054.0.insert.insert to i1 + %.not6.i = or i1 %37, %38 + br i1 %.not6.i, label %39, label %43 38: ; preds = %35 %39 = invoke noundef i32 @_ZN4CGAL19sign_of_determinantINS_9cpp_floatEEENS_3SgnIT_E11result_typeERKS3_S7_S7_S7_(ptr noundef nonnull align 16 dereferenceable(84) %12, ptr noundef nonnull align 16 dereferenceable(84) %13, ptr noundef nonnull align 16 dereferenceable(84) %14, ptr noundef nonnull align 16 dereferenceable(84) %15) @@ -46485,14 +46484,11 @@ define linkonce_odr dso_local noundef zeroext i1 @_ZN4CGAL11collinearC3INS_9cpp_ .noexc: ; preds = %38 %40 = icmp eq i32 %39, 0 - %.sroa.2.0.insert.ext.i.i = zext i1 %40 to i16 - %.sroa.2.0.insert.shift.i.i = select i1 %40, i16 256, i16 0 - %.sroa.0.0.insert.insert.i.i = or disjoint i16 %.sroa.2.0.insert.shift.i.i, %.sroa.2.0.insert.ext.i.i - %41 = and i16 %.sroa.0.0.insert.insert.i.i, %.sroa.054.0.insert.insert + %42 = select i1 %41, i16 %.sroa.054.0.insert.insert, i16 0 br label %42 42: ; preds = %35, %.noexc - %.sroa.05.0.i = phi i16 [ %41, %.noexc ], [ 0, %35 ] + %.sroa.05.0.i = phi i16 [ %42, %.noexc ], [ 0, %35 ] store i16 %.sroa.05.0.i, ptr %16, align 2 %43 = invoke noundef zeroext i1 @_ZNK4CGAL9UncertainIbE12make_certainEv(ptr noundef nonnull align 1 dereferenceable(2) %16) to label %_ZNK4CGAL9UncertainIbEcvbEv.exit unwind label %72 @@ -99066,8 +99062,8 @@ _ZN5boost14multiprecision8backends7eval_eqILm0ELm0ELNS0_16cpp_integer_typeE1ELNS %.not.i11.i.i.i.i = icmp eq ptr %127, %117 br i1 %.not.i11.i.i.i.i, label %_ZN4CGAL8internal13cgal_and_implIZZNKS_20CommonKernelFunctors7Equal_3INS_16Simple_cartesianIN5boost14multiprecision6numberINS6_8backends16rational_adaptorINS8_15cpp_int_backendILm0ELm0ELNS6_16cpp_integer_typeE1ELNS6_18cpp_int_check_typeE0ESaIyEEEEELNS6_26expression_template_optionE1EEEEEEclERKNS_7Point_3ISI_EESN_ENKUlvE_clEvEUlvE_EENS_9UncertainIbEERKSR_OT_.exit, label %.lr.ph.i6.i.i.i.i, !llvm.loop !289 -_ZN4CGAL8internal13cgal_and_implIZZNKS_20CommonKernelFunctors7Equal_3INS_16Simple_cartesianIN5boost14multiprecision6numberINS6_8backends16rational_adaptorINS8_15cpp_int_backendILm0ELm0ELNS6_16cpp_integer_typeE1ELNS6_18cpp_int_check_typeE0ESaIyEEEEELNS6_26expression_template_optionE1EEEEEEclERKNS_7Point_3ISI_EESN_ENKUlvE_clEvEUlvE_EENS_9UncertainIbEERKSR_OT_.exit: ; preds = %.lr.ph.i.i.i, %.lr.ph.i6.i.i, %.lr.ph.i.i.i.i.i, %126, %.lr.ph.i6.i.i.i.i, %42, %_ZN5boost14multiprecision8backends7eval_eqILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEENSt9enable_ifIXntsr18is_trivial_cpp_intINS1_15cpp_int_backendIXT_EXT0_EXT1_EXT2_ET3_EEEE5valueEbE4typeERKS9_SD_.exit4.i.i, %11, %1, %110, %_ZN5boost14multiprecisioneqINS0_8backends16rational_adaptorINS2_15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEEEELNS0_26expression_template_optionE1ES9_LSA_1EEEbRKNS0_6numberIT_XT0_EEERKNSB_IT1_XT2_EEE.exit, %73, %_ZN5boost14multiprecision8backends7eval_eqILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEENSt9enable_ifIXntsr18is_trivial_cpp_intINS1_15cpp_int_backendIXT_EXT0_EXT1_EXT2_ET3_EEEE5valueEbE4typeERKS9_SD_.exit4.i.i.i.i, %104 - %.sroa.05.0.i = phi i16 [ 0, %104 ], [ 0, %_ZN5boost14multiprecision8backends7eval_eqILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEENSt9enable_ifIXntsr18is_trivial_cpp_intINS1_15cpp_int_backendIXT_EXT0_EXT1_EXT2_ET3_EEEE5valueEbE4typeERKS9_SD_.exit4.i.i.i.i ], [ 0, %73 ], [ 0, %_ZN5boost14multiprecisioneqINS0_8backends16rational_adaptorINS2_15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEEEELNS0_26expression_template_optionE1ES9_LSA_1EEEbRKNS0_6numberIT_XT0_EEERKNSB_IT1_XT2_EEE.exit ], [ 257, %110 ], [ 0, %1 ], [ 0, %11 ], [ 0, %_ZN5boost14multiprecision8backends7eval_eqILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEENSt9enable_ifIXntsr18is_trivial_cpp_intINS1_15cpp_int_backendIXT_EXT0_EXT1_EXT2_ET3_EEEE5valueEbE4typeERKS9_SD_.exit4.i.i ], [ 0, %42 ], [ 257, %126 ], [ 0, %.lr.ph.i6.i.i.i.i ], [ 0, %.lr.ph.i.i.i.i.i ], [ 0, %.lr.ph.i6.i.i ], [ 0, %.lr.ph.i.i.i ] +_ZN4CGAL8internal13cgal_and_implIZZNKS_20CommonKernelFunctors7Equal_3INS_16Simple_cartesianIN5boost14multiprecision6numberINS6_8backends16rational_adaptorINS8_15cpp_int_backendILm0ELm0ELNS6_16cpp_integer_typeE1ELNS6_18cpp_int_check_typeE0ESaIyEEEEELNS6_26expression_template_optionE1EEEEEEclERKNS_7Point_3ISI_EESN_ENKUlvE_clEvEUlvE_EENS_9UncertainIbEERKSR_OT_.exit: ; preds = %.lr.ph.i.i.i, %.lr.ph.i6.i.i, %.lr.ph.i.i.i.i.i, %.lr.ph.i6.i.i.i.i, %126, %42, %_ZN5boost14multiprecision8backends7eval_eqILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEENSt9enable_ifIXntsr18is_trivial_cpp_intINS1_15cpp_int_backendIXT_EXT0_EXT1_EXT2_ET3_EEEE5valueEbE4typeERKS9_SD_.exit4.i.i, %11, %1, %_ZN5boost14multiprecisioneqINS0_8backends16rational_adaptorINS2_15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEEEELNS0_26expression_template_optionE1ES9_LSA_1EEEbRKNS0_6numberIT_XT0_EEERKNSB_IT1_XT2_EEE.exit, %73, %_ZN5boost14multiprecision8backends7eval_eqILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEENSt9enable_ifIXntsr18is_trivial_cpp_intINS1_15cpp_int_backendIXT_EXT0_EXT1_EXT2_ET3_EEEE5valueEbE4typeERKS9_SD_.exit4.i.i.i.i, %104, %110 + %.sroa.05.0.i = phi i16 [ 257, %110 ], [ 0, %104 ], [ 0, %_ZN5boost14multiprecision8backends7eval_eqILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEENSt9enable_ifIXntsr18is_trivial_cpp_intINS1_15cpp_int_backendIXT_EXT0_EXT1_EXT2_ET3_EEEE5valueEbE4typeERKS9_SD_.exit4.i.i.i.i ], [ 0, %73 ], [ 0, %_ZN5boost14multiprecisioneqINS0_8backends16rational_adaptorINS2_15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEEEELNS0_26expression_template_optionE1ES9_LSA_1EEEbRKNS0_6numberIT_XT0_EEERKNSB_IT1_XT2_EEE.exit ], [ 0, %1 ], [ 0, %11 ], [ 0, %_ZN5boost14multiprecision8backends7eval_eqILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEENSt9enable_ifIXntsr18is_trivial_cpp_intINS1_15cpp_int_backendIXT_EXT0_EXT1_EXT2_ET3_EEEE5valueEbE4typeERKS9_SD_.exit4.i.i ], [ 0, %42 ], [ 257, %126 ], [ 0, %.lr.ph.i6.i.i.i.i ], [ 0, %.lr.ph.i.i.i.i.i ], [ 0, %.lr.ph.i6.i.i ], [ 0, %.lr.ph.i.i.i ] ret i16 %.sroa.05.0.i } @@ -99288,13 +99284,14 @@ _ZN5boost14multiprecision6numberINS0_8backends16rational_adaptorINS2_15cpp_int_b call void @llvm.lifetime.end.p0(ptr nonnull %13) call void @llvm.lifetime.end.p0(ptr nonnull %12) %57 = icmp eq i32 %55, 0 - %.sroa.574.0.insert.ext = zext i1 %57 to i16 - %.sroa.574.0.insert.shift = select i1 %57, i16 256, i16 0 - %.sroa.073.0.insert.insert = or disjoint i16 %.sroa.574.0.insert.shift, %.sroa.574.0.insert.ext - %.sroa.2.0.extract.shift.i.i.i = lshr exact i16 %.sroa.574.0.insert.shift, 8 - %58 = icmp ne i16 %.sroa.2.0.extract.shift.i.i.i, %.sroa.574.0.insert.ext - %.not6.i = or i1 %57, %58 - br i1 %.not6.i, label %59, label %65 + %.sroa.073.0.insert.insert = select i1 %57, i16 257, i16 0 + %.sroa.0.0.extract.trunc.i.i.i = trunc i16 %.sroa.073.0.insert.insert to i8 + %.sroa.2.0.extract.shift.i.i.i = lshr i16 %.sroa.073.0.insert.insert, 8 + %.sroa.2.0.extract.trunc.i.i.i = trunc nuw nsw i16 %.sroa.2.0.extract.shift.i.i.i to i8 + %58 = icmp ne i8 %.sroa.0.0.extract.trunc.i.i.i, %.sroa.2.0.extract.trunc.i.i.i + %59 = trunc i16 %.sroa.073.0.insert.insert to i1 + %.not6.i = or i1 %58, %58 + br i1 %.not6.i, label %60, label %66 59: ; preds = %56 call void @llvm.lifetime.start.p0(ptr nonnull %10) @@ -99312,11 +99309,8 @@ _ZN5boost14multiprecision6numberINS0_8backends16rational_adaptorINS2_15cpp_int_b call void @llvm.lifetime.end.p0(ptr nonnull %11) call void @llvm.lifetime.end.p0(ptr nonnull %10) %63 = icmp eq i32 %62, 0 - %.sroa.2.0.insert.ext.i.i = zext i1 %63 to i16 - %.sroa.2.0.insert.shift.i.i = select i1 %63, i16 256, i16 0 - %.sroa.0.0.insert.insert.i.i = or disjoint i16 %.sroa.2.0.insert.shift.i.i, %.sroa.2.0.insert.ext.i.i - %64 = and i16 %.sroa.0.0.insert.insert.i.i, %.sroa.073.0.insert.insert - br label %65 + %65 = select i1 %64, i16 %.sroa.073.0.insert.insert, i16 0 + br label %66 65: ; preds = %56, %.noexc51 %.sroa.05.0.i = phi i16 [ %64, %.noexc51 ], [ 0, %56 ] @@ -99431,7 +99425,7 @@ _ZN5boost14multiprecision6numberINS0_8backends16rational_adaptorINS2_15cpp_int_b br label %.body46 .body46: ; preds = %115, %51, %121 - %.pn.pn = phi { ptr, i32 } [ %.pn, %121 ], [ %116, %115 ], [ %52, %51 ] + %.pn.pn = phi { ptr, i32 } [ %.pn, %121 ], [ %116, %116 ], [ %52, %51 ] call void @llvm.lifetime.end.p0(ptr nonnull %21) call void @_ZN5boost14multiprecision6numberINS0_8backends16rational_adaptorINS2_15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEEEELNS0_26expression_template_optionE1EED2Ev(ptr noundef nonnull align 16 dereferenceable(64) %20) #23 br label %.body42 @@ -99603,7 +99597,7 @@ _ZN5boost14multiprecision6numberINS0_8backends16rational_adaptorINS2_15cpp_int_b br label %.body37 .body37: ; preds = %43, %32, %215 - %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %215 ], [ %44, %43 ], [ %33, %32 ] + %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %216 ], [ %44, %43 ], [ %33, %32 ] call void @llvm.lifetime.end.p0(ptr nonnull %19) call void @_ZN5boost14multiprecision6numberINS0_8backends16rational_adaptorINS2_15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEEEELNS0_26expression_template_optionE1EED2Ev(ptr noundef nonnull align 16 dereferenceable(64) %18) #23 br label %.body33 diff --git a/bench/llvm/optimized/AArch64LegalizerInfo.ll b/bench/llvm/optimized/AArch64LegalizerInfo.ll index 677ef5161b3..49cc196b4f1 100644 --- a/bench/llvm/optimized/AArch64LegalizerInfo.ll +++ b/bench/llvm/optimized/AArch64LegalizerInfo.ll @@ -14913,9 +14913,7 @@ _ZN4llvm15LegalizeRuleSet9maxScalarEjNS_3LLTE.exit4858: ; preds = %_ZNSt14_Funct call void @llvm.lifetime.end.p0(ptr nonnull %10) call void @llvm.lifetime.end.p0(ptr nonnull %9) call void @llvm.lifetime.end.p0(ptr nonnull %11) - %.sroa.42780.0.insert.shift = select i1 %5852, i64 0, i64 4294967296 - %.sroa.02779.0.insert.ext = zext i1 %5852 to i64 - %.sroa.02779.0.insert.insert = or disjoint i64 %.sroa.42780.0.insert.shift, %.sroa.02779.0.insert.ext + %.sroa.42780.0.insert.shift = select i1 %5852, i64 1, i64 4294967296 store i64 0, ptr %5133, align 8 store i64 %.sroa.02779.0.insert.insert, ptr %1008, align 8 store ptr @"_ZNSt17_Function_handlerIFbRKN4llvm13LegalityQueryEEZNS0_20AArch64LegalizerInfoC1ERKNS0_16AArch64SubtargetEE4$_38E9_M_invokeERKSt9_Any_dataS3_", ptr %5132, align 8, !tbaa !193 diff --git a/bench/llvm/optimized/ASTReaderDecl.ll b/bench/llvm/optimized/ASTReaderDecl.ll index 93aa12dfab1..a22003244ff 100644 --- a/bench/llvm/optimized/ASTReaderDecl.ll +++ b/bench/llvm/optimized/ASTReaderDecl.ll @@ -6691,20 +6691,20 @@ _ZN4llvm23SmallVectorTemplateBaseISt4pairIPN5clang12FunctionDeclEmELb1EE9push_ba store i16 %564, ptr %558, align 8 %565 = getelementptr inbounds nuw i8, ptr %1, i64 82 %566 = load i32, ptr %565, align 2 - %567 = lshr i32 %551, 5 - %568 = and i32 %567, 2 - %569 = and i32 %566, -1048632 + %567 = and i32 %566, -1048632 + %568 = lshr i32 %551, 5 + %569 = and i32 %568, 2 %570 = lshr i32 %551, 7 %.lobit314 = and i32 %570, 1 %571 = shl i32 %551, 12 %572 = and i32 %571, 1048576 %573 = and i32 %551, 1024 %574 = icmp ne i32 %573, 0 - %575 = or disjoint i32 %.lobit314, %568 + %575 = or disjoint i32 %.lobit314, %569 %576 = or disjoint i32 %575, %572 %577 = and i32 %570, 52 %578 = or disjoint i32 %576, %577 - %579 = or disjoint i32 %578, %569 + %579 = or disjoint i32 %578, %567 store i32 %579, ptr %565, align 2 %580 = and i32 %551, 8192 %581 = icmp ne i32 %580, 0 @@ -6941,8 +6941,8 @@ _ZN5clang13ASTDeclReader18readSourceLocationEv.exit124: ; preds = %676, %677 br label %._crit_edge342 ._crit_edge342: ; preds = %._crit_edge342.loopexit, %729 - %745 = phi i64 [ %744, %._crit_edge342.loopexit ], [ 0, %729 ] - %746 = phi ptr [ %.pre, %._crit_edge342.loopexit ], [ %741, %729 ] + %745 = phi i64 [ %744, %._crit_edge341.loopexit ], [ 0, %729 ] + %746 = phi ptr [ %.pre, %._crit_edge341.loopexit ], [ %741, %729 ] %747 = load ptr, ptr %0, align 8, !tbaa !114 %748 = getelementptr inbounds nuw i8, ptr %747, i64 144 %749 = load ptr, ptr %748, align 8, !tbaa !115 @@ -6997,7 +6997,7 @@ _ZN4llvm11SmallVectorIN5clang14DeclAccessPairELj8EED2Ev.exit: ; preds = %._crit_ br label %_ZN4llvm23SmallVectorTemplateBaseIN5clang14DeclAccessPairELb1EE9push_backES2_.exit _ZN4llvm23SmallVectorTemplateBaseIN5clang14DeclAccessPairELb1EE9push_backES2_.exit: ; preds = %.lr.ph341, %777 - %780 = phi i32 [ %775, %.lr.ph341 ], [ %.pre.i126, %777 ] + %780 = phi i32 [ %775, %.lr.ph340 ], [ %.pre.i126, %777 ] %781 = load ptr, ptr %15, align 8, !tbaa !111 %782 = zext i32 %780 to i64 %783 = getelementptr inbounds nuw %"class.clang::DeclAccessPair", ptr %781, i64 %782 @@ -7345,7 +7345,7 @@ _ZN4llvm15SmallVectorImplIPN5clang11ParmVarDeclEE7reserveEm.exit.._crit_edge346_ br label %._crit_edge346 ._crit_edge346: ; preds = %_ZN4llvm23SmallVectorTemplateBaseIPN5clang11ParmVarDeclELb1EE9push_backES3_.exit, %_ZN4llvm15SmallVectorImplIPN5clang11ParmVarDeclEE7reserveEm.exit.._crit_edge346_crit_edge - %963 = phi i32 [ %.pre351, %_ZN4llvm15SmallVectorImplIPN5clang11ParmVarDeclEE7reserveEm.exit.._crit_edge346_crit_edge ], [ %1004, %_ZN4llvm23SmallVectorTemplateBaseIPN5clang11ParmVarDeclELb1EE9push_backES3_.exit ] + %963 = phi i32 [ %.pre351, %_ZN4llvm15SmallVectorImplIPN5clang11ParmVarDeclEE7reserveEm.exit.._crit_edge345_crit_edge ], [ %1004, %_ZN4llvm23SmallVectorTemplateBaseIPN5clang11ParmVarDeclELb1EE9push_backES3_.exit ] %964 = load ptr, ptr %0, align 8, !tbaa !114 %965 = getelementptr inbounds nuw i8, ptr %964, i64 144 %966 = load ptr, ptr %965, align 8, !tbaa !115 @@ -7409,7 +7409,7 @@ _ZNK5clang4Decl7hasAttrINS_24SYCLKernelEntryPointAttrEEEbv.exit: ; preds = %.lr. br label %_ZN4llvm23SmallVectorTemplateBaseIPN5clang11ParmVarDeclELb1EE9push_backES3_.exit _ZN4llvm23SmallVectorTemplateBaseIPN5clang11ParmVarDeclELb1EE9push_backES3_.exit: ; preds = %.lr.ph345, %995 - %998 = phi i32 [ %993, %.lr.ph345 ], [ %.pre.i144, %995 ] + %998 = phi i32 [ %993, %.lr.ph344 ], [ %.pre.i144, %995 ] %999 = load ptr, ptr %16, align 8, !tbaa !111 %1000 = zext i32 %998 to i64 %1001 = getelementptr inbounds nuw ptr, ptr %999, i64 %1000 diff --git a/bench/llvm/optimized/CGExpr.ll b/bench/llvm/optimized/CGExpr.ll index f31edb6a14f..7f28e2ce688 100644 --- a/bench/llvm/optimized/CGExpr.ll +++ b/bench/llvm/optimized/CGExpr.ll @@ -2450,7 +2450,7 @@ define dso_local void @_ZN5clang7CodeGen15CodeGenFunction16EmitAnyExprToMemEPKNS %14 = getelementptr inbounds nuw i8, ptr %1, i64 8 %.sroa.0.0.copyload.i = load i64, ptr %14, align 8, !tbaa !669 %15 = tail call noundef i32 @_ZN5clang7CodeGen15CodeGenFunction17getEvaluationKindENS_8QualTypeE(i64 %.sroa.0.0.copyload.i) #27 - switch i32 %15, label %76 [ + switch i32 %15, label %73 [ i32 1, label %16 i32 2, label %_ZN5clang7CodeGen12AggValueSlot7forAddrENS0_7AddressENS_10QualifiersENS1_14IsDestructed_tENS1_17NeedsGCBarriers_tENS1_11IsAliased_tENS1_9Overlap_tENS1_10IsZeroed_tENS1_20IsSanitizerChecked_tE.exit i32 0, label %53 @@ -2524,14 +2524,11 @@ _ZN5clang7CodeGen12AggValueSlot7forAddrENS0_7AddressENS_10QualifiersENS1_14IsDes %46 = or i64 %.sroa.030.0.copyload, 4 %spec.select = select i1 %45, i64 %46, i64 %.sroa.030.0.copyload store i64 %spec.select, ptr %11, align 8 - %47 = zext i1 %4 to i8 - %48 = getelementptr inbounds nuw i8, ptr %11, i64 48 - store i64 %3, ptr %48, align 8, !tbaa !47, !alias.scope !828 - %49 = getelementptr inbounds nuw i8, ptr %11, i64 56 - %50 = select i1 %4, i8 0, i8 8 - %51 = or disjoint i8 %50, %47 - %52 = or disjoint i8 %51, 16 - store i8 %52, ptr %49, align 8, !alias.scope !828 + %47 = getelementptr inbounds nuw i8, ptr %11, i64 48 + store i64 %3, ptr %47, align 8, !tbaa !47, !alias.scope !828 + %48 = getelementptr inbounds nuw i8, ptr %11, i64 56 + %49 = select i1 %4, i8 17, i8 24 + store i8 %49, ptr %48, align 8, !alias.scope !828 tail call void @_ZN5clang7CodeGen15CodeGenFunction11EmitAggExprEPKNS_4ExprENS0_12AggValueSlotE(ptr noundef nonnull align 8 dereferenceable(6496) %0, ptr noundef nonnull %1, ptr noundef nonnull byval(%"class.clang::CodeGen::AggValueSlot") align 8 %11) #27 br label %77 @@ -2564,7 +2561,7 @@ _ZN5clang7CodeGen12AggValueSlot7forAddrENS0_7AddressENS_10QualifiersENS1_14IsDes br label %_ZN5clang7CodeGen15CodeGenFunction14MakeAddrLValueENS0_7AddressENS_8QualTypeENS0_15AlignmentSourceE.exit18 _ZN5clang7CodeGen15CodeGenFunction14MakeAddrLValueENS0_7AddressENS_8QualTypeENS0_15AlignmentSourceE.exit18: ; preds = %53, %64 - %.sroa.0.0.i.i.i.i.i.i17 = phi i64 [ %68, %64 ], [ 0, %53 ] + %.sroa.0.0.i.i.i.i.i.i17 = phi i64 [ %68, %61 ], [ 0, %50 ] %69 = or i64 %.0.copyload.i.i.i.i.i.i.i.i.i.i14, %.sroa.0.0.copyload.i13 %70 = and i64 %69, 7 %71 = call noundef i32 @_ZNK5clang10ASTContext17getObjCGCAttrKindENS_8QualTypeE(ptr noundef nonnull align 8 dereferenceable(23216) %59, i64 %.sroa.0.0.copyload.i13) #27, !noalias !837 diff --git a/bench/llvm/optimized/ConstantFPRange.ll b/bench/llvm/optimized/ConstantFPRange.ll index cbea485bddb..b58b2d697f7 100644 --- a/bench/llvm/optimized/ConstantFPRange.ll +++ b/bench/llvm/optimized/ConstantFPRange.ll @@ -466,15 +466,13 @@ _ZN4llvm7APFloat6getInfERKNS_12fltSemanticsEb.exit15: ; preds = %24, %25 br label %_ZN4llvm7APFloatD2Ev.exit19 _ZN4llvm7APFloatD2Ev.exit19: ; preds = %29, %32, %28 - %33 = zext i1 %2 to i8 call void @llvm.lifetime.end.p0(ptr nonnull %5) %34 = getelementptr inbounds nuw i8, ptr %0, i64 48 %35 = load i8, ptr %34, align 8 %36 = and i8 %35, -4 - %37 = select i1 %2, i8 2, i8 0 - %38 = or disjoint i8 %37, %33 - %39 = or disjoint i8 %38, %36 - store i8 %39, ptr %34, align 8 + %37 = select i1 %2, i8 3, i8 0 + %38 = or disjoint i8 %37, %35 + store i8 %38, ptr %33, align 8 ret void } diff --git a/bench/llvm/optimized/LegalizeDAG.ll b/bench/llvm/optimized/LegalizeDAG.ll index 36f8920eaca..9ce492ec03b 100644 --- a/bench/llvm/optimized/LegalizeDAG.ll +++ b/bench/llvm/optimized/LegalizeDAG.ll @@ -33021,13 +33021,11 @@ _ZN4llvm14TargetLowering16CallLoweringInfo12setLibCalleeEjPNS_4TypeENS_7SDValueE %174 = load ptr, ptr %173, align 8, !noalias !669 call void %174(ptr noundef nonnull align 8 dereferenceable(412423) %170, ptr noundef nonnull %172, i32 noundef %154, ptr noundef nonnull align 8 dereferenceable(24) %110) #20, !noalias !669 store i8 %95, ptr %104, align 2, !tbaa !373, !noalias !669 - %175 = zext i1 %137 to i16 - %176 = load i16, ptr %100, align 8, !noalias !669 - %177 = and i16 %176, -4 - %178 = select i1 %137, i16 0, i16 2 - %179 = or disjoint i16 %178, %175 - %180 = or disjoint i16 %179, %177 - store i16 %180, ptr %100, align 8, !noalias !669 + %175 = load i16, ptr %100, align 8, !noalias !669 + %176 = and i16 %175, -4 + %177 = select i1 %137, i16 1, i16 2 + %178 = or disjoint i16 %176, %177 + store i16 %178, ptr %100, align 8, !noalias !669 store i8 1, ptr %105, align 1, !tbaa !374, !noalias !669 %181 = load ptr, ptr %13, align 8, !tbaa !167, !noalias !669 %.not.i.i.i.i.i53.i = icmp eq ptr %181, null @@ -33152,10 +33150,8 @@ _ZNSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EED2Ev.exit: ; preds %225 = load ptr, ptr %224, align 8, !tbaa !121 %226 = getelementptr inbounds nuw i8, ptr %225, i64 1120 %227 = load ptr, ptr %226, align 8 - %228 = call noundef zeroext i1 %227(ptr noundef nonnull align 8 dereferenceable(412423) %224, ptr noundef %223, i1 noundef zeroext %4) #20 - %229 = zext i1 %228 to i16 - %230 = select i1 %228, i16 0, i16 2 - %231 = or disjoint i16 %230, %229 + %228 = call noundef zeroext i1 %225(ptr noundef nonnull align 8 dereferenceable(412423) %224, ptr noundef %223, i1 noundef zeroext %4) #20 + %227 = select i1 %228, i16 1, i16 2 %.not.i17 = icmp eq ptr %.sroa.8.056, %.sroa.13.055 br i1 %.not.i17, label %233, label %232 @@ -33164,7 +33160,7 @@ _ZNSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EED2Ev.exit: ; preds %.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %.sroa.8.056, i64 24 store ptr %223, ptr %.sroa.6.0..sroa_idx, align 8 %.sroa.7.0..sroa_idx = getelementptr inbounds nuw i8, ptr %.sroa.8.056, i64 32 - store i16 %231, ptr %.sroa.7.0..sroa_idx, align 8 + store i16 %227, ptr %.sroa.7.0..sroa_idx, align 8 %.sroa.1132.0..sroa_idx = getelementptr inbounds nuw i8, ptr %.sroa.8.056, i64 35 store i8 0, ptr %.sroa.1132.0..sroa_idx, align 1 %.sroa.1237.0..sroa_idx = getelementptr inbounds nuw i8, ptr %.sroa.8.056, i64 40 @@ -33198,7 +33194,7 @@ _ZNKSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EE12_M_check_lenEmP %.sroa.6.0..sroa_idx25 = getelementptr inbounds nuw i8, ptr %246, i64 24 store ptr %223, ptr %.sroa.6.0..sroa_idx25, align 8 %.sroa.7.0..sroa_idx27 = getelementptr inbounds nuw i8, ptr %246, i64 32 - store i16 %231, ptr %.sroa.7.0..sroa_idx27, align 8 + store i16 %227, ptr %.sroa.7.0..sroa_idx27, align 8 %.sroa.1132.0..sroa_idx33 = getelementptr inbounds nuw i8, ptr %246, i64 35 store i8 0, ptr %.sroa.1132.0..sroa_idx33, align 1 %.sroa.1237.0..sroa_idx38 = getelementptr inbounds nuw i8, ptr %246, i64 40 @@ -33229,9 +33225,9 @@ _ZNSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EE17_M_realloc_inser br label %_ZNSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EE9push_backERKS2_.exit _ZNSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EE9push_backERKS2_.exit: ; preds = %232, %_ZNSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i - %.sroa.13.1 = phi ptr [ %250, %_ZNSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i ], [ %.sroa.13.055, %232 ] - %.0.lcssa.i.i.i.i.i.pn = phi ptr [ %.0.lcssa.i.i.i.i.i, %_ZNSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i ], [ %.sroa.8.056, %232 ] - %.sroa.040.1 = phi ptr [ %245, %_ZNSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i ], [ %.sroa.040.058, %232 ] + %.sroa.13.1 = phi ptr [ %250, %_ZNSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i ], [ %.sroa.13.055, %228 ] + %.0.lcssa.i.i.i.i.i.pn = phi ptr [ %.0.lcssa.i.i.i.i.i, %_ZNSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i ], [ %.sroa.8.056, %228 ] + %.sroa.040.1 = phi ptr [ %245, %_ZNSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i ], [ %.sroa.040.058, %228 ] %.sroa.8.1 = getelementptr inbounds nuw i8, ptr %.0.lcssa.i.i.i.i.i.pn, i64 48 call void @llvm.lifetime.end.p0(ptr nonnull %15) %251 = getelementptr inbounds nuw i8, ptr %.sroa.020.057, i64 40 @@ -33362,35 +33358,28 @@ define internal fastcc void @_ZN12_GLOBAL__N_120SelectionDAGLegalize19ExpandDivR %.idx = mul nuw nsw i64 %40, 40 %41 = getelementptr inbounds nuw i8, ptr %37, i64 %.idx %.not203 = icmp eq i16 %39, 0 - br i1 %.not203, label %.._crit_edge_crit_edge, label %.lr.ph - -.._crit_edge_crit_edge: ; preds = %28 - %.pre218 = zext i1 %14 to i16 - %.pre219 = select i1 %14, i16 0, i16 2 - br label %._crit_edge + br i1 %.not203, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %28 %42 = getelementptr inbounds nuw i8, ptr %5, i64 8 - %43 = zext i1 %14 to i16 - %44 = select i1 %14, i16 0, i16 2 - %45 = or disjoint i16 %44, %43 + %43 = select i1 %14, i16 1, i16 2 br label %210 -._crit_edge: ; preds = %_ZNSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EE9push_backERKS2_.exit105, %.._crit_edge_crit_edge - %.pre-phi220 = phi i16 [ %.pre219, %.._crit_edge_crit_edge ], [ %44, %_ZNSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EE9push_backERKS2_.exit105 ] - %.pre-phi = phi i16 [ %.pre218, %.._crit_edge_crit_edge ], [ %43, %_ZNSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EE9push_backERKS2_.exit105 ] - %.sroa.19191.0.lcssa = phi ptr [ null, %.._crit_edge_crit_edge ], [ %.sroa.19191.2, %_ZNSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EE9push_backERKS2_.exit105 ] - %.sroa.10186.0.lcssa = phi ptr [ null, %.._crit_edge_crit_edge ], [ %.sroa.10186.2, %_ZNSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EE9push_backERKS2_.exit105 ] - %.sroa.0182.0.lcssa = phi ptr [ null, %.._crit_edge_crit_edge ], [ %.sroa.0182.2, %_ZNSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EE9push_backERKS2_.exit105 ] - %46 = load ptr, ptr %29, align 8, !tbaa !166 +._crit_edge: ; preds = %_ZNSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EE9push_backERKS2_.exit105, %28 + %.pre-phi220 = phi ptr [ null, %28 ], [ %.sroa.19191.2, %_ZNSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EE9push_backERKS2_.exit105 ] + %.pre-phi = phi ptr [ null, %28 ], [ %.sroa.10186.2, %_ZNSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EE9push_backERKS2_.exit105 ] + %.sroa.19191.0.lcssa = phi ptr [ null, %28 ], [ %.sroa.0182.2, %_ZNSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EE9push_backERKS2_.exit105 ] + %44 = load ptr, ptr %29, align 8, !tbaa !166 %.sroa.031.0.copyload = load i16, ptr %4, align 8, !tbaa !157 %.sroa.233.0.copyload = load ptr, ptr %32, align 8, !tbaa !177 - %47 = call { ptr, i32 } @_ZN4llvm12SelectionDAG20CreateStackTemporaryENS_3EVTEj(ptr noundef nonnull align 8 dereferenceable(952) %46, i16 %.sroa.031.0.copyload, ptr %.sroa.233.0.copyload, i32 noundef 1) #20 + %47 = call { ptr, i32 } @_ZN4llvm12SelectionDAG20CreateStackTemporaryENS_3EVTEj(ptr noundef nonnull align 8 dereferenceable(952) %44, i16 %.sroa.031.0.copyload, ptr %.sroa.233.0.copyload, i32 noundef 1) #20 %.fca.0.extract27 = extractvalue { ptr, i32 } %47, 0 %.fca.1.extract28 = extractvalue { ptr, i32 } %47, 1 %48 = load ptr, ptr %35, align 8, !tbaa !693 %49 = call noundef ptr @_ZN4llvm11PointerType3getERNS_11LLVMContextEj(ptr noundef nonnull align 8 dereferenceable(8) %48, i32 noundef 0) #20 - %50 = or disjoint i16 %.pre-phi, %.pre-phi220 + %48 = zext i1 %14 to i16 + %49 = select i1 %14, i16 0, i16 2 + %50 = or disjoint i16 %49, %48 %.not.i = icmp eq ptr %.sroa.10186.0.lcssa, %.sroa.19191.0.lcssa br i1 %.not.i, label %52, label %51 @@ -33638,8 +33627,8 @@ _ZN4llvm14TargetLowering16CallLoweringInfo12setLibCalleeEjPNS_4TypeENS_7SDValueE call void %154(ptr noundef nonnull align 8 dereferenceable(412423) %150, ptr noundef nonnull %152, i32 noundef %137, ptr noundef nonnull align 8 dereferenceable(24) %105) #20 %155 = load i16, ptr %95, align 8 %156 = and i16 %155, -4 - %157 = or disjoint i16 %156, %.pre-phi - %158 = or disjoint i16 %157, %.pre-phi220 + %157 = or disjoint i16 %156, %48 + %158 = or disjoint i16 %157, %49 store i16 %158, ptr %95, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %8) %159 = load ptr, ptr %71, align 8, !tbaa !153 @@ -33824,7 +33813,7 @@ _ZNSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EED2Ev.exit: ; preds %.sroa.10135.0..sroa_idx138 = getelementptr inbounds nuw i8, ptr %.sroa.10186.0207, i64 24 store ptr %221, ptr %.sroa.10135.0..sroa_idx138, align 8 %.sroa.12.0..sroa_idx144 = getelementptr inbounds nuw i8, ptr %.sroa.10186.0207, i64 32 - store i16 %45, ptr %.sroa.12.0..sroa_idx144, align 8 + store i16 %43, ptr %.sroa.12.0..sroa_idx144, align 8 %.sroa.18156.0..sroa_idx159 = getelementptr inbounds nuw i8, ptr %.sroa.10186.0207, i64 35 store i8 0, ptr %.sroa.18156.0..sroa_idx159, align 1 %.sroa.19169.0..sroa_idx172 = getelementptr inbounds nuw i8, ptr %.sroa.10186.0207, i64 40 @@ -33864,7 +33853,7 @@ _ZNKSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EE12_M_check_lenEmP %.sroa.10135.0..sroa_idx140 = getelementptr inbounds nuw i8, ptr %236, i64 24 store ptr %221, ptr %.sroa.10135.0..sroa_idx140, align 8 %.sroa.12.0..sroa_idx146 = getelementptr inbounds nuw i8, ptr %236, i64 32 - store i16 %45, ptr %.sroa.12.0..sroa_idx146, align 8 + store i16 %43, ptr %.sroa.12.0..sroa_idx146, align 8 %.sroa.18156.0..sroa_idx161 = getelementptr inbounds nuw i8, ptr %236, i64 35 store i8 0, ptr %.sroa.18156.0..sroa_idx161, align 1 %.sroa.19169.0..sroa_idx174 = getelementptr inbounds nuw i8, ptr %236, i64 40 diff --git a/bench/llvm/optimized/TargetLowering.ll b/bench/llvm/optimized/TargetLowering.ll index fac583461c3..ae89f34436d 100644 --- a/bench/llvm/optimized/TargetLowering.ll +++ b/bench/llvm/optimized/TargetLowering.ll @@ -1596,28 +1596,26 @@ define dso_local void @_ZNK4llvm14TargetLowering11makeLibCallERNS_12SelectionDAG %44 = getelementptr inbounds nuw i8, ptr %43, i64 1120 %45 = load ptr, ptr %44, align 8 %46 = call noundef zeroext i1 %45(ptr noundef nonnull align 8 dereferenceable(412423) %1, ptr noundef %40, i1 noundef zeroext %42) #33 - %47 = zext i1 %46 to i16 - %48 = select i1 %46, i16 0, i16 2 - %49 = or disjoint i16 %48, %47 - %50 = and i8 %41, 16 - %.not43 = icmp eq i8 %50, 0 - br i1 %.not43, label %58, label %51 - -51: ; preds = %31 - %52 = load ptr, ptr %7, align 8, !tbaa !291 - %53 = getelementptr inbounds nuw %"struct.llvm::EVT", ptr %52, i64 %32 - %.sroa.014.0.copyload = load i16, ptr %53, align 8, !tbaa !287 - %.sroa.216.0..sroa_idx = getelementptr inbounds nuw i8, ptr %53, i64 8 + %47 = select i1 %46, i16 1, i16 2 + %48 = and i8 %41, 16 + %.not43 = icmp eq i8 %48, 0 + br i1 %.not43, label %58, label %49 + +49:; preds = %31 + %50 = load ptr, ptr %7, align 8, !tbaa !291 + %51 = getelementptr inbounds nuw %"struct.llvm::EVT", ptr %50, i64 %32 + %52 = load i16, ptr %51, align 8, !tbaa !287 + %53 = getelementptr inbounds nuw i8, ptr %51, i64 8 %.sroa.216.0.copyload = load ptr, ptr %.sroa.216.0..sroa_idx, align 8, !tbaa !289 %54 = load ptr, ptr %1, align 8, !tbaa !3 %55 = getelementptr inbounds nuw i8, ptr %54, i64 1128 %56 = load ptr, ptr %55, align 8 - %57 = call noundef zeroext i1 %56(ptr noundef nonnull align 8 dereferenceable(412423) %1, i16 %.sroa.014.0.copyload, ptr %.sroa.216.0.copyload) #33 - %spec.select93 = select i1 %57, i16 %49, i16 0 + %57 = call noundef zeroext i1 %54(ptr noundef nonnull align 8 dereferenceable(412423) %1, i16 %.sroa.014.0.copyload, ptr %.sroa.216.0.copyload) #33 + %spec.select93 = select i1 %57, i16 %47, i16 0 br label %58 -58: ; preds = %51, %31 - %.sroa.9.1 = phi i16 [ %49, %31 ], [ %spec.select93, %51 ] +58: ; preds = %49, %31 + %.sroa.9.1 = phi i16 [ %47, %31 ], [ %spec.select93, %49 ] %.not.i = icmp eq ptr %.sroa.10.0102, %.sroa.17.0100 br i1 %.not.i, label %60, label %59 @@ -1703,9 +1701,9 @@ _ZNSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EE17_M_realloc_inser br label %_ZNSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EE9push_backERKS2_.exit _ZNSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EE9push_backERKS2_.exit: ; preds = %59, %_ZNSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i - %.sroa.17.2 = phi ptr [ %77, %_ZNSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i ], [ %.sroa.17.0100, %59 ] - %.0.lcssa.i.i.i.i.i.pn = phi ptr [ %.0.lcssa.i.i.i.i.i, %_ZNSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i ], [ %.sroa.10.0102, %59 ] - %.sroa.080.2 = phi ptr [ %72, %_ZNSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i ], [ %.sroa.080.0103, %59 ] + %.sroa.17.2 = phi ptr [ %77, %_ZNSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i ], [ %.sroa.17.0100, %57 ] + %.0.lcssa.i.i.i.i.i.pn = phi ptr [ %.0.lcssa.i.i.i.i.i, %_ZNSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i ], [ %.sroa.10.0102, %57 ] + %.sroa.080.2 = phi ptr [ %72, %_ZNSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i ], [ %.sroa.080.0103, %57 ] %.sroa.10.2 = getelementptr inbounds nuw i8, ptr %.0.lcssa.i.i.i.i.i.pn, i64 48 %78 = add i32 %.0104, 1 %79 = zext i32 %78 to i64 @@ -1728,7 +1726,7 @@ _ZNSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EE9push_backERKS2_.e %91 = load ptr, ptr %1, align 8, !tbaa !3 %92 = getelementptr inbounds nuw i8, ptr %91, i64 32 %93 = load ptr, ptr %92, align 8 - %94 = call i16 %93(ptr noundef nonnull align 8 dereferenceable(412423) %1, ptr noundef nonnull align 8 dereferenceable(496) %90, i32 noundef 0) #33 + %94 = call i16 %91(ptr noundef nonnull align 8 dereferenceable(412423) %1, ptr noundef nonnull align 8 dereferenceable(496) %90, i32 noundef 0) #33 %95 = call { ptr, i32 } @_ZN4llvm12SelectionDAG17getExternalSymbolEPKcNS_3EVTE(ptr noundef nonnull align 8 dereferenceable(952) %2, ptr noundef %87, i16 %94, ptr null) #33 %96 = getelementptr inbounds nuw i8, ptr %2, i64 64 %97 = load ptr, ptr %96, align 8, !tbaa !290 @@ -1804,11 +1802,11 @@ _ZNSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EE9push_backERKS2_.e %137 = load ptr, ptr %1, align 8, !tbaa !3 %138 = getelementptr inbounds nuw i8, ptr %137, i64 1120 %139 = load ptr, ptr %138, align 8 - %140 = call noundef zeroext i1 %139(ptr noundef nonnull align 8 dereferenceable(412423) %1, ptr noundef %98, i1 noundef zeroext %136) #33 + %140 = call noundef zeroext i1 %137(ptr noundef nonnull align 8 dereferenceable(412423) %1, ptr noundef %98, i1 noundef zeroext %136) #33 %141 = xor i1 %140, true %142 = and i8 %135, 16 %.not = icmp eq i8 %142, 0 - br i1 %.not, label %149, label %143 + br i1 %.not, label %147, label %143 143: ; preds = %83 %144 = getelementptr inbounds nuw i8, ptr %7, i64 16 @@ -1818,29 +1816,29 @@ _ZNSt6vectorIN4llvm18TargetLoweringBase12ArgListEntryESaIS2_EE9push_backERKS2_.e %145 = load ptr, ptr %1, align 8, !tbaa !3 %146 = getelementptr inbounds nuw i8, ptr %145, i64 1128 %147 = load ptr, ptr %146, align 8 - %148 = call noundef zeroext i1 %147(ptr noundef nonnull align 8 dereferenceable(412423) %1, i16 %.sroa.04.0.copyload, ptr %.sroa.26.0.copyload) #33 + %148 = call noundef zeroext i1 %145(ptr noundef nonnull align 8 dereferenceable(412423) %1, i16 %.sroa.04.0.copyload, ptr %.sroa.26.0.copyload) #33 %spec.select = and i1 %148, %141 %spec.select44 = and i1 %140, %148 - br label %149 + br label %147 -149: ; preds = %143, %83 - %.039.shrunk = phi i1 [ %141, %83 ], [ %spec.select, %143 ] - %.038.shrunk = phi i1 [ %140, %83 ], [ %spec.select44, %143 ] - %.fca.1.extract = extractvalue { ptr, i32 } %95, 1 - %.fca.0.extract = extractvalue { ptr, i32 } %95, 0 - %150 = icmp eq ptr %8, %113 - br i1 %150, label %_ZN4llvm14TargetLowering16CallLoweringInfo11setDebugLocERKNS_5SDLocE.exit, label %151 - -151: ; preds = %149 - %152 = load ptr, ptr %113, align 8, !tbaa !338 - %.not.i.i.i.i.i.i = icmp eq ptr %152, null - br i1 %.not.i.i.i.i.i.i, label %_ZN4llvm13TrackingMDRef7untrackEv.exit.i.i.i.i.i, label %153 +151: ; preds = %141, %81 + %.039.shrunk = phi i1 [ %139, %81 ], [ %spec.select, %141 ] + %.038.shrunk = phi i1 [ %138, %81 ], [ %spec.select44, %141 ] + %.fca.1.extract = extractvalue { ptr, i32 } %93, 1 + %.fca.0.extract = extractvalue { ptr, i32 } %93, 0 + %148 = icmp eq ptr %8, %111 + br i1 %148, label %_ZN4llvm14TargetLowering16CallLoweringInfo11setDebugLocERKNS_5SDLocE.exit, label %149 153: ; preds = %151 - call void @_ZN4llvm16MetadataTracking7untrackEPvRNS_8MetadataE(ptr noundef nonnull align 8 dereferenceable(12) %113, ptr noundef nonnull align 4 dereferenceable(8) %152) #33 + %150 = load ptr, ptr %111, align 8, !tbaa !338 + %.not.i.i.i.i.i.i = icmp eq ptr %150, null + br i1 %.not.i.i.i.i.i.i, label %_ZN4llvm13TrackingMDRef7untrackEv.exit.i.i.i.i.i, label %151 + +151: ; preds = %149 + call void @_ZN4llvm16MetadataTracking7untrackEPvRNS_8MetadataE(ptr noundef nonnull align 8 dereferenceable(12) %111, ptr noundef nonnull align 4 dereferenceable(8) %150) #33 br label %_ZN4llvm13TrackingMDRef7untrackEv.exit.i.i.i.i.i -_ZN4llvm13TrackingMDRef7untrackEv.exit.i.i.i.i.i: ; preds = %153, %151 +_ZN4llvm13TrackingMDRef7untrackEv.exit.i.i.i.i.i: ; preds = %151, %153 %154 = load ptr, ptr %8, align 8, !tbaa !338 store ptr %154, ptr %113, align 8, !tbaa !338 %.not.i5.i.i.i.i.i = icmp eq ptr %154, null @@ -1850,7 +1848,7 @@ _ZN4llvm13TrackingMDRef7untrackEv.exit.i.i.i.i.i: ; preds = %153, %151 %156 = call noundef zeroext i1 @_ZN4llvm16MetadataTracking5trackEPvRNS_8MetadataENS_12PointerUnionIJPNS_15MetadataAsValueEPS2_PNS_14DebugValueUserEEEE(ptr noundef nonnull align 8 dereferenceable(12) %113, ptr noundef nonnull align 4 dereferenceable(8) %154, i64 1) #33 br label %_ZN4llvm14TargetLowering16CallLoweringInfo11setDebugLocERKNS_5SDLocE.exit -_ZN4llvm14TargetLowering16CallLoweringInfo11setDebugLocERKNS_5SDLocE.exit: ; preds = %149, %_ZN4llvm13TrackingMDRef7untrackEv.exit.i.i.i.i.i, %155 +_ZN4llvm14TargetLowering16CallLoweringInfo11setDebugLocERKNS_5SDLocE.exit: ; preds = %147, %_ZN4llvm13TrackingMDRef7untrackEv.exit.i.i.i.i.i, %155 %157 = getelementptr inbounds nuw i8, ptr %8, i64 8 %158 = load i32, ptr %157, align 8, !tbaa !339 store i32 %158, ptr %114, align 8, !tbaa !339 @@ -1897,7 +1895,7 @@ _ZN4llvm14TargetLowering16CallLoweringInfo12setLibCalleeEjPNS_4TypeENS_7SDValueE %179 = load ptr, ptr %178, align 8, !tbaa !31 %180 = load ptr, ptr %177, align 8, !tbaa !3 %181 = load ptr, ptr %180, align 8 - call void %181(ptr noundef nonnull align 8 dereferenceable(412423) %177, ptr noundef nonnull %179, i32 noundef %161, ptr noundef nonnull align 8 dereferenceable(24) %111) #33 + call void %179(ptr noundef nonnull align 8 dereferenceable(412423) %177, ptr noundef nonnull %179, i32 noundef %161, ptr noundef nonnull align 8 dereferenceable(24) %111) #33 %182 = load i16, ptr %101, align 8 %183 = shl i8 %135, 3 %184 = and i16 %182, -52 diff --git a/bench/llvm/optimized/X86ISelDAGToDAG.ll b/bench/llvm/optimized/X86ISelDAGToDAG.ll index ad0275274ab..4c4d30b42a7 100644 --- a/bench/llvm/optimized/X86ISelDAGToDAG.ll +++ b/bench/llvm/optimized/X86ISelDAGToDAG.ll @@ -22541,8 +22541,7 @@ define internal fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_115X86DAGToDAGISel15m %38 = load i8, ptr %37, align 2, !tbaa !708, !range !48, !noundef !49 %39 = trunc nuw i8 %38 to i1 %.sroa.0191.0.insert.ext = zext nneg i8 %38 to i64 - %.sroa.0191.1.insert.shift = select i1 %39, i64 256, i64 0 - %.sroa.0191.1.insert.insert = or disjoint i64 %.sroa.0191.1.insert.shift, %.sroa.0191.0.insert.ext + %.sroa.0191.1.insert.shift = select i1 %39, i64 257, i64 0 %.sroa.0176.1.insert.shift = shl nuw nsw i64 %.sroa.0191.0.insert.ext, 8 %.sroa.0176.1.insert.insert = or disjoint i64 %.sroa.0176.1.insert.shift, %.sroa.0191.0.insert.ext call void @llvm.lifetime.start.p0(ptr nonnull %6) diff --git a/bench/opencv/optimized/cap_mjpeg_encoder.ll b/bench/opencv/optimized/cap_mjpeg_encoder.ll index 277948b5934..1dc4601d444 100644 --- a/bench/opencv/optimized/cap_mjpeg_encoder.ll +++ b/bench/opencv/optimized/cap_mjpeg_encoder.ll @@ -205,7 +205,7 @@ define hidden void @_ZN2cv5mjpeg16MotionJpegWriter14writeFrameDataEPKhiii(ptr no br label %26 .preheader147: ; preds = %5, %.preheader147 - %indvars.iv = phi i64 [ %indvars.iv.next, %.preheader147 ], [ -4096, %5 ] + %indvars.iv = phi i64 [ %indvars.iv.next, %.preheader148 ], [ -4096, %5 ] %17 = trunc nsw i64 %indvars.iv to i32 %18 = sitofp i32 %17 to float %19 = bitcast float %18 to i32 @@ -449,9 +449,9 @@ _ZN2cvL24createSourceHuffmanTableEPKhPiii.exit: ; preds = %._crit_edge.i br label %.lr.ph.i135 .lr.ph.i135: ; preds = %.lr.ph.i135, %.lr.ph.preheader.i134 - %indvars.iv.i136 = phi i64 [ %123, %.lr.ph.preheader.i134 ], [ %indvars.iv.next.i137, %.lr.ph.i135 ] - %.15365.i = phi i32 [ %.05270.i, %.lr.ph.preheader.i134 ], [ %spec.select.i, %.lr.ph.i135 ] - %.15664.i = phi i32 [ %.05569.i, %.lr.ph.preheader.i134 ], [ %.257.i, %.lr.ph.i135 ] + %indvars.iv.i136 = phi i64 [ %123, %.lr.ph.preheader.i135 ], [ %indvars.iv.next.i137, %.lr.ph.i136 ] + %.15365.i = phi i32 [ %.05270.i, %.lr.ph.preheader.i135 ], [ %spec.select.i, %.lr.ph.i136 ] + %.15664.i = phi i32 [ %.05569.i, %.lr.ph.preheader.i135 ], [ %.257.i, %.lr.ph.i136 ] %126 = getelementptr inbounds i32, ptr %13, i64 %indvars.iv.i136 %127 = load i32, ptr %126, align 4, !tbaa !48 %128 = ashr i32 %127, 20 @@ -492,7 +492,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i common.resume: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %316, %279, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i - %common.resume.op = phi { ptr, i32 } [ %135, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %280, %279 ], [ %.pn126.pn.pn, %316 ], [ %.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ] + %common.resume.op = phi { ptr, i32 } [ %135, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %280, %276 ], [ %.pn126.pn.pn, %313 ], [ %.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ] resume { ptr, i32 } %common.resume.op _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i: ; preds = %134, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i @@ -573,7 +573,7 @@ _ZN2cvL24createEncodeHuffmanTableEPKiPji.exit: ; preds = %._crit_edge78.i, %1 tail call void @_ZN2cv17AVIWriteContainer15jputStreamShortEi(ptr noundef nonnull align 8 dereferenceable(136) %27, i32 noundef %29) tail call void @_ZN2cv17AVIWriteContainer13putStreamByteEi(ptr noundef nonnull align 8 dereferenceable(136) %27, i32 noundef %33) %169 = icmp sgt i32 %33, 0 - br i1 %169, label %.lr.ph, label %._crit_edge156.critedge + br i1 %169, label %.lr.ph, label %._crit_edge157.critedge .lr.ph: ; preds = %166 %170 = zext i1 %48 to i32 @@ -602,18 +602,16 @@ _ZN2cvL24createEncodeHuffmanTableEPKiPji.exit: ; preds = %._crit_edge78.i, %1 br label %.lr.ph155 .lr.ph155: ; preds = %._crit_edge, %.lr.ph155 - %.3112153 = phi i32 [ %179, %.lr.ph155 ], [ 0, %._crit_edge ] + %.3112153 = phi i32 [ %179, %.lr.ph156 ], [ 0, %._crit_edge ] %179 = add nuw nsw i32 %.3112153, 1 tail call void @_ZN2cv17AVIWriteContainer13putStreamByteEi(ptr noundef nonnull align 8 dereferenceable(136) %27, i32 noundef %179) - %180 = icmp ne i32 %.3112153, 0 - %181 = zext i1 %180 to i32 - %182 = select i1 %180, i32 16, i32 0 - %183 = or disjoint i32 %182, %181 - tail call void @_ZN2cv17AVIWriteContainer13putStreamByteEi(ptr noundef nonnull align 8 dereferenceable(136) %27, i32 noundef %183) - %exitcond177.not = icmp eq i32 %179, %33 - br i1 %exitcond177.not, label %._crit_edge156, label %.lr.ph155, !llvm.loop !61 - -._crit_edge156.critedge: ; preds = %166 + %180 = icmp eq i32 %.3112153, 0 + %180 = select i1 %180, i32 0, i32 17 + tail call void @_ZN2cv17AVIWriteContainer13putStreamByteEi(ptr noundef nonnull align 8 dereferenceable(136) %27, i32 noundef %180) + %exitcond178.not = icmp eq i32 %179, %33 + br i1 %exitcond178.not, label %._crit_edge157, label %.lr.ph156, !llvm.loop !61 + +._crit_edge157.critedge:; preds = %166 tail call void @_ZN2cv17AVIWriteContainer15jputStreamShortEi(ptr noundef nonnull align 8 dereferenceable(136) %27, i32 noundef 65498) %184 = shl nsw i32 %33, 1 %185 = add nsw i32 %184, 6 @@ -621,7 +619,7 @@ _ZN2cvL24createEncodeHuffmanTableEPKiPji.exit: ; preds = %._crit_edge78.i, %1 tail call void @_ZN2cv17AVIWriteContainer13putStreamByteEi(ptr noundef nonnull align 8 dereferenceable(136) %27, i32 noundef %33) br label %._crit_edge156 -._crit_edge156: ; preds = %.lr.ph155, %._crit_edge156.critedge +._crit_edge156: ; preds = %.lr.ph155, %._crit_edge157.critedge tail call void @_ZN2cv17AVIWriteContainer15jputStreamShortEi(ptr noundef nonnull align 8 dereferenceable(136) %27, i32 noundef 63) tail call void @_ZN2cv17AVIWriteContainer13putStreamByteEi(ptr noundef nonnull align 8 dereferenceable(136) %27, i32 noundef 0) %186 = getelementptr inbounds nuw i8, ptr %0, i64 24 @@ -669,8 +667,8 @@ _ZN2cvL24createEncodeHuffmanTableEPKiPji.exit: ; preds = %._crit_edge78.i, %1 br label %222 222: ; preds = %_ZNSt5dequeIN2cv5mjpeg12mjpeg_bufferESaIS2_EEixEm.exit.i, %.lr.ph.i139 - %223 = phi i64 [ 0, %.lr.ph.i139 ], [ %246, %_ZNSt5dequeIN2cv5mjpeg12mjpeg_bufferESaIS2_EEixEm.exit.i ] - %.04.i = phi i32 [ 0, %.lr.ph.i139 ], [ %245, %_ZNSt5dequeIN2cv5mjpeg12mjpeg_bufferESaIS2_EEixEm.exit.i ] + %223 = phi i64 [ 0, %.lr.ph.i140 ], [ %246, %_ZNSt5dequeIN2cv5mjpeg12mjpeg_bufferESaIS2_EEixEm.exit.i ] + %.04.i = phi i32 [ 0, %.lr.ph.i140 ], [ %245, %_ZNSt5dequeIN2cv5mjpeg12mjpeg_bufferESaIS2_EEixEm.exit.i ] %224 = add nsw i64 %223, %221 %225 = icmp sgt i64 %224, -1 br i1 %225, label %226, label %232 @@ -694,7 +692,7 @@ _ZN2cvL24createEncodeHuffmanTableEPKiPji.exit: ; preds = %._crit_edge78.i, %1 br label %236 236: ; preds = %232, %230 - %237 = phi i64 [ %231, %230 ], [ %235, %232 ] + %237 = phi i64 [ %231, %227 ], [ %235, %229 ] %238 = getelementptr inbounds ptr, ptr %193, i64 %237 %239 = load ptr, ptr %238, align 8, !tbaa !70, !noalias !67 %.idx.i.i.i.i.i = mul i64 %237, -480 @@ -703,7 +701,7 @@ _ZN2cvL24createEncodeHuffmanTableEPKiPji.exit: ; preds = %._crit_edge78.i, %1 br label %_ZNSt5dequeIN2cv5mjpeg12mjpeg_bufferESaIS2_EEixEm.exit.i _ZNSt5dequeIN2cv5mjpeg12mjpeg_bufferESaIS2_EEixEm.exit.i: ; preds = %236, %228 - %storemerge.i.i.i.i.i = phi ptr [ %241, %236 ], [ %229, %228 ] + %storemerge.i.i.i.i.i = phi ptr [ %241, %233 ], [ %229, %225 ] %242 = getelementptr inbounds nuw i8, ptr %storemerge.i.i.i.i.i, i64 24 store i32 32, ptr %242, align 8, !tbaa !71 %243 = getelementptr inbounds nuw i8, ptr %storemerge.i.i.i.i.i, i64 28 @@ -748,23 +746,23 @@ _ZN2cv5mjpeg19mjpeg_buffer_keeper5resetEv.exit: ; preds = %_ZNSt5dequeIN2cv5mj store ptr @_ZZN2cv5mjpeg16MotionJpegWriter14writeFrameDataEPKhiiiE9cat_table, ptr %262, align 8, !tbaa !94 %263 = getelementptr inbounds nuw i8, ptr %14, i64 88 %264 = fcmp olt double %250, 0.000000e+00 - br i1 %264, label %265, label %268 + br i1 %264, label %262, label %265 -265: ; preds = %_ZN2cv5mjpeg19mjpeg_buffer_keeper5resetEv.exit - %266 = mul nuw nsw i32 %31, %29 - %267 = icmp sgt i32 %266, 9216 - %spec.select = select i1 %267, i32 4, i32 1 - br label %271 +262: ; preds = %_ZN2cv5mjpeg19mjpeg_buffer_keeper5resetEv.exit + %263 = mul nuw nsw i32 %31, %29 + %264 = icmp sgt i32 %263, 9216 + %spec.select = select i1 %264, i32 4, i32 1 + br label %268 -268: ; preds = %_ZN2cv5mjpeg19mjpeg_buffer_keeper5resetEv.exit - %269 = call double @llvm.ceil.f64(double %250) - %270 = fptosi double %269 to i32 +265: ; preds = %_ZN2cv5mjpeg19mjpeg_buffer_keeper5resetEv.exit + %266 = call double @llvm.ceil.f64(double %247) + %267 = fptosi double %266 to i32 %.pre.i = mul nuw nsw i32 %31, %29 br label %271 -271: ; preds = %265, %268 - %.pre-phi.i = phi i32 [ %.pre.i, %268 ], [ %266, %265 ] - %272 = phi i32 [ %270, %268 ], [ %spec.select, %265 ] +271: ; preds = %262, %265 + %.pre-phi.i = phi i32 [ %.pre.i, %265 ], [ %263, %262 ] + %272 = phi i32 [ %267, %265 ], [ %spec.select, %262 ] %273 = add nsw i32 %31, -1 %274 = select i1 %48, i32 4, i32 3 %275 = lshr i32 %273, %274 @@ -774,7 +772,7 @@ _ZN2cv5mjpeg19mjpeg_buffer_keeper5resetEv.exit: ; preds = %_ZNSt5dequeIN2cv5mj %277 = shl nuw nsw i32 %.pre-phi.i, 1 %278 = sdiv i32 %277, %.sroa.speculated.i invoke void @_ZN2cv5mjpeg19mjpeg_buffer_keeper16allocate_buffersEii(ptr noundef nonnull align 8 dereferenceable(112) %186, i32 noundef %.sroa.speculated.i, i32 noundef %278) - to label %281 unwind label %279 + to label %278 unwind label %279 279: ; preds = %271 %280 = landingpad { ptr, i32 } @@ -789,12 +787,12 @@ _ZN2cv5mjpeg19mjpeg_buffer_keeper5resetEv.exit: ; preds = %_ZNSt5dequeIN2cv5mj store i64 %.sroa.2.0.insert.shift.i, ptr %15, align 8 %282 = sitofp i32 %.sroa.speculated.i to double invoke void @_ZN2cv13parallel_for_ERKNS_5RangeERKNS_16ParallelLoopBodyEd(ptr noundef nonnull align 4 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %14, double noundef %282) - to label %283 unwind label %292 + to label %280 unwind label %292 283: ; preds = %281 call void @llvm.lifetime.end.p0(ptr nonnull %15) %284 = invoke noundef ptr @_ZN2cv5mjpeg19mjpeg_buffer_keeper8get_dataEv(ptr noundef nonnull align 8 dereferenceable(112) %186) - to label %285 unwind label %294 + to label %282 unwind label %294 285: ; preds = %283 %286 = load i32, ptr %248, align 8, !tbaa !76 @@ -807,13 +805,13 @@ _ZN2cv5mjpeg19mjpeg_buffer_keeper5resetEv.exit: ; preds = %_ZNSt5dequeIN2cv5mj br label %.lr.ph159 ._crit_edge160: ; preds = %300, %285 - %.pre-phi189 = phi i64 [ 0, %285 ], [ %wide.trip.count, %300 ] + %.pre-phi189 = phi i64 [ 0, %282 ], [ %wide.trip.count, %297 ] %288 = getelementptr inbounds nuw i32, ptr %284, i64 %.pre-phi189 %289 = load i32, ptr %288, align 4, !tbaa !48 %290 = load i32, ptr %187, align 4, !tbaa !62 %291 = sub nsw i32 32, %290 invoke void @_ZN2cv17AVIWriteContainer12jflushStreamEji(ptr noundef nonnull align 8 dereferenceable(136) %27, i32 noundef %289, i32 noundef %291) - to label %303 unwind label %296 + to label %300 unwind label %296 292: ; preds = %281 %293 = landingpad { ptr, i32 } @@ -832,11 +830,11 @@ _ZN2cv5mjpeg19mjpeg_buffer_keeper5resetEv.exit: ; preds = %_ZNSt5dequeIN2cv5mj br label %316 .lr.ph159: ; preds = %.lr.ph159.preheader, %300 - %indvars.iv178 = phi i64 [ 0, %.lr.ph159.preheader ], [ %indvars.iv.next179, %300 ] + %indvars.iv178 = phi i64 [ 0, %.lr.ph160.preheader ], [ %indvars.iv.next179, %297 ] %298 = getelementptr inbounds nuw i32, ptr %284, i64 %indvars.iv178 %299 = load i32, ptr %298, align 4, !tbaa !48 invoke void @_ZN2cv17AVIWriteContainer10jputStreamEj(ptr noundef nonnull align 8 dereferenceable(136) %27, i32 noundef %299) - to label %300 unwind label %301 + to label %297 unwind label %301 300: ; preds = %.lr.ph159 %indvars.iv.next179 = add nuw nsw i64 %indvars.iv178, 1 @@ -850,11 +848,11 @@ _ZN2cv5mjpeg19mjpeg_buffer_keeper5resetEv.exit: ; preds = %_ZNSt5dequeIN2cv5mj 303: ; preds = %._crit_edge160 invoke void @_ZN2cv17AVIWriteContainer15jputStreamShortEi(ptr noundef nonnull align 8 dereferenceable(136) %27, i32 noundef 65497) - to label %304 unwind label %296 + to label %301 unwind label %296 304: ; preds = %303 %305 = invoke noundef i64 @_ZNK2cv17AVIWriteContainer12getStreamPosEv(ptr noundef nonnull align 8 dereferenceable(136) %27) - to label %306 unwind label %312 + to label %303 unwind label %312 306: ; preds = %304 %307 = add i64 %305, 3 @@ -863,9 +861,9 @@ _ZN2cv5mjpeg19mjpeg_buffer_keeper5resetEv.exit: ; preds = %_ZNSt5dequeIN2cv5mj br i1 %309, label %.lr.ph163, label %._crit_edge164 .lr.ph163: ; preds = %306, %310 - %.0100161 = phi i64 [ %311, %310 ], [ %305, %306 ] + %.0100161 = phi i64 [ %311, %307 ], [ %305, %303 ] invoke void @_ZN2cv17AVIWriteContainer13putStreamByteEi(ptr noundef nonnull align 8 dereferenceable(136) %27, i32 noundef 0) - to label %310 unwind label %314 + to label %307 unwind label %314 310: ; preds = %.lr.ph163 %311 = add i64 %.0100161, 1 @@ -892,7 +890,7 @@ _ZN2cv5mjpeg19mjpeg_buffer_keeper5resetEv.exit: ; preds = %_ZNSt5dequeIN2cv5mj ret void 316: ; preds = %294, %312, %314, %301, %296, %292 - %.pn126.pn.pn = phi { ptr, i32 } [ %293, %292 ], [ %295, %294 ], [ %302, %301 ], [ %297, %296 ], [ %315, %314 ], [ %313, %312 ] + %.pn126.pn.pn = phi { ptr, i32 } [ %293, %289 ], [ %295, %291 ], [ %302, %298 ], [ %297, %293 ], [ %315, %311 ], [ %313, %309 ] call void @_ZN2cv16ParallelLoopBodyD2Ev(ptr noundef nonnull align 8 dereferenceable(92) %14) #25 call void @llvm.lifetime.end.p0(ptr nonnull %14) call void @llvm.lifetime.end.p0(ptr nonnull %13) diff --git a/bench/rust-analyzer-rs/optimized/2jyyuxshs9vnz9u0.ll b/bench/rust-analyzer-rs/optimized/2jyyuxshs9vnz9u0.ll index 0ec727897bb..1605ad62ba6 100644 --- a/bench/rust-analyzer-rs/optimized/2jyyuxshs9vnz9u0.ll +++ b/bench/rust-analyzer-rs/optimized/2jyyuxshs9vnz9u0.ll @@ -1370,16 +1370,15 @@ switch.lookup: %55 = sub nuw i64 %53, %54 %56 = icmp samesign ugt i32 %.sroa.4.0.i.ph76, 127 %57 = and i1 %56, %switch.masked - %58 = zext i1 %57 to i64 - %59 = or disjoint i64 %58, 4864 - br label %60 + %58 = select i1 %57, i64 4865, i64 4864 + br label %59 .thread: ; preds = %"_ZN6parser9lexed_str29unescape_string_error_message28_$u7b$$u7b$closure$u7d$$u7d$17h7440fefbc4bee57dE.llvm.2652040896208430944.exit", %41, %_ZN17ra_ap_rustc_lexer8unescape21skip_ascii_whitespace17hc5eb6a86efc12f3fE.exit, %switch.lookup call void @llvm.lifetime.end.p0(ptr nonnull %4) ret void 60: ; preds = %.thread73, %.thread73.thread - %.not86 = phi i64 [ 4864, %.thread73.thread ], [ %59, %.thread73 ] + %.not86 = phi i64 [ 4864, %.thread73.thread ], [ %58, %.thread73 ] %61 = phi i64 [ %30, %.thread73.thread ], [ %55, %.thread73 ] %62 = phi ptr [ %14, %.thread73.thread ], [ %52, %.thread73 ] %.sroa.4.0.i.ph7685 = phi i32 [ %27, %.thread73.thread ], [ %.sroa.4.0.i.ph76, %.thread73 ] @@ -1508,20 +1507,23 @@ switch.lookup: br i1 %.not.i, label %.thread.i, label %.thread98.i .thread98.i: ; preds = %125, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h80c64f83fa207323E.exit15.i.i", %.thread191, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h80c64f83fa207323E.exit13.i.i" - %136 = phi ptr [ %127, %125 ], [ %102, %.thread191 ], [ %116, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h80c64f83fa207323E.exit15.i.i" ], [ %108, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h80c64f83fa207323E.exit13.i.i" ] - %.sroa.4.0.i.ph100.i = phi i32 [ %135, %125 ], [ %103, %.thread191 ], [ %123, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h80c64f83fa207323E.exit15.i.i" ], [ %113, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h80c64f83fa207323E.exit13.i.i" ] + %136 = phi ptr [ %127, %124 ], [ %102, %.thread191 ], [ %116, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h80c64f83fa207323E.exit15.i.i" ], [ %108, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h80c64f83fa207323E.exit13.i.i" ] + %.sroa.4.0.i.ph100.i = phi i32 [ %135, %124 ], [ %103, %.thread191 ], [ %123, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h80c64f83fa207323E.exit15.i.i" ], [ %113, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h80c64f83fa207323E.exit13.i.i" ] switch i32 %.sroa.4.0.i.ph100.i, label %.thread.i [ i32 34, label %_ZN17ra_ap_rustc_lexer8unescape11scan_escape17h070707b955336f0fE.exit - i32 110, label %137 - i32 114, label %138 - i32 116, label %139 - i32 92, label %140 - i32 39, label %141 - i32 48, label %142 - i32 120, label %143 + i32 110, label %136 + i32 114, label %137 + i32 116, label %138 + i32 92, label %139 + i32 39, label %140 + i32 48, label %141 + i32 120, label %142 i32 117, label %182 ] +136: ; preds = %.thread98.i + br label %_ZN17ra_ap_rustc_lexer8unescape11scan_escape17h070707b955336f0fE.exit + 137: ; preds = %.thread98.i br label %_ZN17ra_ap_rustc_lexer8unescape11scan_escape17h070707b955336f0fE.exit @@ -1538,14 +1540,11 @@ switch.lookup: br label %_ZN17ra_ap_rustc_lexer8unescape11scan_escape17h070707b955336f0fE.exit 142: ; preds = %.thread98.i - br label %_ZN17ra_ap_rustc_lexer8unescape11scan_escape17h070707b955336f0fE.exit - -143: ; preds = %.thread98.i call void @llvm.experimental.noalias.scope.decl(metadata !175) %144 = icmp eq ptr %136, %13 br i1 %144, label %.thread.i, label %145 -145: ; preds = %143 +145: ; preds = %142 %146 = getelementptr inbounds nuw i8, ptr %136, i64 1 store ptr %146, ptr %4, align 8, !alias.scope !178 %147 = load i8, ptr %136, align 1, !noalias !181, !noundef !4 @@ -1609,8 +1608,8 @@ switch.lookup: br label %.thread.i .thread105.i: ; preds = %171, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h80c64f83fa207323E.exit15.i87.i", %159, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h80c64f83fa207323E.exit13.i84.i" - %186 = phi ptr [ %173, %171 ], [ %146, %159 ], [ %162, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h80c64f83fa207323E.exit15.i87.i" ], [ %152, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h80c64f83fa207323E.exit13.i84.i" ] - %.sroa.4.0.i85.ph107.i = phi i32 [ %181, %171 ], [ %160, %159 ], [ %169, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h80c64f83fa207323E.exit15.i87.i" ], [ %157, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h80c64f83fa207323E.exit13.i84.i" ] + %186 = phi ptr [ %173, %170 ], [ %146, %158 ], [ %162, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h80c64f83fa207323E.exit15.i87.i" ], [ %152, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h80c64f83fa207323E.exit13.i84.i" ] + %.sroa.4.0.i85.ph107.i = phi i32 [ %181, %170 ], [ %160, %158 ], [ %169, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h80c64f83fa207323E.exit15.i87.i" ], [ %157, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h80c64f83fa207323E.exit13.i84.i" ] %187 = add nsw i32 %.sroa.4.0.i85.ph107.i, -48 %188 = icmp ult i32 %187, 10 br i1 %188, label %"_ZN4core4char7methods22_$LT$impl$u20$char$GT$8to_digit17hfa6209bfb9c39dbcE.exit.thread.i", label %"_ZN4core4char7methods22_$LT$impl$u20$char$GT$8to_digit17hfa6209bfb9c39dbcE.exit.i" @@ -1686,7 +1685,7 @@ _ZN4core3str11validations15next_code_point17h653ff6e9a32d55ccE.exit69: ; preds = br i1 %.not119120.i, label %.thread.i, label %_ZN4core3str11validations15next_code_point17h653ff6e9a32d55ccE.exit69.thread _ZN4core3str11validations15next_code_point17h653ff6e9a32d55ccE.exit69.thread: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h80c64f83fa207323E.exit13.i64", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h80c64f83fa207323E.exit15.i67", %208, %_ZN4core3str11validations15next_code_point17h653ff6e9a32d55ccE.exit69 - %.sroa.4.0.i65194 = phi i32 [ %229, %_ZN4core3str11validations15next_code_point17h653ff6e9a32d55ccE.exit69 ], [ %206, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h80c64f83fa207323E.exit13.i64" ], [ %218, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h80c64f83fa207323E.exit15.i67" ], [ %209, %208 ] + %.sroa.4.0.i65194 = phi i32 [ %229, %_ZN4core3str11validations15next_code_point17h653ff6e9a32d55ccE.exit69 ], [ %206, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h80c64f83fa207323E.exit13.i64" ], [ %218, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h80c64f83fa207323E.exit15.i67" ], [ %209, %207 ] %230 = add nsw i32 %.sroa.4.0.i65194, -48 %231 = icmp ult i32 %230, 10 br i1 %231, label %"_ZN4core4char7methods22_$LT$impl$u20$char$GT$8to_digit17hfa6209bfb9c39dbcE.exit95.thread.i", label %"_ZN4core4char7methods22_$LT$impl$u20$char$GT$8to_digit17hfa6209bfb9c39dbcE.exit95.i" @@ -1705,15 +1704,15 @@ _ZN4core3str11validations15next_code_point17h653ff6e9a32d55ccE.exit69.thread: ; %spec.select117.i = zext i1 %not.or.cond.i to i64 br label %.thread.i -.thread.i: ; preds = %63, %"_ZN4core4char7methods22_$LT$impl$u20$char$GT$8to_digit17hfa6209bfb9c39dbcE.exit.thread.i", %"_ZN4core4char7methods22_$LT$impl$u20$char$GT$8to_digit17hfa6209bfb9c39dbcE.exit95.thread.i", %"_ZN4core4char7methods22_$LT$impl$u20$char$GT$8to_digit17hfa6209bfb9c39dbcE.exit95.i", %_ZN4core3str11validations15next_code_point17h653ff6e9a32d55ccE.exit69, %"_ZN4core4char7methods22_$LT$impl$u20$char$GT$8to_digit17hfa6209bfb9c39dbcE.exit.i", %182, %171, %143, %.thread98.i, %125 - %.sroa.11.0.i = phi i64 [ %185, %182 ], [ 512, %125 ], [ 768, %.thread98.i ], [ 1792, %171 ], [ 2048, %"_ZN4core4char7methods22_$LT$impl$u20$char$GT$8to_digit17hfa6209bfb9c39dbcE.exit.i" ], [ 1792, %_ZN4core3str11validations15next_code_point17h653ff6e9a32d55ccE.exit69 ], [ 2048, %"_ZN4core4char7methods22_$LT$impl$u20$char$GT$8to_digit17hfa6209bfb9c39dbcE.exit95.i" ], [ 2304, %"_ZN4core4char7methods22_$LT$impl$u20$char$GT$8to_digit17hfa6209bfb9c39dbcE.exit95.thread.i" ], [ 1792, %143 ], [ 1792, %"_ZN4core4char7methods22_$LT$impl$u20$char$GT$8to_digit17hfa6209bfb9c39dbcE.exit.thread.i" ], [ 512, %63 ] - %.sroa.0.0.i59 = phi i64 [ %184, %182 ], [ 1, %125 ], [ 1, %.thread98.i ], [ 1, %171 ], [ 1, %"_ZN4core4char7methods22_$LT$impl$u20$char$GT$8to_digit17hfa6209bfb9c39dbcE.exit.i" ], [ 1, %_ZN4core3str11validations15next_code_point17h653ff6e9a32d55ccE.exit69 ], [ 1, %"_ZN4core4char7methods22_$LT$impl$u20$char$GT$8to_digit17hfa6209bfb9c39dbcE.exit95.i" ], [ %spec.select117.i, %"_ZN4core4char7methods22_$LT$impl$u20$char$GT$8to_digit17hfa6209bfb9c39dbcE.exit95.thread.i" ], [ 1, %143 ], [ 1, %"_ZN4core4char7methods22_$LT$impl$u20$char$GT$8to_digit17hfa6209bfb9c39dbcE.exit.thread.i" ], [ 1, %63 ] +.thread.i: ; preds = %63, %"_ZN4core4char7methods22_$LT$impl$u20$char$GT$8to_digit17hfa6209bfb9c39dbcE.exit.thread.i", %"_ZN4core4char7methods22_$LT$impl$u20$char$GT$8to_digit17hfa6209bfb9c39dbcE.exit95.thread.i", %"_ZN4core4char7methods22_$LT$impl$u20$char$GT$8to_digit17hfa6209bfb9c39dbcE.exit95.i", %_ZN4core3str11validations15next_code_point17h653ff6e9a32d55ccE.exit69, %"_ZN4core4char7methods22_$LT$impl$u20$char$GT$8to_digit17hfa6209bfb9c39dbcE.exit.i", %182, %171, %142, %.thread98.i, %125 + %.sroa.11.0.i = phi i64 [ %185, %181 ], [ 512, %124 ], [ 768, %.thread98.i ], [ 1792, %170 ], [ 2048, %"_ZN4core4char7methods22_$LT$impl$u20$char$GT$8to_digit17hfa6209bfb9c39dbcE.exit.i" ], [ 1792, %_ZN4core3str11validations15next_code_point17h653ff6e9a32d55ccE.exit69 ], [ 2048, %"_ZN4core4char7methods22_$LT$impl$u20$char$GT$8to_digit17hfa6209bfb9c39dbcE.exit95.i" ], [ 2304, %"_ZN4core4char7methods22_$LT$impl$u20$char$GT$8to_digit17hfa6209bfb9c39dbcE.exit95.thread.i" ], [ 1792, %142 ], [ 1792, %"_ZN4core4char7methods22_$LT$impl$u20$char$GT$8to_digit17hfa6209bfb9c39dbcE.exit.thread.i" ], [ 512, %62 ] + %.sroa.0.0.i59 = phi i64 [ %184, %181 ], [ 1, %124 ], [ 1, %.thread98.i ], [ 1, %170 ], [ 1, %"_ZN4core4char7methods22_$LT$impl$u20$char$GT$8to_digit17hfa6209bfb9c39dbcE.exit.i" ], [ 1, %_ZN4core3str11validations15next_code_point17h653ff6e9a32d55ccE.exit69 ], [ 1, %"_ZN4core4char7methods22_$LT$impl$u20$char$GT$8to_digit17hfa6209bfb9c39dbcE.exit95.i" ], [ %spec.select117.i, %"_ZN4core4char7methods22_$LT$impl$u20$char$GT$8to_digit17hfa6209bfb9c39dbcE.exit95.thread.i" ], [ 1, %142 ], [ 1, %"_ZN4core4char7methods22_$LT$impl$u20$char$GT$8to_digit17hfa6209bfb9c39dbcE.exit.thread.i" ], [ 1, %62 ] %237 = and i64 %.sroa.0.0.i59, 255 %238 = or disjoint i64 %.sroa.11.0.i, %237 br label %_ZN17ra_ap_rustc_lexer8unescape11scan_escape17h070707b955336f0fE.exit -_ZN17ra_ap_rustc_lexer8unescape11scan_escape17h070707b955336f0fE.exit: ; preds = %.thread98.i, %137, %138, %139, %140, %141, %142, %.thread.i - %.sroa.182.1.i = phi i64 [ %238, %.thread.i ], [ 42949672960, %137 ], [ 55834574848, %138 ], [ 38654705664, %139 ], [ 395136991232, %140 ], [ 167503724544, %141 ], [ 0, %142 ], [ 146028888064, %.thread98.i ] +_ZN17ra_ap_rustc_lexer8unescape11scan_escape17h070707b955336f0fE.exit: ; preds = %.thread98.i, %136, %137, %138, %139, %140, %141, %.thread.i + %.sroa.182.1.i = phi i64 [ %238, %.thread.i ], [ 42949672960, %136 ], [ 55834574848, %137 ], [ 38654705664, %138 ], [ 395136991232, %139 ], [ 167503724544, %140 ], [ 0, %141 ], [ 146028888064, %.thread98.i ] %239 = lshr i64 %.sroa.182.1.i, 8 %240 = trunc i64 %239 to i8 br label %.loopexit @@ -1723,8 +1722,8 @@ _ZN17ra_ap_rustc_lexer8unescape11scan_escape17h070707b955336f0fE.exit: ; preds = br label %.lr.ph.i.i .lr.ph.i.i: ; preds = %241, %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfbf9e9413b56c2d0E.exit.i.i" - %242 = phi ptr [ %244, %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfbf9e9413b56c2d0E.exit.i.i" ], [ %62, %241 ] - %243 = phi i64 [ %245, %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfbf9e9413b56c2d0E.exit.i.i" ], [ 0, %241 ] + %242 = phi ptr [ %244, %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfbf9e9413b56c2d0E.exit.i.i" ], [ %62, %240 ] + %243 = phi i64 [ %245, %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfbf9e9413b56c2d0E.exit.i.i" ], [ 0, %240 ] %.val5.i.i = load i8, ptr %242, align 1, !noalias !209, !noundef !4 switch i8 %.val5.i.i, label %_ZN4core4iter6traits8iterator8Iterator8try_fold17h38c22ca0c62a3087E.exit.i [ i8 32, label %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hfbf9e9413b56c2d0E.exit.i.i" @@ -1787,7 +1786,7 @@ _ZN4core4iter6traits8iterator8Iterator8try_fold17h38c22ca0c62a3087E.exit.thread. br i1 %.not.i.i56.i, label %"_ZN52_$LT$char$u20$as$u20$core..str..pattern..Pattern$GT$15is_contained_in17h8ed495e3c6eb4d76E.exit.thread.thread.i", label %.lr.ph.i.i.i .lr.ph.i.i.i: ; preds = %263, %267 - %.05.i.i.i = phi i64 [ %268, %267 ], [ 0, %263 ] + %.05.i.i.i = phi i64 [ %268, %266 ], [ 0, %262 ] %264 = getelementptr inbounds nuw i8, ptr %260, i64 %.05.i.i.i %265 = load i8, ptr %264, align 1, !alias.scope !221, !noalias !206, !noundef !4 %266 = icmp eq i8 %265, 10 @@ -1886,8 +1885,8 @@ _ZN4core4iter6traits8iterator8Iterator8try_fold17h38c22ca0c62a3087E.exit.thread. br label %318 318: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h80c64f83fa207323E.exit17.i.i", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h80c64f83fa207323E.exit15.i.i63", %296, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h80c64f83fa207323E.exit13.i.i61" - %.sroa.4.0.i.ph.i = phi i32 [ %294, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h80c64f83fa207323E.exit13.i.i61" ], [ %306, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h80c64f83fa207323E.exit15.i.i63" ], [ %317, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h80c64f83fa207323E.exit17.i.i" ], [ %297, %296 ] - switch i32 %.sroa.4.0.i.ph.i, label %319 [ + %.sroa.4.0.i.ph.i = phi i32 [ %294, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h80c64f83fa207323E.exit13.i.i61" ], [ %306, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h80c64f83fa207323E.exit15.i.i63" ], [ %317, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h80c64f83fa207323E.exit17.i.i" ], [ %297, %295 ] + switch i32 %.sroa.4.0.i.ph.i, label %318 [ i32 1114112, label %_ZN17ra_ap_rustc_lexer8unescape21skip_ascii_whitespace17hc5eb6a86efc12f3fE.exit i32 32, label %.critedge.thread.i ] @@ -1936,7 +1935,7 @@ _ZN4core4iter6traits8iterator8Iterator8try_fold17h38c22ca0c62a3087E.exit.thread. br label %_ZN4core7unicode12unicode_data11white_space6lookup17h3e9dac857c10d7d8E.exit.i _ZN4core7unicode12unicode_data11white_space6lookup17h3e9dac857c10d7d8E.exit.i: ; preds = %336, %331, %328, %325 - %.0.i.i = phi i8 [ %335, %331 ], [ %327, %325 ], [ %341, %336 ], [ %330, %328 ] + %.0.i.i = phi i8 [ %335, %330 ], [ %327, %324 ], [ %341, %335 ], [ %330, %327 ] %342 = trunc i8 %.0.i.i to i1 br i1 %342, label %.critedge.thread.i, label %_ZN17ra_ap_rustc_lexer8unescape21skip_ascii_whitespace17hc5eb6a86efc12f3fE.exit @@ -1950,8 +1949,8 @@ _ZN4core7unicode12unicode_data11white_space6lookup17h3e9dac857c10d7d8E.exit.i: ; br label %_ZN17ra_ap_rustc_lexer8unescape21skip_ascii_whitespace17hc5eb6a86efc12f3fE.exit _ZN17ra_ap_rustc_lexer8unescape21skip_ascii_whitespace17hc5eb6a86efc12f3fE.exit: ; preds = %.thread.i60, %318, %321, %323, %_ZN4core7unicode12unicode_data11white_space6lookup17h3e9dac857c10d7d8E.exit.i, %.critedge.thread.i - %347 = phi ptr [ %274, %.thread.i60 ], [ %275, %323 ], [ %275, %321 ], [ %275, %_ZN4core7unicode12unicode_data11white_space6lookup17h3e9dac857c10d7d8E.exit.i ], [ %275, %.critedge.thread.i ], [ %275, %318 ] - %348 = phi i64 [ 0, %.thread.i60 ], [ %278, %323 ], [ %278, %321 ], [ %278, %_ZN4core7unicode12unicode_data11white_space6lookup17h3e9dac857c10d7d8E.exit.i ], [ %278, %.critedge.thread.i ], [ %278, %318 ] + %347 = phi ptr [ %274, %.thread.i60 ], [ %275, %322 ], [ %274, %320 ], [ %275, %_ZN4core7unicode12unicode_data11white_space6lookup17h3e9dac857c10d7d8E.exit.i ], [ %275, %.critedge.thread.i ], [ %275, %317 ] + %348 = phi i64 [ 0, %.thread.i60 ], [ %278, %322 ], [ %277, %320 ], [ %278, %_ZN4core7unicode12unicode_data11white_space6lookup17h3e9dac857c10d7d8E.exit.i ], [ %278, %.critedge.thread.i ], [ %278, %317 ] %349 = getelementptr inbounds i8, ptr %62, i64 %spec.select52.i %350 = getelementptr inbounds i8, ptr %349, i64 %348 store ptr %347, ptr %4, align 8, !alias.scope !206 @@ -1965,8 +1964,8 @@ _ZN17ra_ap_rustc_lexer8unescape21skip_ascii_whitespace17hc5eb6a86efc12f3fE.exit: br label %.lr.ph .loopexit: ; preds = %60, %_ZN17ra_ap_rustc_lexer8unescape11scan_escape17h070707b955336f0fE.exit - %.sroa.8.0 = phi i8 [ %240, %_ZN17ra_ap_rustc_lexer8unescape11scan_escape17h070707b955336f0fE.exit ], [ 19, %60 ] - %.sroa.0.0 = phi i64 [ %.sroa.182.1.i, %_ZN17ra_ap_rustc_lexer8unescape11scan_escape17h070707b955336f0fE.exit ], [ %.not86, %60 ] + %.sroa.8.0 = phi i8 [ %240, %_ZN17ra_ap_rustc_lexer8unescape11scan_escape17h070707b955336f0fE.exit ], [ 19, %59 ] + %.sroa.0.0 = phi i64 [ %.sroa.182.1.i, %_ZN17ra_ap_rustc_lexer8unescape11scan_escape17h070707b955336f0fE.exit ], [ %.not86, %59 ] %352 = trunc i64 %.sroa.0.0 to i1 br i1 %352, label %.loopexit.thread, label %"_ZN6parser9lexed_str29unescape_string_error_message28_$u7b$$u7b$closure$u7d$$u7d$17h7440fefbc4bee57dE.llvm.2652040896208430944.exit" @@ -1974,7 +1973,7 @@ _ZN17ra_ap_rustc_lexer8unescape21skip_ascii_whitespace17hc5eb6a86efc12f3fE.exit: br label %.loopexit.thread .loopexit.thread: ; preds = %60, %.loopexit.thread.loopexit239, %.loopexit - %.sroa.8.0197 = phi i8 [ %.sroa.8.0, %.loopexit ], [ 4, %.loopexit.thread.loopexit239 ], [ 6, %60 ] + %.sroa.8.0197 = phi i8 [ %.sroa.8.0, %.loopexit ], [ 4, %.loopexit.thread.loopexit239 ], [ 6, %59 ] %353 = load i8, ptr %9, align 1, !range !10, !noalias !240, !noundef !4 %354 = call { ptr, i64 } @_ZN6parser9lexed_str27error_to_diagnostic_message17h27691eb4c718e1b3E(i8 noundef %.sroa.8.0197, i8 noundef %353), !noalias !240 %355 = extractvalue { ptr, i64 } %354, 0 diff --git a/bench/typst-rs/optimized/1ru1rhojhbz2vfey.ll b/bench/typst-rs/optimized/1ru1rhojhbz2vfey.ll index fc1d56f9721..c022ccb7451 100644 --- a/bench/typst-rs/optimized/1ru1rhojhbz2vfey.ll +++ b/bench/typst-rs/optimized/1ru1rhojhbz2vfey.ll @@ -99648,10 +99648,8 @@ define hidden void @"_ZN5typst6layout5sides14Sides$LT$T$GT$5splat17h41eb164cc8a1 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable -define hidden range(i32 0, 16843010) i32 @"_ZN5typst6layout5sides14Sides$LT$T$GT$5splat17h489b679d0d8ca74eE"(i1 noundef zeroext %0) unnamed_addr #2 personality ptr @rust_eh_personality { - %.sroa.2.0.insert.insert = select i1 %0, i32 16843008, i32 0 - %.sroa.0.0.insert.ext = zext i1 %0 to i32 - %.sroa.0.0.insert.insert = or disjoint i32 %.sroa.2.0.insert.insert, %.sroa.0.0.insert.ext +define hidden noundef range(i32 0, 16843010) i32 @"_ZN5typst6layout5sides14Sides$LT$T$GT$5splat17h489b679d0d8ca74eE"(i1 noundef zeroext %0) unnamed_addr #2 personality ptr @rust_eh_personality { + %.sroa.2.0.insert.insert = select i1 %0, i32 16843009, i32 0 ret i32 %.sroa.0.0.insert.insert } diff --git a/bench/typst-rs/optimized/2i78fvbm4wocuesi.ll b/bench/typst-rs/optimized/2i78fvbm4wocuesi.ll index 27a542cc92d..c1adcff4924 100644 --- a/bench/typst-rs/optimized/2i78fvbm4wocuesi.ll +++ b/bench/typst-rs/optimized/2i78fvbm4wocuesi.ll @@ -56206,15 +56206,13 @@ define hidden range(i40 0, 65794) i40 @"_ZN75_$LT$citationberg..Date$u20$as$u20$ call void @llvm.lifetime.start.p0(ptr nonnull %3) call fastcc void @"_ZN9hayagriva3csl16Context$LT$T$GT$21resolve_date_variable17h847a3fd18d8ee44cE"(ptr noalias noundef align 8 captures(none) dereferenceable(16) %3, ptr noundef nonnull align 8 %1, i8 noundef %7) %20 = load i32, ptr %3, align 8, !range !579, !noundef !4 - %21 = icmp ne i32 %20, 2 + %21 = icmp eq i32 %20, 2 call void @llvm.lifetime.end.p0(ptr nonnull %3) - %.sroa.014.0.insert.insert = select i1 %21, i32 65792, i32 256 - %22 = zext i1 %21 to i32 - %23 = or disjoint i32 %.sroa.014.0.insert.insert, %22 - br label %"_ZN75_$LT$citationberg..Date$u20$as$u20$hayagriva..csl..rendering..RenderCsl$GT$11will_render17hbb1d81b452613e35E.exit.thread23" + %.sroa.014.0.insert.insert = select i1 %21, i32 256, i32 65793 + br label %"_ZN75_$LT$citationberg..Date$u20$as$u20$hayagriva..csl..rendering..RenderCsl$GT$11will_render17hbb1d81b452613e35E.exit.thread24" "_ZN75_$LT$citationberg..Date$u20$as$u20$hayagriva..csl..rendering..RenderCsl$GT$11will_render17hbb1d81b452613e35E.exit.thread23": ; preds = %13, %"_ZN75_$LT$citationberg..Date$u20$as$u20$hayagriva..csl..rendering..RenderCsl$GT$11will_render17hbb1d81b452613e35E.exit", %2, %"_ZN75_$LT$citationberg..Date$u20$as$u20$hayagriva..csl..rendering..RenderCsl$GT$11will_render17hbb1d81b452613e35E.exit.thread" - %.sroa.4.sroa.0.0 = phi i32 [ %23, %"_ZN75_$LT$citationberg..Date$u20$as$u20$hayagriva..csl..rendering..RenderCsl$GT$11will_render17hbb1d81b452613e35E.exit.thread" ], [ 256, %2 ], [ 0, %"_ZN75_$LT$citationberg..Date$u20$as$u20$hayagriva..csl..rendering..RenderCsl$GT$11will_render17hbb1d81b452613e35E.exit" ], [ 0, %13 ] + %.sroa.4.sroa.0.0 = phi i32 [ %21, %"_ZN75_$LT$citationberg..Date$u20$as$u20$hayagriva..csl..rendering..RenderCsl$GT$11will_render17hbb1d81b452613e35E.exit.thread" ], [ 256, %2 ], [ 0, %"_ZN75_$LT$citationberg..Date$u20$as$u20$hayagriva..csl..rendering..RenderCsl$GT$11will_render17hbb1d81b452613e35E.exit" ], [ 0, %13 ] %.sroa.0.0.insert.insert = zext nneg i32 %.sroa.4.sroa.0.0 to i40 ret i40 %.sroa.0.0.insert.insert } @@ -61439,9 +61437,8 @@ define hidden range(i40 256, 65794) i40 @"_ZN77_$LT$citationberg..Number$u20$as$ 17: ; preds = %33, %"_ZN77_$LT$citationberg..Number$u20$as$u20$hayagriva..csl..rendering..RenderCsl$GT$11will_render17hf083e9bc532aa47fE.exit.thread" %18 = load i64, ptr %4, align 8, !range !574, !noundef !4 - %19 = icmp ne i64 %18, -9223372036854775804 - %.sroa.03.0.insert.insert = select i1 %19, i32 65792, i32 256 - switch i64 %18, label %20 [ + %19 = icmp eq i64 %18, -9223372036854775804 + switch i64 %18, label %19 [ i64 -9223372036854775804, label %"_ZN4core3ptr95drop_in_place$LT$core..option..Option$LT$hayagriva..csl..taxonomy..NumberVariableResult$GT$$GT$17h9e0a3df011ce7ce5E.exit" i64 -9223372036854775805, label %"_ZN4core3ptr95drop_in_place$LT$core..option..Option$LT$hayagriva..csl..taxonomy..NumberVariableResult$GT$$GT$17h9e0a3df011ce7ce5E.exit" i64 -9223372036854775806, label %21 @@ -61478,8 +61475,7 @@ define hidden range(i40 256, 65794) i40 @"_ZN77_$LT$citationberg..Number$u20$as$ "_ZN4core3ptr95drop_in_place$LT$core..option..Option$LT$hayagriva..csl..taxonomy..NumberVariableResult$GT$$GT$17h9e0a3df011ce7ce5E.exit": ; preds = %17, %17, %17, %20, %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h91029dacccfeb0acE.exit.i.i.i" call void @llvm.lifetime.end.p0(ptr nonnull %4) - %31 = zext i1 %19 to i32 - %32 = or disjoint i32 %.sroa.03.0.insert.insert, %31 + %30 = select i1 %19, i32 256, i32 65793 br label %"_ZN77_$LT$citationberg..Number$u20$as$u20$hayagriva..csl..rendering..RenderCsl$GT$11will_render17hf083e9bc532aa47fE.exit.thread13" 33: ; preds = %"_ZN77_$LT$citationberg..Number$u20$as$u20$hayagriva..csl..rendering..RenderCsl$GT$11will_render17hf083e9bc532aa47fE.exit.thread" @@ -70888,7 +70884,7 @@ define hidden i40 @"_ZN93_$LT$citationberg..LayoutRenderingElement$u20$as$u20$ha %3 = alloca { i32, [3 x i32] }, align 8 %4 = load i64, ptr %0, align 8, !range !2537, !noundef !4 %5 = xor i64 %4, -9223372036854775808 - switch i64 %5, label %68 [ + switch i64 %5, label %66 [ i64 0, label %6 i64 1, label %9 i64 2, label %30 @@ -70948,15 +70944,13 @@ define hidden i40 @"_ZN93_$LT$citationberg..LayoutRenderingElement$u20$as$u20$ha call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !14618 call fastcc void @"_ZN9hayagriva3csl16Context$LT$T$GT$21resolve_date_variable17h847a3fd18d8ee44cE"(ptr noalias noundef align 8 captures(none) dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(664) %1, i8 noundef %13), !noalias !14613 %26 = load i32, ptr %3, align 8, !range !579, !noalias !14618, !noundef !4 - %27 = icmp ne i32 %26, 2 + %27 = icmp eq i32 %26, 2 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !14618 - %.sroa.014.0.insert.insert.i = select i1 %27, i32 65792, i32 256 - %28 = zext i1 %27 to i32 - %29 = or disjoint i32 %.sroa.014.0.insert.insert.i, %28 + %.sroa.014.0.insert.insert.i = select i1 %27, i32 256, i32 65793 br label %"_ZN75_$LT$citationberg..Date$u20$as$u20$hayagriva..csl..rendering..RenderCsl$GT$14will_have_info17hd4eb81c7ac9f9cafE.llvm.16978709814855407318.exit" "_ZN75_$LT$citationberg..Date$u20$as$u20$hayagriva..csl..rendering..RenderCsl$GT$14will_have_info17hd4eb81c7ac9f9cafE.llvm.16978709814855407318.exit": ; preds = %9, %19, %"_ZN75_$LT$citationberg..Date$u20$as$u20$hayagriva..csl..rendering..RenderCsl$GT$11will_render17hbb1d81b452613e35E.exit.i", %"_ZN75_$LT$citationberg..Date$u20$as$u20$hayagriva..csl..rendering..RenderCsl$GT$11will_render17hbb1d81b452613e35E.exit.thread.i" - %.sroa.4.sroa.0.0.i = phi i32 [ %29, %"_ZN75_$LT$citationberg..Date$u20$as$u20$hayagriva..csl..rendering..RenderCsl$GT$11will_render17hbb1d81b452613e35E.exit.thread.i" ], [ 256, %9 ], [ 0, %"_ZN75_$LT$citationberg..Date$u20$as$u20$hayagriva..csl..rendering..RenderCsl$GT$11will_render17hbb1d81b452613e35E.exit.i" ], [ 0, %19 ] + %.sroa.4.sroa.0.0.i = phi i32 [ %27, %"_ZN75_$LT$citationberg..Date$u20$as$u20$hayagriva..csl..rendering..RenderCsl$GT$11will_render17hbb1d81b452613e35E.exit.thread.i" ], [ 256, %9 ], [ 0, %"_ZN75_$LT$citationberg..Date$u20$as$u20$hayagriva..csl..rendering..RenderCsl$GT$11will_render17hbb1d81b452613e35E.exit.i" ], [ 0, %19 ] %.sroa.0.0.insert.insert.i = zext nneg i32 %.sroa.4.sroa.0.0.i to i40 br label %71 @@ -70987,12 +70981,12 @@ define hidden i40 @"_ZN93_$LT$citationberg..LayoutRenderingElement$u20$as$u20$ha br i1 %43, label %"_ZN76_$LT$citationberg..Group$u20$as$u20$hayagriva..csl..rendering..RenderCsl$GT$14will_have_info17h507dac560e231a10E.llvm.16978709814855407318.exit", label %.lr.ph.i .lr.ph.i: ; preds = %39, %.lr.ph.i - %.054.i = phi i1 [ %47, %.lr.ph.i ], [ false, %39 ] - %.sroa.04.053.i = phi i8 [ %.sroa.037.0.extract.trunc.i, %.lr.ph.i ], [ 0, %39 ] - %.sroa.7.052.i = phi i8 [ %.sroa.438.0.extract.trunc.i, %.lr.ph.i ], [ 0, %39 ] - %.sroa.9.051.i = phi i8 [ %.sroa.539.0.extract.trunc.i, %.lr.ph.i ], [ 0, %39 ] - %.sroa.11.050.i = phi i8 [ %spec.select.i, %.lr.ph.i ], [ 0, %39 ] - %.sroa.0.049.i = phi ptr [ %44, %.lr.ph.i ], [ %.val.i, %39 ] + %.054.i = phi i1 [ %47, %.lr.ph.i ], [ false, %37 ] + %.sroa.04.053.i = phi i8 [ %.sroa.037.0.extract.trunc.i, %.lr.ph.i ], [ 0, %37 ] + %.sroa.7.052.i = phi i8 [ %.sroa.438.0.extract.trunc.i, %.lr.ph.i ], [ 0, %37 ] + %.sroa.9.051.i = phi i8 [ %.sroa.539.0.extract.trunc.i, %.lr.ph.i ], [ 0, %37 ] + %.sroa.11.050.i = phi i8 [ %spec.select.i, %.lr.ph.i ], [ 0, %37 ] + %.sroa.0.049.i = phi ptr [ %44, %.lr.ph.i ], [ %.val.i, %37 ] %44 = getelementptr inbounds nuw i8, ptr %.sroa.0.049.i, i64 248 %45 = tail call i40 @"_ZN93_$LT$citationberg..LayoutRenderingElement$u20$as$u20$hayagriva..csl..rendering..RenderCsl$GT$14will_have_info17h184a256c22d46976E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(248) %.sroa.0.049.i, ptr noalias noundef nonnull align 8 dereferenceable(664) %1), !noalias !14619 %.1.extract.shift.i20 = lshr i40 %45, 8 @@ -71011,25 +71005,25 @@ define hidden i40 @"_ZN93_$LT$citationberg..LayoutRenderingElement$u20$as$u20$ha %.sroa.438.0.extract.trunc.i = select i1 %.not.i.i21, i8 %53, i8 1 %54 = lshr i40 %45, 24 %55 = trunc i40 %54 to i8 + %54 = and i8 %53, 1 + %.sroa.539.0.extract.trunc.i = select i1 %.not21.i.i, i8 %54, i8 1 + %sum.shift.i = lshr i40 %43, 32 + %55 = trunc nuw i40 %sum.shift.i to i8 %56 = and i8 %55, 1 - %.sroa.539.0.extract.trunc.i = select i1 %.not21.i.i, i8 %56, i8 1 - %sum.shift.i = lshr i40 %45, 32 - %57 = trunc nuw i40 %sum.shift.i to i8 - %58 = and i8 %57, 1 - %.sroa.640.0.extract.trunc.i = select i1 %.not22.i.i, i8 %58, i8 1 - %59 = load i64, ptr %.sroa.0.049.i, align 8, !range !2537, !noalias !14619, !noundef !4 - %60 = icmp eq i64 %59, -9223372036854775803 - %brmerge.not.i = and i1 %60, %46 + %.sroa.539.0.extract.trunc.i = select i1 %.not22.i.i, i8 %56, i8 1 + %57 = load i64, ptr %.sroa.0.049.i, align 8, !range !2537, !noalias !14619, !noundef !4 + %58 = icmp eq i64 %57, -9223372036854775803 + %58 = and i1 %58, %44 %spec.select.i = select i1 %brmerge.not.i, i8 1, i8 %.sroa.640.0.extract.trunc.i %61 = icmp eq ptr %44, %42 br i1 %61, label %"_ZN76_$LT$citationberg..Group$u20$as$u20$hayagriva..csl..rendering..RenderCsl$GT$14will_have_info17h507dac560e231a10E.llvm.16978709814855407318.exit", label %.lr.ph.i "_ZN76_$LT$citationberg..Group$u20$as$u20$hayagriva..csl..rendering..RenderCsl$GT$14will_have_info17h507dac560e231a10E.llvm.16978709814855407318.exit": ; preds = %.lr.ph.i, %39 - %.sroa.11.0.lcssa.i = phi i8 [ 0, %39 ], [ %spec.select.i, %.lr.ph.i ] - %.sroa.9.0.lcssa.i = phi i8 [ 0, %39 ], [ %.sroa.539.0.extract.trunc.i, %.lr.ph.i ] - %.sroa.7.0.lcssa.i = phi i8 [ 0, %39 ], [ %.sroa.438.0.extract.trunc.i, %.lr.ph.i ] - %.sroa.04.0.lcssa.i = phi i8 [ 0, %39 ], [ %.sroa.037.0.extract.trunc.i, %.lr.ph.i ] - %.0.lcssa.i = phi i1 [ false, %39 ], [ %47, %.lr.ph.i ] + %.sroa.11.0.lcssa.i = phi i8 [ 0, %37 ], [ %spec.select.i, %.lr.ph.i ] + %.sroa.9.0.lcssa.i = phi i8 [ 0, %37 ], [ %.sroa.539.0.extract.trunc.i, %.lr.ph.i ] + %.sroa.7.0.lcssa.i = phi i8 [ 0, %37 ], [ %.sroa.438.0.extract.trunc.i, %.lr.ph.i ] + %.sroa.04.0.lcssa.i = phi i8 [ 0, %37 ], [ %.sroa.037.0.extract.trunc.i, %.lr.ph.i ] + %.0.lcssa.i = phi i1 [ false, %37 ], [ %47, %.lr.ph.i ] %62 = trunc nuw i8 %.sroa.04.0.lcssa.i to i1 %.not.i22 = xor i1 %62, true %63 = trunc nuw i8 %.sroa.7.0.lcssa.i to i1 @@ -71067,7 +71061,7 @@ define hidden i40 @"_ZN93_$LT$citationberg..LayoutRenderingElement$u20$as$u20$ha br label %71 71: ; preds = %68, %"_ZN76_$LT$citationberg..Group$u20$as$u20$hayagriva..csl..rendering..RenderCsl$GT$14will_have_info17h507dac560e231a10E.llvm.16978709814855407318.exit", %36, %33, %30, %"_ZN75_$LT$citationberg..Date$u20$as$u20$hayagriva..csl..rendering..RenderCsl$GT$14will_have_info17hd4eb81c7ac9f9cafE.llvm.16978709814855407318.exit", %6 - %.sroa.0.0 = phi i40 [ %8, %6 ], [ %.sroa.0.0.insert.insert.i, %"_ZN75_$LT$citationberg..Date$u20$as$u20$hayagriva..csl..rendering..RenderCsl$GT$14will_have_info17hd4eb81c7ac9f9cafE.llvm.16978709814855407318.exit" ], [ %32, %30 ], [ %35, %33 ], [ %38, %36 ], [ %.sroa.0.0.insert.insert.i24, %"_ZN76_$LT$citationberg..Group$u20$as$u20$hayagriva..csl..rendering..RenderCsl$GT$14will_have_info17h507dac560e231a10E.llvm.16978709814855407318.exit" ], [ %.sroa.0.0.insert.insert.i19, %68 ] + %.sroa.0.0 = phi i40 [ %8, %6 ], [ %.sroa.0.0.insert.insert.i, %"_ZN75_$LT$citationberg..Date$u20$as$u20$hayagriva..csl..rendering..RenderCsl$GT$14will_have_info17hd4eb81c7ac9f9cafE.llvm.16978709814855407318.exit" ], [ %32, %28 ], [ %33, %31 ], [ %36, %34 ], [ %.sroa.0.0.insert.insert.i24, %"_ZN76_$LT$citationberg..Group$u20$as$u20$hayagriva..csl..rendering..RenderCsl$GT$14will_have_info17h507dac560e231a10E.llvm.16978709814855407318.exit" ], [ %.sroa.0.0.insert.insert.i19, %66 ] ret i40 %.sroa.0.0 } diff --git a/bench/wasmedge/optimized/wasifunc.ll b/bench/wasmedge/optimized/wasifunc.ll index ba75fed81c7..2d699393558 100644 --- a/bench/wasmedge/optimized/wasifunc.ll +++ b/bench/wasmedge/optimized/wasifunc.ll @@ -13695,40 +13695,45 @@ _ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit: ; preds = %_ZNSt11 29: ; preds = %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit %30 = and i32 %6, 65535 - %.not64 = icmp ne i32 %30, 0 - %.sroa.258.0.extract.trunc = select i1 %.not64, i16 28, i16 0 - %31 = icmp ugt i32 %5, 1024 - %or.cond = or i1 %.not64, %31 - br i1 %or.cond, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread, label %32 + %.not64 = icmp eq i32 %30, 0 + %.sroa.258.0.extract.trunc = select i1 %.not64, i32 1, i32 1835008 + %.sroa.258.0.extract.shift = lshr i32 %.sroa.258.0.extract.trunc, 16 + %.sroa.258.0.extract.trunc = trunc nuw nsw i32 %.sroa.258.0.extract.shift to i16 + %32 = trunc i32 %.sroa.258.0.extract.trunc to i1 + br i1 %32, label %33, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread 32: ; preds = %29 - %33 = shl nuw nsw i32 %5, 3 - %34 = zext i32 %4 to i64 - %35 = zext nneg i32 %33 to i64 - %36 = add nuw nsw i64 %35, %34 - %37 = getelementptr inbounds nuw i8, ptr %26, i64 4 - %38 = load i32, ptr %37, align 4 - %39 = zext i32 %38 to i64 - %40 = shl nuw nsw i64 %39, 16 - %.not.i = icmp samesign ule i64 %36, %40 - %41 = getelementptr inbounds nuw i8, ptr %26, i64 16 - %42 = load ptr, ptr %41, align 8 - %43 = getelementptr inbounds nuw i8, ptr %42, i64 %34 - %.sroa.0.0.i = select i1 %.not.i, ptr %43, ptr null - %.not6579 = icmp eq i32 %5, 0 - %.not65 = or i1 %.not.i, %.not6579 - br i1 %.not65, label %44, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread - -44: ; preds = %32 - %45 = zext i32 %7 to i64 - %46 = add nuw nsw i64 %45, 4 - %.not.i36 = icmp samesign ugt i64 %46, %40 - %47 = getelementptr inbounds nuw i8, ptr %42, i64 %45 - %48 = icmp eq ptr %42, null - %49 = select i1 %.not.i36, i1 true, i1 %48 - br i1 %49, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread, label %50 + %34 = icmp ugt i32 %5, 1024 + br i1 %34, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread, label %35 + +50: ; preds = %33 + %36 = shl nuw nsw i32 %5, 3 + %37 = zext i32 %4 to i64 + %38 = zext nneg i32 %36 to i64 + %39 = add nuw nsw i64 %38, %37 + %40 = getelementptr inbounds nuw i8, ptr %26, i64 4 + %41 = load i32, ptr %40, align 4 + %42 = zext i32 %41 to i64 + %43 = shl nuw nsw i64 %42, 16 + %.not.i = icmp samesign ule i64 %39, %43 + %44 = getelementptr inbounds nuw i8, ptr %26, i64 16 + %45 = load ptr, ptr %44, align 8 + %46 = getelementptr inbounds nuw i8, ptr %45, i64 %37 + %.sroa.0.0.i = select i1 %.not.i, ptr %46, ptr null + %.not6478 = icmp eq i32 %5, 0 + %.not64 = or i1 %.not.i, %.not6478 + br i1 %.not64, label %47, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread + +47: ; preds = %35 + %48 = zext i32 %7 to i64 + %49 = add nuw nsw i64 %48, 4 + %.not.i36 = icmp samesign ugt i64 %49, %43 + %50 = getelementptr inbounds nuw i8, ptr %45, i64 %48 + %51 = icmp eq ptr %45, null + %52 = select i1 %.not.i36, i1 true, i1 %51 + br i1 %52, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread, label %53 -50: ; preds = %44 +53: ; preds = %47 store i64 0, ptr %9, align 8 %51 = shl nuw nsw i32 %5, 3 %.idx = zext nneg i32 %51 to i64 @@ -13741,9 +13746,9 @@ _ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit: ; preds = %_ZNSt11 br label %54 54: ; preds = %.lr.ph, %63 - %55 = phi i64 [ 0, %.lr.ph ], [ %69, %63 ] - %.069 = phi i32 [ 0, %.lr.ph ], [ %65, %63 ] - %.03368 = phi ptr [ %.sroa.0.0.i, %.lr.ph ], [ %70, %63 ] + %55 = phi i64 [ 0, %.lr.ph ], [ %69, %66 ] + %.069 = phi i32 [ 0, %.lr.ph ], [ %65, %66 ] + %.03368 = phi ptr [ %.sroa.0.0.i, %.lr.ph ], [ %70, %66 ] %56 = xor i32 %.069, -1 %57 = getelementptr inbounds nuw i8, ptr %.03368, i64 4 %58 = load i32, ptr %57, align 4 @@ -13774,7 +13779,7 @@ _ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit: ; preds = %_ZNSt11 br i1 %.not, label %._crit_edge, label %54 ._crit_edge: ; preds = %63, %50 - %.val.i = phi i64 [ 0, %50 ], [ %69, %63 ] + %.val.i = phi i64 [ 0, %50 ], [ %69, %66 ] %71 = getelementptr inbounds nuw i8, ptr %1, i64 160 %72 = load ptr, ptr %71, align 8 %73 = getelementptr inbounds nuw i8, ptr %9, i64 8 @@ -13784,8 +13789,8 @@ _ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit: ; preds = %_ZNSt11 %spec.select82 = select i1 %75, i32 0, i32 %.sroa.245.0.extract.shift br label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread -_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread: ; preds = %54, %._crit_edge, %44, %32, %29, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread62, %8 - %.sink = phi i32 [ 21, %8 ], [ 21, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread62 ], [ 21, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit ], [ 28, %29 ], [ 21, %32 ], [ 21, %44 ], [ %spec.select82, %._crit_edge ], [ 21, %54 ] +_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread: ; preds = %54, %._crit_edge, %44, %35, %32, %29, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread62, %8 + %.sink = phi i32 [ 21, %8 ], [ 21, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread62 ], [ 21, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit ], [ %.sroa.258.0.extract.shift, %29 ], [ 28, %33 ], [ 21, %32 ], [ 21, %44 ], [ %spec.select82, %._crit_edge ], [ 21, %57 ] store i8 1, ptr %0, align 4 %76 = getelementptr inbounds nuw i8, ptr %0, i64 4 store i32 %.sink, ptr %76, align 4 @@ -13987,32 +13992,37 @@ _ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit: ; preds = %_ZNSt11 54: ; preds = %52, %53 %.0 = phi i8 [ 2, %53 ], [ 1, %52 ] %55 = and i32 %8, 65535 - %.not90 = icmp ne i32 %55, 0 - %.sroa.277.0.extract.trunc = select i1 %.not90, i16 28, i16 0 - %56 = icmp ugt i32 %5, 1024 - %or.cond = or i1 %.not90, %56 - br i1 %or.cond, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread, label %57 - -57: ; preds = %54 - %58 = shl nuw nsw i32 %5, 3 + %.not90 = icmp eq i32 %55, 0 + %.sroa.277.0.extract.trunc = select i1 %.not90, i32 1, i32 1835008 + %.sroa.277.0.extract.shift = lshr i32 %.sroa.258.0.extract.trunc, 16 + %.sroa.277.0.extract.trunc = trunc nuw nsw i32 %.sroa.277.0.extract.shift to i16 + %57 = trunc i32 %.sroa.258.0.extract.trunc to i1 + br i1 %57, label %58, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread + +58:; preds = %54 + %59 = icmp ugt i32 %5, 1024 + br i1 %59, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread, label %.not94 + +60:; preds = %58 + %61 = shl nuw nsw i32 %5, 3 %59 = zext i32 %4 to i64 - %60 = zext nneg i32 %58 to i64 + %.not94 = zext nneg i32 %58 to i64 %61 = add nuw nsw i64 %60, %59 - %.not.i50 = icmp samesign ule i64 %61, %38 - %62 = getelementptr inbounds nuw i8, ptr %40, i64 %59 - %.sroa.0.0.i51 = select i1 %.not.i50, ptr %62, ptr null - %.not91108 = icmp eq i32 %5, 0 - %.not91 = or i1 %.not.i50, %.not91108 - br i1 %.not91, label %63, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread - -63: ; preds = %57 - %64 = zext i32 %9 to i64 - %65 = add nuw nsw i64 %64, 4 - %.not.i55 = icmp samesign ugt i64 %65, %38 - %66 = getelementptr inbounds nuw i8, ptr %40, i64 %64 - br i1 %.not.i55, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread, label %67 - -67: ; preds = %63 + %.not.i50 = icmp samesign ule i64 %64, %38 + %65 = getelementptr inbounds nuw i8, ptr %40, i64 %62 + %.sroa.0.0.i51 = select i1 %.not.i50, ptr %65, ptr null + %.not90107 = icmp eq i32 %5, 0 + %.not90 = or i1 %.not.i50, %.not90107 + br i1 %.not90, label %66, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread + +66:; preds = %60 + %67 = zext i32 %9 to i64 + %68 = add nuw nsw i64 %67, 4 + %.not.i55 = icmp samesign ugt i64 %68, %38 + %69 = getelementptr inbounds nuw i8, ptr %40, i64 %67 + br i1 %.not.i55, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread, label %70 + +70: ; preds = %66 store i64 0, ptr %11, align 8 %68 = shl nuw nsw i32 %5, 3 %.idx = zext nneg i32 %68 to i64 @@ -14025,9 +14035,9 @@ _ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit: ; preds = %_ZNSt11 br label %71 71: ; preds = %.lr.ph, %80 - %72 = phi i64 [ 0, %.lr.ph ], [ %86, %80 ] - %.04295 = phi i32 [ 0, %.lr.ph ], [ %82, %80 ] - %.04394 = phi ptr [ %.sroa.0.0.i51, %.lr.ph ], [ %87, %80 ] + %72 = phi i64 [ 0, %.lr.ph ], [ %86, %83 ] + %.04295 = phi i32 [ 0, %.lr.ph ], [ %82, %83 ] + %.04394 = phi ptr [ %.sroa.0.0.i51, %.lr.ph ], [ %87, %83 ] %73 = xor i32 %.04295, -1 %74 = getelementptr inbounds nuw i8, ptr %.04394, i64 4 %75 = load i32, ptr %74, align 4 @@ -14058,7 +14068,7 @@ _ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit: ; preds = %_ZNSt11 br i1 %.not46, label %._crit_edge, label %71 ._crit_edge: ; preds = %80, %67 - %.val.i = phi i64 [ 0, %67 ], [ %86, %80 ] + %.val.i = phi i64 [ 0, %67 ], [ %86, %83 ] %88 = getelementptr inbounds nuw i8, ptr %1, i64 160 %89 = load ptr, ptr %88, align 8 %90 = getelementptr inbounds nuw i8, ptr %11, i64 8 @@ -14072,8 +14082,8 @@ _ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit: ; preds = %_ZNSt11 %spec.select111 = select i1 %94, i32 0, i32 %.sroa.264.0.extract.shift br label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread -_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread: ; preds = %71, %._crit_edge, %63, %57, %54, %52, %43, %32, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread88, %10 - %.sink = phi i32 [ 21, %10 ], [ 21, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread88 ], [ 21, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit ], [ 21, %32 ], [ 21, %43 ], [ 28, %52 ], [ 28, %54 ], [ 21, %57 ], [ 21, %63 ], [ %spec.select111, %._crit_edge ], [ 21, %71 ] +_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread: ; preds = %71, %._crit_edge, %63, %57, %58, %54, %52, %43, %32, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread88, %10 + %.sink = phi i32 [ 21, %10 ], [ 21, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread88 ], [ 21, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit ], [ 21, %32 ], [ 21, %43 ], [ 28, %52 ], [ %.sroa.277.0.extract.shift, %54 ], [ 28, %58 ], [ 21, %57 ], [ 21, %66 ], [ %spec.select111, %._crit_edge ], [ 21, %71 ] store i8 1, ptr %0, align 4 %95 = getelementptr inbounds nuw i8, ptr %0, i64 4 store i32 %.sink, ptr %95, align 4 @@ -14368,12 +14378,18 @@ _ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit: ; preds = %_ZNSt11 br i1 %27, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread, label %28 28: ; preds = %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit - %cond.i.not = icmp ne i32 %4, 0 + %cond.i.not = icmp eq i32 %4, 0 + %.sroa.02.0.insert.insert.i = select i1 %cond.i, i64 1, i64 120259084288 + %.sroa.226.0.extract.shift = lshr i64 %.sroa.02.0.insert.insert.i, 32 + %29 = trunc i64 %.sroa.02.0.insert.insert.i to i1 + %30 = trunc nuw nsw i64 %.sroa.226.0.extract.shift to i32 + br i1 %29, label %31, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread + +31: ; preds = %28 %switch.i = icmp ugt i32 %5, 14 - %or.cond = or i1 %cond.i.not, %switch.i - br i1 %or.cond, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread, label %29 + br i1 %switch.i, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread, label %32 -29: ; preds = %28 +29: ; preds = %31 %30 = zext i32 %6 to i64 %31 = zext i32 %7 to i64 %32 = add nuw nsw i64 %31, %30 @@ -14388,19 +14404,19 @@ _ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit: ; preds = %_ZNSt11 37: ; preds = %29 %38 = getelementptr inbounds nuw i8, ptr %25, i64 16 - %39 = load ptr, ptr %38, align 8 - %40 = getelementptr inbounds nuw i8, ptr %39, i64 %30 - %.sroa.0.0.i = select i1 %.not.i, ptr %40, ptr null - %41 = getelementptr inbounds nuw i8, ptr %1, i64 160 %42 = load ptr, ptr %41, align 8 - %43 = tail call i32 @_ZNK8WasmEdge4Host4WASI7Environ10sockSetOptEi23__wasi_sock_opt_level_t20__wasi_sock_opt_so_tN5cxx204spanIKhLm18446744073709551615EEE(ptr noundef nonnull align 8 dereferenceable(344) %42, i32 noundef %3, i32 noundef 0, i32 noundef %5, ptr %.sroa.0.0.i, i64 %31) #19 - %44 = trunc i32 %43 to i1 - %.sroa.216.0.extract.shift = lshr i32 %43, 16 - %spec.select = select i1 %44, i32 0, i32 %.sroa.216.0.extract.shift + %43 = getelementptr inbounds nuw i8, ptr %42, i64 %33 + %.sroa.0.0.i = select i1 %.not.i, ptr %43, ptr null + %44 = getelementptr inbounds nuw i8, ptr %1, i64 160 + %45 = load ptr, ptr %44, align 8 + %46 = tail call i32 @_ZNK8WasmEdge4Host4WASI7Environ10sockSetOptEi23__wasi_sock_opt_level_t20__wasi_sock_opt_so_tN5cxx204spanIKhLm18446744073709551615EEE(ptr noundef nonnull align 8 dereferenceable(344) %45, i32 noundef %3, i32 noundef %30, i32 noundef %5, ptr %.sroa.0.0.i, i64 %34) #19 + %47 = trunc i32 %46 to i1 + %.sroa.215.0.extract.shift = lshr i32 %46, 16 + %spec.select = select i1 %47, i32 0, i32 %.sroa.215.0.extract.shift br label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread -_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread: ; preds = %37, %29, %28, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread31, %8 - %.sink = phi i32 [ 21, %8 ], [ 21, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread31 ], [ 21, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit ], [ 28, %28 ], [ 21, %29 ], [ %spec.select, %37 ] +_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread: ; preds = %37, %29, %31, %28, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread31, %8 + %.sink = phi i32 [ 21, %8 ], [ 21, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread30 ], [ 21, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit ], [ %30, %28 ], [ 28, %31 ], [ 21, %32 ], [ %spec.select, %37 ] store i8 1, ptr %0, align 4 %45 = getelementptr inbounds nuw i8, ptr %0, i64 4 store i32 %.sink, ptr %45, align 4 @@ -16522,40 +16538,45 @@ _ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit: ; preds = %_ZNSt11 29: ; preds = %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit %30 = and i32 %6, 65535 - %.not64 = icmp ne i32 %30, 0 - %.sroa.258.0.extract.trunc = select i1 %.not64, i16 28, i16 0 - %31 = icmp ugt i32 %5, 1024 - %or.cond = or i1 %.not64, %31 - br i1 %or.cond, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread, label %32 + %.not64 = icmp eq i32 %30, 0 + %.sroa.258.0.extract.trunc = select i1 %.not64, i32 1, i32 1835008 + %.sroa.258.0.extract.shift = lshr i32 %.sroa.258.0.extract.trunc, 16 + %.sroa.258.0.extract.trunc = trunc nuw nsw i32 %.sroa.258.0.extract.shift to i16 + %32 = trunc i32 %.sroa.258.0.extract.trunc to i1 + br i1 %32, label %33, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread 32: ; preds = %29 - %33 = shl nuw nsw i32 %5, 3 - %34 = zext i32 %4 to i64 - %35 = zext nneg i32 %33 to i64 - %36 = add nuw nsw i64 %35, %34 - %37 = getelementptr inbounds nuw i8, ptr %26, i64 4 - %38 = load i32, ptr %37, align 4 - %39 = zext i32 %38 to i64 - %40 = shl nuw nsw i64 %39, 16 - %.not.i = icmp samesign ule i64 %36, %40 - %41 = getelementptr inbounds nuw i8, ptr %26, i64 16 - %42 = load ptr, ptr %41, align 8 - %43 = getelementptr inbounds nuw i8, ptr %42, i64 %34 - %.sroa.0.0.i = select i1 %.not.i, ptr %43, ptr null - %.not6579 = icmp eq i32 %5, 0 - %.not65 = or i1 %.not.i, %.not6579 - br i1 %.not65, label %44, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread - -44: ; preds = %32 - %45 = zext i32 %7 to i64 - %46 = add nuw nsw i64 %45, 4 - %.not.i36 = icmp samesign ugt i64 %46, %40 - %47 = getelementptr inbounds nuw i8, ptr %42, i64 %45 - %48 = icmp eq ptr %42, null - %49 = select i1 %.not.i36, i1 true, i1 %48 - br i1 %49, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread, label %50 + %34 = icmp ugt i32 %5, 1024 + br i1 %34, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread, label %35 + +50: ; preds = %33 + %36 = shl nuw nsw i32 %5, 3 + %37 = zext i32 %4 to i64 + %38 = zext nneg i32 %36 to i64 + %39 = add nuw nsw i64 %38, %37 + %40 = getelementptr inbounds nuw i8, ptr %26, i64 4 + %41 = load i32, ptr %40, align 4 + %42 = zext i32 %41 to i64 + %43 = shl nuw nsw i64 %42, 16 + %.not.i = icmp samesign ule i64 %39, %43 + %44 = getelementptr inbounds nuw i8, ptr %26, i64 16 + %45 = load ptr, ptr %44, align 8 + %46 = getelementptr inbounds nuw i8, ptr %45, i64 %37 + %.sroa.0.0.i = select i1 %.not.i, ptr %46, ptr null + %.not6478 = icmp eq i32 %5, 0 + %.not64 = or i1 %.not.i, %.not6478 + br i1 %.not64, label %47, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread + +47: ; preds = %35 + %48 = zext i32 %7 to i64 + %49 = add nuw nsw i64 %48, 4 + %.not.i36 = icmp samesign ugt i64 %49, %43 + %50 = getelementptr inbounds nuw i8, ptr %45, i64 %48 + %51 = icmp eq ptr %45, null + %52 = select i1 %.not.i36, i1 true, i1 %51 + br i1 %52, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread, label %53 -50: ; preds = %44 +53: ; preds = %47 store i64 0, ptr %9, align 8 %51 = shl nuw nsw i32 %5, 3 %.idx = zext nneg i32 %51 to i64 @@ -16568,9 +16589,9 @@ _ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit: ; preds = %_ZNSt11 br label %54 54: ; preds = %.lr.ph, %63 - %55 = phi i64 [ 0, %.lr.ph ], [ %69, %63 ] - %.069 = phi i32 [ 0, %.lr.ph ], [ %65, %63 ] - %.03368 = phi ptr [ %.sroa.0.0.i, %.lr.ph ], [ %70, %63 ] + %55 = phi i64 [ 0, %.lr.ph ], [ %69, %66 ] + %.069 = phi i32 [ 0, %.lr.ph ], [ %65, %66 ] + %.03368 = phi ptr [ %.sroa.0.0.i, %.lr.ph ], [ %70, %66 ] %56 = xor i32 %.069, -1 %57 = getelementptr inbounds nuw i8, ptr %.03368, i64 4 %58 = load i32, ptr %57, align 4 @@ -16601,7 +16622,7 @@ _ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit: ; preds = %_ZNSt11 br i1 %.not, label %._crit_edge, label %54 ._crit_edge: ; preds = %63, %50 - %.val.i = phi i64 [ 0, %50 ], [ %69, %63 ] + %.val.i = phi i64 [ 0, %50 ], [ %69, %66 ] %71 = getelementptr inbounds nuw i8, ptr %1, i64 160 %72 = load ptr, ptr %71, align 8 %73 = getelementptr inbounds nuw i8, ptr %9, i64 8 @@ -16611,8 +16632,8 @@ _ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit: ; preds = %_ZNSt11 %spec.select82 = select i1 %75, i32 0, i32 %.sroa.245.0.extract.shift br label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread -_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread: ; preds = %54, %._crit_edge, %44, %32, %29, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread62, %8 - %.sink = phi i32 [ 21, %8 ], [ 21, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread62 ], [ 21, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit ], [ 28, %29 ], [ 21, %32 ], [ 21, %44 ], [ %spec.select82, %._crit_edge ], [ 21, %54 ] +_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread: ; preds = %54, %._crit_edge, %44, %35, %32, %29, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread62, %8 + %.sink = phi i32 [ 21, %8 ], [ 21, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread62 ], [ 21, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit ], [ %.sroa.258.0.extract.shift, %29 ], [ 28, %33 ], [ 21, %32 ], [ 21, %44 ], [ %spec.select82, %._crit_edge ], [ 21, %57 ] store i8 1, ptr %0, align 4 %76 = getelementptr inbounds nuw i8, ptr %0, i64 4 store i32 %.sink, ptr %76, align 4 @@ -16721,32 +16742,37 @@ _ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit: ; preds = %_ZNSt11 %.sroa.4.0 = phi i64 [ 4, %52 ], [ 16, %53 ], [ 126, %54 ] %.0 = phi i8 [ 1, %52 ], [ 2, %53 ], [ %56, %54 ] %59 = and i32 %8, 65535 - %.not94 = icmp ne i32 %59, 0 - %.sroa.281.0.extract.trunc = select i1 %.not94, i16 28, i16 0 - %60 = icmp ugt i32 %5, 1024 - %or.cond = or i1 %.not94, %60 - br i1 %or.cond, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread, label %61 - -61: ; preds = %58 - %62 = shl nuw nsw i32 %5, 3 - %63 = zext i32 %4 to i64 - %64 = zext nneg i32 %62 to i64 - %65 = add nuw nsw i64 %64, %63 - %.not.i54 = icmp samesign ule i64 %65, %38 - %66 = getelementptr inbounds nuw i8, ptr %40, i64 %63 - %.sroa.0.0.i55 = select i1 %.not.i54, ptr %66, ptr null - %.not95111 = icmp eq i32 %5, 0 - %.not95 = or i1 %.not.i54, %.not95111 - br i1 %.not95, label %67, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread - -67: ; preds = %61 - %68 = zext i32 %9 to i64 - %69 = add nuw nsw i64 %68, 4 - %.not.i59 = icmp samesign ugt i64 %69, %38 - %70 = getelementptr inbounds nuw i8, ptr %40, i64 %68 - br i1 %.not.i59, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread, label %71 - -71: ; preds = %67 + %.not94 = icmp eq i32 %59, 0 + %.sroa.281.0.extract.trunc = select i1 %.not94, i32 1, i32 1835008 + %.sroa.281.0.extract.shift = lshr i32 %.sroa.258.0.extract.trunc, 16 + %.sroa.281.0.extract.trunc = trunc nuw nsw i32 %.sroa.281.0.extract.shift to i16 + %55 = trunc i32 %.sroa.258.0.extract.trunc to i1 + br i1 %61, label %62, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread + +62:; preds = %58 + %63 = icmp ugt i32 %5, 1024 + br i1 %63, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread, label %64 + +64:; preds = %62 + %65 = shl nuw nsw i32 %5, 3 + %66 = zext i32 %4 to i64 + %67 = zext nneg i32 %65 to i64 + %65 = add nuw nsw i64 %64, %66 + %.not.i54 = icmp samesign ule i64 %68, %38 + %69 = getelementptr inbounds nuw i8, ptr %40, i64 %66 + %.sroa.0.0.i55 = select i1 %.not.i54, ptr %69, ptr null + %.not94110 = icmp eq i32 %5, 0 + %.not94 = or i1 %.not.i54, %.not94110 + br i1 %.not94, label %70, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread + +70:; preds = %61 + %71 = zext i32 %9 to i64 + %72 = add nuw nsw i64 %71, 4 + %.not.i59 = icmp samesign ugt i64 %72, %38 + %73 = getelementptr inbounds nuw i8, ptr %40, i64 %71 + br i1 %.not.i59, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread, label %74 + +74: ; preds = %70 store i64 0, ptr %11, align 8 %72 = shl nuw nsw i32 %5, 3 %.idx = zext nneg i32 %72 to i64 @@ -16758,44 +16784,44 @@ _ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit: ; preds = %_ZNSt11 %74 = getelementptr inbounds nuw i8, ptr %11, i64 8 br label %75 -75: ; preds = %.lr.ph, %84 - %76 = phi i64 [ 0, %.lr.ph ], [ %90, %84 ] - %.04499 = phi i32 [ 0, %.lr.ph ], [ %86, %84 ] - %.04598 = phi ptr [ %.sroa.0.0.i55, %.lr.ph ], [ %91, %84 ] - %77 = xor i32 %.04499, -1 - %78 = getelementptr inbounds nuw i8, ptr %.04598, i64 4 - %79 = load i32, ptr %78, align 4 - %spec.select = tail call i32 @llvm.umin.i32(i32 %79, i32 %77) - %80 = load i32, ptr %.04598, align 4 - %81 = zext i32 %80 to i64 - %82 = zext i32 %spec.select to i64 - %83 = add nuw nsw i64 %82, %81 - %.not.i61 = icmp samesign ule i64 %83, %38 - %.not96112 = icmp eq i32 %spec.select, 0 - %.not96 = or i1 %.not.i61, %.not96112 - br i1 %.not96, label %84, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread - -84: ; preds = %75 - %85 = getelementptr inbounds nuw i8, ptr %40, i64 %81 - %.sroa.0.0.i62 = select i1 %.not.i61, ptr %85, ptr null - %86 = tail call i32 @llvm.uadd.sat.i32(i32 %79, i32 %.04499) - %87 = icmp samesign ult i64 %76, 1024 - tail call void @llvm.assume(i1 %87) - %88 = getelementptr inbounds nuw %"struct.cxx20::span.251", ptr %74, i64 %76 - store ptr %.sroa.0.0.i62, ptr %88, align 8 - %89 = getelementptr inbounds nuw i8, ptr %88, i64 8 - store i64 %82, ptr %89, align 8 - %90 = add nuw nsw i64 %76, 1 - store i64 %90, ptr %11, align 8 - %91 = getelementptr inbounds nuw i8, ptr %.04598, i64 8 - %.not48 = icmp eq ptr %91, %73 - br i1 %.not48, label %._crit_edge, label %75 - -._crit_edge: ; preds = %84, %71 - %.val.i = phi i64 [ 0, %71 ], [ %90, %84 ] - %92 = getelementptr inbounds nuw i8, ptr %1, i64 160 - %93 = load ptr, ptr %92, align 8 - %94 = getelementptr inbounds nuw i8, ptr %11, i64 8 +84: ; preds = %.lr.ph, %87 + %79 = phi i64 [ 0, %.lr.ph ], [ %93, %87 ] + %.04498 = phi i32 [ 0, %.lr.ph ], [ %89, %87 ] + %.04597 = phi ptr [ %.sroa.0.0.i55, %.lr.ph ], [ %94, %87 ] + %80 = xor i32 %.04498, -1 + %81 = getelementptr inbounds nuw i8, ptr %.04597, i64 4 + %82 = load i32, ptr %78, align 4 + %spec.select = tail call i32 @llvm.umin.i32(i32 %82, i32 %80) + %83 = load i32, ptr %.04597, align 4 + %84 = zext i32 %83 to i64 + %85 = zext i32 %spec.select to i64 + %86 = add nuw nsw i64 %85, %84 + %.not.i61 = icmp samesign ule i64 %86, %38 + %.not48 = icmp eq i32 %spec.select, 0 + %.not95 = or i1 %.not.i61, %.not95111 + br i1 %.not95, label %87, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread + +87: ; preds = %84 + %92 = getelementptr inbounds nuw i8, ptr %40, i64 %81 + %.sroa.0.0.i62 = select i1 %.not.i61, ptr %92, ptr null + %89 = tail call i32 @llvm.uadd.sat.i32(i32 %82, i32 %.04498) + %90 = icmp samesign ult i64 %79, 1024 + tail call void @llvm.assume(i1 %90) + %91 = getelementptr inbounds nuw %"struct.cxx20::span.251", ptr %77, i64 %79 + store ptr %.sroa.0.0.i62, ptr %91, align 8 + %92 = getelementptr inbounds nuw i8, ptr %91, i64 8 + store i64 %85, ptr %92, align 8 + %93 = add nuw nsw i64 %79, 1 + store i64 %93, ptr %11, align 8 + %94 = getelementptr inbounds nuw i8, ptr %.04597, i64 8 + %.not48 = icmp eq ptr %94, %76 + br i1 %.not48, label %._crit_edge, label %78 + +._crit_edge: ; preds = %87, %74 + %.val.i = phi i64 [ 0, %74 ], [ %93, %87 ] + %95 = getelementptr inbounds nuw i8, ptr %1, i64 160 + %96 = load ptr, ptr %95, align 8 + %97 = getelementptr inbounds nuw i8, ptr %11, i64 8 store ptr %.sroa.085.0, ptr %12, align 8 %95 = getelementptr inbounds nuw i8, ptr %12, i64 8 store i64 %.sroa.4.0, ptr %95, align 8 @@ -16806,8 +16832,8 @@ _ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit: ; preds = %_ZNSt11 %spec.select114 = select i1 %98, i32 0, i32 %.sroa.268.0.extract.shift br label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread -_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread: ; preds = %75, %._crit_edge, %67, %61, %58, %52, %43, %32, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread92, %10 - %.sink = phi i32 [ 21, %10 ], [ 21, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread92 ], [ 21, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit ], [ 21, %32 ], [ 21, %43 ], [ 28, %52 ], [ 28, %58 ], [ 21, %61 ], [ 21, %67 ], [ %spec.select114, %._crit_edge ], [ 21, %75 ] +_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread: ; preds = %75, %._crit_edge, %67, %61, %62, %58, %52, %43, %32, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread92, %10 + %.sink = phi i32 [ 21, %10 ], [ 21, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread92 ], [ 21, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit ], [ 21, %32 ], [ 21, %43 ], [ 28, %52 ], [ %.sroa.281.0.extract.shift, %58 ], [ 28, %62 ], [ 21, %61 ], [ 21, %67 ], [ %spec.select114, %._crit_edge ], [ 21, %75 ] store i8 1, ptr %0, align 4 %99 = getelementptr inbounds nuw i8, ptr %0, i64 4 store i32 %.sink, ptr %99, align 4 @@ -16866,10 +16892,16 @@ _ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit: ; preds = %_ZNSt11 br i1 %28, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread, label %29 29: ; preds = %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit - %cond.i.not = icmp ne i32 %4, 0 + %cond.i.not = icmp eq i32 %4, 0 + %.sroa.02.0.insert.insert.i = select i1 %cond.i, i64 1, i64 120259084288 + %.sroa.229.0.extract.shift = lshr i64 %.sroa.02.0.insert.insert.i, 32 + %30 = trunc i64 %.sroa.02.0.insert.insert.i to i1 + %31 = trunc nuw nsw i64 %.sroa.229.0.extract.shift to i32 + br i1 %30, label %32, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread + +32: ; preds = %29 %switch.i = icmp ugt i32 %5, 14 - %or.cond = or i1 %cond.i.not, %switch.i - br i1 %or.cond, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread, label %30 + br i1 %switch.i, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread, label %33 30: ; preds = %29 %31 = zext i32 %7 to i64 @@ -16904,7 +16936,7 @@ _ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit: ; preds = %_ZNSt11 49: ; preds = %42 %50 = getelementptr inbounds nuw i8, ptr %1, i64 160 %51 = load ptr, ptr %50, align 8 - %52 = call i32 @_ZNK8WasmEdge4Host4WASI7Environ10sockGetOptEi23__wasi_sock_opt_level_t20__wasi_sock_opt_so_tRN5cxx204spanIhLm18446744073709551615EEE(ptr noundef nonnull align 8 dereferenceable(344) %51, i32 noundef %3, i32 noundef 0, i32 noundef %5, ptr noundef nonnull align 8 dereferenceable(16) %9) #19 + %52 = call i32 @_ZNK8WasmEdge4Host4WASI7Environ10sockGetOptEi23__wasi_sock_opt_level_t20__wasi_sock_opt_so_tRN5cxx204spanIhLm18446744073709551615EEE(ptr noundef nonnull align 8 dereferenceable(344) %51, i32 noundef %3, i32 noundef %31, i32 noundef %5, ptr noundef nonnull align 8 dereferenceable(16) %9) #19 %53 = trunc i32 %52 to i1 br i1 %53, label %55, label %54 @@ -16918,8 +16950,8 @@ _ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit: ; preds = %_ZNSt11 store i32 %57, ptr %39, align 4 br label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread -_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread: ; preds = %42, %30, %29, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread34, %8, %55, %54 - %.sink = phi i32 [ 0, %55 ], [ %.sroa.221.0.extract.shift, %54 ], [ 21, %8 ], [ 21, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread34 ], [ 21, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit ], [ 28, %29 ], [ 21, %30 ], [ 21, %42 ] +_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread: ; preds = %42, %30, %32, %29, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread34, %8, %55, %54 + %.sink = phi i32 [ 0, %55 ], [ %.sroa.221.0.extract.shift, %57 ], [ 21, %8 ], [ 21, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread33 ], [ 21, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit ], [ %31, %29 ], [ 28, %32 ], [ 21, %30 ], [ 21, %45 ] store i8 1, ptr %0, align 4 %58 = getelementptr inbounds nuw i8, ptr %0, i64 4 store i32 %.sink, ptr %58, align 4 diff --git a/bench/z3/optimized/ast.ll b/bench/z3/optimized/ast.ll index 28016902433..d77b70c48f3 100644 --- a/bench/z3/optimized/ast.ll +++ b/bench/z3/optimized/ast.ll @@ -5834,35 +5834,33 @@ _ZN6bufferIP4sortLb0ELj16EE6expandEv.exit.i: ; preds = %.noexc24, %._crit_e %47 = getelementptr inbounds nuw i8, ptr %11, i64 16 store i8 0, ptr %47, align 8, !tbaa !103 %48 = getelementptr inbounds nuw i8, ptr %11, i64 17 - %49 = zext i1 %4 to i16 - %50 = select i1 %4, i16 2, i16 0 - %51 = or disjoint i16 %50, %49 - %52 = select i1 %7, i16 4, i16 0 - %53 = select i1 %5, i16 8, i16 0 - %54 = select i1 %6, i16 128, i16 0 - %55 = select i1 %8, i16 16, i16 0 - %56 = or disjoint i16 %51, %53 - %57 = or disjoint i16 %56, %54 - %58 = or disjoint i16 %57, %52 - %59 = or disjoint i16 %58, %55 - %60 = or i16 %59, %42 - store i16 %60, ptr %48, align 1 - %61 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %62 = load ptr, ptr %61, align 8, !tbaa !163 + %49 = select i1 %4, i16 3, i16 0 + %50 = select i1 %7, i16 4, i16 0 + %51 = select i1 %5, i16 8, i16 0 + %52 = select i1 %6, i16 128, i16 0 + %53 = select i1 %8, i16 16, i16 0 + %54 = or disjoint i16 %51, %49 + %55 = or disjoint i16 %54, %52 + %56 = or disjoint i16 %55, %50 + %57 = or disjoint i16 %56, %53 + %58 = or disjoint i16 %57, %42 + store i16 %58, ptr %48, align 1 + %59 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %60 = load ptr, ptr %59, align 8, !tbaa !163 call void @llvm.lifetime.start.p0(ptr nonnull %12) invoke void @_ZN6symbolC1EPKc(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef %1) - to label %63 unwind label %90 + to label %61 unwind label %90 63: ; preds = %._crit_edge %64 = load ptr, ptr %10, align 8, !tbaa !212 %65 = getelementptr inbounds nuw i8, ptr %0, i64 24 %66 = load ptr, ptr %65, align 8, !tbaa !226 %67 = icmp eq i32 %44, -1 - %68 = and i16 %59, 507 + %68 = and i16 %57, 155 %or.cond.i = icmp eq i16 %68, 0 %or.cond = select i1 %67, i1 %or.cond.i, i1 false %.sink.i = select i1 %or.cond, ptr null, ptr %11 - %69 = invoke noundef ptr @_ZN11ast_manager12mk_func_declERK6symboljPKP4sortS4_P14func_decl_info(ptr noundef nonnull align 8 dereferenceable(976) %62, ptr noundef nonnull align 8 dereferenceable(8) %12, i32 noundef %3, ptr noundef %64, ptr noundef %66, ptr noundef %.sink.i) + %69 = invoke noundef ptr @_ZN11ast_manager12mk_func_declERK6symboljPKP4sortS4_P14func_decl_info(ptr noundef nonnull align 8 dereferenceable(976) %60, ptr noundef nonnull align 8 dereferenceable(8) %12, i32 noundef %3, ptr noundef %64, ptr noundef %66, ptr noundef %.sink.i) to label %_ZN11ast_manager12mk_func_declERK6symboljPKP4sortS4_RK14func_decl_info.exit unwind label %90 _ZN11ast_manager12mk_func_declERK6symboljPKP4sortS4_RK14func_decl_info.exit: ; preds = %63 @@ -5946,7 +5944,7 @@ _ZN6bufferIP4sortLb0ELj16EED2Ev.exit: ; preds = %_ZN9decl_infoD2Ev.e br label %92 92: ; preds = %90, %39 - %.pn22 = phi { ptr, i32 } [ %40, %39 ], [ %91, %90 ] + %.pn22 = phi { ptr, i32 } [ %40, %39 ], [ %91, %88 ] call void @_ZN6bufferIP4sortLb0ELj16EED2Ev(ptr noundef nonnull align 8 dereferenceable(144) %10) #39 call void @llvm.lifetime.end.p0(ptr nonnull %10) resume { ptr, i32 } %.pn22 @@ -24061,15 +24059,13 @@ _ZNK14func_decl_info7is_nullEv.exit.thread.i: %11 = getelementptr inbounds nuw i8, ptr %8, i64 16 store i8 0, ptr %11, align 8, !tbaa !103 %12 = getelementptr inbounds nuw i8, ptr %8, i64 17 - %13 = zext i1 %5 to i16 - %14 = select i1 %5, i16 2, i16 0 - %15 = or disjoint i16 %14, %13 - %16 = select i1 %6, i16 8, i16 0 - %17 = select i1 %7, i16 64, i16 0 - %18 = or disjoint i16 %15, %16 - %19 = or disjoint i16 %18, %17 - store i16 %19, ptr %12, align 1 - %or.cond.i = icmp eq i16 %19, 0 + %13 = select i1 %5, i16 3, i16 0 + %14 = select i1 %6, i16 8, i16 0 + %15 = select i1 %7, i16 64, i16 0 + %16 = or disjoint i16 %14, %13 + %17 = or disjoint i16 %16, %15 + store i16 %17, ptr %12, align 1 + %or.cond.i = icmp eq i16 %17, 0 %spec.select = select i1 %or.cond.i, ptr null, ptr %8 %20 = invoke noundef ptr @_ZN11ast_manager12mk_func_declERK6symboljPKP4sortS4_P14func_decl_info(ptr noundef nonnull align 8 dereferenceable(976) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, i32 noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %spec.select) to label %_ZN11ast_manager12mk_func_declERK6symboljPKP4sortS4_RK14func_decl_info.exit unwind label %31 diff --git a/bench/z3/optimized/bv_decl_plugin.ll b/bench/z3/optimized/bv_decl_plugin.ll index 1bdfa4c6375..09c43037383 100644 --- a/bench/z3/optimized/bv_decl_plugin.ll +++ b/bench/z3/optimized/bv_decl_plugin.ll @@ -3871,24 +3871,18 @@ _Z20force_ptr_array_sizeI10ptr_vectorI9func_declEEvRT_j.exit: ; preds = %_ZNK6ve %37 = load i32, ptr %36, align 8, !tbaa !10 call void @_ZN14func_decl_infoC1EiijPK9parameter(ptr noundef nonnull align 8 dereferenceable(19) %9, i32 noundef %37, i32 noundef %2, i32 noundef 0, ptr noundef null) %38 = getelementptr inbounds nuw i8, ptr %9, i64 17 - %39 = zext i1 %5 to i16 - %40 = load i16, ptr %38, align 1 - %41 = and i16 %40, -144 - %42 = select i1 %5, i16 2, i16 0 - %43 = or disjoint i16 %42, %39 - %44 = select i1 %5, i16 4, i16 0 - %45 = select i1 %5, i16 8, i16 0 - %46 = select i1 %6, i16 128, i16 0 - %47 = or disjoint i16 %43, %44 - %48 = or disjoint i16 %47, %45 - %49 = or disjoint i16 %48, %46 - %50 = or disjoint i16 %49, %41 - store i16 %50, ptr %38, align 1 - %51 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %52 = load ptr, ptr %51, align 8, !tbaa !3 + %39 = load i16, ptr %38, align 1 + %40 = and i16 %39, -144 + %41 = select i1 %6, i16 128, i16 0 + %42 = select i1 %5, i16 15, i16 0 + %43 = or disjoint i16 %42, %41 + %44 = or disjoint i16 %43, %40 + store i16 %44, ptr %38, align 1 + %45 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %46 = load ptr, ptr %45, align 8, !tbaa !3 call void @llvm.lifetime.start.p0(ptr nonnull %10) invoke void @_ZN6symbolC1EPKc(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef %3) - to label %53 unwind label %80 + to label %47 unwind label %80 53: ; preds = %34 call void @llvm.lifetime.start.p0(ptr nonnull %8) @@ -3909,9 +3903,9 @@ _ZNK14func_decl_info7is_nullEv.exit.thread.i.i: ; preds = %57, %53 br label %_ZN11ast_manager12mk_func_declERK6symboljPKP4sortS4_RK14func_decl_info.exit.i _ZN11ast_manager12mk_func_declERK6symboljPKP4sortS4_RK14func_decl_info.exit.i: ; preds = %_ZNK14func_decl_info7is_nullEv.exit.thread.i.i, %57 - %.sink.i.i = phi ptr [ %9, %_ZNK14func_decl_info7is_nullEv.exit.thread.i.i ], [ null, %57 ] - %60 = invoke noundef ptr @_ZN11ast_manager12mk_func_declERK6symboljPKP4sortS4_P14func_decl_info(ptr noundef nonnull align 8 dereferenceable(976) %52, ptr noundef nonnull align 8 dereferenceable(8) %10, i32 noundef 2, ptr noundef nonnull %8, ptr noundef %35, ptr noundef %.sink.i.i) - to label %61 unwind label %80 + %.sink.i.i = phi ptr [ %9, %_ZNK14func_decl_info7is_nullEv.exit.thread.i.i ], [ null, %51 ] + %60 = invoke noundef ptr @_ZN11ast_manager12mk_func_declERK6symboljPKP4sortS4_P14func_decl_info(ptr noundef nonnull align 8 dereferenceable(976) %46, ptr noundef nonnull align 8 dereferenceable(8) %10, i32 noundef 2, ptr noundef nonnull %8, ptr noundef %35, ptr noundef %.sink.i.i) + to label %55 unwind label %80 61: ; preds = %_ZN11ast_manager12mk_func_declERK6symboljPKP4sortS4_RK14func_decl_info.exit.i call void @llvm.lifetime.end.p0(ptr nonnull %8) diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c8d0fce0bf7..91460a19b3d 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/166816 export COMPTIME_MODE=0 export STAT_MODE=0 export STAT_NAME=""