diff --git a/bench/abc/optimized/abcBlifMv.ll b/bench/abc/optimized/abcBlifMv.ll index 1212ffa368e..bbf0146a6fd 100644 --- a/bench/abc/optimized/abcBlifMv.ll +++ b/bench/abc/optimized/abcBlifMv.ll @@ -3531,8 +3531,8 @@ define range(i32 0, 2) i32 @Abc_NtkConvertToBlifMv(ptr noundef %0) local_unnamed br label %17 17: ; preds = %.lr.ph, %69 - %18 = phi ptr [ %13, %.lr.ph ], [ %70, %69 ] - %indvars.iv95 = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next96, %69 ] + %18 = phi ptr [ %13, %.lr.ph ], [ %70, %65 ] + %indvars.iv95 = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next96, %65 ] %19 = getelementptr i8, ptr %18, i64 8 %.val75.val = load ptr, ptr %19, align 8, !tbaa !32 %20 = getelementptr inbounds nuw ptr, ptr %.val75.val, i64 %indvars.iv95 @@ -3569,33 +3569,31 @@ define range(i32 0, 2) i32 @Abc_NtkConvertToBlifMv(ptr noundef %0) local_unnamed .preheader78: ; preds = %26, %.critedge2 %40 = phi i8 [ %51, %.critedge2 ], [ %39, %26 ] %.05881 = phi ptr [ %50, %.critedge2 ], [ %38, %26 ] - %.06080 = phi ptr [ %47, %.critedge2 ], [ %37, %26 ] + %.06080 = phi ptr [ %44, %.critedge2 ], [ %37, %26 ] br label %41 41: ; preds = %.preheader78, %43 - %42 = phi i8 [ %40, %.preheader78 ], [ %.pre, %43 ] - %indvars.iv = phi i64 [ 0, %.preheader78 ], [ %indvars.iv.next, %43 ] - %.161 = phi ptr [ %.06080, %.preheader78 ], [ %45, %43 ] - switch i8 %42, label %43 [ + %42 = phi i8 [ %40, %.preheader78 ], [ %.pre, %45 ] + %indvars.iv = phi i64 [ 0, %.preheader78 ], [ %indvars.iv.next, %45 ] + %.161 = phi ptr [ %.06080, %.preheader78 ], [ %44, %45 ] + %43 = getelementptr inbounds nuw i8, ptr %.161, i64 1 + %44 = getelementptr inbounds nuw i8, ptr %.161, i64 2 + switch i8 %42, label %45 [ i8 32, label %.critedge2 i8 0, label %.critedge2 ] 43: ; preds = %41 - %44 = getelementptr inbounds nuw i8, ptr %.161, i64 1 store i8 %42, ptr %.161, align 1, !tbaa !48 - %45 = getelementptr inbounds nuw i8, ptr %.161, i64 2 - store i8 32, ptr %44, align 1, !tbaa !48 + store i8 32, ptr %43, align 1, !tbaa !48 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %.05881, i64 %indvars.iv.next %.pre = load i8, ptr %.phi.trans.insert, align 1, !tbaa !48 br label %41, !llvm.loop !114 .critedge2: ; preds = %41, %41 - %46 = getelementptr inbounds nuw i8, ptr %.161, i64 1 store i8 48, ptr %.161, align 1, !tbaa !48 - %47 = getelementptr inbounds nuw i8, ptr %.161, i64 2 - store i8 10, ptr %46, align 1, !tbaa !48 + store i8 10, ptr %43, align 1, !tbaa !48 %.val73 = load i32, ptr %32, align 4, !tbaa !49 %48 = sext i32 %.val73 to i64 %49 = getelementptr i8, ptr %.05881, i64 %48 @@ -3605,7 +3603,7 @@ define range(i32 0, 2) i32 @Abc_NtkConvertToBlifMv(ptr noundef %0) local_unnamed br i1 %.not66, label %._crit_edge, label %.preheader78, !llvm.loop !115 ._crit_edge: ; preds = %.critedge2, %26 - %.060.lcssa = phi ptr [ %37, %26 ], [ %47, %.critedge2 ] + %.060.lcssa = phi ptr [ %37, %26 ], [ %44, %.critedge2 ] %52 = load ptr, ptr %3, align 8, !tbaa !113 %53 = load i8, ptr %52, align 1, !tbaa !48 %.not6782 = icmp eq i8 %53, 0 @@ -3614,33 +3612,31 @@ define range(i32 0, 2) i32 @Abc_NtkConvertToBlifMv(ptr noundef %0) local_unnamed .preheader: ; preds = %._crit_edge, %.critedge4 %54 = phi i8 [ %65, %.critedge4 ], [ %53, %._crit_edge ] %.15984 = phi ptr [ %64, %.critedge4 ], [ %52, %._crit_edge ] - %.283 = phi ptr [ %61, %.critedge4 ], [ %.060.lcssa, %._crit_edge ] + %.283 = phi ptr [ %56, %.critedge4 ], [ %.060.lcssa, %._crit_edge ] br label %55 55: ; preds = %.preheader, %57 %56 = phi i8 [ %54, %.preheader ], [ %.pre99, %57 ] %indvars.iv92 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next93, %57 ] - %.3 = phi ptr [ %.283, %.preheader ], [ %59, %57 ] - switch i8 %56, label %57 [ + %.3 = phi ptr [ %.283, %.preheader ], [ %56, %57 ] + %55 = getelementptr inbounds nuw i8, ptr %.3, i64 1 + %56 = getelementptr inbounds nuw i8, ptr %.3, i64 2 + switch i8 %54, label %57 [ i8 32, label %.critedge4 i8 0, label %.critedge4 ] 57: ; preds = %55 - %58 = getelementptr inbounds nuw i8, ptr %.3, i64 1 - store i8 %56, ptr %.3, align 1, !tbaa !48 - %59 = getelementptr inbounds nuw i8, ptr %.3, i64 2 - store i8 32, ptr %58, align 1, !tbaa !48 + store i8 %54, ptr %.3, align 1, !tbaa !48 + store i8 32, ptr %55, align 1, !tbaa !48 %indvars.iv.next93 = add nuw nsw i64 %indvars.iv92, 1 %.phi.trans.insert98 = getelementptr inbounds nuw i8, ptr %.15984, i64 %indvars.iv.next93 %.pre99 = load i8, ptr %.phi.trans.insert98, align 1, !tbaa !48 br label %55, !llvm.loop !116 .critedge4: ; preds = %55, %55 - %60 = getelementptr inbounds nuw i8, ptr %.3, i64 1 store i8 49, ptr %.3, align 1, !tbaa !48 - %61 = getelementptr inbounds nuw i8, ptr %.3, i64 2 - store i8 10, ptr %60, align 1, !tbaa !48 + store i8 10, ptr %55, align 1, !tbaa !48 %.val72 = load i32, ptr %32, align 4, !tbaa !49 %62 = sext i32 %.val72 to i64 %63 = getelementptr i8, ptr %.15984, i64 %62 @@ -3650,7 +3646,7 @@ define range(i32 0, 2) i32 @Abc_NtkConvertToBlifMv(ptr noundef %0) local_unnamed br i1 %.not67, label %._crit_edge85, label %.preheader, !llvm.loop !117 ._crit_edge85: ; preds = %.critedge4, %._crit_edge - %.2.lcssa = phi ptr [ %.060.lcssa, %._crit_edge ], [ %61, %.critedge4 ] + %.2.lcssa = phi ptr [ %.060.lcssa, %._crit_edge ], [ %56, %.critedge4 ] store i8 0, ptr %.2.lcssa, align 1, !tbaa !48 %66 = load ptr, ptr %16, align 8, !tbaa !53 %67 = getelementptr inbounds nuw i8, ptr %21, i64 56 diff --git a/bench/abc/optimized/abcExact.ll b/bench/abc/optimized/abcExact.ll index c5459714f72..1b63062b56a 100644 --- a/bench/abc/optimized/abcExact.ll +++ b/bench/abc/optimized/abcExact.ll @@ -11549,6 +11549,9 @@ Abc_TtMask.exit.thread: ; preds = %5 22: ; preds = %.lr.ph.split.us %23 = getelementptr inbounds nuw i32, ptr %4, i64 %indvars.iv61 store i32 %21, ptr %23, align 4, !tbaa !7 + %24 = load i32, ptr %19, align 4, !tbaa !7 + %25 = shl i32 %24, 2 + %26 = sext i32 %25 to i64 switch i32 %21, label %default.unreachable70 [ i32 1, label %.lr.ph.preheader.i31.us i32 4, label %.lr.ph.preheader.i31.us @@ -11558,9 +11561,6 @@ Abc_TtMask.exit.thread: ; preds = %5 ] .lr.ph.preheader.i44.us: ; preds = %22 - %24 = load i32, ptr %19, align 4, !tbaa !7 - %25 = shl i32 %24, 2 - %26 = sext i32 %25 to i64 %27 = getelementptr inbounds i64, ptr @s_Truths8, i64 %26 br label %.lr.ph.i46.us @@ -11577,17 +11577,14 @@ Abc_TtMask.exit.thread: ; preds = %5 br i1 %exitcond.not.i49.us, label %Abc_TtAnd.exit.us, label %.lr.ph.i46.us, !llvm.loop !320 .lr.ph.preheader.i37.us: ; preds = %22, %22 - %33 = load i32, ptr %19, align 4, !tbaa !7 - %34 = shl i32 %33, 2 - %35 = sext i32 %34 to i64 - %36 = getelementptr inbounds i64, ptr @s_Truths8Neg, i64 %35 + %33 = getelementptr inbounds i64, ptr @s_Truths8Neg, i64 %26 br label %.lr.ph.i39.us .lr.ph.i39.us: ; preds = %.lr.ph.i39.us, %.lr.ph.preheader.i37.us %indvars.iv.i40.us = phi i64 [ 0, %.lr.ph.preheader.i37.us ], [ %indvars.iv.next.i41.us, %.lr.ph.i39.us ] %37 = getelementptr inbounds nuw i64, ptr %6, i64 %indvars.iv.i40.us %38 = load i64, ptr %37, align 8, !tbaa !3 - %39 = getelementptr inbounds nuw i64, ptr %36, i64 %indvars.iv.i40.us + %39 = getelementptr inbounds nuw i64, ptr %33, i64 %indvars.iv.i40.us %40 = load i64, ptr %39, align 8, !tbaa !3 %41 = and i64 %40, %38 store i64 %41, ptr %37, align 8, !tbaa !3 @@ -11596,17 +11593,14 @@ Abc_TtMask.exit.thread: ; preds = %5 br i1 %exitcond.not.i42.us, label %Abc_TtAnd.exit.us, label %.lr.ph.i39.us, !llvm.loop !321 .lr.ph.preheader.i31.us: ; preds = %22, %22 - %42 = load i32, ptr %19, align 4, !tbaa !7 - %43 = shl i32 %42, 2 - %44 = sext i32 %43 to i64 - %45 = getelementptr inbounds i64, ptr @s_Truths8, i64 %44 + %39 = getelementptr inbounds i64, ptr @s_Truths8, i64 %26 br label %.lr.ph.i33.us .lr.ph.i33.us: ; preds = %.lr.ph.i33.us, %.lr.ph.preheader.i31.us %indvars.iv.i34.us = phi i64 [ 0, %.lr.ph.preheader.i31.us ], [ %indvars.iv.next.i35.us, %.lr.ph.i33.us ] %46 = getelementptr inbounds nuw i64, ptr %6, i64 %indvars.iv.i34.us %47 = load i64, ptr %46, align 8, !tbaa !3 - %48 = getelementptr inbounds nuw i64, ptr %45, i64 %indvars.iv.i34.us + %48 = getelementptr inbounds nuw i64, ptr %39, i64 %indvars.iv.i34.us %49 = load i64, ptr %48, align 8, !tbaa !3 %50 = and i64 %49, %47 store i64 %50, ptr %46, align 8, !tbaa !3 diff --git a/bench/abc/optimized/abcUtil.ll b/bench/abc/optimized/abcUtil.ll index e433ea3aa93..b1bb7644d1c 100644 --- a/bench/abc/optimized/abcUtil.ll +++ b/bench/abc/optimized/abcUtil.ll @@ -3457,7 +3457,7 @@ define void @Abc_NtkLogicMakeSimpleCosTest(ptr noundef readonly captures(none) % %wide.trip.count = zext nneg i32 %.val42.val to i64 br label %15 -.critedge.preheader: ; preds = %44, %2 +.critedge.preheader: ; preds = %._crit_edge, %2 %14 = icmp sgt i32 %.val40.val, 0 br i1 %14, label %.critedge.preheader54, label %.preheader47.preheader @@ -3465,8 +3465,8 @@ define void @Abc_NtkLogicMakeSimpleCosTest(ptr noundef readonly captures(none) % %wide.trip.count59 = zext nneg i32 %.val40.val to i64 br label %.critedge -15: ; preds = %.lr.ph, %44 - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %44 ] +15: ; preds = %.lr.ph, %._crit_edge + %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %._crit_edge ] %16 = getelementptr inbounds nuw ptr, ptr %.val43.val, i64 %indvars.iv %17 = load ptr, ptr %16, align 8, !tbaa !26 %18 = getelementptr i8, ptr %17, i64 32 @@ -3499,37 +3499,29 @@ define void @Abc_NtkLogicMakeSimpleCosTest(ptr noundef readonly captures(none) % %34 = getelementptr i8, ptr %33, i64 20 %.val41 = load i32, ptr %34, align 4 %35 = and i32 %.val41, 15 - switch i32 %35, label %._crit_edge [ - i32 5, label %36 - i32 2, label %36 - ] - -._crit_edge: ; preds = %28 %.phi.trans.insert = getelementptr i8, ptr %17, i64 20 %.val.pre = load i32, ptr %.phi.trans.insert, align 4 %.pre = lshr i32 %.val.pre, 10 %.pre72 = and i32 %.pre, 1 - br label %44 + switch i32 %35, label %._crit_edge [ + i32 5, label %36 + i32 2, label %36 + ] 36: ; preds = %28, %28 - %37 = getelementptr i8, ptr %17, i64 20 - %.val34 = load i32, ptr %37, align 4 - %38 = lshr i32 %.val34, 10 - %39 = and i32 %38, 1 - %40 = zext nneg i32 %39 to i64 - %41 = getelementptr inbounds nuw i32, ptr %5, i64 %40 - %42 = load i32, ptr %41, align 4, !tbaa !51 - %43 = add nsw i32 %42, 1 - store i32 %43, ptr %41, align 4, !tbaa !51 - br label %44 - -44: ; preds = %._crit_edge, %36 - %.pre-phi73 = phi i32 [ %.pre72, %._crit_edge ], [ %39, %36 ] - %45 = shl nuw nsw i32 1, %.pre-phi73 - %46 = getelementptr inbounds i32, ptr %9, i64 %31 - %47 = load i32, ptr %46, align 4, !tbaa !51 - %48 = or i32 %45, %47 - store i32 %48, ptr %46, align 4, !tbaa !51 + %37 = zext nneg i32 %.pre72 to i64 + %38 = getelementptr inbounds nuw i32, ptr %5, i64 %37 + %39 = load i32, ptr %38, align 4, !tbaa !51 + %40 = add nsw i32 %39, 1 + store i32 %40, ptr %38, align 4, !tbaa !51 + br label %._crit_edge + +._crit_edge:; preds = %28, %36 + %41 = shl nuw nsw i32 1, %.pre72 + %42 = getelementptr inbounds i32, ptr %9, i64 %31 + %43 = load i32, ptr %42, align 4, !tbaa !51 + %44 = or i32 %41, %43 + store i32 %44, ptr %42, align 4, !tbaa !51 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %.critedge.preheader, label %15, !llvm.loop !116 diff --git a/bench/assimp/optimized/PlyLoader.ll b/bench/assimp/optimized/PlyLoader.ll index 253605bcf41..c91befb403a 100644 --- a/bench/assimp/optimized/PlyLoader.ll +++ b/bench/assimp/optimized/PlyLoader.ll @@ -1700,6 +1700,8 @@ _ZN6Assimp9IsLineEndIcEEbT_.exit.thread: ; preds = %73, %35 %.0 = phi i64 [ 0, %_ZN6Assimp9IsLineEndIcEEbT_.exit.thread ], [ %93, %128 ] %87 = getelementptr inbounds nuw i8, ptr %85, i64 %86 %88 = load i8, ptr %87, align 1 + %89 = load ptr, ptr %1, align 8 + %90 = getelementptr inbounds nuw i8, ptr %89, i64 %.0 switch i8 %88, label %_ZN6Assimp9IsLineEndIcEEbT_.exit20 [ i8 13, label %130 i8 10, label %130 @@ -1708,8 +1710,6 @@ _ZN6Assimp9IsLineEndIcEEbT_.exit.thread: ; preds = %73, %35 ] _ZN6Assimp9IsLineEndIcEEbT_.exit20: ; preds = %84 - %89 = load ptr, ptr %1, align 8 - %90 = getelementptr inbounds nuw i8, ptr %89, i64 %.0 store i8 %88, ptr %90, align 1 %91 = load i64, ptr %5, align 8 %92 = add i64 %91, 1 @@ -1778,12 +1778,10 @@ _ZN6Assimp14IOStreamBufferIcE13readNextBlockEv.exit21.thread: ; preds = %119, %1 br label %84, !llvm.loop !14 130: ; preds = %84, %84, %84, %84 - %131 = load ptr, ptr %1, align 8 - %132 = getelementptr inbounds nuw i8, ptr %131, i64 %.0 - store i8 10, ptr %132, align 1 - %133 = load i64, ptr %3, align 8 + store i8 10, ptr %90, align 1 + %131 = load i64, ptr %3, align 8 %.promoted = load i64, ptr %5, align 8 - %134 = icmp ult i64 %.promoted, %133 + %134 = icmp ult i64 %.promoted, %131 br i1 %134, label %.lr.ph, label %.critedge .lr.ph: ; preds = %130 @@ -1802,11 +1800,11 @@ _ZN6Assimp14IOStreamBufferIcE13readNextBlockEv.exit21.thread: ; preds = %119, %1 .critedge2: ; preds = %136, %136 %140 = add i64 %137, 1 store i64 %140, ptr %5, align 8 - %exitcond.not = icmp eq i64 %140, %133 + %exitcond.not = icmp eq i64 %140, %131 br i1 %exitcond.not, label %.critedge, label %136, !llvm.loop !15 .critedge: ; preds = %51, %105, %.critedge2, %136, %130, %11 - %.013 = phi i1 [ false, %11 ], [ true, %130 ], [ true, %136 ], [ true, %.critedge2 ], [ false, %105 ], [ false, %51 ] + %.013 = phi i1 [ false, %11 ], [ true, %130 ], [ true, %134 ], [ true, %.critedge2 ], [ false, %105 ], [ false, %51 ] ret i1 %.013 } diff --git a/bench/bdwgc/optimized/gc.ll b/bench/bdwgc/optimized/gc.ll index 2a2221cef09..72e9ccc2460 100644 --- a/bench/bdwgc/optimized/gc.ll +++ b/bench/bdwgc/optimized/gc.ll @@ -18127,6 +18127,7 @@ define range(i32 0, 2) i32 @GC_calloc_prepare_explicitly_typed(ptr noundef captu %20 = sext i32 %19 to i64 %21 = getelementptr inbounds nuw i8, ptr %0, i64 56 store i64 %20, ptr %21, align 8, !tbaa !257 + %22 = mul i64 %.029, %.030 switch i32 %19, label %default.unreachable39 [ i32 -1, label %22 i32 0, label %22 @@ -18135,42 +18136,39 @@ define range(i32 0, 2) i32 @GC_calloc_prepare_explicitly_typed(ptr noundef captu ] 22: ; preds = %16, %16 - %23 = mul i64 %.029, %.030 %24 = getelementptr inbounds nuw i8, ptr %0, i64 48 - store i64 %23, ptr %24, align 8, !tbaa !261 + store i64 %22, ptr %24, align 8, !tbaa !261 br label %43 25: ; preds = %16 - %26 = mul i64 %.029, %.030 - %27 = load i32, ptr @GC_all_interior_pointers, align 4, !tbaa !3 - %28 = sext i32 %27 to i64 - %29 = add nsw i64 %28, -41 - %30 = icmp ult i64 %26, %29 - %reass.sub35 = add i64 %26, 40 - %31 = sub i64 %reass.sub35, %28 - %32 = select i1 %30, i64 %31, i64 -1, !prof !13 - %33 = getelementptr inbounds nuw i8, ptr %0, i64 48 - store i64 %32, ptr %33, align 8, !tbaa !261 - br label %43 + %26 = load i32, ptr @GC_all_interior_pointers, align 4, !tbaa !3 + %27 = sext i32 %26 to i64 + %28 = add nsw i64 %27, -41 + %29 = icmp ult i64 %22, %28 + %reass.sub35 = add i64 %22, 40 + %30 = sub i64 %reass.sub35, %27 + %31 = select i1 %29, i64 %30, i64 -1, !prof !13 + %32 = getelementptr inbounds nuw i8, ptr %0, i64 48 + store i64 %31, ptr %32, align 8, !tbaa !261 + br label %41 34: ; preds = %16 - %35 = mul i64 %.029, %.030 - %36 = load i32, ptr @GC_all_interior_pointers, align 4, !tbaa !3 - %37 = sext i32 %36 to i64 - %38 = add nsw i64 %37, -9 - %39 = icmp ult i64 %35, %38 - %reass.sub = add i64 %35, 8 - %40 = sub i64 %reass.sub, %37 - %41 = select i1 %39, i64 %40, i64 -1, !prof !13 - %42 = getelementptr inbounds nuw i8, ptr %0, i64 48 - store i64 %41, ptr %42, align 8, !tbaa !261 - br label %43 + %34 = load i32, ptr @GC_all_interior_pointers, align 4, !tbaa !3 + %35 = sext i32 %34 to i64 + %36 = add nsw i64 %35, -9 + %37 = icmp ult i64 %22, %36 + %reass.sub = add i64 %22, 8 + %38 = sub i64 %reass.sub, %35 + %39 = select i1 %37, i64 %38, i64 -1, !prof !13 + %40 = getelementptr inbounds nuw i8, ptr %0, i64 48 + store i64 %39, ptr %40, align 8, !tbaa !261 + br label %41 default.unreachable39: ; preds = %16 unreachable 43: ; preds = %22, %25, %34, %14 - %.0 = phi i32 [ 0, %14 ], [ 1, %34 ], [ 1, %25 ], [ 1, %22 ] + %.0 = phi i32 [ 0, %14 ], [ 1, %33 ], [ 1, %25 ], [ 1, %23 ] ret i32 %.0 } @@ -18763,6 +18761,7 @@ define noalias ptr @GC_calloc_explicitly_typed(i64 noundef %0, i64 noundef %1, i %19 = sext i32 %18 to i64 %20 = getelementptr inbounds nuw i8, ptr %4, i64 56 store i64 %19, ptr %20, align 8, !tbaa !257 + %21 = mul i64 %.029.i, %.030.i switch i32 %18, label %default.unreachable [ i32 -1, label %21 i32 0, label %21 @@ -18771,35 +18770,32 @@ define noalias ptr @GC_calloc_explicitly_typed(i64 noundef %0, i64 noundef %1, i ] 21: ; preds = %15, %15 - %22 = mul i64 %.029.i, %.030.i %23 = getelementptr inbounds nuw i8, ptr %4, i64 48 - store i64 %22, ptr %23, align 8, !tbaa !261 + store i64 %21, ptr %23, align 8, !tbaa !261 br label %GC_calloc_prepare_explicitly_typed.exit 24: ; preds = %15 - %25 = mul i64 %.029.i, %.030.i - %26 = load i32, ptr @GC_all_interior_pointers, align 4, !tbaa !3 - %27 = sext i32 %26 to i64 - %28 = add nsw i64 %27, -41 - %29 = icmp ult i64 %25, %28 - %reass.sub35.i = add i64 %25, 40 - %30 = sub i64 %reass.sub35.i, %27 - %31 = select i1 %29, i64 %30, i64 -1, !prof !13 - %32 = getelementptr inbounds nuw i8, ptr %4, i64 48 - store i64 %31, ptr %32, align 8, !tbaa !261 + %25 = load i32, ptr @GC_all_interior_pointers, align 4, !tbaa !3 + %26 = sext i32 %25 to i64 + %27 = add nsw i64 %26, -41 + %28 = icmp ult i64 %21, %27 + %reass.sub35.i = add i64 %21, 40 + %29 = sub i64 %reass.sub35.i, %26 + %30 = select i1 %28, i64 %29, i64 -1, !prof !13 + %31 = getelementptr inbounds nuw i8, ptr %4, i64 48 + store i64 %30, ptr %31, align 8, !tbaa !261 br label %GC_calloc_prepare_explicitly_typed.exit 33: ; preds = %15 - %34 = mul i64 %.029.i, %.030.i - %35 = load i32, ptr @GC_all_interior_pointers, align 4, !tbaa !3 - %36 = sext i32 %35 to i64 - %37 = add nsw i64 %36, -9 - %38 = icmp ult i64 %34, %37 - %reass.sub.i = add i64 %34, 8 - %39 = sub i64 %reass.sub.i, %36 - %40 = select i1 %38, i64 %39, i64 -1, !prof !13 - %41 = getelementptr inbounds nuw i8, ptr %4, i64 48 - store i64 %40, ptr %41, align 8, !tbaa !261 + %33 = load i32, ptr @GC_all_interior_pointers, align 4, !tbaa !3 + %34 = sext i32 %33 to i64 + %35 = add nsw i64 %34, -9 + %36 = icmp ult i64 %21, %35 + %reass.sub.i = add i64 %21, 8 + %37 = sub i64 %reass.sub.i, %34 + %38 = select i1 %36, i64 %37, i64 -1, !prof !13 + %39 = getelementptr inbounds nuw i8, ptr %4, i64 48 + store i64 %38, ptr %39, align 8, !tbaa !261 br label %GC_calloc_prepare_explicitly_typed.exit default.unreachable: ; preds = %15 diff --git a/bench/boost/optimized/debug.ll b/bench/boost/optimized/debug.ll index 1831ff990ee..b0f30a6b9e7 100644 --- a/bench/boost/optimized/debug.ll +++ b/bench/boost/optimized/debug.ll @@ -389,38 +389,30 @@ define internal fastcc void @_ZN5boost5debug12_GLOBAL__N_112process_infoC2Ei(ptr store i8 0, ptr %19, align 1, !tbaa !14 br label %20 -20: ; preds = %22, %18 - %.021 = phi ptr [ %12, %18 ], [ %23, %22 ] +20: ; preds = %20, %18 + %.021 = phi ptr [ %12, %18 ], [ %22, %20 ] %21 = load i8, ptr %.021, align 1, !tbaa !14 - switch i8 %21, label %22 [ - i8 0, label %.critedge - i8 40, label %.critedge - ] - -22: ; preds = %20 - %23 = getelementptr inbounds nuw i8, ptr %.021, i64 1 - br label %20, !llvm.loop !25 - -.critedge: ; preds = %20, %20 - %24 = getelementptr inbounds nuw i8, ptr %.021, i64 1 - br label %25 - -25: ; preds = %27, %.critedge - %.0 = phi ptr [ %24, %.critedge ], [ %28, %27 ] - %26 = load i8, ptr %.0, align 1, !tbaa !14 - switch i8 %26, label %27 [ - i8 0, label %29 - i8 41, label %29 - ] - -27: ; preds = %25 - %28 = getelementptr inbounds nuw i8, ptr %.0, i64 1 - br label %25, !llvm.loop !26 - -29: ; preds = %25, %25 - %30 = getelementptr inbounds nuw i8, ptr %.0, i64 1 - %31 = tail call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %30, ptr noundef nonnull @.str.51, ptr noundef nonnull %0) #32 - store ptr %24, ptr %4, align 8, !tbaa !15 + %22 = getelementptr inbounds nuw i8, ptr %.021, i64 1 + switch i8 %21, label %20 [ + i8 0, label %.critedge.preheader + i8 40, label %.critedge.preheader + ], !llvm.loop !25 + +.critedge.preheader:; preds = %20, %20 + br label %.critedge + +.critedge: ; preds = %.critedge.preheader, %.critedge + %.0 = phi ptr [ %24, %.critedge ], [ %22, %.critedge.preheader ] + %23 = load i8, ptr %.0, align 1, !tbaa !14 + %24 = getelementptr inbounds nuw i8, ptr %.0, i64 1 + switch i8 %23, label %.critedge [ + i8 0, label %25 + i8 41, label %25 + ], !llvm.loop !26 + +25: ; preds = %.critedge, %.critedge + %26 = tail call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %24, ptr noundef nonnull @.str.51, ptr noundef nonnull %0) #32 + store ptr %22, ptr %4, align 8, !tbaa !15 store ptr %.0, ptr %5, align 8, !tbaa !17 %32 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %3, i64 noundef 30, ptr noundef nonnull @.str.52, i32 noundef %1) #32 %33 = getelementptr inbounds nuw i8, ptr %0, i64 541 @@ -428,14 +420,14 @@ define internal fastcc void @_ZN5boost5debug12_GLOBAL__N_112process_infoC2Ei(ptr %35 = icmp eq i64 %34, -1 br i1 %35, label %.thread38, label %36 -36: ; preds = %29 +36: ; preds = %25 %37 = getelementptr inbounds i8, ptr %33, i64 %34 store i8 0, ptr %37, align 1, !tbaa !14 store ptr %33, ptr %6, align 8, !tbaa !15 store ptr %37, ptr %7, align 8, !tbaa !17 br label %.thread38 -.thread38: ; preds = %29, %36, %14 +.thread38: ; preds = %25, %36, %14 %38 = invoke i32 @close(i32 noundef %9) to label %_ZN5boost5debug12_GLOBAL__N_19fd_holderD2Ev.exit unwind label %39 diff --git a/bench/bullet3/optimized/btSimulationIslandManagerMt.ll b/bench/bullet3/optimized/btSimulationIslandManagerMt.ll index 6f9687ad821..1d00c3f69b0 100644 --- a/bench/bullet3/optimized/btSimulationIslandManagerMt.ll +++ b/bench/bullet3/optimized/btSimulationIslandManagerMt.ll @@ -2077,7 +2077,7 @@ define dso_local void @_ZN27btSimulationIslandManagerMt18addBodiesToIslandsEP16b br i1 %.03540.ph, label %.loopexit, label %.lr.ph43 24: ; preds = %.outer, %_ZNK17btCollisionObject8isActiveEv.exit - %indvars.iv50 = phi i64 [ %indvars.iv.next51, %_ZNK17btCollisionObject8isActiveEv.exit ], [ %indvars.iv50.ph, %.outer ] + %indvars.iv50 = phi i64 [ %indvars.iv.next5162, %_ZNK17btCollisionObject8isActiveEv.exit ], [ %indvars.iv50.ph, %.outer ] %25 = getelementptr inbounds %struct.btElement, ptr %10, i64 %indvars.iv50 %26 = getelementptr inbounds nuw i8, ptr %25, i64 4 %27 = load i32, ptr %26, align 4, !tbaa !96 @@ -2086,6 +2086,8 @@ define dso_local void @_ZN27btSimulationIslandManagerMt18addBodiesToIslandsEP16b %30 = load ptr, ptr %29, align 8, !tbaa !68 %31 = getelementptr inbounds nuw i8, ptr %30, i64 240 %32 = load i32, ptr %31, align 8, !tbaa !107 + %indvars.iv.next5162 = add nsw i64 %indvars.iv50, 1 + %exitcond.not63 = icmp eq i64 %indvars.iv.next5162, %wide.trip.count switch i32 %32, label %_ZNK17btCollisionObject8isActiveEv.exit.thread [ i32 6, label %_ZNK17btCollisionObject8isActiveEv.exit i32 2, label %_ZNK17btCollisionObject8isActiveEv.exit @@ -2093,13 +2095,9 @@ define dso_local void @_ZN27btSimulationIslandManagerMt18addBodiesToIslandsEP16b ] _ZNK17btCollisionObject8isActiveEv.exit: ; preds = %24, %24, %24 - %indvars.iv.next51 = add nsw i64 %indvars.iv50, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next51, %wide.trip.count - br i1 %exitcond.not, label %._crit_edge, label %24, !llvm.loop !114 + br i1 %exitcond.not63, label %._crit_edge, label %24, !llvm.loop !114 _ZNK17btCollisionObject8isActiveEv.exit.thread: ; preds = %24 - %indvars.iv.next5162 = add nsw i64 %indvars.iv50, 1 - %exitcond.not63 = icmp eq i64 %indvars.iv.next5162, %wide.trip.count br i1 %exitcond.not63, label %.lr.ph43, label %.outer, !llvm.loop !114 .lr.ph43: ; preds = %_ZNK17btCollisionObject8isActiveEv.exit.thread, %._crit_edge diff --git a/bench/c3c/optimized/sema_expr.ll b/bench/c3c/optimized/sema_expr.ll index f1712315687..da0a58b6ba9 100644 --- a/bench/c3c/optimized/sema_expr.ll +++ b/bench/c3c/optimized/sema_expr.ll @@ -27957,6 +27957,9 @@ sema_expr_analyse_enum_constant.exit116: ; preds = %72 %134 = load i64, ptr %133, align 8 %135 = trunc i64 %134 to i32 %136 = and i32 %135, 127 + %137 = getelementptr inbounds nuw i8, ptr %1, i64 16 + %138 = load i16, ptr %137, align 8 + %139 = and i16 %138, -256 switch i32 %136, label %150 [ i32 26, label %137 i32 25, label %137 @@ -27965,11 +27968,8 @@ sema_expr_analyse_enum_constant.exit116: ; preds = %72 ] 137: ; preds = %.thread, %.thread, %.thread, %.thread - %138 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %139 = load i16, ptr %138, align 8 - %140 = and i16 %139, -256 - %141 = or disjoint i16 %140, 14 - store i16 %141, ptr %138, align 8 + %141 = or disjoint i16 %139, 14 + store i16 %141, ptr %137, align 8 %142 = getelementptr inbounds nuw i8, ptr %36, i64 72 %143 = load ptr, ptr %142, align 8 %144 = call zeroext i1 @sema_resolve_type_decl(ptr noundef %0, ptr noundef %143) #12 @@ -27991,21 +27991,18 @@ sema_expr_analyse_enum_constant.exit116: ; preds = %72 br label %.critedge 150: ; preds = %.thread - %151 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %152 = load i16, ptr %151, align 8 - %153 = and i16 %152, -256 - %154 = or disjoint i16 %153, 34 - store i16 %154, ptr %151, align 8 - %155 = getelementptr inbounds nuw i8, ptr %1, i64 24 - store ptr %.091121, ptr %155, align 8 + %151 = or disjoint i16 %139, 34 + store i16 %151, ptr %137, align 8 + %152 = getelementptr inbounds nuw i8, ptr %1, i64 24 + store ptr %.091121, ptr %152, align 8 %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 32 store i8 0, ptr %.sroa.2.0..sroa_idx, align 8 %156 = getelementptr inbounds nuw i8, ptr %.091121, i64 72 %157 = load ptr, ptr %156, align 8 store ptr %157, ptr %1, align 8 - %158 = and i16 %154, -4062 + %158 = and i16 %151, -4062 %159 = or disjoint i16 %158, 512 - store i16 %159, ptr %151, align 8 + store i16 %159, ptr %137, align 8 br label %.critedge 160: ; preds = %127, %105, %90, %62, %29 @@ -28013,7 +28010,7 @@ sema_expr_analyse_enum_constant.exit116: ; preds = %72 br label %.critedge .critedge: ; preds = %sema_expr_analyse_enum_constant.exit116, %sema_expr_analyse_enum_constant.exit, %137, %160, %150, %145, %128, %111, %106, %91, %63, %30, %type_property_by_name.exit113 - %.090 = phi i1 [ false, %160 ], [ false, %63 ], [ true, %145 ], [ true, %150 ], [ false, %128 ], [ false, %106 ], [ false, %111 ], [ false, %91 ], [ false, %30 ], [ %26, %type_property_by_name.exit113 ], [ true, %sema_expr_analyse_enum_constant.exit ], [ true, %sema_expr_analyse_enum_constant.exit116 ], [ false, %137 ] + %.090 = phi i1 [ false, %157 ], [ false, %63 ], [ true, %145 ], [ true, %150 ], [ false, %128 ], [ false, %106 ], [ false, %111 ], [ false, %91 ], [ false, %30 ], [ %26, %type_property_by_name.exit113 ], [ true, %sema_expr_analyse_enum_constant.exit ], [ true, %sema_expr_analyse_enum_constant.exit116 ], [ false, %140 ] ret i1 %.090 } diff --git a/bench/chibicc/optimized/codegen.ll b/bench/chibicc/optimized/codegen.ll index 28b8e038860..95bbbdc5aaa 100644 --- a/bench/chibicc/optimized/codegen.ll +++ b/bench/chibicc/optimized/codegen.ll @@ -671,7 +671,7 @@ define dso_local void @codegen(ptr noundef %0, ptr noundef %1) local_unnamed_add br i1 %.not.i11, label %.lr.ph130.i, label %.lr.ph49.i, !llvm.loop !58 .lr.ph130.i: ; preds = %.loopexit.i, %320 - %.0128.i = phi ptr [ %321, %320 ], [ %0, %.loopexit.i ] + %.0128.i = phi ptr [ %321, %318 ], [ %0, %.loopexit.i ] %161 = getelementptr inbounds nuw i8, ptr %.0128.i, i64 44 %162 = load i8, ptr %161, align 4, !tbaa !13, !range !25, !noundef !26 %163 = trunc nuw i8 %162 to i1 @@ -820,17 +820,17 @@ define dso_local void @codegen(ptr noundef %0, ptr noundef %1) local_unnamed_add %229 = getelementptr inbounds nuw i8, ptr %.076123.i, i64 16 %230 = load ptr, ptr %229, align 8, !tbaa !28 %231 = load i32, ptr %230, align 8, !tbaa !29 - switch i32 %231, label %295 [ + %232 = getelementptr inbounds nuw i8, ptr %230, i64 4 + switch i32 %231, label %294 [ i32 14, label %232 - i32 15, label %232 + i32 15, label %233 i32 6, label %289 i32 7, label %289 ] 232: ; preds = %228, %228 %233 = tail call fastcc zeroext i1 @has_flonum(ptr noundef nonnull %230, i32 noundef 0, i32 noundef 8, i32 noundef 0) - %234 = getelementptr inbounds nuw i8, ptr %230, i64 4 - %235 = load i32, ptr %234, align 4, !tbaa !32 + %235 = load i32, ptr %232, align 4, !tbaa !32 %spec.select.i21 = tail call i32 @llvm.smin.i32(i32 %235, i32 8) br i1 %233, label %236, label %240 @@ -898,7 +898,7 @@ switch.lookup: ; preds = %.split.i.i store_gp.exit.i: ; preds = %252, %switch.lookup, %246, %store_fp.exit.i %.280.i = phi i32 [ %.078121.i, %store_fp.exit.i ], [ %241, %246 ], [ %241, %switch.lookup ], [ %241, %252 ] %.2.i = phi i32 [ %237, %store_fp.exit.i ], [ %.077122.i, %246 ], [ %.077122.i, %switch.lookup ], [ %.077122.i, %252 ] - %260 = load i32, ptr %234, align 4, !tbaa !32 + %260 = load i32, ptr %232, align 4, !tbaa !32 %261 = icmp sgt i32 %260, 8 br i1 %261, label %262, label %store_gp.exit102.i @@ -968,9 +968,8 @@ switch.lookup39: ; preds = %.split.i99.i 289: ; preds = %228, %228 %290 = add nsw i32 %.077122.i, 1 - %291 = getelementptr inbounds nuw i8, ptr %230, i64 4 - %292 = load i32, ptr %291, align 4, !tbaa !32 - switch i32 %292, label %294 [ + %291 = load i32, ptr %232, align 4, !tbaa !32 + switch i32 %291, label %293 [ i32 4, label %store_fp.exit104.i i32 8, label %293 ] @@ -983,46 +982,45 @@ switch.lookup39: ; preds = %.split.i99.i unreachable store_fp.exit104.i: ; preds = %293, %289 - %.str.47.sink.i103.i = phi ptr [ @.str.47, %293 ], [ @.str.46, %289 ] + %.str.47.sink.i103.i = phi ptr [ @.str.47, %292 ], [ @.str.46, %289 ] tail call void (ptr, ...) @println(ptr noundef nonnull %.str.47.sink.i103.i, i32 noundef %.077122.i, i32 noundef %226) br label %store_gp.exit102.i 295: ; preds = %228 %296 = add nsw i32 %.078121.i, 1 - %297 = getelementptr inbounds nuw i8, ptr %230, i64 4 - %298 = load i32, ptr %297, align 4, !tbaa !32 - %299 = tail call range(i32 0, 33) i32 @llvm.ctpop.i32(i32 %298) - %300 = icmp eq i32 %299, 1 - br i1 %300, label %.split.i108.i, label %303 - -.split.i108.i: ; preds = %295 - %301 = tail call range(i32 0, 33) i32 @llvm.cttz.i32(i32 %298, i1 true) - %302 = icmp samesign ult i32 %301, 4 - br i1 %302, label %switch.lookup42, label %303 - -303: ; preds = %.split.i108.i, %295 - %304 = icmp sgt i32 %298, 0 - br i1 %304, label %.lr.ph.i105.i, label %store_gp.exit102.i - -.lr.ph.i105.i: ; preds = %303 - %305 = sext i32 %.078121.i to i64 - %306 = getelementptr inbounds ptr, ptr @argreg8, i64 %305 - %307 = load ptr, ptr %306, align 8, !tbaa !53 - %308 = getelementptr inbounds ptr, ptr @argreg64, i64 %305 - br label %309 - -309: ; preds = %309, %.lr.ph.i105.i - %.016.i106.i = phi i32 [ 0, %.lr.ph.i105.i ], [ %312, %309 ] - %310 = add nsw i32 %.016.i106.i, %226 - tail call void (ptr, ...) @println(ptr noundef nonnull @.str.50, ptr noundef %307, i32 noundef %310) - %311 = load ptr, ptr %308, align 8, !tbaa !53 - tail call void (ptr, ...) @println(ptr noundef nonnull @.str.51, ptr noundef %311) - %312 = add nuw nsw i32 %.016.i106.i, 1 - %exitcond.not.i107.i = icmp eq i32 %312, %298 - br i1 %exitcond.not.i107.i, label %store_gp.exit102.i, label %309, !llvm.loop !64 + %296 = load i32, ptr %232, align 4, !tbaa !32 + %297 = tail call range(i32 0, 33) i32 @llvm.ctpop.i32(i32 %296) + %298 = icmp eq i32 %297, 1 + br i1 %298, label %.split.i108.i, label %301 + +.split.i108.i: ; preds = %294 + %299 = tail call range(i32 0, 33) i32 @llvm.cttz.i32(i32 %296, i1 true) + %300 = icmp samesign ult i32 %299, 4 + br i1 %300, label %switch.lookup42, label %301 + +301: ; preds = %.split.i108.i, %294 + %302 = icmp sgt i32 %296, 0 + br i1 %302, label %.lr.ph.i105.i, label %store_gp.exit102.i + +.lr.ph.i105.i: ; preds = %301 + %303 = sext i32 %.078121.i to i64 + %304 = getelementptr inbounds ptr, ptr @argreg8, i64 %303 + %305 = load ptr, ptr %304, align 8, !tbaa !53 + %306 = getelementptr inbounds ptr, ptr @argreg64, i64 %303 + br label %307 + +307: ; preds = %307, %.lr.ph.i105.i + %.016.i106.i = phi i32 [ 0, %.lr.ph.i105.i ], [ %310, %307 ] + %308 = add nsw i32 %.016.i106.i, %226 + tail call void (ptr, ...) @println(ptr noundef nonnull @.str.50, ptr noundef %305, i32 noundef %308) + %309 = load ptr, ptr %306, align 8, !tbaa !53 + tail call void (ptr, ...) @println(ptr noundef nonnull @.str.51, ptr noundef %309) + %310 = add nuw nsw i32 %.016.i106.i, 1 + %exitcond.not.i107.i = icmp eq i32 %310, %296 + br i1 %exitcond.not.i107.i, label %store_gp.exit102.i, label %307, !llvm.loop !64 switch.lookup42: ; preds = %.split.i108.i - %313 = zext nneg i32 %301 to i64 + %313 = zext nneg i32 %299 to i64 %switch.gep43 = getelementptr inbounds nuw ptr, ptr @switch.table.codegen.2, i64 %313 %switch.load44 = load ptr, ptr %switch.gep43, align 8 %314 = sext i32 %.078121.i to i64 @@ -1031,9 +1029,9 @@ switch.lookup42: ; preds = %.split.i108.i tail call void (ptr, ...) @println(ptr noundef nonnull @.str.50, ptr noundef %316, i32 noundef %226) br label %store_gp.exit102.i -store_gp.exit102.i: ; preds = %281, %309, %switch.lookup42, %303, %store_fp.exit104.i, %switch.lookup39, %store_fp.exit95.i, %store_gp.exit.i, %.lr.ph125.i - %.179.i = phi i32 [ %.078121.i, %.lr.ph125.i ], [ %.280.i, %store_fp.exit95.i ], [ %.280.i, %store_gp.exit.i ], [ %.078121.i, %store_fp.exit104.i ], [ %271, %switch.lookup39 ], [ %296, %303 ], [ %296, %switch.lookup42 ], [ %296, %309 ], [ %271, %281 ] - %.1.i20 = phi i32 [ %.077122.i, %.lr.ph125.i ], [ %267, %store_fp.exit95.i ], [ %.2.i, %store_gp.exit.i ], [ %290, %store_fp.exit104.i ], [ %.2.i, %switch.lookup39 ], [ %.077122.i, %303 ], [ %.077122.i, %switch.lookup42 ], [ %.077122.i, %309 ], [ %.2.i, %281 ] +store_gp.exit102.i: ; preds = %281, %307, %switch.lookup42, %301, %store_fp.exit104.i, %switch.lookup39, %store_fp.exit95.i, %store_gp.exit.i, %.lr.ph125.i + %.179.i = phi i32 [ %.078121.i, %.lr.ph125.i ], [ %.280.i, %store_fp.exit95.i ], [ %.280.i, %store_gp.exit.i ], [ %.078121.i, %store_fp.exit104.i ], [ %271, %switch.lookup39 ], [ %296, %301 ], [ %296, %switch.lookup42 ], [ %296, %307 ], [ %271, %281 ] + %.1.i20 = phi i32 [ %.077122.i, %.lr.ph125.i ], [ %267, %store_fp.exit95.i ], [ %.2.i, %store_gp.exit.i ], [ %290, %store_fp.exit104.i ], [ %.2.i, %switch.lookup39 ], [ %.077122.i, %301 ], [ %.077122.i, %switch.lookup42 ], [ %.077122.i, %307 ], [ %.2.i, %281 ] %.076.i = load ptr, ptr %.076123.i, align 8, !tbaa !27 %.not92.i = icmp eq ptr %.076.i, null br i1 %.not92.i, label %._crit_edge126.i, label %.lr.ph125.i, !llvm.loop !65 @@ -1044,7 +1042,7 @@ store_gp.exit102.i: ; preds = %281, %309, %switch. br label %318 318: ; preds = %317, %._crit_edge126.i - %319 = phi ptr [ %.pre133.i, %317 ], [ %222, %._crit_edge126.i ] + %319 = phi ptr [ %.pre133.i, %315 ], [ %222, %._crit_edge126.i ] tail call void (ptr, ...) @println(ptr noundef nonnull @.str.42, ptr noundef %319) tail call void (ptr, ...) @println(ptr noundef nonnull @.str.43) tail call void (ptr, ...) @println(ptr noundef nonnull @.str.44) diff --git a/bench/clamav/optimized/extract.ll b/bench/clamav/optimized/extract.ll index 7874263315c..c58330a9efd 100644 --- a/bench/clamav/optimized/extract.ll +++ b/bench/clamav/optimized/extract.ll @@ -845,23 +845,22 @@ define noundef range(i32 0, 2) i32 @_ZN10CmdExtract14ExtractArchiveEv(ptr nounde %137 = load ptr, ptr %6, align 8, !tbaa !16 %138 = getelementptr inbounds nuw i8, ptr %137, i64 83476 %139 = load i32, ptr %138, align 4, !tbaa !14 + %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %137, i64 58617 switch i32 %139, label %..thread_crit_edge [ i32 84, label %142 i32 73, label %142 ] ..thread_crit_edge: ; preds = %133 - %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %137, i64 58617 %.pre = load i8, ptr %.phi.trans.insert, align 1, !tbaa !130, !range !67 %140 = trunc nuw i8 %.pre to i1 %141 = xor i1 %140, true br label %.thread 142: ; preds = %133, %133 - %143 = getelementptr inbounds nuw i8, ptr %137, i64 58617 - store i8 1, ptr %143, align 1, !tbaa !130 - %144 = icmp eq i32 %139, 73 - br i1 %144, label %145, label %.thread + store i8 1, ptr %.phi.trans.insert, align 1, !tbaa !130 + %143 = icmp eq i32 %139, 73 + br i1 %143, label %145, label %.thread 145: ; preds = %142 %146 = getelementptr inbounds nuw i8, ptr %137, i64 57428 @@ -872,7 +871,7 @@ define noundef range(i32 0, 2) i32 @_ZN10CmdExtract14ExtractArchiveEv(ptr nounde %147 = phi i1 [ %141, %..thread_crit_edge ], [ false, %142 ] %148 = getelementptr inbounds nuw i8, ptr %0, i64 376 invoke void @_Z21uiStartArchiveExtractbPKw(i1 noundef zeroext %147, ptr noundef nonnull %148) - to label %149 unwind label %80 + to label %148 unwind label %80 149: ; preds = %.thread, %145 %150 = getelementptr inbounds nuw i8, ptr %0, i64 32 @@ -884,7 +883,7 @@ define noundef range(i32 0, 2) i32 @_ZN10CmdExtract14ExtractArchiveEv(ptr nounde 154: ; preds = %149 invoke void @_ZN7Archive4SeekEli(ptr noundef nonnull align 8 dereferenceable(57108) %2, i64 noundef %153, i32 noundef 0) - to label %155 unwind label %80 + to label %154 unwind label %80 155: ; preds = %154 %156 = load ptr, ptr %150, align 8, !tbaa !36 @@ -897,11 +896,11 @@ define noundef range(i32 0, 2) i32 @_ZN10CmdExtract14ExtractArchiveEv(ptr nounde 158: ; preds = %.preheader56, %162 %159 = invoke noundef i64 @_ZN7Archive10ReadHeaderEv(ptr noundef nonnull align 8 dereferenceable(57108) %2) - to label %160 unwind label %163 + to label %159 unwind label %163 160: ; preds = %158 %161 = invoke noundef zeroext i1 @_ZN10CmdExtract18ExtractCurrentFileER7ArchivemRb(ptr noundef nonnull align 8 dereferenceable(16800) %0, ptr noundef nonnull align 8 dereferenceable(57108) %2, i64 noundef %159, ptr nonnull align 1 poison) - to label %162 unwind label %165 + to label %161 unwind label %165 162: ; preds = %160 br i1 %161, label %158, label %.loopexit53 @@ -917,13 +916,13 @@ define noundef range(i32 0, 2) i32 @_ZN10CmdExtract14ExtractArchiveEv(ptr nounde br label %167 .loopexit53: ; preds = %162, %91, %61, %28, %26, %27, %19 - %.0 = phi i32 [ 0, %61 ], [ 0, %19 ], [ 0, %27 ], [ 0, %26 ], [ 0, %28 ], [ 1, %91 ], [ 0, %162 ] + %.0 = phi i32 [ 0, %61 ], [ 0, %19 ], [ 0, %27 ], [ 0, %26 ], [ 0, %28 ], [ 1, %91 ], [ 0, %161 ] call void @_ZN7ArchiveD1Ev(ptr noundef nonnull align 8 dereferenceable(57108) %2) #23 call void @llvm.lifetime.end.p0(ptr nonnull %2) ret i32 %.0 167: ; preds = %80, %113, %165, %163, %59, %14 - %.pn36.pn = phi { ptr, i32 } [ %15, %14 ], [ %60, %59 ], [ %81, %80 ], [ %.pn, %113 ], [ %166, %165 ], [ %164, %163 ] + %.pn36.pn = phi { ptr, i32 } [ %15, %14 ], [ %60, %59 ], [ %81, %80 ], [ %.pn, %113 ], [ %166, %164 ], [ %164, %162 ] call void @_ZN7ArchiveD1Ev(ptr noundef nonnull align 8 dereferenceable(57108) %2) #23 call void @llvm.lifetime.end.p0(ptr nonnull %2) resume { ptr, i32 } %.pn36.pn diff --git a/bench/clamav/optimized/pathfn.ll b/bench/clamav/optimized/pathfn.ll index cc03b76fdca..f8dcc66d126 100644 --- a/bench/clamav/optimized/pathfn.ll +++ b/bench/clamav/optimized/pathfn.ll @@ -1159,32 +1159,26 @@ define noundef zeroext i1 @_Z12IsNameUsablePKw(ptr noundef readonly %0) local_un br i1 %.not1417, label %.thread, label %.lr.ph .lr.ph: ; preds = %.preheader, %11 - %4 = phi i32 [ %12, %11 ], [ %3, %.preheader ] - %.01118 = phi ptr [ %13, %11 ], [ %0, %.preheader ] + %4 = phi i32 [ %.pre, %._crit_edge19 ], [ %3, %.preheader ] + %.01118 = phi ptr [ %9, %._crit_edge19 ], [ %0, %.preheader ] %5 = icmp ult i32 %4, 32 br i1 %5, label %.thread, label %6 6: ; preds = %.lr.ph + %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %.01118, i64 4 + %.pre = load i32, ptr %.phi.trans.insert, align 4, !tbaa !3 switch i32 %4, label %._crit_edge19 [ i32 32, label %7 i32 46, label %7 ] -._crit_edge19: ; preds = %6 - %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %.01118, i64 4 - %.pre = load i32, ptr %.phi.trans.insert, align 4, !tbaa !3 - br label %11 - 7: ; preds = %6, %6 - %8 = getelementptr inbounds nuw i8, ptr %.01118, i64 4 - %9 = load i32, ptr %8, align 4, !tbaa !3 - %10 = icmp eq i32 %9, 47 - br i1 %10, label %.thread, label %11 + %8 = icmp eq i32 %.pre, 47 + br i1 %8, label %.thread, label %11 -11: ; preds = %._crit_edge19, %7 - %12 = phi i32 [ %.pre, %._crit_edge19 ], [ %9, %7 ] - %13 = getelementptr inbounds nuw i8, ptr %.01118, i64 4 - %.not14 = icmp eq i32 %12, 0 +11: ; preds = %6, %7 + %9 = getelementptr inbounds nuw i8, ptr %.01118, i64 4 + %.not14 = icmp eq i32 %.pre, 0 br i1 %.not14, label %._crit_edge, label %.lr.ph, !llvm.loop !22 ._crit_edge: ; preds = %11 diff --git a/bench/cmake/optimized/CommandLineArguments.ll b/bench/cmake/optimized/CommandLineArguments.ll index ccb7f485da0..a4d2964f84d 100644 --- a/bench/cmake/optimized/CommandLineArguments.ll +++ b/bench/cmake/optimized/CommandLineArguments.ll @@ -690,6 +690,8 @@ _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5clearE %22 = getelementptr inbounds nuw i8, ptr %.sroa.018.024, i64 32 %23 = getelementptr inbounds nuw i8, ptr %.sroa.018.024, i64 72 %24 = load i32, ptr %23, align 8, !tbaa !52 + %25 = getelementptr inbounds nuw i8, ptr %.sroa.018.024, i64 40 + %26 = load i64, ptr %25, align 8, !tbaa !10 switch i32 %24, label %54 [ i32 0, label %25 i32 2, label %25 @@ -697,9 +699,7 @@ _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5clearE 25: ; preds = %21, %21 %26 = load i64, ptr %19, align 8, !tbaa !10 - %27 = getelementptr inbounds nuw i8, ptr %.sroa.018.024, i64 40 - %28 = load i64, ptr %27, align 8, !tbaa !10 - %29 = icmp eq i64 %26, %28 + %29 = icmp eq i64 %28, %26 br i1 %29, label %30, label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backERKS5_.exit 30: ; preds = %25 @@ -770,56 +770,54 @@ _ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE 54: ; preds = %21 %55 = load ptr, ptr %22, align 8, !tbaa !29 - %56 = getelementptr inbounds nuw i8, ptr %.sroa.018.024, i64 40 - %57 = load i64, ptr %56, align 8, !tbaa !10 - %58 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcmm(ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef %55, i64 noundef 0, i64 noundef %57) #29 - %59 = icmp eq i64 %58, 0 - br i1 %59, label %60, label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backERKS5_.exit - -60: ; preds = %54 - %61 = load ptr, ptr %7, align 8, !tbaa !33 - %62 = load ptr, ptr %20, align 8, !tbaa !36 - %.not.i13 = icmp eq ptr %61, %62 - br i1 %.not.i13, label %80, label %63 - -63: ; preds = %60 - %64 = getelementptr inbounds nuw i8, ptr %61, i64 16 - store ptr %64, ptr %61, align 8, !tbaa !4 - %65 = load ptr, ptr %22, align 8, !tbaa !29 - %66 = load i64, ptr %56, align 8, !tbaa !10 + %56 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcmm(ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef %55, i64 noundef 0, i64 noundef %26) #29 + %57 = icmp eq i64 %56, 0 + br i1 %57, label %58, label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backERKS5_.exit + +58:; preds = %54 + %59 = load ptr, ptr %7, align 8, !tbaa !33 + %60 = load ptr, ptr %20, align 8, !tbaa !36 + %.not.i13 = icmp eq ptr %59, %60 + br i1 %.not.i13, label %78, label %61 + +61:; preds = %58 + %62 = getelementptr inbounds nuw i8, ptr %59, i64 16 + store ptr %62, ptr %59, align 8, !tbaa !4 + %63 = load ptr, ptr %22, align 8, !tbaa !29 + %64 = load i64, ptr %25, align 8, !tbaa !10 call void @llvm.lifetime.start.p0(ptr nonnull %4) - store i64 %66, ptr %4, align 8, !tbaa !51 - %67 = icmp ugt i64 %66, 15 + store i64 %64, ptr %4, align 8, !tbaa !51 + %67 = icmp ugt i64 %64, 15 br i1 %67, label %.noexc.i.i.i.i16, label %._crit_edge.i.i.i.i.i14 -.noexc.i.i.i.i16: ; preds = %63 - %68 = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef nonnull align 8 dereferenceable(8) %4, i64 noundef 0) - store ptr %68, ptr %61, align 8, !tbaa !29 +.noexc.i.i.i.i16: ; preds = %61 + %68 = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef nonnull align 8 dereferenceable(8) %4, i64 noundef 0) + store ptr %68, ptr %59, align 8, !tbaa !29 %69 = load i64, ptr %4, align 8, !tbaa !51 - store i64 %69, ptr %64, align 8, !tbaa !13 + store i64 %69, ptr %62, align 8, !tbaa !13 br label %._crit_edge.i.i.i.i.i14 -._crit_edge.i.i.i.i.i14: ; preds = %.noexc.i.i.i.i16, %63 - %70 = phi ptr [ %68, %.noexc.i.i.i.i16 ], [ %64, %63 ] - switch i64 %66, label %73 [ +._crit_edge.i.i.i.i.i14: ; preds = %.noexc.i.i.i.i16, %61 + %70 = phi ptr [ %68, %.noexc.i.i.i.i16 ], [ %62, %61 ] + switch i64 %64, label %71 [ i64 1, label %71 i64 0, label %_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRKS5_EEEvRS6_PT_DpOT0_.exit.i15 ] 71: ; preds = %._crit_edge.i.i.i.i.i14 - %72 = load i8, ptr %65, align 1, !tbaa !13 + %72 = load i8, ptr %63, align 1, !tbaa !13 store i8 %72, ptr %70, align 1, !tbaa !13 br label %_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRKS5_EEEvRS6_PT_DpOT0_.exit.i15 73: ; preds = %._crit_edge.i.i.i.i.i14 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %70, ptr align 1 %65, i64 %66, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %70, ptr align 1 %63, i64 %64, i1 false) br label %_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRKS5_EEEvRS6_PT_DpOT0_.exit.i15 _ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRKS5_EEEvRS6_PT_DpOT0_.exit.i15: ; preds = %73, %71, %._crit_edge.i.i.i.i.i14 %74 = load i64, ptr %4, align 8, !tbaa !51 - %75 = getelementptr inbounds nuw i8, ptr %61, i64 8 + %75 = getelementptr inbounds nuw i8, ptr %59, i64 8 store i64 %74, ptr %75, align 8, !tbaa !10 - %76 = load ptr, ptr %61, align 8, !tbaa !29 + %76 = load ptr, ptr %59, align 8, !tbaa !29 %77 = getelementptr inbounds nuw i8, ptr %76, i64 %74 store i8 0, ptr %77, align 1, !tbaa !13 call void @llvm.lifetime.end.p0(ptr nonnull %4) @@ -828,8 +826,8 @@ _ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE store ptr %79, ptr %7, align 8, !tbaa !33 br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backERKS5_.exit -80: ; preds = %60 - call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJRKS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %1, ptr %61, ptr noundef nonnull align 8 dereferenceable(32) %22) +80: ; preds = %58 + call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJRKS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %1, ptr %59, ptr noundef nonnull align 8 dereferenceable(32) %22) br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backERKS5_.exit _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backERKS5_.exit: ; preds = %25, %80, %_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRKS5_EEEvRS6_PT_DpOT0_.exit.i15, %53, %_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRKS5_EEEvRS6_PT_DpOT0_.exit.i, %54, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit diff --git a/bench/cmake/optimized/SystemTools.ll b/bench/cmake/optimized/SystemTools.ll index f8dfbb2303e..b1010fcd1a1 100644 --- a/bench/cmake/optimized/SystemTools.ll +++ b/bench/cmake/optimized/SystemTools.ll @@ -12478,14 +12478,14 @@ define dso_local noundef ptr @_ZN5cmsys11SystemTools22SplitPathRootComponentERKN 30: ; preds = %26 %31 = getelementptr inbounds nuw i8, ptr %3, i64 2 %32 = load i8, ptr %31, align 1, !tbaa !20 + %.not58 = icmp eq ptr %1, null switch i8 %32, label %42 [ i8 47, label %33 i8 92, label %33 ] 33: ; preds = %30, %30 - %.not59 = icmp eq ptr %1, null - br i1 %.not59, label %40, label %34 + br i1 %.not58, label %40, label %34 34: ; preds = %33 %35 = getelementptr inbounds nuw i8, ptr %1, i64 8 @@ -12501,7 +12501,6 @@ define dso_local noundef ptr @_ZN5cmsys11SystemTools22SplitPathRootComponentERKN br label %85 42: ; preds = %30 - %.not58 = icmp eq ptr %1, null br i1 %.not58, label %49, label %43 43: ; preds = %42 diff --git a/bench/cmake/optimized/cmGlobalGenerator.ll b/bench/cmake/optimized/cmGlobalGenerator.ll index 01629eea8af..98d09e55549 100644 --- a/bench/cmake/optimized/cmGlobalGenerator.ll +++ b/bench/cmake/optimized/cmGlobalGenerator.ll @@ -57472,22 +57472,22 @@ define dso_local void @_ZN17cmGlobalGenerator10EscapeJSONERKNSt7__cxx1112basic_s .lr.ph: ; preds = %7, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit %.sroa.025.029 = phi ptr [ %67, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit ], [ %8, %7 ] %13 = load i8, ptr %.sroa.025.029, align 1, !tbaa !14 - switch i8 %13, label %52 [ + %14 = load i64, ptr %4, align 8, !tbaa !15 + switch i8 %13, label %50 [ i8 34, label %14 - i8 92, label %14 + i8 92, label %15 i8 10, label %42 i8 9, label %48 ] 14: ; preds = %.lr.ph, %.lr.ph - %15 = load i64, ptr %4, align 8, !tbaa !15 - %16 = add i64 %15, 1 + %16 = add i64 %14, 1 %17 = load ptr, ptr %0, align 8, !tbaa !12 %18 = icmp eq ptr %17, %3 br i1 %18, label %19, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i 19: ; preds = %14 - %20 = icmp ult i64 %15, 16 + %20 = icmp ult i64 %14, 16 tail call void @llvm.assume(i1 %20) br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i @@ -57498,7 +57498,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i: ; pr br i1 %23, label %24, label %25 24: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i - invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEmmPKcm(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %15, i64 noundef 0, ptr noundef null, i64 noundef 1) + invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEmmPKcm(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %14, i64 noundef 0, ptr noundef null, i64 noundef 1) to label %.noexc unwind label %.loopexit .noexc: ; preds = %24 @@ -57507,7 +57507,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i: ; pr 25: ; preds = %.noexc, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i %26 = phi ptr [ %.pre.i.i, %.noexc ], [ %17, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i ] - %27 = getelementptr inbounds nuw i8, ptr %26, i64 %15 + %27 = getelementptr inbounds nuw i8, ptr %26, i64 %14 store i8 92, ptr %27, align 1, !tbaa !14 store i64 %16, ptr %4, align 8, !tbaa !15 %28 = load ptr, ptr %0, align 8, !tbaa !12 @@ -57555,10 +57555,9 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit14: ; preds = %_ZN br label %68 42: ; preds = %.lr.ph - %43 = load i64, ptr %4, align 8, !tbaa !15 - %44 = and i64 %43, -2 - %45 = icmp eq i64 %44, 4611686018427387902 - br i1 %45, label %.invoke, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit.i.invoke + %43 = and i64 %14, -2 + %44 = icmp eq i64 %43, 4611686018427387902 + br i1 %44, label %.invoke, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit.i.invoke .invoke: ; preds = %48, %42 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.293) #30 @@ -57568,36 +57567,34 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit14: ; preds = %_ZN unreachable _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit.i.invoke: ; preds = %48, %42 - %46 = phi ptr [ @.str.288, %42 ], [ @.str.289, %48 ] + %46 = phi ptr [ @.str.288, %42 ], [ @.str.289, %47 ] %47 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcm(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %46, i64 noundef 2) to label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit unwind label %.loopexit 48: ; preds = %.lr.ph - %49 = load i64, ptr %4, align 8, !tbaa !15 - %50 = and i64 %49, -2 - %51 = icmp eq i64 %50, 4611686018427387902 - br i1 %51, label %.invoke, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit.i.invoke + %48 = and i64 %14, -2 + %49 = icmp eq i64 %48, 4611686018427387902 + br i1 %49, label %.invoke, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit.i.invoke 52: ; preds = %.lr.ph - %53 = load i64, ptr %4, align 8, !tbaa !15 - %54 = add i64 %53, 1 - %55 = load ptr, ptr %0, align 8, !tbaa !12 - %56 = icmp eq ptr %55, %3 - br i1 %56, label %57, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i21 + %51 = add i64 %14, 1 + %52 = load ptr, ptr %0, align 8, !tbaa !12 + %53 = icmp eq ptr %52, %3 + br i1 %53, label %54, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i21 57: ; preds = %52 - %58 = icmp ult i64 %53, 16 + %58 = icmp ult i64 %14, 16 tail call void @llvm.assume(i1 %58) br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i21 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i21: ; preds = %57, %52 %59 = load i64, ptr %3, align 8 - %60 = select i1 %56, i64 15, i64 %59 - %61 = icmp ugt i64 %54, %60 + %60 = select i1 %53, i64 15, i64 %59 + %61 = icmp ugt i64 %51, %60 br i1 %61, label %62, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit24 62: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i21 - invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEmmPKcm(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %53, i64 noundef 0, ptr noundef null, i64 noundef 1) + invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEmmPKcm(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %14, i64 noundef 0, ptr noundef null, i64 noundef 1) to label %.noexc23 unwind label %.loopexit .noexc23: ; preds = %62 @@ -57605,13 +57602,13 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i21: ; br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit24 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit24: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i21, %.noexc23 - %63 = phi ptr [ %.pre.i.i22, %.noexc23 ], [ %55, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i21 ] - %64 = getelementptr inbounds nuw i8, ptr %63, i64 %53 + %63 = phi ptr [ %.pre.i.i22, %.noexc23 ], [ %52, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i21 ] + %64 = getelementptr inbounds nuw i8, ptr %63, i64 %14 store i8 %13, ptr %64, align 1, !tbaa !14 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit.sink.split _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit.sink.split: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit14, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit24 - %.sink = phi i64 [ %54, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit24 ], [ %31, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit14 ] + %.sink = phi i64 [ %51, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit24 ], [ %31, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit14 ] store i64 %.sink, ptr %4, align 8, !tbaa !15 %65 = load ptr, ptr %0, align 8, !tbaa !12 %66 = getelementptr inbounds nuw i8, ptr %65, i64 %.sink diff --git a/bench/cpython/optimized/Hacl_Hash_SHA3.ll b/bench/cpython/optimized/Hacl_Hash_SHA3.ll index b7eb04787f0..4a20bde2a30 100644 --- a/bench/cpython/optimized/Hacl_Hash_SHA3.ll +++ b/bench/cpython/optimized/Hacl_Hash_SHA3.ll @@ -1348,6 +1348,8 @@ block_len.exit240: ; preds = %block_len.exit238.t br label %.sink.split 89: ; preds = %36 + %.sroa.454.0.copyload328 = load ptr, ptr %.sroa.5161.0..sroa_idx, align 8, !tbaa !22 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %0, i64 16, i1 false) switch i8 %.sroa.0159.0.copyload, label %default.unreachable374 [ i8 9, label %block_len.exit242.thread i8 8, label %block_len.exit242 @@ -1361,32 +1363,24 @@ block_len.exit242.thread: ; preds = %89 %90 = sub nsw i32 144, %.0194272 %91 = zext i32 %90 to i64 %92 = getelementptr i8, ptr %1, i64 %91 - %.sroa.454.0.copyload328 = load ptr, ptr %.sroa.5161.0..sroa_idx, align 8, !tbaa !22 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %0, i64 16, i1 false) br label %block_len.exit244 block_len.exit242.thread330: ; preds = %89 %93 = sub nsw i32 104, %.0194272 %94 = zext i32 %93 to i64 %95 = getelementptr i8, ptr %1, i64 %94 - %.sroa.454.0.copyload332 = load ptr, ptr %.sroa.5161.0..sroa_idx, align 8, !tbaa !22 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %0, i64 16, i1 false) br label %block_len.exit244 block_len.exit242.thread334: ; preds = %89 %96 = sub nsw i32 72, %.0194272 %97 = zext i32 %96 to i64 %98 = getelementptr i8, ptr %1, i64 %97 - %.sroa.454.0.copyload336 = load ptr, ptr %.sroa.5161.0..sroa_idx, align 8, !tbaa !22 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %0, i64 16, i1 false) br label %block_len.exit244 block_len.exit242.thread338: ; preds = %89 %99 = sub nuw nsw i32 168, %.0194272 %100 = zext nneg i32 %99 to i64 %101 = getelementptr i8, ptr %1, i64 %100 - %.sroa.454.0.copyload340 = load ptr, ptr %.sroa.5161.0..sroa_idx, align 8, !tbaa !22 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %0, i64 16, i1 false) br label %block_len.exit244 default.unreachable374: ; preds = %89 @@ -1396,8 +1390,6 @@ block_len.exit242: ; preds = %89, %89 %102 = sub nsw i32 136, %.0194272 %103 = zext i32 %102 to i64 %104 = getelementptr i8, ptr %1, i64 %103 - %.sroa.454.0.copyload = load ptr, ptr %.sroa.5161.0..sroa_idx, align 8, !tbaa !22 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %0, i64 16, i1 false) switch i8 %.sroa.0159.0.copyload, label %default.unreachable389 [ i8 9, label %block_len.exit244 i8 8, label %105 @@ -1423,7 +1415,6 @@ default.unreachable389: ; preds = %block_len.exit242 unreachable block_len.exit244: ; preds = %block_len.exit242.thread338, %block_len.exit242.thread334, %block_len.exit242.thread330, %block_len.exit242.thread, %block_len.exit242, %105, %106, %107, %108 - %.sroa.454.0.copyload329 = phi ptr [ %.sroa.454.0.copyload, %105 ], [ %.sroa.454.0.copyload, %block_len.exit242 ], [ %.sroa.454.0.copyload328, %block_len.exit242.thread ], [ %.sroa.454.0.copyload332, %block_len.exit242.thread330 ], [ %.sroa.454.0.copyload, %106 ], [ %.sroa.454.0.copyload336, %block_len.exit242.thread334 ], [ %.sroa.454.0.copyload, %107 ], [ %.sroa.454.0.copyload340, %block_len.exit242.thread338 ], [ %.sroa.454.0.copyload, %108 ] %109 = phi ptr [ %104, %105 ], [ %104, %block_len.exit242 ], [ %92, %block_len.exit242.thread ], [ %95, %block_len.exit242.thread330 ], [ %104, %106 ], [ %98, %block_len.exit242.thread334 ], [ %104, %107 ], [ %101, %block_len.exit242.thread338 ], [ %104, %108 ] %110 = phi i64 [ %103, %105 ], [ %103, %block_len.exit242 ], [ %91, %block_len.exit242.thread ], [ %94, %block_len.exit242.thread330 ], [ %103, %106 ], [ %97, %block_len.exit242.thread334 ], [ %103, %107 ], [ %100, %block_len.exit242.thread338 ], [ %103, %108 ] %111 = phi i32 [ %102, %105 ], [ %102, %block_len.exit242 ], [ %90, %block_len.exit242.thread ], [ %93, %block_len.exit242.thread330 ], [ %102, %106 ], [ %96, %block_len.exit242.thread334 ], [ %102, %107 ], [ %99, %block_len.exit242.thread338 ], [ %102, %108 ] @@ -1448,11 +1439,11 @@ switch.lookup434: ; preds = %block_len.exit244 block_len.exit246: ; preds = %switch.lookup430, %switch.lookup434 %.0198 = phi i64 [ %115, %switch.lookup434 ], [ %switch.load432, %switch.lookup430 ] - %116 = getelementptr i8, ptr %.sroa.454.0.copyload329, i64 %.0198 + %116 = getelementptr i8, ptr %.sroa.454.0.copyload328, i64 %.0198 tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %116, ptr align 1 %1, i64 %110, i1 false) %117 = add i64 %110, %.sroa.5162.0.copyload call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(16) %5, i64 16, i1 false) - store ptr %.sroa.454.0.copyload329, ptr %.sroa.5161.0..sroa_idx, align 8, !tbaa !22 + store ptr %.sroa.454.0.copyload328, ptr %.sroa.5161.0..sroa_idx, align 8, !tbaa !22 store i64 %117, ptr %.sroa.5162.0..sroa_idx, align 8, !tbaa !10 %.sroa.0.0.copyload = load i8, ptr %0, align 8, !tbaa !18 %118 = getelementptr inbounds nuw i8, ptr %5, i64 1 @@ -1500,7 +1491,7 @@ switch.lookup460: ; preds = %block_len.exit252 %switch.masked464 = trunc i48 %switch.downshift463 to i8 %134 = udiv i8 %switch.masked, %switch.masked464 %.zext381 = zext nneg i8 %134 to i32 - tail call void @python_hashlib_Hacl_Hash_SHA3_update_multi_sha3(i8 noundef zeroext %.sroa.0.0.copyload, ptr noundef %.sroa.5.0.copyload, ptr noundef %.sroa.454.0.copyload329, i32 noundef %.zext381) + tail call void @python_hashlib_Hacl_Hash_SHA3_update_multi_sha3(i8 noundef zeroext %.sroa.0.0.copyload, ptr noundef %.sroa.5.0.copyload, ptr noundef %.sroa.454.0.copyload328, i32 noundef %.zext381) br label %switch.lookup448 switch.lookup448: ; preds = %switch.lookup460, %switch.lookup442 @@ -1638,7 +1629,7 @@ switch.lookup456: ; preds = %block_len.exit268 %169 = udiv i32 %164, %switch.load458 tail call void @python_hashlib_Hacl_Hash_SHA3_update_multi_sha3(i8 noundef zeroext %.sroa.0.0.copyload, ptr noundef %.sroa.5.0.copyload, ptr noundef %109, i32 noundef %169) %170 = zext i32 %167 to i64 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.sroa.454.0.copyload329, ptr align 1 %166, i64 %170, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.sroa.454.0.copyload328, ptr align 1 %166, i64 %170, i1 false) %171 = add i64 %117, %136 store i8 %.sroa.0.0.copyload, ptr %0, align 8, !tbaa !18 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %.sroa.4160.0..sroa_idx, ptr noundef nonnull align 1 dereferenceable(7) %118, i64 7, i1 false) @@ -1646,7 +1637,7 @@ switch.lookup456: ; preds = %block_len.exit268 br label %.sink.split .sink.split: ; preds = %block_len.exit240, %switch.lookup456, %block_len.exit216 - %.sroa.4119.0.copyload.sink = phi ptr [ %.sroa.4119.0.copyload, %block_len.exit216 ], [ %.sroa.454.0.copyload329, %switch.lookup456 ], [ %.sroa.6104.0.copyload, %block_len.exit240 ] + %.sroa.4119.0.copyload.sink = phi ptr [ %.sroa.4119.0.copyload, %block_len.exit216 ], [ %.sroa.454.0.copyload328, %switch.lookup456 ], [ %.sroa.6104.0.copyload, %block_len.exit240 ] %.sink = phi i64 [ %35, %block_len.exit216 ], [ %171, %switch.lookup456 ], [ %88, %block_len.exit240 ] store ptr %.sroa.4119.0.copyload.sink, ptr %.sroa.5161.0..sroa_idx, align 8, !tbaa !22 store i64 %.sink, ptr %.sroa.5162.0..sroa_idx, align 8, !tbaa !10 diff --git a/bench/cpython/optimized/_localemodule.ll b/bench/cpython/optimized/_localemodule.ll index 164d894ee9e..2a245e38dc9 100644 --- a/bench/cpython/optimized/_localemodule.ll +++ b/bench/cpython/optimized/_localemodule.ll @@ -1940,33 +1940,31 @@ define internal fastcc ptr @copy_grouping(ptr noundef readonly captures(none) %0 br label %.critedge2 .preheader32: ; preds = %1, %7 - %6 = phi i8 [ %.pre, %7 ], [ %2, %1 ] - %.023 = phi i32 [ %8, %7 ], [ 0, %1 ] - switch i8 %6, label %7 [ + %6 = phi i8 [ %.pre, %8 ], [ %2, %1 ] + %.023 = phi i32 [ %7, %8 ], [ 0, %1 ] + %7 = add i32 %.023, 1 + %.phi.trans.insert = sext i32 %7 to i64 + switch i8 %6, label %8 [ i8 0, label %.critedge i8 127, label %.critedge ] 7: ; preds = %.preheader32 - %8 = add i32 %.023, 1 - %.phi.trans.insert = sext i32 %8 to i64 %.phi.trans.insert33 = getelementptr i8, ptr %0, i64 %.phi.trans.insert %.pre = load i8, ptr %.phi.trans.insert33, align 1, !tbaa !11 br label %.preheader32, !llvm.loop !44 .critedge: ; preds = %.preheader32, %.preheader32 - %9 = add i32 %.023, 1 - %10 = sext i32 %9 to i64 - %11 = tail call ptr @PyList_New(i64 noundef %10) #8 - %.not29 = icmp eq ptr %11, null + %9 = tail call ptr @PyList_New(i64 noundef %.phi.trans.insert) #8 + %.not29 = icmp eq ptr %9, null br i1 %.not29, label %.critedge2, label %.preheader .preheader: ; preds = %.critedge - %12 = getelementptr i8, ptr %11, i64 24 + %12 = getelementptr i8, ptr %9, i64 24 br label %13 13: ; preds = %.preheader, %27 - %.1 = phi i32 [ %14, %27 ], [ -1, %.preheader ] + %.1 = phi i32 [ %14, %25 ], [ -1, %.preheader ] %14 = add i32 %.1, 1 %15 = sext i32 %14 to i64 %16 = getelementptr i8, ptr %0, i64 %15 @@ -1977,18 +1975,18 @@ define internal fastcc ptr @copy_grouping(ptr noundef readonly captures(none) %0 br i1 %20, label %21, label %27 21: ; preds = %13 - %22 = load i32, ptr %11, align 8, !tbaa !11 + %22 = load i32, ptr %9, align 8, !tbaa !11 %.not.i = icmp sgt i32 %22, -1 br i1 %.not.i, label %23, label %.critedge2 23: ; preds = %21 %24 = add nsw i32 %22, -1 - store i32 %24, ptr %11, align 8, !tbaa !11 + store i32 %24, ptr %9, align 8, !tbaa !11 %25 = icmp eq i32 %24, 0 br i1 %25, label %26, label %.critedge2 26: ; preds = %23 - tail call void @_Py_Dealloc(ptr noundef nonnull %11) #8 + tail call void @_Py_Dealloc(ptr noundef nonnull %9) #8 br label %.critedge2 27: ; preds = %13 @@ -1996,13 +1994,13 @@ define internal fastcc ptr @copy_grouping(ptr noundef readonly captures(none) %0 %28 = getelementptr ptr, ptr %.val, i64 %15 store ptr %19, ptr %28, align 8, !tbaa !10 %29 = load i8, ptr %16, align 1, !tbaa !11 - switch i8 %29, label %13 [ + switch i8 %29, label %11 [ i8 0, label %.critedge2 i8 127, label %.critedge2 ] .critedge2: ; preds = %27, %27, %26, %23, %21, %.critedge, %4 - %.0 = phi ptr [ %5, %4 ], [ null, %.critedge ], [ null, %21 ], [ null, %23 ], [ null, %26 ], [ %11, %27 ], [ %11, %27 ] + %.0 = phi ptr [ %5, %4 ], [ null, %.critedge ], [ null, %19 ], [ null, %21 ], [ null, %24 ], [ %9, %25 ], [ %9, %25 ] ret ptr %.0 } diff --git a/bench/cpython/optimized/flowgraph.ll b/bench/cpython/optimized/flowgraph.ll index 41876b4ce45..06b2ba9b7be 100644 --- a/bench/cpython/optimized/flowgraph.ll +++ b/bench/cpython/optimized/flowgraph.ll @@ -5726,19 +5726,19 @@ stackdepth_push.exit103.thread.i: ; preds = %192, %189, %142 %.46.i = phi ptr [ %.287.i, %142 ], [ %.287.i, %189 ], [ %193, %192 ] %.5.i = phi i32 [ %145, %142 ], [ %182, %189 ], [ %182, %192 ] %196 = load i32, ptr %106, align 8, !tbaa !26 + call void @llvm.lifetime.end.p0(ptr nonnull %11) switch i32 %196, label %197 [ - i32 256, label %.thread41.i - i32 259, label %.thread41.i - i32 76, label %.thread41.i - i32 74, label %.thread41.i - i32 75, label %.thread41.i - i32 36, label %.thread41.i - i32 101, label %.thread41.i - i32 102, label %.thread41.i + i32 256, label %stackdepth_push.exit107.thread.i + i32 259, label %stackdepth_push.exit107.thread.i + i32 76, label %stackdepth_push.exit107.thread.i + i32 74, label %stackdepth_push.exit107.thread.i + i32 75, label %stackdepth_push.exit107.thread.i + i32 36, label %stackdepth_push.exit107.thread.i + i32 101, label %stackdepth_push.exit107.thread.i + i32 102, label %stackdepth_push.exit107.thread.i ] 197: ; preds = %stackdepth_push.exit103.thread.i - call void @llvm.lifetime.end.p0(ptr nonnull %11) %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %198 = load i32, ptr %100, align 8, !tbaa !25 %199 = sext i32 %198 to i64 @@ -5749,10 +5749,6 @@ stackdepth_push.exit103.thread.i: ; preds = %192, %189, %142 call void @llvm.lifetime.end.p0(ptr nonnull %11) br label %calculate_stackdepth.exit.thread39 -.thread41.i: ; preds = %stackdepth_push.exit103.thread.i, %stackdepth_push.exit103.thread.i, %stackdepth_push.exit103.thread.i, %stackdepth_push.exit103.thread.i, %stackdepth_push.exit103.thread.i, %stackdepth_push.exit103.thread.i, %stackdepth_push.exit103.thread.i, %stackdepth_push.exit103.thread.i - call void @llvm.lifetime.end.p0(ptr nonnull %11) - br label %stackdepth_push.exit107.thread.i - ._crit_edge93.i: ; preds = %197, %93 %.2.lcssa.i = phi ptr [ %94, %93 ], [ %.46.i, %197 ] %.177.lcssa.i = phi i32 [ %.07698.i, %93 ], [ %.5.i, %197 ] @@ -5785,9 +5781,9 @@ stackdepth_push.exit107.i: ; preds = %201 %212 = call ptr (ptr, ptr, ...) @PyErr_Format(ptr noundef %211, ptr noundef nonnull @.str.7) #8 br label %calculate_stackdepth.exit.thread39 -stackdepth_push.exit107.thread.i: ; preds = %209, %206, %._crit_edge93.i, %.thread41.i - %.27829.i = phi i32 [ %.177.lcssa.i, %._crit_edge93.i ], [ %.5.i, %.thread41.i ], [ %.177.lcssa.i, %209 ], [ %.177.lcssa.i, %206 ] - %.9.i = phi ptr [ %.2.lcssa.i, %._crit_edge93.i ], [ %.46.i, %.thread41.i ], [ %210, %209 ], [ %.2.lcssa.i, %206 ] +stackdepth_push.exit107.thread.i: ; preds = %stackdepth_push.exit103.thread.i, %stackdepth_push.exit103.thread.i, %stackdepth_push.exit103.thread.i, %stackdepth_push.exit103.thread.i, %stackdepth_push.exit103.thread.i, %stackdepth_push.exit103.thread.i, %stackdepth_push.exit103.thread.i, %stackdepth_push.exit103.thread.i, %209, %206, %._crit_edge93.i + %.27829.i = phi i32 [ %.177.lcssa.i, %._crit_edge93.i ], [ %.177.lcssa.i, %209 ], [ %.177.lcssa.i, %206 ], [ %.5.i, %stackdepth_push.exit103.thread.i ], [ %.5.i, %stackdepth_push.exit103.thread.i ], [ %.5.i, %stackdepth_push.exit103.thread.i ], [ %.5.i, %stackdepth_push.exit103.thread.i ], [ %.5.i, %stackdepth_push.exit103.thread.i ], [ %.5.i, %stackdepth_push.exit103.thread.i ], [ %.5.i, %stackdepth_push.exit103.thread.i ], [ %.5.i, %stackdepth_push.exit103.thread.i ] + %.9.i = phi ptr [ %.2.lcssa.i, %._crit_edge93.i ], [ %210, %209 ], [ %.2.lcssa.i, %206 ], [ %.46.i, %stackdepth_push.exit103.thread.i ], [ %.46.i, %stackdepth_push.exit103.thread.i ], [ %.46.i, %stackdepth_push.exit103.thread.i ], [ %.46.i, %stackdepth_push.exit103.thread.i ], [ %.46.i, %stackdepth_push.exit103.thread.i ], [ %.46.i, %stackdepth_push.exit103.thread.i ], [ %.46.i, %stackdepth_push.exit103.thread.i ], [ %.46.i, %stackdepth_push.exit103.thread.i ] %.not87.i = icmp eq ptr %.9.i, %74 br i1 %.not87.i, label %calculate_stackdepth.exit, label %93 diff --git a/bench/curl/optimized/imap.ll b/bench/curl/optimized/imap.ll index ace3ea87280..7cacd645fbb 100644 --- a/bench/curl/optimized/imap.ll +++ b/bench/curl/optimized/imap.ll @@ -1186,27 +1186,26 @@ define internal i32 @imap_connect(ptr noundef %0, ptr noundef writeonly captures %.03345.i25 = phi ptr [ %spec.select.i, %17 ], [ %14, %.lr.ph.i ] br label %.preheader.i -.preheader.i: ; preds = %.preheader.i.preheader, %23 - %22 = phi i8 [ %.pr.i, %23 ], [ %21, %.preheader.i.preheader ] - %.134.i = phi ptr [ %24, %23 ], [ %.03345.i25, %.preheader.i.preheader ] - switch i8 %22, label %23 [ - i8 0, label %.critedge3.i - i8 61, label %.critedge3.i +.preheader.i: ; preds = %.preheader.i.preheader, %24 + %22 = phi i8 [ %.pr.i, %24 ], [ %21, %.preheader.i.preheader ] + %.134.i = phi ptr [ %23, %24 ], [ %.03345.i25, %.preheader.i.preheader ] + %23 = getelementptr inbounds nuw i8, ptr %.134.i, i64 1 + switch i8 %22, label %24 [ + i8 0, label %.critedge3.i.preheader + i8 61, label %.critedge3.i.preheader ] -23: ; preds = %.preheader.i - %24 = getelementptr inbounds nuw i8, ptr %.134.i, i64 1 - %.pr.i = load i8, ptr %24, align 1, !tbaa !7 - br label %.preheader.i, !llvm.loop !128 +23: ; preds = %.preheader.i, %.preheader.i + br label %.critedge3.i -.critedge3.i: ; preds = %.preheader.i, %.preheader.i - %25 = getelementptr inbounds nuw i8, ptr %.134.i, i64 1 - br label %26 +.critedge3.i: ; preds = %.preheader.i + %.pr.i = load i8, ptr %23, align 1, !tbaa !7 + br label %.preheader.i, !llvm.loop !128 -26: ; preds = %28, %.critedge3.i - %27 = phi i8 [ %22, %.critedge3.i ], [ %.pre.i, %28 ] - %.2.i = phi ptr [ %.134.i, %.critedge3.i ], [ %29, %28 ] - switch i8 %27, label %28 [ +26: ; preds = %23, %26 + %27 = phi i8 [ %.pre.i, %26 ], [ %22, %.critedge3.i.preheader ] + %.2.i = phi ptr [ %27, %26 ], [ %.134.i, %.critedge3.i.preheader ] + switch i8 %27, label %26 [ i8 0, label %.critedge5.i i8 59, label %.critedge5.i ] @@ -1232,9 +1231,9 @@ define internal i32 @imap_connect(ptr noundef %0, ptr noundef writeonly captures 33: ; preds = %31 %34 = ptrtoint ptr %.2.i to i64 - %35 = ptrtoint ptr %25 to i64 + %35 = ptrtoint ptr %23 to i64 %36 = sub i64 %34, %35 - %37 = tail call i32 @Curl_sasl_parse_url_auth_option(ptr noundef nonnull %11, ptr noundef nonnull %25, i64 noundef %36) #7 + %37 = tail call i32 @Curl_sasl_parse_url_auth_option(ptr noundef nonnull %11, ptr noundef nonnull %23, i64 noundef %36) #7 %38 = icmp eq i32 %37, 0 br i1 %38, label %17, label %..critedge.i_crit_edge, !llvm.loop !127 @@ -1249,7 +1248,7 @@ imap_parse_url_options.exit.thread: ; preds = %.critedge.i br label %41 .critedge.thread.i: ; preds = %31, %.lr.ph.i, %..critedge.i_crit_edge, %.critedge.i, %2 - %.0.lcssa59.i = phi i32 [ 0, %.critedge.i ], [ 0, %2 ], [ 0, %.lr.ph.i ], [ %37, %..critedge.i_crit_edge ], [ 3, %31 ] + %.0.lcssa59.i = phi i32 [ 0, %.critedge.i ], [ 0, %2 ], [ 0, %.lr.ph.i ], [ %37, %..critedge.i_crit_edge ], [ 3, %29 ] %39 = getelementptr inbounds nuw i8, ptr %5, i64 1274 %40 = load i16, ptr %39, align 2, !tbaa !130 %switch.selectcmp = icmp eq i16 %40, -33 @@ -1303,7 +1302,7 @@ imap_parse_url_options.exit.thread: ; preds = %.critedge.i br label %imap_multi_statemach.exit imap_multi_statemach.exit: ; preds = %59, %51, %.critedge.thread.i - %.0 = phi i32 [ %.0.lcssa59.i, %.critedge.thread.i ], [ %60, %59 ], [ %52, %51 ] + %.0 = phi i32 [ %.0.lcssa59.i, %.critedge.thread.i ], [ %60, %57 ], [ %52, %49 ] ret i32 %.0 } diff --git a/bench/curl/optimized/tftp.ll b/bench/curl/optimized/tftp.ll index 5cbe435f773..da3d945b301 100644 --- a/bench/curl/optimized/tftp.ll +++ b/bench/curl/optimized/tftp.ll @@ -69,7 +69,7 @@ define internal noundef i32 @tftp_setup_connection(ptr noundef captures(none) %0 %9 = load ptr, ptr %8, align 8, !tbaa !84 %10 = tail call ptr @strstr(ptr noundef nonnull dereferenceable(1) %9, ptr noundef nonnull dereferenceable(1) @.str.45) #12 %.not10 = icmp eq ptr %10, null - br i1 %.not10, label %22, label %.thread + br i1 %.not10, label %20, label %.thread .thread: ; preds = %2, %7 %.013 = phi ptr [ %10, %7 ], [ %6, %2 ] @@ -77,26 +77,27 @@ define internal noundef i32 @tftp_setup_connection(ptr noundef captures(none) %0 %11 = getelementptr inbounds nuw i8, ptr %.013, i64 6 %12 = load i8, ptr %11, align 1, !tbaa !85 %13 = tail call signext i8 @Curl_raw_toupper(i8 noundef signext %12) #13 + %14 = getelementptr inbounds nuw i8, ptr %0, i64 5036 + %15 = load i32, ptr %14, align 4 switch i8 %13, label %18 [ i8 65, label %14 i8 78, label %14 ] 14: ; preds = %.thread, %.thread - %15 = getelementptr inbounds nuw i8, ptr %0, i64 5036 - %16 = load i32, ptr %15, align 4 - %17 = or i32 %16, 16384 - store i32 %17, ptr %15, align 4 + %17 = or i32 %15, 16384 br label %22 18: ; preds = %.thread - %19 = getelementptr inbounds nuw i8, ptr %0, i64 5036 - %20 = load i32, ptr %19, align 4 - %21 = and i32 %20, -16385 - store i32 %21, ptr %19, align 4 + %19 = and i32 %15, -16385 br label %22 -22: ; preds = %14, %18, %7 +22: ; preds = %18, %16 + %.sink = phi i32 [ %17, %16 ], [ %19, %18 ] + store i32 %.sink, ptr %14, align 4 + br label %20 + +20: ; preds = %.sink.split, %7 ret i32 0 } diff --git a/bench/cvc5/optimized/cvc5.ll b/bench/cvc5/optimized/cvc5.ll index f1f472894da..9d94798113c 100644 --- a/bench/cvc5/optimized/cvc5.ll +++ b/bench/cvc5/optimized/cvc5.ll @@ -113467,7 +113467,9 @@ define void @_ZNK4cvc54Term14const_iteratordeEv(ptr dead_on_unwind noalias writa %9 = load i64, ptr %8, align 8 %10 = trunc i64 %9 to i32 %11 = and i32 %10, 1023 - switch i32 %11, label %33 [ + %12 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %13 = load i32, ptr %12, align 8, !tbaa !2219 + switch i32 %11, label %35 [ i32 226, label %_ZN4cvc512_GLOBAL__N_111isApplyKindENS_8internal4kind6Kind_tE.exit i32 225, label %_ZN4cvc512_GLOBAL__N_111isApplyKindENS_8internal4kind6Kind_tE.exit i32 224, label %_ZN4cvc512_GLOBAL__N_111isApplyKindENS_8internal4kind6Kind_tE.exit @@ -113476,8 +113478,6 @@ define void @_ZNK4cvc54Term14const_iteratordeEv(ptr dead_on_unwind noalias writa ] _ZN4cvc512_GLOBAL__N_111isApplyKindENS_8internal4kind6Kind_tE.exit: ; preds = %2, %2, %2, %2, %2 - %12 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %13 = load i32, ptr %12, align 8, !tbaa !2219 %14 = icmp eq i32 %13, 0 br i1 %14, label %15, label %36 @@ -113526,17 +113526,12 @@ _ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit: ; preds = %17, %21, %27 call void @llvm.lifetime.end.p0(ptr nonnull %3) br label %82 -33: ; preds = %2 - %34 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %35 = load i32, ptr %34, align 8, !tbaa !2219 - br label %38 - 36: ; preds = %_ZN4cvc512_GLOBAL__N_111isApplyKindENS_8internal4kind6Kind_tE.exit %37 = add i32 %13, -1 br label %38 -38: ; preds = %33, %36 - %39 = phi i32 [ %37, %36 ], [ %35, %33 ] +38: ; preds = %2, %36 + %39 = phi i32 [ %37, %33 ], [ %13, %2 ] %40 = load ptr, ptr %1, align 8, !tbaa !2217 call void @llvm.lifetime.start.p0(ptr nonnull %4) tail call void @llvm.experimental.noalias.scope.decl(metadata !2220) @@ -113579,7 +113574,7 @@ _ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit: ; preds = %17, %21, %27 _ZNK4cvc58internal12NodeTemplateILb1EEixEi.exit: ; preds = %55, %61, %63 invoke void @_ZN4cvc54TermC1EPNS_11TermManagerERKNS_8internal12NodeTemplateILb1EEE(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef %40, ptr noundef nonnull align 8 dereferenceable(8) %4) - to label %65 unwind label %79 + to label %62 unwind label %79 65: ; preds = %_ZNK4cvc58internal12NodeTemplateILb1EEixEi.exit %66 = load ptr, ptr %4, align 8, !tbaa !2112 @@ -113623,7 +113618,7 @@ _ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit11: ; preds = %65, %69, %75 ret void 82: ; preds = %79, %31 - %.pn = phi { ptr, i32 } [ %32, %31 ], [ %80, %79 ] + %.pn = phi { ptr, i32 } [ %32, %31 ], [ %80, %76 ] resume { ptr, i32 } %.pn } diff --git a/bench/cvc5/optimized/logic_info.ll b/bench/cvc5/optimized/logic_info.ll index d3c67c5fc45..c8df71b2ca6 100644 --- a/bench/cvc5/optimized/logic_info.ll +++ b/bench/cvc5/optimized/logic_info.ll @@ -2564,7 +2564,7 @@ define noundef zeroext i1 @_ZNK4cvc58internal9LogicInfo6isPureENS0_6theory8Theor 11: ; preds = %9 invoke void @__cxa_throw(ptr nonnull %8, ptr nonnull @_ZTIN4cvc58internal24IllegalArgumentExceptionE, ptr nonnull @_ZN4cvc58internal9ExceptionD2Ev) #23 - to label %36 unwind label %13 + to label %34 unwind label %13 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread: ; preds = %7 %12 = landingpad { ptr, i32 } @@ -2606,6 +2606,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %13 br i1 %24, label %_ZN4cvc58internal9LogicInfo12isTrueTheoryENS0_6theory8TheoryIdE.exit12.thread, label %25 25: ; preds = %23 + %26 = getelementptr inbounds nuw i8, ptr %0, i64 72 + %27 = load i64, ptr %26, align 8 switch i32 %1, label %_ZN4cvc58internal9LogicInfo12isTrueTheoryENS0_6theory8TheoryIdE.exit [ i32 0, label %_ZN4cvc58internal9LogicInfo12isTrueTheoryENS0_6theory8TheoryIdE.exit.thread i32 1, label %_ZN4cvc58internal9LogicInfo12isTrueTheoryENS0_6theory8TheoryIdE.exit.thread @@ -2613,16 +2615,12 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %13 ] _ZN4cvc58internal9LogicInfo12isTrueTheoryENS0_6theory8TheoryIdE.exit.thread: ; preds = %25, %25, %25 - %26 = getelementptr inbounds nuw i8, ptr %0, i64 72 - %27 = load i64, ptr %26, align 8 %28 = icmp eq i64 %27, 0 br label %32 _ZN4cvc58internal9LogicInfo12isTrueTheoryENS0_6theory8TheoryIdE.exit: ; preds = %25 - %29 = getelementptr inbounds nuw i8, ptr %0, i64 72 - %30 = load i64, ptr %29, align 8 - %31 = icmp eq i64 %30, 1 - br i1 %31, label %32, label %_ZN4cvc58internal9LogicInfo12isTrueTheoryENS0_6theory8TheoryIdE.exit12.thread + %29 = icmp eq i64 %27, 1 + br i1 %29, label %30, label %_ZN4cvc58internal9LogicInfo12isTrueTheoryENS0_6theory8TheoryIdE.exit12.thread 32: ; preds = %_ZN4cvc58internal9LogicInfo12isTrueTheoryENS0_6theory8TheoryIdE.exit.thread, %_ZN4cvc58internal9LogicInfo12isTrueTheoryENS0_6theory8TheoryIdE.exit %33 = phi i1 [ %28, %_ZN4cvc58internal9LogicInfo12isTrueTheoryENS0_6theory8TheoryIdE.exit.thread ], [ false, %_ZN4cvc58internal9LogicInfo12isTrueTheoryENS0_6theory8TheoryIdE.exit ] @@ -2636,7 +2634,7 @@ _ZN4cvc58internal9LogicInfo12isTrueTheoryENS0_6theory8TheoryIdE.exit12: ; preds br label %_ZN4cvc58internal9LogicInfo12isTrueTheoryENS0_6theory8TheoryIdE.exit12.thread _ZN4cvc58internal9LogicInfo12isTrueTheoryENS0_6theory8TheoryIdE.exit12.thread: ; preds = %32, %_ZN4cvc58internal9LogicInfo12isTrueTheoryENS0_6theory8TheoryIdE.exit, %_ZN4cvc58internal9LogicInfo12isTrueTheoryENS0_6theory8TheoryIdE.exit12, %23, %21 - %34 = phi i1 [ false, %23 ], [ false, %21 ], [ %33, %_ZN4cvc58internal9LogicInfo12isTrueTheoryENS0_6theory8TheoryIdE.exit12 ], [ false, %_ZN4cvc58internal9LogicInfo12isTrueTheoryENS0_6theory8TheoryIdE.exit ], [ true, %32 ] + %34 = phi i1 [ false, %23 ], [ false, %21 ], [ %33, %_ZN4cvc58internal9LogicInfo12isTrueTheoryENS0_6theory8TheoryIdE.exit12 ], [ false, %_ZN4cvc58internal9LogicInfo12isTrueTheoryENS0_6theory8TheoryIdE.exit ], [ true, %30 ] ret i1 %34 35: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %20 diff --git a/bench/darktable/optimized/export.ll b/bench/darktable/optimized/export.ll index ba3e4598b09..8b2ba1d344e 100644 --- a/bench/darktable/optimized/export.ll +++ b/bench/darktable/optimized/export.ll @@ -336,21 +336,19 @@ define internal fastcc void @_size_in_px_update(ptr noundef readonly captures(no %2 = alloca [120 x i8], align 16 %3 = load ptr, ptr %0, align 8, !tbaa !71 %4 = tail call i32 @dt_bauhaus_combobox_get(ptr noundef %3) #19 + %5 = getelementptr inbounds nuw i8, ptr %0, i64 80 + %6 = load ptr, ptr %5, align 8, !tbaa !72 switch i32 %4, label %8 [ i32 3, label %5 i32 0, label %5 ] 5: ; preds = %1, %1 - %6 = getelementptr inbounds nuw i8, ptr %0, i64 80 - %7 = load ptr, ptr %6, align 8, !tbaa !72 - tail call void @gtk_widget_hide(ptr noundef %7) #19 - br label %25 + tail call void @gtk_widget_hide(ptr noundef %6) #19 + br label %23 8: ; preds = %1 - %9 = getelementptr inbounds nuw i8, ptr %0, i64 80 - %10 = load ptr, ptr %9, align 8, !tbaa !72 - tail call void @gtk_widget_show(ptr noundef %10) #19 + tail call void @gtk_widget_show(ptr noundef %6) #19 call void @llvm.lifetime.start.p0(ptr nonnull %2) %11 = tail call ptr @dcgettext(ptr noundef null, ptr noundef nonnull @.str.123, i32 noundef 5) #19 %12 = getelementptr inbounds nuw i8, ptr %0, i64 40 @@ -363,7 +361,7 @@ define internal fastcc void @_size_in_px_update(ptr noundef readonly captures(no %19 = tail call ptr @g_type_check_instance_cast(ptr noundef %18, i64 noundef %14) #19 %20 = tail call ptr @gtk_entry_get_text(ptr noundef %19) #19 %21 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %2, i64 noundef 120, ptr noundef %11, ptr noundef %16, ptr noundef %20) #19 - %22 = load ptr, ptr %9, align 8, !tbaa !72 + %22 = load ptr, ptr %5, align 8, !tbaa !72 %23 = tail call i64 @gtk_label_get_type() #20 %24 = tail call ptr @g_type_check_instance_cast(ptr noundef %22, i64 noundef %23) #19 call void @gtk_label_set_text(ptr noundef %24, ptr noundef nonnull %2) #19 diff --git a/bench/darktable/optimized/gtk.ll b/bench/darktable/optimized/gtk.ll index 2c97199cd37..eb845e0398b 100644 --- a/bench/darktable/optimized/gtk.ll +++ b/bench/darktable/optimized/gtk.ll @@ -3723,10 +3723,11 @@ define void @dt_ui_container_add_widget(ptr noundef readonly captures(none) %0, br label %22 .critedge28: ; preds = %10, %13 - switch i32 %1, label %20 [ + %16 = tail call ptr @g_type_check_instance_cast(ptr noundef nonnull %6, i64 noundef %7) #18 + switch i32 %1, label %19 [ i32 8, label %16 i32 11, label %16 - i32 14, label %16 + i32 14, label %17 i32 7, label %18 i32 9, label %18 i32 10, label %18 @@ -3735,19 +3736,16 @@ define void @dt_ui_container_add_widget(ptr noundef readonly captures(none) %0, ] 16: ; preds = %.critedge28, %.critedge28, %.critedge28 - %17 = tail call ptr @g_type_check_instance_cast(ptr noundef nonnull %6, i64 noundef %7) #18 - tail call void @gtk_box_pack_end(ptr noundef %17, ptr noundef %2, i32 noundef 0, i32 noundef 0, i32 noundef 0) #18 - br label %22 + tail call void @gtk_box_pack_end(ptr noundef %16, ptr noundef %2, i32 noundef 0, i32 noundef 0, i32 noundef 0) #18 + br label %20 18: ; preds = %.critedge28, %.critedge28, %.critedge28, %.critedge28, %.critedge28 - %19 = tail call ptr @g_type_check_instance_cast(ptr noundef nonnull %6, i64 noundef %7) #18 - tail call void @gtk_box_pack_start(ptr noundef %19, ptr noundef %2, i32 noundef 1, i32 noundef 1, i32 noundef 0) #18 - br label %22 + tail call void @gtk_box_pack_start(ptr noundef %16, ptr noundef %2, i32 noundef 1, i32 noundef 1, i32 noundef 0) #18 + br label %20 20: ; preds = %.critedge28 - %21 = tail call ptr @g_type_check_instance_cast(ptr noundef nonnull %6, i64 noundef %7) #18 - tail call void @gtk_box_pack_start(ptr noundef %21, ptr noundef %2, i32 noundef 0, i32 noundef 0, i32 noundef 0) #18 - br label %22 + tail call void @gtk_box_pack_start(ptr noundef %16, ptr noundef %2, i32 noundef 0, i32 noundef 0, i32 noundef 0) #18 + br label %20 22: ; preds = %20, %18, %16, %.critedge ret void diff --git a/bench/darktable/optimized/imageio_libraw.ll b/bench/darktable/optimized/imageio_libraw.ll index df217f8ddd4..553489d2464 100644 --- a/bench/darktable/optimized/imageio_libraw.ll +++ b/bench/darktable/optimized/imageio_libraw.ll @@ -522,6 +522,8 @@ _supported_image.exit: ; preds = %13, %16 156: ; preds = %152, %151 %157 = getelementptr inbounds nuw i8, ptr %0, i64 1496 %158 = load i32, ptr %157, align 8, !tbaa !131 + %159 = getelementptr inbounds nuw i8, ptr %0, i64 1420 + %160 = load i32, ptr %159, align 4, !tbaa !136 switch i32 %158, label %162 [ i32 -1263225676, label %.thread i32 1263225675, label %.thread @@ -534,20 +536,16 @@ _supported_image.exit: ; preds = %13, %16 ] .thread: ; preds = %156, %156, %156, %156, %156, %156, %156, %156 - %159 = getelementptr inbounds nuw i8, ptr %0, i64 1420 - %160 = load i32, ptr %159, align 4, !tbaa !136 %161 = or i32 %160, 16384 br label %166 162: ; preds = %156 - %163 = getelementptr inbounds nuw i8, ptr %0, i64 1420 - %164 = load i32, ptr %163, align 4, !tbaa !136 - %165 = and i32 %164, -16385 + %163 = and i32 %160, -16385 %.not158 = icmp eq i32 %158, 0 br i1 %.not158, label %171, label %166 166: ; preds = %.thread, %162 - %167 = phi i32 [ %161, %.thread ], [ %165, %162 ] + %167 = phi i32 [ %161, %.thread ], [ %163, %162 ] %168 = getelementptr inbounds nuw i8, ptr %0, i64 1420 %169 = and i32 %167, -225 %170 = or disjoint i32 %169, 64 @@ -555,9 +553,9 @@ _supported_image.exit: ; preds = %13, %16 br label %174 171: ; preds = %162 - %172 = and i32 %164, -16609 + %172 = and i32 %160, -16609 %173 = or disjoint i32 %172, 32 - store i32 %173, ptr %163, align 4, !tbaa !136 + store i32 %173, ptr %159, align 4, !tbaa !136 br label %174 174: ; preds = %171, %166 @@ -570,7 +568,7 @@ _supported_image.exit: ; preds = %13, %16 %177 = getelementptr inbounds nuw i8, ptr %0, i64 1116 %178 = tail call ptr @libraw_strerror(i32 noundef %.0129) #5 tail call void (ptr, ...) @dt_print_ext(ptr noundef nonnull @.str.70, ptr noundef nonnull %177, ptr noundef %178) #5 - switch i32 %.0129, label %182 [ + switch i32 %.0129, label %180 [ i32 -2, label %.thread163 i32 -8, label %179 i32 -100008, label %180 @@ -590,7 +588,7 @@ _supported_image.exit: ; preds = %13, %16 br label %.thread163 .thread163: ; preds = %37, %134, %174, %35, %176, %179, %180, %181, %182 - %.1128 = phi i32 [ 2, %182 ], [ 5, %179 ], [ 6, %180 ], [ 7, %181 ], [ 3, %176 ], [ 2, %37 ], [ 8, %134 ], [ 0, %174 ], [ 5, %35 ] + %.1128 = phi i32 [ 2, %180 ], [ 5, %177 ], [ 6, %178 ], [ 7, %179 ], [ 3, %174 ], [ 2, %37 ], [ 8, %134 ], [ 0, %172 ], [ 5, %35 ] tail call void @libraw_close(ptr noundef nonnull %24) #5 br label %_supported_image.exit.thread diff --git a/bench/diesel-rs/optimized/221gzbx6n2968mg0.ll b/bench/diesel-rs/optimized/221gzbx6n2968mg0.ll index 2263f6c3030..d6ceca49037 100644 --- a/bench/diesel-rs/optimized/221gzbx6n2968mg0.ll +++ b/bench/diesel-rs/optimized/221gzbx6n2968mg0.ll @@ -711,6 +711,8 @@ default.unreachable: ; preds = %56, %43, %30 56: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h0d6bdecd69c95ae9E.exit139" call void @llvm.lifetime.end.p0(ptr nonnull %7) + call void @llvm.lifetime.start.p0(ptr nonnull %5) + call void @llvm.lifetime.start.p0(ptr nonnull %4) switch i64 %12, label %default.unreachable [ i64 0, label %.thread231 i64 1, label %.thread232 @@ -720,15 +722,11 @@ default.unreachable: ; preds = %56, %43, %30 ] .thread231: ; preds = %56 - call void @llvm.lifetime.start.p0(ptr nonnull %5) - call void @llvm.lifetime.start.p0(ptr nonnull %4) %57 = getelementptr inbounds nuw i8, ptr %2, i64 16 %58 = load ptr, ptr %57, align 8, !alias.scope !167, !noalias !170, !nonnull !14, !align !69, !noundef !14 br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h0d6bdecd69c95ae9E.exit175" .thread232: ; preds = %56 - call void @llvm.lifetime.start.p0(ptr nonnull %5) - call void @llvm.lifetime.start.p0(ptr nonnull %4) %59 = getelementptr inbounds nuw i8, ptr %2, i64 16 %60 = load ptr, ptr %59, align 8, !alias.scope !167, !noalias !170, !nonnull !14, !align !69, !noundef !14 %61 = getelementptr inbounds nuw i8, ptr %2, i64 24 @@ -745,8 +743,6 @@ default.unreachable: ; preds = %56, %43, %30 br label %71 64: ; preds = %56, %56, %56 - call void @llvm.lifetime.start.p0(ptr nonnull %5) - call void @llvm.lifetime.start.p0(ptr nonnull %4) tail call void @llvm.experimental.noalias.scope.decl(metadata !170) tail call void @llvm.experimental.noalias.scope.decl(metadata !167) br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h0d6bdecd69c95ae9E.exit175" @@ -955,6 +951,8 @@ default.unreachable: ; preds = %44, %29 44: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h0d6bdecd69c95ae9E.exit139" call void @llvm.lifetime.end.p0(ptr nonnull %8) + call void @llvm.lifetime.start.p0(ptr nonnull %6) + call void @llvm.lifetime.start.p0(ptr nonnull %5) switch i64 %11, label %default.unreachable [ i64 0, label %.thread242 i64 1, label %.thread243 @@ -964,15 +962,11 @@ default.unreachable: ; preds = %44, %29 ] .thread242: ; preds = %44 - call void @llvm.lifetime.start.p0(ptr nonnull %6) - call void @llvm.lifetime.start.p0(ptr nonnull %5) %45 = getelementptr inbounds nuw i8, ptr %2, i64 16 %46 = load ptr, ptr %45, align 8, !alias.scope !207, !noalias !210, !nonnull !14, !align !69, !noundef !14 br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h0d6bdecd69c95ae9E.exit175" .thread243: ; preds = %44 - call void @llvm.lifetime.start.p0(ptr nonnull %6) - call void @llvm.lifetime.start.p0(ptr nonnull %5) %47 = getelementptr inbounds nuw i8, ptr %2, i64 16 %48 = load ptr, ptr %47, align 8, !alias.scope !207, !noalias !210, !nonnull !14, !align !69, !noundef !14 %49 = getelementptr inbounds nuw i8, ptr %2, i64 24 @@ -989,8 +983,6 @@ default.unreachable: ; preds = %44, %29 br label %59 52: ; preds = %44, %44, %44 - call void @llvm.lifetime.start.p0(ptr nonnull %6) - call void @llvm.lifetime.start.p0(ptr nonnull %5) tail call void @llvm.experimental.noalias.scope.decl(metadata !210) tail call void @llvm.experimental.noalias.scope.decl(metadata !207) br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h0d6bdecd69c95ae9E.exit175" diff --git a/bench/diesel-rs/optimized/30cx9e85d8viwtnf.ll b/bench/diesel-rs/optimized/30cx9e85d8viwtnf.ll index 397023af075..bd2d4615603 100644 --- a/bench/diesel-rs/optimized/30cx9e85d8viwtnf.ll +++ b/bench/diesel-rs/optimized/30cx9e85d8viwtnf.ll @@ -214,20 +214,20 @@ define hidden void @"_ZN147_$LT$diesel..query_builder..insert_statement..InsertS %.sroa.245 = alloca [3 x i64], align 8 %.sroa.13 = alloca [23 x i8], align 1 %14 = load i64, ptr %2, align 8, !range !51, !alias.scope !52, !noalias !55, !noundef !20 + %.sroa.6.0.in.i137 = getelementptr inbounds nuw i8, ptr %2, i64 8 + %.sroa.6.0.i138 = load ptr, ptr %.sroa.6.0.in.i137, align 8, !alias.scope !52, !noalias !55, !nonnull !20, !align !57, !noundef !20 switch i64 %14, label %default.unreachable [ i64 0, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h403f68ea67a7d51eE.exit.thread136" i64 1, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17hf0865b8aec4b7b8bE.exit70.thread151" - i64 2, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h403f68ea67a7d51eE.exit" - i64 3, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h403f68ea67a7d51eE.exit" i64 4, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h403f68ea67a7d51eE.exit" + i64 2, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h403f68ea67a7d51eE.exit89" + i64 3, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h403f68ea67a7d51eE.exit89" ] default.unreachable: ; preds = %3 unreachable "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h403f68ea67a7d51eE.exit.thread136": ; preds = %3 - %.sroa.6.0.in.i137 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %.sroa.6.0.i138 = load ptr, ptr %.sroa.6.0.in.i137, align 8, !alias.scope !52, !noalias !55, !nonnull !20, !align !57, !noundef !20 tail call void @"_ZN140_$LT$diesel..mysql..query_builder..MysqlQueryBuilder$u20$as$u20$diesel..query_builder..QueryBuilder$LT$diesel..mysql..backend..Mysql$GT$$GT$8push_sql17h9e2d6187c4aa6542E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.sroa.6.0.i138, ptr noalias noundef nonnull readonly align 1 @anon.3e1b4f2cd268539625eecd824ca53e85.1.llvm.11398015949447562598, i64 noundef 6), !noalias !58 tail call void @"_ZN140_$LT$diesel..mysql..query_builder..MysqlQueryBuilder$u20$as$u20$diesel..query_builder..QueryBuilder$LT$diesel..mysql..backend..Mysql$GT$$GT$8push_sql17h9e2d6187c4aa6542E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.sroa.6.0.i138, ptr noalias noundef nonnull readonly align 1 @anon.378ebc1986edebd492690f685eac171a.5, i64 noundef 6), !noalias !64 call void @llvm.lifetime.start.p0(ptr nonnull %13), !noalias !67 @@ -237,20 +237,12 @@ default.unreachable: ; preds = %3 br i1 %16, label %.thread176, label %53 "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17hf0865b8aec4b7b8bE.exit70.thread151": ; preds = %3 - %.sroa.6.0.in.i132 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %.sroa.6.0.i133 = load ptr, ptr %.sroa.6.0.in.i132, align 8, !alias.scope !52, !noalias !55, !nonnull !20, !align !57, !noundef !20 %17 = getelementptr inbounds nuw i8, ptr %2, i64 16 %18 = load ptr, ptr %17, align 8, !alias.scope !80, !noalias !83, !nonnull !20, !align !57, !noundef !20 br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h403f68ea67a7d51eE.exit89" -"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h403f68ea67a7d51eE.exit": ; preds = %3, %3, %3 - %.sroa.6.0.in.i = getelementptr inbounds nuw i8, ptr %2, i64 8 - %.sroa.6.0.i = load ptr, ptr %.sroa.6.0.in.i, align 8, !alias.scope !52, !noalias !55, !nonnull !20, !align !57, !noundef !20 - %cond = icmp eq i64 %14, 4 - br i1 %cond, label %.thread145, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h403f68ea67a7d51eE.exit89" - -.thread145: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h403f68ea67a7d51eE.exit" - store i8 0, ptr %.sroa.6.0.i, align 1, !noalias !85 +"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h403f68ea67a7d51eE.exit": ; preds = %3 + store i8 0, ptr %.sroa.6.0.i138, align 1, !noalias !85 br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h403f68ea67a7d51eE.exit89" .thread176: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h403f68ea67a7d51eE.exit.thread136" @@ -260,9 +252,8 @@ default.unreachable: ; preds = %3 %20 = load ptr, ptr %19, align 8, !alias.scope !80, !noalias !83, !nonnull !20, !align !57, !noundef !20 br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h403f68ea67a7d51eE.exit89" -"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h403f68ea67a7d51eE.exit89": ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h403f68ea67a7d51eE.exit", %.thread145, %.thread176, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17hf0865b8aec4b7b8bE.exit70.thread151" - %.sroa.6.0.i135.ph175188 = phi ptr [ %.sroa.6.0.i138, %.thread176 ], [ %.sroa.6.0.i133, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17hf0865b8aec4b7b8bE.exit70.thread151" ], [ %.sroa.6.0.i, %.thread145 ], [ %.sroa.6.0.i, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h403f68ea67a7d51eE.exit" ] - %.sroa.11.0.i83 = phi ptr [ %20, %.thread176 ], [ %18, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17hf0865b8aec4b7b8bE.exit70.thread151" ], [ undef, %.thread145 ], [ undef, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h403f68ea67a7d51eE.exit" ] +"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h403f68ea67a7d51eE.exit89": ; preds = %3, %3, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h403f68ea67a7d51eE.exit", %.thread176, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17hf0865b8aec4b7b8bE.exit70.thread151" + %.sroa.6.0.i135.ph175188 = phi ptr [ %20, %.thread176 ], [ %18, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17hf0865b8aec4b7b8bE.exit70.thread151" ], [ undef, %.thread145 ], [ undef, %3 ], [ undef, %3 ] %.ph174190 = getelementptr inbounds nuw i8, ptr %2, i64 24 %21 = load ptr, ptr %.ph174190, align 8, !alias.scope !80, !noalias !83, !nonnull !20, !align !57, !noundef !20 call void @llvm.lifetime.start.p0(ptr nonnull %6), !noalias !90 @@ -303,7 +294,7 @@ default.unreachable: ; preds = %3 ] "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17hf0865b8aec4b7b8bE.exit.thread.i": ; preds = %29 - call void @"_ZN140_$LT$diesel..mysql..query_builder..MysqlQueryBuilder$u20$as$u20$diesel..query_builder..QueryBuilder$LT$diesel..mysql..backend..Mysql$GT$$GT$8push_sql17h9e2d6187c4aa6542E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.sroa.6.0.i135.ph175188, ptr noalias noundef nonnull readonly align 1 @anon.378ebc1986edebd492690f685eac171a.0, i64 noundef 1), !noalias !100 + call void @"_ZN140_$LT$diesel..mysql..query_builder..MysqlQueryBuilder$u20$as$u20$diesel..query_builder..QueryBuilder$LT$diesel..mysql..backend..Mysql$GT$$GT$8push_sql17h9e2d6187c4aa6542E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.sroa.6.0.i138, ptr noalias noundef nonnull readonly align 1 @anon.378ebc1986edebd492690f685eac171a.0, i64 noundef 1), !noalias !100 call void @llvm.lifetime.start.p0(ptr nonnull %10), !noalias !103 call void @llvm.lifetime.start.p0(ptr nonnull %9), !noalias !103 %30 = icmp ne ptr %.sroa.11.0.i83, null @@ -311,7 +302,7 @@ default.unreachable: ; preds = %3 br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h403f68ea67a7d51eE.exit.i" "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17hf0865b8aec4b7b8bE.exit.thread66.i": ; preds = %29 - store i8 0, ptr %.sroa.6.0.i135.ph175188, align 1, !noalias !104 + store i8 0, ptr %.sroa.6.0.i138, align 1, !noalias !104 call void @llvm.lifetime.start.p0(ptr nonnull %10), !noalias !103 call void @llvm.lifetime.start.p0(ptr nonnull %9), !noalias !103 br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h403f68ea67a7d51eE.exit.i" @@ -330,7 +321,7 @@ default.unreachable: ; preds = %3 "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h403f68ea67a7d51eE.exit.i": ; preds = %32, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17hf0865b8aec4b7b8bE.exit.i", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17hf0865b8aec4b7b8bE.exit.thread66.i", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17hf0865b8aec4b7b8bE.exit.thread.i" store i64 %14, ptr %9, align 8, !alias.scope !106, !noalias !109 %.sroa.6.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %9, i64 8 - store ptr %.sroa.6.0.i135.ph175188, ptr %.sroa.6.0..sroa_idx.i.i, align 8, !alias.scope !106, !noalias !109 + store ptr %.sroa.6.0.i138, ptr %.sroa.6.0..sroa_idx.i.i, align 8, !alias.scope !106, !noalias !109 %.sroa.11.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %9, i64 16 store ptr %.sroa.11.0.i83, ptr %.sroa.11.0..sroa_idx.i.i, align 8, !alias.scope !106, !noalias !109 %34 = getelementptr inbounds nuw i8, ptr %9, i64 24 @@ -346,7 +337,7 @@ default.unreachable: ; preds = %3 call void @llvm.lifetime.start.p0(ptr nonnull %11), !noalias !103 store i64 %14, ptr %11, align 8, !noalias !112 %.sroa.5122.0..sroa_idx = getelementptr inbounds nuw i8, ptr %11, i64 8 - store ptr %.sroa.6.0.i135.ph175188, ptr %.sroa.5122.0..sroa_idx, align 8, !noalias !112 + store ptr %.sroa.6.0.i138, ptr %.sroa.5122.0..sroa_idx, align 8, !noalias !112 %.sroa.9.0..sroa_idx = getelementptr inbounds nuw i8, ptr %11, i64 16 store ptr %.sroa.11.0.i83, ptr %.sroa.9.0..sroa_idx, align 8, !noalias !112 %.sroa.14.0..sroa_idx = getelementptr inbounds nuw i8, ptr %11, i64 24 @@ -365,7 +356,7 @@ default.unreachable: ; preds = %3 ] "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17hf0865b8aec4b7b8bE.exit51.thread.i": ; preds = %40 - call void @"_ZN140_$LT$diesel..mysql..query_builder..MysqlQueryBuilder$u20$as$u20$diesel..query_builder..QueryBuilder$LT$diesel..mysql..backend..Mysql$GT$$GT$8push_sql17h9e2d6187c4aa6542E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.sroa.6.0.i135.ph175188, ptr noalias noundef nonnull readonly align 1 @anon.378ebc1986edebd492690f685eac171a.1, i64 noundef 10), !noalias !113 + call void @"_ZN140_$LT$diesel..mysql..query_builder..MysqlQueryBuilder$u20$as$u20$diesel..query_builder..QueryBuilder$LT$diesel..mysql..backend..Mysql$GT$$GT$8push_sql17h9e2d6187c4aa6542E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.sroa.6.0.i138, ptr noalias noundef nonnull readonly align 1 @anon.378ebc1986edebd492690f685eac171a.1, i64 noundef 10), !noalias !113 call void @llvm.lifetime.start.p0(ptr nonnull %8), !noalias !103 call void @llvm.lifetime.start.p0(ptr nonnull %7), !noalias !103 %41 = icmp ne ptr %.sroa.11.0.i83, null @@ -373,7 +364,7 @@ default.unreachable: ; preds = %3 br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h403f68ea67a7d51eE.exit58.i" "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17hf0865b8aec4b7b8bE.exit51.thread69.i": ; preds = %40 - store i8 0, ptr %.sroa.6.0.i135.ph175188, align 1, !noalias !116 + store i8 0, ptr %.sroa.6.0.i138, align 1, !noalias !116 call void @llvm.lifetime.start.p0(ptr nonnull %8), !noalias !103 call void @llvm.lifetime.start.p0(ptr nonnull %7), !noalias !103 br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h403f68ea67a7d51eE.exit58.i" @@ -392,7 +383,7 @@ default.unreachable: ; preds = %3 "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h403f68ea67a7d51eE.exit58.i": ; preds = %43, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17hf0865b8aec4b7b8bE.exit51.i", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17hf0865b8aec4b7b8bE.exit51.thread69.i", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17hf0865b8aec4b7b8bE.exit51.thread.i" store i64 %14, ptr %7, align 8, !alias.scope !118, !noalias !121 %.sroa.6.0..sroa_idx.i55.i = getelementptr inbounds nuw i8, ptr %7, i64 8 - store ptr %.sroa.6.0.i135.ph175188, ptr %.sroa.6.0..sroa_idx.i55.i, align 8, !alias.scope !118, !noalias !121 + store ptr %.sroa.6.0.i138, ptr %.sroa.6.0..sroa_idx.i55.i, align 8, !alias.scope !118, !noalias !121 %.sroa.11.0..sroa_idx.i56.i = getelementptr inbounds nuw i8, ptr %7, i64 16 store ptr %.sroa.11.0.i83, ptr %.sroa.11.0..sroa_idx.i56.i, align 8, !alias.scope !118, !noalias !121 %45 = getelementptr inbounds nuw i8, ptr %7, i64 24 @@ -419,11 +410,11 @@ default.unreachable: ; preds = %3 ] .thread205: ; preds = %49 - call void @"_ZN140_$LT$diesel..mysql..query_builder..MysqlQueryBuilder$u20$as$u20$diesel..query_builder..QueryBuilder$LT$diesel..mysql..backend..Mysql$GT$$GT$8push_sql17h9e2d6187c4aa6542E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.sroa.6.0.i135.ph175188, ptr noalias noundef nonnull readonly align 1 @anon.378ebc1986edebd492690f685eac171a.2, i64 noundef 1), !noalias !123 + call void @"_ZN140_$LT$diesel..mysql..query_builder..MysqlQueryBuilder$u20$as$u20$diesel..query_builder..QueryBuilder$LT$diesel..mysql..backend..Mysql$GT$$GT$8push_sql17h9e2d6187c4aa6542E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.sroa.6.0.i138, ptr noalias noundef nonnull readonly align 1 @anon.378ebc1986edebd492690f685eac171a.2, i64 noundef 1), !noalias !123 br label %55 .thread206: ; preds = %49 - store i8 0, ptr %.sroa.6.0.i135.ph175188, align 1, !noalias !126 + store i8 0, ptr %.sroa.6.0.i138, align 1, !noalias !126 br label %55 50: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h403f68ea67a7d51eE.exit58.i" diff --git a/bench/diesel-rs/optimized/3y4xw1qwrjmgl19p.ll b/bench/diesel-rs/optimized/3y4xw1qwrjmgl19p.ll index 587e2811fd1..8f44d6e4c19 100644 --- a/bench/diesel-rs/optimized/3y4xw1qwrjmgl19p.ll +++ b/bench/diesel-rs/optimized/3y4xw1qwrjmgl19p.ll @@ -171,20 +171,20 @@ define hidden void @"_ZN147_$LT$diesel..query_builder..insert_statement..InsertS %.sroa.11 = alloca [23 x i8], align 1 %14 = getelementptr inbounds nuw i8, ptr %1, i64 16 %15 = load i64, ptr %2, align 8, !range !35, !alias.scope !36, !noalias !39, !noundef !14 + %.sroa.6.0.in.i141 = getelementptr inbounds nuw i8, ptr %2, i64 8 + %.sroa.6.0.i142 = load ptr, ptr %.sroa.6.0.in.i141, align 8, !alias.scope !36, !noalias !39, !nonnull !14, !align !41, !noundef !14 switch i64 %15, label %default.unreachable [ i64 0, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h66ef390f23b1fee8E.exit.thread140" i64 1, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h97b0e6d67659a98eE.exit70.thread155" - i64 2, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h66ef390f23b1fee8E.exit" - i64 3, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h66ef390f23b1fee8E.exit" i64 4, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h66ef390f23b1fee8E.exit" + i64 2, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h66ef390f23b1fee8E.exit89" + i64 3, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h66ef390f23b1fee8E.exit89" ] default.unreachable: ; preds = %3 unreachable "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h66ef390f23b1fee8E.exit.thread140": ; preds = %3 - %.sroa.6.0.in.i141 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %.sroa.6.0.i142 = load ptr, ptr %.sroa.6.0.in.i141, align 8, !alias.scope !36, !noalias !39, !nonnull !14, !align !41, !noundef !14 tail call void @"_ZN144_$LT$diesel..sqlite..query_builder..SqliteQueryBuilder$u20$as$u20$diesel..query_builder..QueryBuilder$LT$diesel..sqlite..backend..Sqlite$GT$$GT$8push_sql17h14dc80696d479d96E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.sroa.6.0.i142, ptr noalias noundef nonnull readonly align 1 @anon.9c6e0e973b20211e991ee14fb2685f8c.0.llvm.13821364776674032361, i64 noundef 6), !noalias !42 tail call void @"_ZN144_$LT$diesel..sqlite..query_builder..SqliteQueryBuilder$u20$as$u20$diesel..query_builder..QueryBuilder$LT$diesel..sqlite..backend..Sqlite$GT$$GT$8push_sql17h14dc80696d479d96E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.sroa.6.0.i142, ptr noalias noundef nonnull readonly align 1 @anon.554c09d9abcf90f3e903360f568c2ed7.5, i64 noundef 6), !noalias !48 call void @llvm.lifetime.start.p0(ptr nonnull %13), !noalias !51 @@ -194,20 +194,12 @@ default.unreachable: ; preds = %3 br i1 %17, label %.thread180, label %52 "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h97b0e6d67659a98eE.exit70.thread155": ; preds = %3 - %.sroa.6.0.in.i135 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %.sroa.6.0.i136 = load ptr, ptr %.sroa.6.0.in.i135, align 8, !alias.scope !36, !noalias !39, !nonnull !14, !align !41, !noundef !14 %18 = getelementptr inbounds nuw i8, ptr %2, i64 16 %19 = load ptr, ptr %18, align 8, !alias.scope !64, !noalias !67, !nonnull !14, !align !41, !noundef !14 br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h66ef390f23b1fee8E.exit89" -"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h66ef390f23b1fee8E.exit": ; preds = %3, %3, %3 - %.sroa.6.0.in.i = getelementptr inbounds nuw i8, ptr %2, i64 8 - %.sroa.6.0.i = load ptr, ptr %.sroa.6.0.in.i, align 8, !alias.scope !36, !noalias !39, !nonnull !14, !align !41, !noundef !14 - %cond = icmp eq i64 %15, 4 - br i1 %cond, label %.thread149, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h66ef390f23b1fee8E.exit89" - -.thread149: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h66ef390f23b1fee8E.exit" - store i8 0, ptr %.sroa.6.0.i, align 1, !noalias !69 +"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h66ef390f23b1fee8E.exit": ; preds = %3 + store i8 0, ptr %.sroa.6.0.i142, align 1, !noalias !69 br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h66ef390f23b1fee8E.exit89" .thread180: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h66ef390f23b1fee8E.exit.thread140" @@ -217,9 +209,8 @@ default.unreachable: ; preds = %3 %21 = load ptr, ptr %20, align 8, !alias.scope !64, !noalias !67, !nonnull !14, !align !41, !noundef !14 br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h66ef390f23b1fee8E.exit89" -"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h66ef390f23b1fee8E.exit89": ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h66ef390f23b1fee8E.exit", %.thread149, %.thread180, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h97b0e6d67659a98eE.exit70.thread155" - %.sroa.6.0.i138.ph179192 = phi ptr [ %.sroa.6.0.i142, %.thread180 ], [ %.sroa.6.0.i136, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h97b0e6d67659a98eE.exit70.thread155" ], [ %.sroa.6.0.i, %.thread149 ], [ %.sroa.6.0.i, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h66ef390f23b1fee8E.exit" ] - %.sroa.11.0.i83 = phi ptr [ %21, %.thread180 ], [ %19, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h97b0e6d67659a98eE.exit70.thread155" ], [ undef, %.thread149 ], [ undef, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h66ef390f23b1fee8E.exit" ] +"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h66ef390f23b1fee8E.exit89": ; preds = %3, %3, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h66ef390f23b1fee8E.exit", %.thread180, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h97b0e6d67659a98eE.exit70.thread155" + %.sroa.6.0.i138.ph179192 = phi ptr [ %21, %.thread180 ], [ %19, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h97b0e6d67659a98eE.exit70.thread155" ], [ undef, %.thread149 ], [ undef, %3 ], [ undef, %3 ] %.ph178194 = getelementptr inbounds nuw i8, ptr %2, i64 24 %22 = load ptr, ptr %.ph178194, align 8, !alias.scope !64, !noalias !67, !nonnull !14, !align !41, !noundef !14 call void @llvm.lifetime.start.p0(ptr nonnull %8), !noalias !74 @@ -260,7 +251,7 @@ default.unreachable: ; preds = %3 ] "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h97b0e6d67659a98eE.exit.thread.i": ; preds = %30 - call void @"_ZN144_$LT$diesel..sqlite..query_builder..SqliteQueryBuilder$u20$as$u20$diesel..query_builder..QueryBuilder$LT$diesel..sqlite..backend..Sqlite$GT$$GT$8push_sql17h14dc80696d479d96E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.sroa.6.0.i138.ph179192, ptr noalias noundef nonnull readonly align 1 @anon.554c09d9abcf90f3e903360f568c2ed7.0, i64 noundef 1), !noalias !84 + call void @"_ZN144_$LT$diesel..sqlite..query_builder..SqliteQueryBuilder$u20$as$u20$diesel..query_builder..QueryBuilder$LT$diesel..sqlite..backend..Sqlite$GT$$GT$8push_sql17h14dc80696d479d96E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.sroa.6.0.i142, ptr noalias noundef nonnull readonly align 1 @anon.554c09d9abcf90f3e903360f568c2ed7.0, i64 noundef 1), !noalias !84 call void @llvm.lifetime.start.p0(ptr nonnull %12), !noalias !87 call void @llvm.lifetime.start.p0(ptr nonnull %11), !noalias !87 %31 = icmp ne ptr %.sroa.11.0.i83, null @@ -268,7 +259,7 @@ default.unreachable: ; preds = %3 br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h66ef390f23b1fee8E.exit.i" "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h97b0e6d67659a98eE.exit.thread72.i": ; preds = %30 - store i8 0, ptr %.sroa.6.0.i138.ph179192, align 1, !noalias !88 + store i8 0, ptr %.sroa.6.0.i142, align 1, !noalias !88 call void @llvm.lifetime.start.p0(ptr nonnull %12), !noalias !87 call void @llvm.lifetime.start.p0(ptr nonnull %11), !noalias !87 br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h66ef390f23b1fee8E.exit.i" @@ -287,7 +278,7 @@ default.unreachable: ; preds = %3 "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h66ef390f23b1fee8E.exit.i": ; preds = %33, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h97b0e6d67659a98eE.exit.i", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h97b0e6d67659a98eE.exit.thread72.i", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h97b0e6d67659a98eE.exit.thread.i" store i64 %15, ptr %11, align 8, !alias.scope !90, !noalias !93 %.sroa.6.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %11, i64 8 - store ptr %.sroa.6.0.i138.ph179192, ptr %.sroa.6.0..sroa_idx.i.i, align 8, !alias.scope !90, !noalias !93 + store ptr %.sroa.6.0.i142, ptr %.sroa.6.0..sroa_idx.i.i, align 8, !alias.scope !90, !noalias !93 %.sroa.11.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %11, i64 16 store ptr %.sroa.11.0.i83, ptr %.sroa.11.0..sroa_idx.i.i, align 8, !alias.scope !90, !noalias !93 %35 = getelementptr inbounds nuw i8, ptr %11, i64 24 @@ -308,7 +299,7 @@ default.unreachable: ; preds = %3 ] 39: ; preds = %38 - call void @"_ZN144_$LT$diesel..sqlite..query_builder..SqliteQueryBuilder$u20$as$u20$diesel..query_builder..QueryBuilder$LT$diesel..sqlite..backend..Sqlite$GT$$GT$8push_sql17h14dc80696d479d96E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.sroa.6.0.i138.ph179192, ptr noalias noundef nonnull readonly align 1 @anon.554c09d9abcf90f3e903360f568c2ed7.9, i64 noundef 14), !noalias !96 + call void @"_ZN144_$LT$diesel..sqlite..query_builder..SqliteQueryBuilder$u20$as$u20$diesel..query_builder..QueryBuilder$LT$diesel..sqlite..backend..Sqlite$GT$$GT$8push_sql17h14dc80696d479d96E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.sroa.6.0.i142, ptr noalias noundef nonnull readonly align 1 @anon.554c09d9abcf90f3e903360f568c2ed7.9, i64 noundef 14), !noalias !96 br label %.thread.i.i 40: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h66ef390f23b1fee8E.exit.i" @@ -319,7 +310,7 @@ default.unreachable: ; preds = %3 ] "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h97b0e6d67659a98eE.exit52.thread.i": ; preds = %40 - call void @"_ZN144_$LT$diesel..sqlite..query_builder..SqliteQueryBuilder$u20$as$u20$diesel..query_builder..QueryBuilder$LT$diesel..sqlite..backend..Sqlite$GT$$GT$8push_sql17h14dc80696d479d96E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.sroa.6.0.i138.ph179192, ptr noalias noundef nonnull readonly align 1 @anon.554c09d9abcf90f3e903360f568c2ed7.1, i64 noundef 10), !noalias !103 + call void @"_ZN144_$LT$diesel..sqlite..query_builder..SqliteQueryBuilder$u20$as$u20$diesel..query_builder..QueryBuilder$LT$diesel..sqlite..backend..Sqlite$GT$$GT$8push_sql17h14dc80696d479d96E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.sroa.6.0.i142, ptr noalias noundef nonnull readonly align 1 @anon.554c09d9abcf90f3e903360f568c2ed7.1, i64 noundef 10), !noalias !103 call void @llvm.lifetime.start.p0(ptr nonnull %10), !noalias !87 call void @llvm.lifetime.start.p0(ptr nonnull %9), !noalias !87 %41 = icmp ne ptr %.sroa.11.0.i83, null @@ -327,7 +318,7 @@ default.unreachable: ; preds = %3 br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h66ef390f23b1fee8E.exit59.i" "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h97b0e6d67659a98eE.exit52.thread75.i": ; preds = %40 - store i8 0, ptr %.sroa.6.0.i138.ph179192, align 1, !noalias !106 + store i8 0, ptr %.sroa.6.0.i142, align 1, !noalias !106 call void @llvm.lifetime.start.p0(ptr nonnull %10), !noalias !87 call void @llvm.lifetime.start.p0(ptr nonnull %9), !noalias !87 br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h66ef390f23b1fee8E.exit59.i" @@ -346,7 +337,7 @@ default.unreachable: ; preds = %3 "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h66ef390f23b1fee8E.exit59.i": ; preds = %43, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h97b0e6d67659a98eE.exit52.i", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h97b0e6d67659a98eE.exit52.thread75.i", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h97b0e6d67659a98eE.exit52.thread.i" store i64 %15, ptr %9, align 8, !alias.scope !108, !noalias !111 %.sroa.6.0..sroa_idx.i56.i = getelementptr inbounds nuw i8, ptr %9, i64 8 - store ptr %.sroa.6.0.i138.ph179192, ptr %.sroa.6.0..sroa_idx.i56.i, align 8, !alias.scope !108, !noalias !111 + store ptr %.sroa.6.0.i142, ptr %.sroa.6.0..sroa_idx.i56.i, align 8, !alias.scope !108, !noalias !111 %.sroa.11.0..sroa_idx.i57.i = getelementptr inbounds nuw i8, ptr %9, i64 16 store ptr %.sroa.11.0.i83, ptr %.sroa.11.0..sroa_idx.i57.i, align 8, !alias.scope !108, !noalias !111 %45 = getelementptr inbounds nuw i8, ptr %9, i64 24 @@ -376,7 +367,7 @@ default.unreachable: ; preds = %3 ] 50: ; preds = %49 - call void @"_ZN144_$LT$diesel..sqlite..query_builder..SqliteQueryBuilder$u20$as$u20$diesel..query_builder..QueryBuilder$LT$diesel..sqlite..backend..Sqlite$GT$$GT$8push_sql17h14dc80696d479d96E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.sroa.6.0.i138.ph179192, ptr noalias noundef nonnull readonly align 1 @anon.554c09d9abcf90f3e903360f568c2ed7.2, i64 noundef 1), !noalias !113 + call void @"_ZN144_$LT$diesel..sqlite..query_builder..SqliteQueryBuilder$u20$as$u20$diesel..query_builder..QueryBuilder$LT$diesel..sqlite..backend..Sqlite$GT$$GT$8push_sql17h14dc80696d479d96E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.sroa.6.0.i142, ptr noalias noundef nonnull readonly align 1 @anon.554c09d9abcf90f3e903360f568c2ed7.2, i64 noundef 1), !noalias !113 br label %.thread.i.i 51: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h66ef390f23b1fee8E.exit59.i" @@ -403,11 +394,11 @@ default.unreachable1.i95: ; preds = %49, %38 %53 = getelementptr inbounds nuw i8, ptr %2, i64 16 %54 = load ptr, ptr %53, align 8, !alias.scope !116, !noalias !119, !nonnull !14, !align !41, !noundef !14 store i8 1, ptr %54, align 1, !noalias !121 - call void @"_ZN144_$LT$diesel..sqlite..query_builder..SqliteQueryBuilder$u20$as$u20$diesel..query_builder..QueryBuilder$LT$diesel..sqlite..backend..Sqlite$GT$$GT$8push_sql17h14dc80696d479d96E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.sroa.6.0.i138.ph179192, ptr noalias noundef nonnull readonly align 1 @anon.554c09d9abcf90f3e903360f568c2ed7.10, i64 noundef 11), !noalias !130 + call void @"_ZN144_$LT$diesel..sqlite..query_builder..SqliteQueryBuilder$u20$as$u20$diesel..query_builder..QueryBuilder$LT$diesel..sqlite..backend..Sqlite$GT$$GT$8push_sql17h14dc80696d479d96E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.sroa.6.0.i142, ptr noalias noundef nonnull readonly align 1 @anon.554c09d9abcf90f3e903360f568c2ed7.10, i64 noundef 11), !noalias !130 br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h66ef390f23b1fee8E.exit.i.i" "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h97b0e6d67659a98eE.exit.thread9.i.i": ; preds = %49, %38 - store i8 0, ptr %.sroa.6.0.i138.ph179192, align 1, !noalias !133 + store i8 0, ptr %.sroa.6.0.i142, align 1, !noalias !133 br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h66ef390f23b1fee8E.exit.i.i" 55: ; preds = %49, %38 @@ -421,7 +412,7 @@ default.unreachable1.i95: ; preds = %49, %38 call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !121 store i64 %15, ptr %4, align 8, !alias.scope !135, !noalias !138 %.sroa.6.0..sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %4, i64 8 - store ptr %.sroa.6.0.i138.ph179192, ptr %.sroa.6.0..sroa_idx.i.i.i, align 8, !alias.scope !135, !noalias !138 + store ptr %.sroa.6.0.i142, ptr %.sroa.6.0..sroa_idx.i.i.i, align 8, !alias.scope !135, !noalias !138 %.sroa.11.0..sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %4, i64 16 store ptr %.sroa.11.0.i90218, ptr %.sroa.11.0..sroa_idx.i.i.i, align 8, !alias.scope !135, !noalias !138 %58 = getelementptr inbounds nuw i8, ptr %4, i64 24 diff --git a/bench/duckdb/optimized/ub_duckdb_core_functions_date.ll b/bench/duckdb/optimized/ub_duckdb_core_functions_date.ll index e78c32ad00b..bf74b73964b 100644 --- a/bench/duckdb/optimized/ub_duckdb_core_functions_date.ll +++ b/bench/duckdb/optimized/ub_duckdb_core_functions_date.ll @@ -21839,6 +21839,7 @@ define internal void @_ZN6duckdbL13DateTruncBindERNS_13ClientContextERNS_14Scala to label %35 unwind label %38 35: ; preds = %33 + %36 = getelementptr inbounds nuw i8, ptr %2, i64 72 switch i8 %34, label %127 [ i8 5, label %40 i8 4, label %40 @@ -21867,9 +21868,8 @@ define internal void @_ZN6duckdbL13DateTruncBindERNS_13ClientContextERNS_14Scala br label %.body 40: ; preds = %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35, %35 - %41 = getelementptr inbounds nuw i8, ptr %2, i64 72 - %42 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6duckdb6vectorINS_11LogicalTypeELb1EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %41, i64 noundef 1) - to label %43 unwind label %38 + %42 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6duckdb6vectorINS_11LogicalTypeELb1EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %36, i64 noundef 1) + to label %43 unwind label %39 43: ; preds = %40 %44 = load i8, ptr %42, align 8, !tbaa !321 @@ -22071,7 +22071,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i41: ; preds = %9 102: ; preds = %101 invoke void @__cxa_throw(ptr nonnull %100, ptr nonnull @_ZTIN6duckdb23NotImplementedExceptionE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #32 - to label %160 unwind label %104 + to label %159 unwind label %104 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread: ; preds = %99 %103 = landingpad { ptr, i32 } @@ -22159,20 +22159,19 @@ _ZN6duckdb10shared_ptrINS_13ExtraTypeInfoELb1EEaSEOS2_.exit.i.i: ; preds = %_ZN6 br label %.body 127: ; preds = %35 - %128 = getelementptr inbounds nuw i8, ptr %2, i64 72 - %129 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6duckdb6vectorINS_11LogicalTypeELb1EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %128, i64 noundef 1) - to label %130 unwind label %38 + %128 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6duckdb6vectorINS_11LogicalTypeELb1EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %36, i64 noundef 1) + to label %129 unwind label %38 130: ; preds = %127 - %131 = load i8, ptr %129, align 8, !tbaa !321 - switch i8 %131, label %140 [ + %131 = load i8, ptr %128, align 8, !tbaa !321 + switch i8 %131, label %139 [ i8 19, label %132 i8 15, label %136 ] 132: ; preds = %130 %133 = invoke fastcc noundef ptr @_ZN6duckdbL14DateTruncStatsINS_11timestamp_tES1_EEPFNS_10unique_ptrINS_14BaseStatisticsESt14default_deleteIS3_ELb1EEERNS_13ClientContextERNS_23FunctionStatisticsInputEENS_17DatePartSpecifierE(i8 noundef zeroext %34) - to label %134 unwind label %38 + to label %133 unwind label %38 134: ; preds = %132 %135 = getelementptr inbounds nuw i8, ptr %2, i64 232 @@ -22181,7 +22180,7 @@ _ZN6duckdb10shared_ptrINS_13ExtraTypeInfoELb1EEaSEOS2_.exit.i.i: ; preds = %_ZN6 136: ; preds = %130 %137 = invoke fastcc noundef ptr @_ZN6duckdbL14DateTruncStatsINS_6date_tENS_11timestamp_tEEEPFNS_10unique_ptrINS_14BaseStatisticsESt14default_deleteIS4_ELb1EEERNS_13ClientContextERNS_23FunctionStatisticsInputEENS_17DatePartSpecifierE(i8 noundef zeroext %34) - to label %138 unwind label %38 + to label %137 unwind label %38 138: ; preds = %136 %139 = getelementptr inbounds nuw i8, ptr %2, i64 232 @@ -22193,15 +22192,15 @@ _ZN6duckdb10shared_ptrINS_13ExtraTypeInfoELb1EEaSEOS2_.exit.i.i: ; preds = %_ZN6 call void @llvm.lifetime.start.p0(ptr nonnull %16) call void @llvm.lifetime.start.p0(ptr nonnull %17) invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull @.str.49, ptr noundef nonnull align 1 dereferenceable(1) %17) - to label %142 unwind label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit47.thread + to label %141 unwind label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit47.thread 142: ; preds = %140 invoke void @_ZN6duckdb23NotImplementedExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %141, ptr noundef nonnull align 8 dereferenceable(32) %16) - to label %143 unwind label %145 + to label %142 unwind label %145 143: ; preds = %142 invoke void @__cxa_throw(ptr nonnull %141, ptr nonnull @_ZTIN6duckdb23NotImplementedExceptionE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #32 - to label %160 unwind label %145 + to label %159 unwind label %145 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit47.thread: ; preds = %140 %144 = landingpad { ptr, i32 } @@ -22211,7 +22210,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit47.thread: ; preds br label %150 145: ; preds = %143, %142 - %.0 = phi i1 [ false, %143 ], [ true, %142 ] + %.0 = phi i1 [ false, %142 ], [ true, %141 ] %146 = landingpad { ptr, i32 } cleanup %147 = load ptr, ptr %16, align 8, !tbaa !55 @@ -22251,7 +22250,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit50: ; preds = %151 br label %158 .body: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i46, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i42, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i41, %97, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, %70, %38, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit47, %150, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %109, %125 - %.pn29.pn = phi { ptr, i32 } [ %.pn2959, %150 ], [ %146, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit47 ], [ %.pn56, %109 ], [ %105, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %126, %125 ], [ %39, %38 ], [ %66, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %.pn11.i, %70 ], [ %66, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i ], [ %93, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i41 ], [ %.pn11.i38, %97 ], [ %93, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i42 ], [ %105, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i ], [ %146, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i46 ] + %.pn29.pn = phi { ptr, i32 } [ %.pn2959, %149 ], [ %146, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit47 ], [ %.pn56, %109 ], [ %105, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %126, %125 ], [ %39, %39 ], [ %66, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %.pn11.i, %70 ], [ %66, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i ], [ %93, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i41 ], [ %.pn11.i38, %97 ], [ %93, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i42 ], [ %105, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i ], [ %146, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i46 ] %155 = load ptr, ptr %12, align 8, !tbaa !55 %156 = getelementptr inbounds nuw i8, ptr %12, i64 16 %157 = icmp eq ptr %155, %156 @@ -22262,7 +22261,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i51 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit53 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit53: ; preds = %.body, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i51, %36 - %.pn29.pn.pn = phi { ptr, i32 } [ %37, %36 ], [ %.pn29.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i51 ], [ %.pn29.pn, %.body ] + %.pn29.pn.pn = phi { ptr, i32 } [ %37, %37 ], [ %.pn29.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i51 ], [ %.pn29.pn, %.body ] call void @llvm.lifetime.end.p0(ptr nonnull %12) call void @_ZN6duckdb5ValueD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %11) #28 call void @llvm.lifetime.end.p0(ptr nonnull %11) diff --git a/bench/eastl/optimized/EASprintfCore.ll b/bench/eastl/optimized/EASprintfCore.ll index db7dc8541bc..a4014e0d657 100644 --- a/bench/eastl/optimized/EASprintfCore.ll +++ b/bench/eastl/optimized/EASprintfCore.ll @@ -402,6 +402,8 @@ if.then12: ; preds = %if.end10 sw.bb: ; preds = %if.then12, %if.then12 %7 = load i32, ptr %mModifier.i, align 4 + %gp_offset120 = load i32, ptr %arguments, align 8 + %fits_in_gp121 = icmp ult i32 %gp_offset120, 41 switch i32 %7, label %if.else118 [ i32 5, label %if.then15 i32 10, label %if.then20 @@ -414,15 +416,13 @@ sw.bb: ; preds = %if.then12, %if.then ] if.then15: ; preds = %sw.bb - %gp_offset = load i32, ptr %arguments, align 8 - %fits_in_gp = icmp ult i32 %gp_offset, 41 - br i1 %fits_in_gp, label %vaarg.in_reg, label %vaarg.in_mem + br i1 %fits_in_gp121, label %vaarg.in_reg, label %vaarg.in_mem vaarg.in_reg: ; preds = %if.then15 %reg_save_area = load ptr, ptr %1, align 8 - %8 = zext nneg i32 %gp_offset to i64 + %8 = zext nneg i32 %gp_offset120 to i64 %9 = getelementptr i8, ptr %reg_save_area, i64 %8 - %10 = add nuw nsw i32 %gp_offset, 8 + %10 = add nuw nsw i32 %gp_offset120, 8 store i32 %10, ptr %arguments, align 8 br label %if.end156.thread182 @@ -438,15 +438,13 @@ if.end156.thread182: ; preds = %vaarg.in_reg, %vaar br label %if.then159 if.then20: ; preds = %sw.bb, %sw.bb - %gp_offset22 = load i32, ptr %arguments, align 8 - %fits_in_gp23 = icmp ult i32 %gp_offset22, 41 - br i1 %fits_in_gp23, label %vaarg.in_reg24, label %vaarg.in_mem26 + br i1 %fits_in_gp121, label %vaarg.in_reg24, label %vaarg.in_mem26 vaarg.in_reg24: ; preds = %if.then20 %reg_save_area25 = load ptr, ptr %1, align 8 - %12 = zext nneg i32 %gp_offset22 to i64 + %12 = zext nneg i32 %gp_offset120 to i64 %13 = getelementptr i8, ptr %reg_save_area25, i64 %12 - %14 = add nuw nsw i32 %gp_offset22, 8 + %14 = add nuw nsw i32 %gp_offset120, 8 store i32 %14, ptr %arguments, align 8 br label %vaarg.end30 @@ -462,15 +460,13 @@ vaarg.end30: ; preds = %vaarg.in_mem26, %va br label %if.end156 if.then35: ; preds = %sw.bb - %gp_offset37 = load i32, ptr %arguments, align 8 - %fits_in_gp38 = icmp ult i32 %gp_offset37, 41 - br i1 %fits_in_gp38, label %vaarg.in_reg39, label %vaarg.in_mem41 + br i1 %fits_in_gp121, label %vaarg.in_reg39, label %vaarg.in_mem41 vaarg.in_reg39: ; preds = %if.then35 %reg_save_area40 = load ptr, ptr %1, align 8 - %16 = zext nneg i32 %gp_offset37 to i64 + %16 = zext nneg i32 %gp_offset120 to i64 %17 = getelementptr i8, ptr %reg_save_area40, i64 %16 - %18 = add nuw nsw i32 %gp_offset37, 8 + %18 = add nuw nsw i32 %gp_offset120, 8 store i32 %18, ptr %arguments, align 8 br label %vaarg.end45 @@ -486,15 +482,13 @@ vaarg.end45: ; preds = %vaarg.in_mem41, %va br label %if.else164 if.then50: ; preds = %sw.bb - %gp_offset52 = load i32, ptr %arguments, align 8 - %fits_in_gp53 = icmp ult i32 %gp_offset52, 41 - br i1 %fits_in_gp53, label %vaarg.in_reg54, label %vaarg.in_mem56 + br i1 %fits_in_gp121, label %vaarg.in_reg54, label %vaarg.in_mem56 vaarg.in_reg54: ; preds = %if.then50 %reg_save_area55 = load ptr, ptr %1, align 8 - %20 = zext nneg i32 %gp_offset52 to i64 + %20 = zext nneg i32 %gp_offset120 to i64 %21 = getelementptr i8, ptr %reg_save_area55, i64 %20 - %22 = add nuw nsw i32 %gp_offset52, 8 + %22 = add nuw nsw i32 %gp_offset120, 8 store i32 %22, ptr %arguments, align 8 br label %vaarg.end60 @@ -510,15 +504,13 @@ vaarg.end60: ; preds = %vaarg.in_mem56, %va br label %if.else164 if.then65: ; preds = %sw.bb - %gp_offset67 = load i32, ptr %arguments, align 8 - %fits_in_gp68 = icmp ult i32 %gp_offset67, 41 - br i1 %fits_in_gp68, label %vaarg.in_reg69, label %vaarg.in_mem71 + br i1 %fits_in_gp121, label %vaarg.in_reg69, label %vaarg.in_mem71 vaarg.in_reg69: ; preds = %if.then65 %reg_save_area70 = load ptr, ptr %1, align 8 - %24 = zext nneg i32 %gp_offset67 to i64 + %24 = zext nneg i32 %gp_offset120 to i64 %25 = getelementptr i8, ptr %reg_save_area70, i64 %24 - %26 = add nuw nsw i32 %gp_offset67, 8 + %26 = add nuw nsw i32 %gp_offset120, 8 store i32 %26, ptr %arguments, align 8 br label %vaarg.end75 @@ -534,15 +526,13 @@ vaarg.end75: ; preds = %vaarg.in_mem71, %va br label %if.else164 if.then80: ; preds = %sw.bb - %gp_offset82 = load i32, ptr %arguments, align 8 - %fits_in_gp83 = icmp ult i32 %gp_offset82, 41 - br i1 %fits_in_gp83, label %vaarg.in_reg84, label %vaarg.in_mem86 + br i1 %fits_in_gp121, label %vaarg.in_reg84, label %vaarg.in_mem86 vaarg.in_reg84: ; preds = %if.then80 %reg_save_area85 = load ptr, ptr %1, align 8 - %28 = zext nneg i32 %gp_offset82 to i64 + %28 = zext nneg i32 %gp_offset120 to i64 %29 = getelementptr i8, ptr %reg_save_area85, i64 %28 - %30 = add nuw nsw i32 %gp_offset82, 8 + %30 = add nuw nsw i32 %gp_offset120, 8 store i32 %30, ptr %arguments, align 8 br label %vaarg.end90 @@ -558,9 +548,7 @@ vaarg.end90: ; preds = %vaarg.in_mem86, %va br label %if.else164 if.then95: ; preds = %sw.bb - %gp_offset97 = load i32, ptr %arguments, align 8 - %fits_in_gp98 = icmp ult i32 %gp_offset97, 41 - br i1 %fits_in_gp98, label %vaarg.end105, label %vaarg.end105.thread + br i1 %fits_in_gp121, label %vaarg.end105, label %vaarg.end105.thread vaarg.end105.thread: ; preds = %if.then95 %overflow_arg_area103 = load ptr, ptr %overflow_arg_area_p443, align 8 @@ -569,16 +557,16 @@ vaarg.end105.thread: ; preds = %if.then95 br label %vaarg.in_mem112 vaarg.end105: ; preds = %if.then95 - %32 = add nuw nsw i32 %gp_offset97, 8 + %32 = add nuw nsw i32 %gp_offset120, 8 store i32 %32, ptr %arguments, align 8 - %fits_in_gp109 = icmp ult i32 %gp_offset97, 33 + %fits_in_gp109 = icmp ult i32 %gp_offset120, 33 br i1 %fits_in_gp109, label %vaarg.in_reg110, label %vaarg.in_mem112 vaarg.in_reg110: ; preds = %vaarg.end105 %reg_save_area111 = load ptr, ptr %1, align 8 %33 = zext nneg i32 %32 to i64 %34 = getelementptr i8, ptr %reg_save_area111, i64 %33 - %35 = add nuw nsw i32 %gp_offset97, 16 + %35 = add nuw nsw i32 %gp_offset120, 16 store i32 %35, ptr %arguments, align 8 br label %vaarg.end116 @@ -594,8 +582,6 @@ vaarg.end116: ; preds = %vaarg.in_mem112, %v br label %if.else164 if.else118: ; preds = %sw.bb - %gp_offset120 = load i32, ptr %arguments, align 8 - %fits_in_gp121 = icmp ult i32 %gp_offset120, 41 br i1 %fits_in_gp121, label %vaarg.in_reg122, label %vaarg.in_mem124 vaarg.in_reg122: ; preds = %if.else118 @@ -1577,6 +1563,8 @@ if.then12: ; preds = %if.end10 sw.bb: ; preds = %if.then12, %if.then12 %7 = load i32, ptr %mModifier.i, align 4 + %gp_offset120 = load i32, ptr %arguments, align 8 + %fits_in_gp121 = icmp ult i32 %gp_offset120, 41 switch i32 %7, label %if.else118 [ i32 5, label %if.then15 i32 10, label %if.then20 @@ -1589,15 +1577,13 @@ sw.bb: ; preds = %if.then12, %if.then ] if.then15: ; preds = %sw.bb - %gp_offset = load i32, ptr %arguments, align 8 - %fits_in_gp = icmp ult i32 %gp_offset, 41 - br i1 %fits_in_gp, label %vaarg.in_reg, label %vaarg.in_mem + br i1 %fits_in_gp121, label %vaarg.in_reg, label %vaarg.in_mem vaarg.in_reg: ; preds = %if.then15 %reg_save_area = load ptr, ptr %1, align 8 - %8 = zext nneg i32 %gp_offset to i64 + %8 = zext nneg i32 %gp_offset120 to i64 %9 = getelementptr i8, ptr %reg_save_area, i64 %8 - %10 = add nuw nsw i32 %gp_offset, 8 + %10 = add nuw nsw i32 %gp_offset120, 8 store i32 %10, ptr %arguments, align 8 br label %if.end156.thread181 @@ -1613,15 +1599,13 @@ if.end156.thread181: ; preds = %vaarg.in_reg, %vaar br label %if.then159 if.then20: ; preds = %sw.bb, %sw.bb - %gp_offset22 = load i32, ptr %arguments, align 8 - %fits_in_gp23 = icmp ult i32 %gp_offset22, 41 - br i1 %fits_in_gp23, label %vaarg.in_reg24, label %vaarg.in_mem26 + br i1 %fits_in_gp121, label %vaarg.in_reg24, label %vaarg.in_mem26 vaarg.in_reg24: ; preds = %if.then20 %reg_save_area25 = load ptr, ptr %1, align 8 - %12 = zext nneg i32 %gp_offset22 to i64 + %12 = zext nneg i32 %gp_offset120 to i64 %13 = getelementptr i8, ptr %reg_save_area25, i64 %12 - %14 = add nuw nsw i32 %gp_offset22, 8 + %14 = add nuw nsw i32 %gp_offset120, 8 store i32 %14, ptr %arguments, align 8 br label %vaarg.end30 @@ -1637,15 +1621,13 @@ vaarg.end30: ; preds = %vaarg.in_mem26, %va br label %if.end156 if.then35: ; preds = %sw.bb - %gp_offset37 = load i32, ptr %arguments, align 8 - %fits_in_gp38 = icmp ult i32 %gp_offset37, 41 - br i1 %fits_in_gp38, label %vaarg.in_reg39, label %vaarg.in_mem41 + br i1 %fits_in_gp121, label %vaarg.in_reg39, label %vaarg.in_mem41 vaarg.in_reg39: ; preds = %if.then35 %reg_save_area40 = load ptr, ptr %1, align 8 - %16 = zext nneg i32 %gp_offset37 to i64 + %16 = zext nneg i32 %gp_offset120 to i64 %17 = getelementptr i8, ptr %reg_save_area40, i64 %16 - %18 = add nuw nsw i32 %gp_offset37, 8 + %18 = add nuw nsw i32 %gp_offset120, 8 store i32 %18, ptr %arguments, align 8 br label %vaarg.end45 @@ -1661,15 +1643,13 @@ vaarg.end45: ; preds = %vaarg.in_mem41, %va br label %if.else164 if.then50: ; preds = %sw.bb - %gp_offset52 = load i32, ptr %arguments, align 8 - %fits_in_gp53 = icmp ult i32 %gp_offset52, 41 - br i1 %fits_in_gp53, label %vaarg.in_reg54, label %vaarg.in_mem56 + br i1 %fits_in_gp121, label %vaarg.in_reg54, label %vaarg.in_mem56 vaarg.in_reg54: ; preds = %if.then50 %reg_save_area55 = load ptr, ptr %1, align 8 - %20 = zext nneg i32 %gp_offset52 to i64 + %20 = zext nneg i32 %gp_offset120 to i64 %21 = getelementptr i8, ptr %reg_save_area55, i64 %20 - %22 = add nuw nsw i32 %gp_offset52, 8 + %22 = add nuw nsw i32 %gp_offset120, 8 store i32 %22, ptr %arguments, align 8 br label %vaarg.end60 @@ -1685,15 +1665,13 @@ vaarg.end60: ; preds = %vaarg.in_mem56, %va br label %if.else164 if.then65: ; preds = %sw.bb - %gp_offset67 = load i32, ptr %arguments, align 8 - %fits_in_gp68 = icmp ult i32 %gp_offset67, 41 - br i1 %fits_in_gp68, label %vaarg.in_reg69, label %vaarg.in_mem71 + br i1 %fits_in_gp121, label %vaarg.in_reg69, label %vaarg.in_mem71 vaarg.in_reg69: ; preds = %if.then65 %reg_save_area70 = load ptr, ptr %1, align 8 - %24 = zext nneg i32 %gp_offset67 to i64 + %24 = zext nneg i32 %gp_offset120 to i64 %25 = getelementptr i8, ptr %reg_save_area70, i64 %24 - %26 = add nuw nsw i32 %gp_offset67, 8 + %26 = add nuw nsw i32 %gp_offset120, 8 store i32 %26, ptr %arguments, align 8 br label %vaarg.end75 @@ -1709,15 +1687,13 @@ vaarg.end75: ; preds = %vaarg.in_mem71, %va br label %if.else164 if.then80: ; preds = %sw.bb - %gp_offset82 = load i32, ptr %arguments, align 8 - %fits_in_gp83 = icmp ult i32 %gp_offset82, 41 - br i1 %fits_in_gp83, label %vaarg.in_reg84, label %vaarg.in_mem86 + br i1 %fits_in_gp121, label %vaarg.in_reg84, label %vaarg.in_mem86 vaarg.in_reg84: ; preds = %if.then80 %reg_save_area85 = load ptr, ptr %1, align 8 - %28 = zext nneg i32 %gp_offset82 to i64 + %28 = zext nneg i32 %gp_offset120 to i64 %29 = getelementptr i8, ptr %reg_save_area85, i64 %28 - %30 = add nuw nsw i32 %gp_offset82, 8 + %30 = add nuw nsw i32 %gp_offset120, 8 store i32 %30, ptr %arguments, align 8 br label %vaarg.end90 @@ -1733,9 +1709,7 @@ vaarg.end90: ; preds = %vaarg.in_mem86, %va br label %if.else164 if.then95: ; preds = %sw.bb - %gp_offset97 = load i32, ptr %arguments, align 8 - %fits_in_gp98 = icmp ult i32 %gp_offset97, 41 - br i1 %fits_in_gp98, label %vaarg.end105, label %vaarg.end105.thread + br i1 %fits_in_gp121, label %vaarg.end105, label %vaarg.end105.thread vaarg.end105.thread: ; preds = %if.then95 %overflow_arg_area103 = load ptr, ptr %overflow_arg_area_p446, align 8 @@ -1744,16 +1718,16 @@ vaarg.end105.thread: ; preds = %if.then95 br label %vaarg.in_mem112 vaarg.end105: ; preds = %if.then95 - %32 = add nuw nsw i32 %gp_offset97, 8 + %32 = add nuw nsw i32 %gp_offset120, 8 store i32 %32, ptr %arguments, align 8 - %fits_in_gp109 = icmp ult i32 %gp_offset97, 33 + %fits_in_gp109 = icmp ult i32 %gp_offset120, 33 br i1 %fits_in_gp109, label %vaarg.in_reg110, label %vaarg.in_mem112 vaarg.in_reg110: ; preds = %vaarg.end105 %reg_save_area111 = load ptr, ptr %1, align 8 %33 = zext nneg i32 %32 to i64 %34 = getelementptr i8, ptr %reg_save_area111, i64 %33 - %35 = add nuw nsw i32 %gp_offset97, 16 + %35 = add nuw nsw i32 %gp_offset120, 16 store i32 %35, ptr %arguments, align 8 br label %vaarg.end116 @@ -1769,8 +1743,6 @@ vaarg.end116: ; preds = %vaarg.in_mem112, %v br label %if.else164 if.else118: ; preds = %sw.bb - %gp_offset120 = load i32, ptr %arguments, align 8 - %fits_in_gp121 = icmp ult i32 %gp_offset120, 41 br i1 %fits_in_gp121, label %vaarg.in_reg122, label %vaarg.in_mem124 vaarg.in_reg122: ; preds = %if.else118 @@ -2756,6 +2728,8 @@ if.then11: ; preds = %if.end9 sw.bb: ; preds = %if.then11, %if.then11 %7 = load i32, ptr %mModifier.i, align 4 + %gp_offset119 = load i32, ptr %arguments, align 8 + %fits_in_gp120 = icmp ult i32 %gp_offset119, 41 switch i32 %7, label %if.else117 [ i32 5, label %if.then14 i32 10, label %if.then19 @@ -2768,15 +2742,13 @@ sw.bb: ; preds = %if.then11, %if.then ] if.then14: ; preds = %sw.bb - %gp_offset = load i32, ptr %arguments, align 8 - %fits_in_gp = icmp ult i32 %gp_offset, 41 - br i1 %fits_in_gp, label %vaarg.in_reg, label %vaarg.in_mem + br i1 %fits_in_gp120, label %vaarg.in_reg, label %vaarg.in_mem vaarg.in_reg: ; preds = %if.then14 %reg_save_area = load ptr, ptr %1, align 8 - %8 = zext nneg i32 %gp_offset to i64 + %8 = zext nneg i32 %gp_offset119 to i64 %9 = getelementptr i8, ptr %reg_save_area, i64 %8 - %10 = add nuw nsw i32 %gp_offset, 8 + %10 = add nuw nsw i32 %gp_offset119, 8 store i32 %10, ptr %arguments, align 8 br label %if.end155.thread186 @@ -2792,15 +2764,13 @@ if.end155.thread186: ; preds = %vaarg.in_reg, %vaar br label %if.then158 if.then19: ; preds = %sw.bb, %sw.bb - %gp_offset21 = load i32, ptr %arguments, align 8 - %fits_in_gp22 = icmp ult i32 %gp_offset21, 41 - br i1 %fits_in_gp22, label %vaarg.in_reg23, label %vaarg.in_mem25 + br i1 %fits_in_gp120, label %vaarg.in_reg23, label %vaarg.in_mem25 vaarg.in_reg23: ; preds = %if.then19 %reg_save_area24 = load ptr, ptr %1, align 8 - %12 = zext nneg i32 %gp_offset21 to i64 + %12 = zext nneg i32 %gp_offset119 to i64 %13 = getelementptr i8, ptr %reg_save_area24, i64 %12 - %14 = add nuw nsw i32 %gp_offset21, 8 + %14 = add nuw nsw i32 %gp_offset119, 8 store i32 %14, ptr %arguments, align 8 br label %vaarg.end29 @@ -2816,15 +2786,13 @@ vaarg.end29: ; preds = %vaarg.in_mem25, %va br label %if.end155 if.then34: ; preds = %sw.bb - %gp_offset36 = load i32, ptr %arguments, align 8 - %fits_in_gp37 = icmp ult i32 %gp_offset36, 41 - br i1 %fits_in_gp37, label %vaarg.in_reg38, label %vaarg.in_mem40 + br i1 %fits_in_gp120, label %vaarg.in_reg38, label %vaarg.in_mem40 vaarg.in_reg38: ; preds = %if.then34 %reg_save_area39 = load ptr, ptr %1, align 8 - %16 = zext nneg i32 %gp_offset36 to i64 + %16 = zext nneg i32 %gp_offset119 to i64 %17 = getelementptr i8, ptr %reg_save_area39, i64 %16 - %18 = add nuw nsw i32 %gp_offset36, 8 + %18 = add nuw nsw i32 %gp_offset119, 8 store i32 %18, ptr %arguments, align 8 br label %vaarg.end44 @@ -2840,15 +2808,13 @@ vaarg.end44: ; preds = %vaarg.in_mem40, %va br label %if.else163 if.then49: ; preds = %sw.bb - %gp_offset51 = load i32, ptr %arguments, align 8 - %fits_in_gp52 = icmp ult i32 %gp_offset51, 41 - br i1 %fits_in_gp52, label %vaarg.in_reg53, label %vaarg.in_mem55 + br i1 %fits_in_gp120, label %vaarg.in_reg53, label %vaarg.in_mem55 vaarg.in_reg53: ; preds = %if.then49 %reg_save_area54 = load ptr, ptr %1, align 8 - %20 = zext nneg i32 %gp_offset51 to i64 + %20 = zext nneg i32 %gp_offset119 to i64 %21 = getelementptr i8, ptr %reg_save_area54, i64 %20 - %22 = add nuw nsw i32 %gp_offset51, 8 + %22 = add nuw nsw i32 %gp_offset119, 8 store i32 %22, ptr %arguments, align 8 br label %vaarg.end59 @@ -2864,15 +2830,13 @@ vaarg.end59: ; preds = %vaarg.in_mem55, %va br label %if.else163 if.then64: ; preds = %sw.bb - %gp_offset66 = load i32, ptr %arguments, align 8 - %fits_in_gp67 = icmp ult i32 %gp_offset66, 41 - br i1 %fits_in_gp67, label %vaarg.in_reg68, label %vaarg.in_mem70 + br i1 %fits_in_gp120, label %vaarg.in_reg68, label %vaarg.in_mem70 vaarg.in_reg68: ; preds = %if.then64 %reg_save_area69 = load ptr, ptr %1, align 8 - %24 = zext nneg i32 %gp_offset66 to i64 + %24 = zext nneg i32 %gp_offset119 to i64 %25 = getelementptr i8, ptr %reg_save_area69, i64 %24 - %26 = add nuw nsw i32 %gp_offset66, 8 + %26 = add nuw nsw i32 %gp_offset119, 8 store i32 %26, ptr %arguments, align 8 br label %vaarg.end74 @@ -2888,15 +2852,13 @@ vaarg.end74: ; preds = %vaarg.in_mem70, %va br label %if.else163 if.then79: ; preds = %sw.bb - %gp_offset81 = load i32, ptr %arguments, align 8 - %fits_in_gp82 = icmp ult i32 %gp_offset81, 41 - br i1 %fits_in_gp82, label %vaarg.in_reg83, label %vaarg.in_mem85 + br i1 %fits_in_gp120, label %vaarg.in_reg83, label %vaarg.in_mem85 vaarg.in_reg83: ; preds = %if.then79 %reg_save_area84 = load ptr, ptr %1, align 8 - %28 = zext nneg i32 %gp_offset81 to i64 + %28 = zext nneg i32 %gp_offset119 to i64 %29 = getelementptr i8, ptr %reg_save_area84, i64 %28 - %30 = add nuw nsw i32 %gp_offset81, 8 + %30 = add nuw nsw i32 %gp_offset119, 8 store i32 %30, ptr %arguments, align 8 br label %vaarg.end89 @@ -2912,9 +2874,7 @@ vaarg.end89: ; preds = %vaarg.in_mem85, %va br label %if.else163 if.then94: ; preds = %sw.bb - %gp_offset96 = load i32, ptr %arguments, align 8 - %fits_in_gp97 = icmp ult i32 %gp_offset96, 41 - br i1 %fits_in_gp97, label %vaarg.end104, label %vaarg.end104.thread + br i1 %fits_in_gp120, label %vaarg.end104, label %vaarg.end104.thread vaarg.end104.thread: ; preds = %if.then94 %overflow_arg_area102 = load ptr, ptr %overflow_arg_area_p445, align 8 @@ -2923,16 +2883,16 @@ vaarg.end104.thread: ; preds = %if.then94 br label %vaarg.in_mem111 vaarg.end104: ; preds = %if.then94 - %32 = add nuw nsw i32 %gp_offset96, 8 + %32 = add nuw nsw i32 %gp_offset119, 8 store i32 %32, ptr %arguments, align 8 - %fits_in_gp108 = icmp ult i32 %gp_offset96, 33 + %fits_in_gp108 = icmp ult i32 %gp_offset119, 33 br i1 %fits_in_gp108, label %vaarg.in_reg109, label %vaarg.in_mem111 vaarg.in_reg109: ; preds = %vaarg.end104 %reg_save_area110 = load ptr, ptr %1, align 8 %33 = zext nneg i32 %32 to i64 %34 = getelementptr i8, ptr %reg_save_area110, i64 %33 - %35 = add nuw nsw i32 %gp_offset96, 16 + %35 = add nuw nsw i32 %gp_offset119, 16 store i32 %35, ptr %arguments, align 8 br label %vaarg.end115 @@ -2948,8 +2908,6 @@ vaarg.end115: ; preds = %vaarg.in_mem111, %v br label %if.else163 if.else117: ; preds = %sw.bb - %gp_offset119 = load i32, ptr %arguments, align 8 - %fits_in_gp120 = icmp ult i32 %gp_offset119, 41 br i1 %fits_in_gp120, label %vaarg.in_reg121, label %vaarg.in_mem123 vaarg.in_reg121: ; preds = %if.else117 diff --git a/bench/ffmpeg/optimized/ac3enc.ll b/bench/ffmpeg/optimized/ac3enc.ll index a0e9770f6dd..336cd6a9f44 100644 --- a/bench/ffmpeg/optimized/ac3enc.ll +++ b/bench/ffmpeg/optimized/ac3enc.ll @@ -8913,76 +8913,69 @@ define internal fastcc void @set_channel_info(ptr noundef %0) unnamed_addr #3 { %16 = getelementptr inbounds nuw i8, ptr %3, i64 5012 store i32 %spec.select, ptr %16, align 4, !tbaa !91 %17 = and i64 %5, -9 + %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %3, i64 5024 switch i64 %17, label %._crit_edge [ i64 4, label %18 i64 3, label %20 - i64 7, label %22 - i64 259, label %24 - i64 263, label %26 - i64 51, label %28 - i64 1539, label %28 - i64 1543, label %30 - i64 55, label %30 + i64 7, label %20 + i64 259, label %21 + i64 263, label %22 + i64 51, label %23 + i64 1539, label %23 + i64 1543, label %24 + i64 55, label %24 ] ._crit_edge: ; preds = %1 - %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %3, i64 5024 %.pre = load i32, ptr %.phi.trans.insert, align 16, !tbaa !105 - br label %32 + br label %25 18: ; preds = %1 - %19 = getelementptr inbounds nuw i8, ptr %3, i64 5024 - store i32 1, ptr %19, align 16, !tbaa !105 - br label %32 + store i32 1, ptr %.phi.trans.insert, align 16, !tbaa !105 + br label %25 20: ; preds = %1 - %21 = getelementptr inbounds nuw i8, ptr %3, i64 5024 - store i32 2, ptr %21, align 16, !tbaa !105 - br label %32 - -22: ; preds = %1 - %23 = getelementptr inbounds nuw i8, ptr %3, i64 5024 - store i32 3, ptr %23, align 16, !tbaa !105 - br label %32 + store i32 2, ptr %.phi.trans.insert, align 16, !tbaa !105 + br label %25 24: ; preds = %1 - %25 = getelementptr inbounds nuw i8, ptr %3, i64 5024 - store i32 4, ptr %25, align 16, !tbaa !105 - br label %32 - -26: ; preds = %1 - %27 = getelementptr inbounds nuw i8, ptr %3, i64 5024 - store i32 5, ptr %27, align 16, !tbaa !105 - br label %32 - -28: ; preds = %1, %1 - %29 = getelementptr inbounds nuw i8, ptr %3, i64 5024 - store i32 6, ptr %29, align 16, !tbaa !105 - br label %32 - -30: ; preds = %1, %1 - %31 = getelementptr inbounds nuw i8, ptr %3, i64 5024 - store i32 7, ptr %31, align 16, !tbaa !105 - br label %32 - -32: ; preds = %._crit_edge, %30, %28, %26, %24, %22, %20, %18 - %33 = phi i32 [ %.pre, %._crit_edge ], [ 7, %30 ], [ 6, %28 ], [ 5, %26 ], [ 4, %24 ], [ 3, %22 ], [ 2, %20 ], [ 1, %18 ] - %34 = and i32 %33, 1 - %.not28 = icmp ne i32 %34, 0 - %35 = icmp ne i32 %33, 1 - %narrow = and i1 %35, %.not28 - %36 = zext i1 %narrow to i32 - %37 = getelementptr inbounds nuw i8, ptr %3, i64 5016 - store i32 %36, ptr %37, align 8, !tbaa !106 - %38 = and i32 %33, 4 - %39 = getelementptr inbounds nuw i8, ptr %3, i64 5020 - store i32 %38, ptr %39, align 4, !tbaa !107 - %40 = sext i32 %33 to i64 - %41 = getelementptr inbounds [2 x [6 x i8]], ptr @ac3_enc_channel_map, i64 %40 - %42 = zext nneg i32 %10 to i64 - %43 = getelementptr inbounds nuw [6 x i8], ptr %41, i64 %42 - %44 = getelementptr inbounds nuw i8, ptr %3, i64 5032 - store ptr %43, ptr %44, align 8, !tbaa !260 + store i32 3, ptr %.phi.trans.insert, align 16, !tbaa !105 + br label %25 + +30: ; preds = %1 + store i32 4, ptr %.phi.trans.insert, align 16, !tbaa !105 + br label %25 + +32: ; preds = %1 + store i32 5, ptr %.phi.trans.insert, align 16, !tbaa !105 + br label %25 + +23:; preds = %1, %1 + store i32 6, ptr %.phi.trans.insert, align 16, !tbaa !105 + br label %25 + +24: ; preds = %1, %1 + store i32 7, ptr %.phi.trans.insert, align 16, !tbaa !105 + br label %25 + +25:; preds = %._crit_edge, %24, %23, %22, %30, %20, %19, %18 + %26 = phi i32 [ %.pre, %._crit_edge ], [ 7, %24 ], [ 6, %23 ], [ 5, %22 ], [ 4, %21 ], [ 3, %20 ], [ 2, %19 ], [ 1, %18 ] + %27 = and i32 %26, 1 + %.not28 = icmp ne i32 %27, 0 + %28 = icmp ne i32 %26, 1 + %narrow = and i1 %28, %.not28 + %29 = zext i1 %narrow to i32 + %30 = getelementptr inbounds nuw i8, ptr %3, i64 5016 + store i32 %29, ptr %30, align 8, !tbaa !106 + %31 = and i32 %26, 4 + %32 = getelementptr inbounds nuw i8, ptr %3, i64 5020 + store i32 %31, ptr %32, align 4, !tbaa !107 + %33 = sext i32 %26 to i64 + %34 = getelementptr inbounds [2 x [6 x i8]], ptr @ac3_enc_channel_map, i64 %33 + %35 = zext nneg i32 %10 to i64 + %36 = getelementptr inbounds nuw [6 x i8], ptr %34, i64 %35 + %37 = getelementptr inbounds nuw i8, ptr %3, i64 5032 + store ptr %36, ptr %37, align 8, !tbaa !260 ret void } diff --git a/bench/ffmpeg/optimized/cbs_av1.ll b/bench/ffmpeg/optimized/cbs_av1.ll index 9f041f78347..df318974151 100644 --- a/bench/ffmpeg/optimized/cbs_av1.ll +++ b/bench/ffmpeg/optimized/cbs_av1.ll @@ -18471,36 +18471,34 @@ define internal fastcc range(i32 -1094995529, 1) i32 @cbs_av1_write_read_tx_mode define internal fastcc range(i32 -2147483648, 1) i32 @cbs_av1_write_frame_reference_mode(ptr noundef %0, ptr noundef %1, ptr noundef readonly captures(none) %2) unnamed_addr #0 { %4 = getelementptr inbounds nuw i8, ptr %2, i64 12 %5 = load i8, ptr %4, align 4, !tbaa !214 + %6 = getelementptr inbounds nuw i8, ptr %2, i64 782 + %7 = load i8, ptr %6, align 2, !tbaa !376 switch i8 %5, label %12 [ i8 2, label %6 i8 0, label %6 ] 6: ; preds = %3, %3 - %7 = getelementptr inbounds nuw i8, ptr %2, i64 782 - %8 = load i8, ptr %7, align 2, !tbaa !376 - %.not = icmp eq i8 %8, 0 - br i1 %.not, label %18, label %9 + %.not = icmp eq i8 %7, 0 + br i1 %.not, label %16, label %9 9: ; preds = %6 %10 = load ptr, ptr %0, align 8, !tbaa !19 - %11 = zext i8 %8 to i64 + %11 = zext i8 %7 to i64 tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %10, i32 noundef 16, ptr noundef nonnull @.str.317, ptr noundef nonnull @.str.212, i64 noundef %11, i64 noundef 0) #8 br label %19 12: ; preds = %3 - %13 = getelementptr inbounds nuw i8, ptr %2, i64 782 - %14 = load i8, ptr %13, align 2, !tbaa !376 - %15 = zext i8 %14 to i32 - %16 = tail call i32 @ff_cbs_write_simple_unsigned(ptr noundef %0, ptr noundef %1, i32 noundef 1, ptr noundef nonnull @.str.212, i32 noundef %15) #8 - %17 = icmp slt i32 %16, 0 - br i1 %17, label %19, label %18 + %13 = zext i8 %7 to i32 + %14 = tail call i32 @ff_cbs_write_simple_unsigned(ptr noundef %0, ptr noundef %1, i32 noundef 1, ptr noundef nonnull @.str.212, i32 noundef %13) #6 + %15 = icmp slt i32 %14, 0 + br i1 %15, label %17, label %18 18: ; preds = %12, %6 br label %19 19: ; preds = %12, %18, %9 - %.0 = phi i32 [ -1094995529, %9 ], [ 0, %18 ], [ %16, %12 ] + %.0 = phi i32 [ -1094995529, %9 ], [ 0, %16 ], [ %14, %12 ] ret i32 %.0 } diff --git a/bench/ffmpeg/optimized/hw_base_encode_h264.ll b/bench/ffmpeg/optimized/hw_base_encode_h264.ll index 9ad5cc2e6f0..b960bc0dc74 100644 --- a/bench/ffmpeg/optimized/hw_base_encode_h264.ll +++ b/bench/ffmpeg/optimized/hw_base_encode_h264.ll @@ -55,7 +55,7 @@ define range(i32 -22, 1) i32 @ff_hw_base_encode_init_params_h264(ptr noundef rea 24: ; preds = %21, %18, %14 %25 = load ptr, ptr %12, align 8, !tbaa !28 tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %1, i32 noundef 16, ptr noundef nonnull @.str.3, ptr noundef %25) #5 - br label %336 + br label %335 26: ; preds = %21 %27 = getelementptr inbounds nuw i8, ptr %12, i64 40 @@ -599,6 +599,7 @@ define range(i32 -22, 1) i32 @ff_hw_base_encode_init_params_h264(ptr noundef rea %329 = add i8 %328, -26 %330 = getelementptr inbounds nuw i8, ptr %2, i64 2588 store i8 %329, ptr %330, align 4, !tbaa !157 + %331 = getelementptr inbounds nuw i8, ptr %2, i64 2593 switch i8 %315, label %333 [ i8 66, label %331 i8 88, label %331 @@ -606,19 +607,17 @@ define range(i32 -22, 1) i32 @ff_hw_base_encode_init_params_h264(ptr noundef rea ] 331: ; preds = %319, %319, %319 - %332 = getelementptr inbounds nuw i8, ptr %2, i64 2593 - store i8 0, ptr %332, align 1, !tbaa !158 - br label %336 + store i8 0, ptr %331, align 1, !tbaa !158 + br label %335 333: ; preds = %319 - %334 = getelementptr inbounds nuw i8, ptr %2, i64 2593 - store i8 1, ptr %334, align 1, !tbaa !158 - %335 = getelementptr inbounds nuw i8, ptr %2, i64 2595 - store i8 1, ptr %335, align 1, !tbaa !159 - br label %336 - -336: ; preds = %331, %333, %24 - %.0 = phi i32 [ -22, %24 ], [ 0, %333 ], [ 0, %331 ] + store i8 1, ptr %331, align 1, !tbaa !158 + %334 = getelementptr inbounds nuw i8, ptr %2, i64 2595 + store i8 1, ptr %334, align 1, !tbaa !159 + br label %335 + +335: ; preds = %332, %333, %24 + %.0 = phi i32 [ -22, %24 ], [ 0, %333 ], [ 0, %332 ] ret i32 %.0 } diff --git a/bench/ffmpeg/optimized/matroskadec.ll b/bench/ffmpeg/optimized/matroskadec.ll index 63d5ecfc4c8..f2fa5166d36 100644 --- a/bench/ffmpeg/optimized/matroskadec.ll +++ b/bench/ffmpeg/optimized/matroskadec.ll @@ -6651,39 +6651,35 @@ is_ebml_id_valid.exit: ; preds = %3 .lr.ph: ; preds = %.preheader %21 = getelementptr inbounds nuw i8, ptr %0, i64 512 - switch i32 %1, label %.lr.ph.split.preheader [ - i32 307544935, label %.lr.ph.split.us - i32 290298740, label %.lr.ph.split.us - ] - -.lr.ph.split.preheader: ; preds = %.lr.ph %wide.trip.count45 = zext nneg i32 %19 to i64 - br label %.lr.ph.split + switch i32 %1, label %.lr.ph.split [ + i32 307544935, label %.lr.ph.split.us.preheader + i32 290298740, label %.lr.ph.split.us.preheader + ] -.lr.ph.split.us: ; preds = %.lr.ph, %.lr.ph - %wide.trip.count = zext nneg i32 %19 to i64 - br label %22 +.lr.ph.split.preheader: ; preds = %.lr.ph, %.lr.ph + br label %.lr.ph.split.us -22: ; preds = %30, %.lr.ph.split.us - %indvars.iv = phi i64 [ %indvars.iv.next, %30 ], [ 0, %.lr.ph.split.us ] - %23 = getelementptr inbounds nuw %struct.MatroskaLevel1Element, ptr %21, i64 %indvars.iv - %24 = getelementptr inbounds nuw i8, ptr %23, i64 8 - %25 = load i32, ptr %24, align 8, !tbaa !64 - %26 = icmp eq i32 %25, %1 - br i1 %26, label %27, label %30 +.lr.ph.split.us: ; preds = %.lr.ph.split.preheader, %29 + %indvars.iv = phi i64 [ %indvars.iv.next, %29 ], [ 0, %.lr.ph.split.us.preheader ] + %22 = getelementptr inbounds nuw %struct.MatroskaLevel1Element, ptr %21, i64 %indvars.iv + %23 = getelementptr inbounds nuw i8, ptr %22, i64 8 + %24 = load i32, ptr %23, align 8, !tbaa !64 + %25 = icmp eq i32 %24, %1 + br i1 %25, label %26, label %29 -27: ; preds = %22 - %28 = load i64, ptr %23, align 8, !tbaa !67 - %29 = icmp eq i64 %28, %2 - br i1 %29, label %is_ebml_id_valid.exit.thread, label %30 +22: ; preds = %.lr.ph.split.us + %27 = load i64, ptr %22, align 8, !tbaa !67 + %28 = icmp eq i64 %27, %2 + br i1 %28, label %is_ebml_id_valid.exit.thread, label %29 -30: ; preds = %27, %22 +30: ; preds = %26, %.lr.ph.split.us %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond.not, label %._crit_edge, label %22, !llvm.loop !416 + %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count45 + br i1 %exitcond.not, label %._crit_edge, label %.lr.ph.split.us, !llvm.loop !416 -.lr.ph.split: ; preds = %.lr.ph.split.preheader, %35 - %indvars.iv42 = phi i64 [ 0, %.lr.ph.split.preheader ], [ %indvars.iv.next43, %35 ] +.lr.ph.split: ; preds = %.lr.ph, %35 + %indvars.iv42 = phi i64 [ %indvars.iv.next43, %34 ], [ 0, %.lr.ph ] %31 = getelementptr inbounds nuw %struct.MatroskaLevel1Element, ptr %21, i64 %indvars.iv42 %32 = getelementptr inbounds nuw i8, ptr %31, i64 8 %33 = load i32, ptr %32, align 8, !tbaa !64 @@ -6718,8 +6714,8 @@ is_ebml_id_valid.exit: ; preds = %3 store i32 0, ptr %.sroa.3.0..sroa_idx, align 4, !tbaa !211 br label %is_ebml_id_valid.exit.thread -is_ebml_id_valid.exit.thread: ; preds = %27, %.lr.ph.split, %3, %is_ebml_id_valid.exit, %40, %37 - %.0 = phi ptr [ null, %37 ], [ %44, %40 ], [ null, %is_ebml_id_valid.exit ], [ null, %3 ], [ %31, %.lr.ph.split ], [ %23, %27 ] +is_ebml_id_valid.exit.thread: ; preds = %26, %.lr.ph.split, %3, %is_ebml_id_valid.exit, %40, %37 + %.0 = phi ptr [ null, %36 ], [ %44, %39 ], [ null, %is_ebml_id_valid.exit ], [ null, %3 ], [ %31, %.lr.ph.split ], [ %22, %26 ] ret ptr %.0 } diff --git a/bench/ffmpeg/optimized/vaapi_vpp.ll b/bench/ffmpeg/optimized/vaapi_vpp.ll index feff8a957a2..8570e87c382 100644 --- a/bench/ffmpeg/optimized/vaapi_vpp.ll +++ b/bench/ffmpeg/optimized/vaapi_vpp.ll @@ -1239,11 +1239,11 @@ define internal fastcc void @vaapi_vpp_fill_colour_properties(ptr noundef %0, pt .preheader.lr.ph.i: ; preds = %._crit_edge.i %.not66.i = icmp eq i32 %.fr112.i, 2 - br i1 %.not59.i, label %.preheader.lr.ph.split.us.i, label %.preheader.preheader.i + %wide.trip.count151.i = zext nneg i32 %3 to i64 + br i1 %.not59.i, label %.preheader.lr.ph.split.us.i, label %.preheader.i.preheader .preheader.preheader.i: ; preds = %.preheader.lr.ph.i - %wide.trip.count124.i = zext nneg i32 %3 to i64 - br i1 %.not66.i, label %.preheader.preheader.i.split.us, label %.preheader.preheader.i.split + br i1 %.not66.i, label %.preheader.i.preheader.split.us, label %.preheader.i.preheader.split .preheader.preheader.i.split.us: ; preds = %.preheader.preheader.i switch i32 %.fr.i, label %.preheader.i.us [ @@ -1296,13 +1296,13 @@ define internal fastcc void @vaapi_vpp_fill_colour_properties(ptr noundef %0, pt .split.i.split.us.us.split.us.us: ; preds = %38 %indvars.iv.next122.i.us.us = add nuw nsw i64 %indvars.iv121.i.us.us, 1 - %exitcond125.not.i.us.us = icmp eq i64 %indvars.iv.next122.i.us.us, %wide.trip.count124.i + %exitcond125.not.i.us.us = icmp eq i64 %indvars.iv.next122.i.us.us, %wide.trip.count151.i br i1 %exitcond125.not.i.us.us, label %vaapi_vpp_fill_colour_standard.exit, label %.preheader.i.us.us, !llvm.loop !143 .preheader.i.us: ; preds = %.preheader.preheader.i.split.us, %.split.i.split.us.us.split - %indvars.iv121.i.us = phi i64 [ %indvars.iv.next122.i.us, %.split.i.split.us.us.split ], [ 0, %.preheader.preheader.i.split.us ] - %.080.i.us = phi i32 [ %.2.i.us.us, %.split.i.split.us.us.split ], [ 0, %.preheader.preheader.i.split.us ] - %.04478.i.us = phi i32 [ %.246.i.us.us, %.split.i.split.us.us.split ], [ -1, %.preheader.preheader.i.split.us ] + %indvars.iv121.i.us = phi i64 [ %indvars.iv.next122.i.us, %.split.i.split.us.us.split ], [ 0, %.preheader.i.preheader.split.us ] + %.080.i.us = phi i32 [ %.2.i.us.us, %.split.i.split.us.us.split ], [ 0, %.preheader.i.preheader.split.us ] + %.04478.i.us = phi i32 [ %.246.i.us.us, %.split.i.split.us.us.split ], [ -1, %.preheader.i.preheader.split.us ] %39 = getelementptr inbounds nuw i32, ptr %2, i64 %indvars.iv121.i.us %40 = load i32, ptr %39, align 4, !tbaa !26 br label %41 @@ -1346,7 +1346,7 @@ define internal fastcc void @vaapi_vpp_fill_colour_properties(ptr noundef %0, pt .split.i.split.us.us.split: ; preds = %56 %indvars.iv.next122.i.us = add nuw nsw i64 %indvars.iv121.i.us, 1 - %exitcond125.not.i.us = icmp eq i64 %indvars.iv.next122.i.us, %wide.trip.count124.i + %exitcond125.not.i.us = icmp eq i64 %indvars.iv.next122.i.us, %wide.trip.count151.i br i1 %exitcond125.not.i.us, label %vaapi_vpp_fill_colour_standard.exit, label %.preheader.i.us, !llvm.loop !143 .preheader.preheader.i.split: ; preds = %.preheader.preheader.i @@ -1405,14 +1405,13 @@ define internal fastcc void @vaapi_vpp_fill_colour_properties(ptr noundef %0, pt .split.i.split.split.us.us: ; preds = %75 %indvars.iv.next122.i.us44 = add nuw nsw i64 %indvars.iv121.i.us41, 1 - %exitcond125.not.i.us45 = icmp eq i64 %indvars.iv.next122.i.us44, %wide.trip.count124.i + %exitcond125.not.i.us45 = icmp eq i64 %indvars.iv.next122.i.us44, %wide.trip.count151.i br i1 %exitcond125.not.i.us45, label %vaapi_vpp_fill_colour_standard.exit, label %.preheader.i.us40, !llvm.loop !143 .preheader.lr.ph.split.us.i: ; preds = %.preheader.lr.ph.i br i1 %.not66.i, label %.preheader.lr.ph.split.us.split.us.i, label %.preheader.us.preheader.i .preheader.us.preheader.i: ; preds = %.preheader.lr.ph.split.us.i - %wide.trip.count133.i = zext nneg i32 %3 to i64 switch i32 %.fr.i, label %.preheader.us.i [ i32 2, label %.preheader.us.i.us.preheader i32 0, label %.preheader.us.i.us.preheader @@ -1463,27 +1462,22 @@ define internal fastcc void @vaapi_vpp_fill_colour_properties(ptr noundef %0, pt .split.us.split.us92.i.split.us.us: ; preds = %90 %indvars.iv.next131.i.us = add nuw nsw i64 %indvars.iv130.i.us, 1 - %exitcond134.not.i.us = icmp eq i64 %indvars.iv.next131.i.us, %wide.trip.count133.i + %exitcond134.not.i.us = icmp eq i64 %indvars.iv.next131.i.us, %wide.trip.count151.i br i1 %exitcond134.not.i.us, label %vaapi_vpp_fill_colour_standard.exit, label %.preheader.us.i.us, !llvm.loop !143 .preheader.lr.ph.split.us.split.us.i: ; preds = %.preheader.lr.ph.split.us.i - switch i32 %.fr.i, label %.preheader.us.us.preheader.i [ - i32 2, label %.preheader.lr.ph.split.us.split.us.split.us.i - i32 0, label %.preheader.lr.ph.split.us.split.us.split.us.i + switch i32 %.fr.i, label %.preheader.us.us.i [ + i32 2, label %.preheader.us.us.us.i.preheader + i32 0, label %.preheader.us.us.us.i.preheader ] -.preheader.us.us.preheader.i: ; preds = %.preheader.lr.ph.split.us.split.us.i - %wide.trip.count151.i = zext nneg i32 %3 to i64 - br label %.preheader.us.us.i - -.preheader.lr.ph.split.us.split.us.split.us.i: ; preds = %.preheader.lr.ph.split.us.split.us.i, %.preheader.lr.ph.split.us.split.us.i - %wide.trip.count142.i = zext nneg i32 %3 to i64 +.preheader.us.us.preheader.i: ; preds = %.preheader.lr.ph.split.us.split.us.i, %.preheader.lr.ph.split.us.split.us.i br label %.preheader.us.us.us.i -.preheader.us.us.us.i: ; preds = %.split.us.split.us.split.us.us.us.us.i, %.preheader.lr.ph.split.us.split.us.split.us.i - %indvars.iv139.i = phi i64 [ %indvars.iv.next140.i, %.split.us.split.us.split.us.us.us.us.i ], [ 0, %.preheader.lr.ph.split.us.split.us.split.us.i ] - %.080.us.us.us.i = phi i32 [ %.2.us.us.us.us.us.us.i, %.split.us.split.us.split.us.us.us.us.i ], [ 0, %.preheader.lr.ph.split.us.split.us.split.us.i ] - %.04478.us.us.us.i = phi i32 [ %.246.us.us.us.us.us.us.i, %.split.us.split.us.split.us.us.us.us.i ], [ -1, %.preheader.lr.ph.split.us.split.us.split.us.i ] +.preheader.us.us.us.i: ; preds = %.preheader.us.us.preheader.i, %.split.us.split.us.split.us.us.us.us.i + %indvars.iv139.i = phi i64 [ %indvars.iv.next140.i, %.split.us.split.us.split.us.us.us.us.i ], [ 0, %.preheader.us.us.us.i.preheader ] + %.080.us.us.us.i = phi i32 [ %.2.us.us.us.us.us.us.i, %.split.us.split.us.split.us.us.us.us.i ], [ 0, %.preheader.us.us.us.i.preheader ] + %.04478.us.us.us.i = phi i32 [ %.246.us.us.us.us.us.us.i, %.split.us.split.us.split.us.us.us.us.i ], [ -1, %.preheader.us.us.us.i.preheader ] %91 = getelementptr inbounds nuw i32, ptr %2, i64 %indvars.iv139.i %92 = load i32, ptr %91, align 4, !tbaa !26 br label %93 @@ -1505,13 +1499,13 @@ define internal fastcc void @vaapi_vpp_fill_colour_properties(ptr noundef %0, pt .split.us.split.us.split.us.us.us.us.i: ; preds = %93 %indvars.iv.next140.i = add nuw nsw i64 %indvars.iv139.i, 1 - %exitcond143.not.i = icmp eq i64 %indvars.iv.next140.i, %wide.trip.count142.i + %exitcond143.not.i = icmp eq i64 %indvars.iv.next140.i, %wide.trip.count151.i br i1 %exitcond143.not.i, label %vaapi_vpp_fill_colour_standard.exit, label %.preheader.us.us.us.i, !llvm.loop !143 -.preheader.us.us.i: ; preds = %.split.us.split.us.split.us105.us.i, %.preheader.us.us.preheader.i - %indvars.iv148.i = phi i64 [ 0, %.preheader.us.us.preheader.i ], [ %indvars.iv.next149.i, %.split.us.split.us.split.us105.us.i ] - %.080.us.us.i = phi i32 [ 0, %.preheader.us.us.preheader.i ], [ %.2.us.us.us104.us.i, %.split.us.split.us.split.us105.us.i ] - %.04478.us.us.i = phi i32 [ -1, %.preheader.us.us.preheader.i ], [ %.246.us.us.us103.us.i, %.split.us.split.us.split.us105.us.i ] +.preheader.us.us.i: ; preds = %.preheader.lr.ph.split.us.split.us.i, %.split.us.split.us.split.us105.us.i + %indvars.iv148.i = phi i64 [ %indvars.iv.next149.i, %.split.us.split.us.split.us105.us.i ], [ 0, %.preheader.lr.ph.split.us.split.us.i ] + %.080.us.us.i = phi i32 [ %.2.us.us.us104.us.i, %.split.us.split.us.split.us105.us.i ], [ 0, %.preheader.lr.ph.split.us.split.us.i ] + %.04478.us.us.i = phi i32 [ %.246.us.us.us103.us.i, %.split.us.split.us.split.us105.us.i ], [ -1, %.preheader.lr.ph.split.us.split.us.i ] %98 = getelementptr inbounds nuw i32, ptr %2, i64 %indvars.iv148.i %99 = load i32, ptr %98, align 4, !tbaa !26 br label %100 @@ -1554,9 +1548,9 @@ define internal fastcc void @vaapi_vpp_fill_colour_properties(ptr noundef %0, pt br i1 %exitcond152.not.i, label %vaapi_vpp_fill_colour_standard.exit, label %.preheader.us.us.i, !llvm.loop !143 .preheader.us.i: ; preds = %.preheader.us.preheader.i, %.split.us.split.us92.i.split - %indvars.iv130.i = phi i64 [ %indvars.iv.next131.i, %.split.us.split.us92.i.split ], [ 0, %.preheader.us.preheader.i ] - %.080.us.i = phi i32 [ %.2.us.us91.i, %.split.us.split.us92.i.split ], [ 0, %.preheader.us.preheader.i ] - %.04478.us.i = phi i32 [ %.246.us.us90.i, %.split.us.split.us92.i.split ], [ -1, %.preheader.us.preheader.i ] + %indvars.iv130.i = phi i64 [ %indvars.iv.next131.i, %.split.us.split.us92.i.split ], [ 0, %.preheader.us.i.preheader ] + %.080.us.i = phi i32 [ %.2.us.us91.i, %.split.us.split.us92.i.split ], [ 0, %.preheader.us.i.preheader ] + %.04478.us.i = phi i32 [ %.246.us.us90.i, %.split.us.split.us92.i.split ], [ -1, %.preheader.us.i.preheader ] %112 = getelementptr inbounds nuw i32, ptr %2, i64 %indvars.iv130.i %113 = load i32, ptr %112, align 4, !tbaa !26 br label %114 @@ -1600,13 +1594,13 @@ define internal fastcc void @vaapi_vpp_fill_colour_properties(ptr noundef %0, pt .split.us.split.us92.i.split: ; preds = %130 %indvars.iv.next131.i = add nuw nsw i64 %indvars.iv130.i, 1 - %exitcond134.not.i = icmp eq i64 %indvars.iv.next131.i, %wide.trip.count133.i + %exitcond134.not.i = icmp eq i64 %indvars.iv.next131.i, %wide.trip.count151.i br i1 %exitcond134.not.i, label %vaapi_vpp_fill_colour_standard.exit, label %.preheader.us.i, !llvm.loop !143 .preheader.i: ; preds = %.preheader.preheader.i.split, %.split.i.split.split - %indvars.iv121.i = phi i64 [ %indvars.iv.next122.i, %.split.i.split.split ], [ 0, %.preheader.preheader.i.split ] - %.080.i = phi i32 [ %.2.i, %.split.i.split.split ], [ 0, %.preheader.preheader.i.split ] - %.04478.i = phi i32 [ %.246.i, %.split.i.split.split ], [ -1, %.preheader.preheader.i.split ] + %indvars.iv121.i = phi i64 [ %indvars.iv.next122.i, %.split.i.split.split ], [ 0, %.preheader.i.preheader.split ] + %.080.i = phi i32 [ %.2.i, %.split.i.split.split ], [ 0, %.preheader.i.preheader.split ] + %.04478.i = phi i32 [ %.246.i, %.split.i.split.split ], [ -1, %.preheader.i.preheader.split ] %131 = getelementptr inbounds nuw i32, ptr %2, i64 %indvars.iv121.i %132 = load i32, ptr %131, align 4, !tbaa !26 br label %133 @@ -1655,7 +1649,7 @@ define internal fastcc void @vaapi_vpp_fill_colour_properties(ptr noundef %0, pt .split.i.split.split: ; preds = %153 %indvars.iv.next122.i = add nuw nsw i64 %indvars.iv121.i, 1 - %exitcond125.not.i = icmp eq i64 %indvars.iv.next122.i, %wide.trip.count124.i + %exitcond125.not.i = icmp eq i64 %indvars.iv.next122.i, %wide.trip.count151.i br i1 %exitcond125.not.i, label %vaapi_vpp_fill_colour_standard.exit, label %.preheader.i, !llvm.loop !143 vaapi_vpp_fill_colour_standard.exit: ; preds = %.lr.ph.i, %.split.i.split.split.us.us, %.split.i.split.split, %.split.i.split.us.us.split.us.us, %.split.i.split.us.us.split, %.split.us.split.us92.i.split.us.us, %.split.us.split.us92.i.split, %.split.us.split.us.split.us.us.us.us.i, %.split.us.split.us.split.us105.us.i, %._crit_edge.i diff --git a/bench/fish-rs/optimized/1f6psxxy03bde21s751lsgfn2.ll b/bench/fish-rs/optimized/1f6psxxy03bde21s751lsgfn2.ll index 5f66906dde7..27fa2692e66 100644 --- a/bench/fish-rs/optimized/1f6psxxy03bde21s751lsgfn2.ll +++ b/bench/fish-rs/optimized/1f6psxxy03bde21s751lsgfn2.ll @@ -27160,7 +27160,7 @@ _ZN4fish6reader17reader_data_stack17h899af5e0eec84906E.exit.i: ; preds = %15 %lpad.thr_comm = landingpad { ptr, i32 } cleanup invoke fastcc void @"_ZN4core3ptr50drop_in_place$LT$fish..input_common..CharEvent$GT$17h93255d0e75c3776eE"(ptr noalias noundef align 8 dereferenceable(40) %1) #35 - to label %68 unwind label %53 + to label %67 unwind label %53 31: ; preds = %_ZN4fish6reader17reader_data_stack17h899af5e0eec84906E.exit.i %32 = load ptr, ptr @_ZN4fish6reader17reader_data_stack17READER_DATA_STACK17h5835b3bdecb795eaE.1, align 8, !nonnull !12, !noundef !12 @@ -27178,7 +27178,8 @@ _ZN4fish6reader17reader_data_stack17h899af5e0eec84906E.exit.i: ; preds = %15 39: ; preds = %31 %40 = getelementptr inbounds nuw i8, ptr %1, i64 32 %41 = load i8, ptr %40, align 8, !range !1237, !noundef !12 - switch i8 %41, label %44 [ + %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %35, i64 2048 + switch i8 %41, label %43 [ i8 58, label %.thread i8 59, label %.thread i8 60, label %.thread @@ -27187,15 +27188,13 @@ _ZN4fish6reader17reader_data_stack17h899af5e0eec84906E.exit.i: ; preds = %15 42: ; preds = %31 invoke fastcc void @_ZN4fish6reader27reader_execute_readline_cmd19panic_cold_explicit17hff4cd6b423c61f96E() #37 - to label %57 unwind label %.thread23 + to label %56 unwind label %.thread23 .thread: ; preds = %39, %39, %39, %39 - %43 = getelementptr inbounds nuw i8, ptr %35, i64 2048 - store i8 1, ptr %43, align 8 - br label %55 + store i8 1, ptr %.phi.trans.insert, align 8 + br label %54 44: ; preds = %39 - %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %35, i64 2048 %.pre = load i8, ptr %.phi.trans.insert, align 8, !range !27 %45 = trunc nuw i8 %.pre to i1 br i1 %45, label %55, label %46 diff --git a/bench/fish-rs/optimized/8zxt2gjt68ikxu18thf3foa45.ll b/bench/fish-rs/optimized/8zxt2gjt68ikxu18thf3foa45.ll index 6d4cea90d62..9799688cac3 100644 --- a/bench/fish-rs/optimized/8zxt2gjt68ikxu18thf3foa45.ll +++ b/bench/fish-rs/optimized/8zxt2gjt68ikxu18thf3foa45.ll @@ -29801,6 +29801,7 @@ _ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit.i: ; preds = %.noexc83 .noexc114: ; preds = %.noexc113 %872 = load i64, ptr %27, align 8, !range !807, !noalias !2758, !noundef !3 + call void @llvm.lifetime.end.p0(ptr nonnull %27), !noalias !2758 switch i64 %872, label %874 [ i64 12, label %877 i64 17, label %877 @@ -29811,7 +29812,6 @@ _ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit.i: ; preds = %.noexc83 br label %_ZN4fish10parse_util33detect_errors_in_backgrounded_job17h8ff857ec9a289412E.exit 874: ; preds = %.noexc114 - call void @llvm.lifetime.end.p0(ptr nonnull %27), !noalias !2758 call void @llvm.lifetime.start.p0(ptr nonnull %21), !noalias !2758 invoke void %871(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %21, ptr noundef align 1 %868) to label %.noexc115 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit @@ -29822,7 +29822,6 @@ _ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit.i: ; preds = %.noexc83 br i1 %876, label %918, label %932 877: ; preds = %.noexc114, %.noexc114 - call void @llvm.lifetime.end.p0(ptr nonnull %27), !noalias !2758 br i1 %.not108.i, label %_ZN4fish10parse_util33detect_errors_in_backgrounded_job17h8ff857ec9a289412E.exit, label %878 878: ; preds = %877 diff --git a/bench/flatbuffers/optimized/idl_parser.ll b/bench/flatbuffers/optimized/idl_parser.ll index 827dab24918..a4fac0f53a2 100644 --- a/bench/flatbuffers/optimized/idl_parser.ll +++ b/bench/flatbuffers/optimized/idl_parser.ll @@ -58107,20 +58107,16 @@ _ZNK11flatbuffers11SymbolTableINS_5ValueEE6LookupERKNSt7__cxx1112basic_stringIcS br i1 %.not236, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit410, label %315 315: ; preds = %_ZNK11flatbuffers11SymbolTableINS_5ValueEE6LookupERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit + call void @llvm.lifetime.end.p0(ptr nonnull %23) switch i32 %288, label %316 [ - i32 8, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit398.thread - i32 6, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit398.thread - i32 4, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit398.thread - i32 1, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit398.thread - i32 10, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit398.thread + i32 8, label %._crit_edge.i.i411 + i32 6, label %._crit_edge.i.i411 + i32 4, label %._crit_edge.i.i411 + i32 1, label %._crit_edge.i.i411 + i32 10, label %._crit_edge.i.i411 ] -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit398.thread: ; preds = %315, %315, %315, %315, %315 - call void @llvm.lifetime.end.p0(ptr nonnull %23) - br label %._crit_edge.i.i411 - 316: ; preds = %315 - call void @llvm.lifetime.end.p0(ptr nonnull %23) call void @llvm.lifetime.start.p0(ptr nonnull %24) call void @llvm.lifetime.start.p0(ptr nonnull %25) invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull @.str.175, ptr noundef nonnull align 1 dereferenceable(1) %25) @@ -58177,8 +58173,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit410: ; preds = %._ call void @llvm.lifetime.end.p0(ptr nonnull %23) br label %._crit_edge.i.i411 -._crit_edge.i.i411: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit398.thread, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit410, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit401 - %333 = phi ptr [ %293, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit410 ], [ %.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit401 ], [ %293, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit398.thread ] +._crit_edge.i.i411: ; preds = %315, %315, %315, %315, %315, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit410, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit401 + %333 = phi ptr [ %293, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit410 ], [ %.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit401 ], [ %293, %315 ], [ %293, %315 ], [ %293, %315 ], [ %293, %315 ], [ %293, %315 ] call void @llvm.lifetime.start.p0(ptr nonnull %26) %334 = getelementptr inbounds nuw i8, ptr %26, i64 16 store ptr %334, ptr %26, align 8, !tbaa !12 diff --git a/bench/folly/optimized/LogName.ll b/bench/folly/optimized/LogName.ll index b4d257bf26e..33be37edb12 100644 --- a/bench/folly/optimized/LogName.ll +++ b/bench/folly/optimized/LogName.ll @@ -304,9 +304,9 @@ define noundef range(i32 -255, 256) i32 @_ZN5folly7LogName3cmpENS_5RangeIPKcEES4 br label %21 21: ; preds = %56, %"_ZZN5folly7LogName3cmpENS_5RangeIPKcEES4_ENK3$_0clERS4_.exit5" - %.sroa.014.0 = phi ptr [ %2, %"_ZZN5folly7LogName3cmpENS_5RangeIPKcEES4_ENK3$_0clERS4_.exit5" ], [ %58, %56 ] - %.sroa.024.0 = phi ptr [ %0, %"_ZZN5folly7LogName3cmpENS_5RangeIPKcEES4_ENK3$_0clERS4_.exit5" ], [ %57, %56 ] - %.0 = phi i1 [ true, %"_ZZN5folly7LogName3cmpENS_5RangeIPKcEES4_ENK3$_0clERS4_.exit5" ], [ %spec.select.i, %56 ] + %.sroa.014.0 = phi ptr [ %2, %"_ZZN5folly7LogName3cmpENS_5RangeIPKcEES4_ENK3$_0clERS4_.exit5" ], [ %58, %55 ] + %.sroa.024.0 = phi ptr [ %0, %"_ZZN5folly7LogName3cmpENS_5RangeIPKcEES4_ENK3$_0clERS4_.exit5" ], [ %57, %55 ] + %.0 = phi i1 [ true, %"_ZZN5folly7LogName3cmpENS_5RangeIPKcEES4_ENK3$_0clERS4_.exit5" ], [ %spec.select.i, %55 ] %.sroa.014.050 = ptrtoint ptr %.sroa.014.0 to i64 %.sroa.024.046 = ptrtoint ptr %.sroa.024.0 to i64 br i1 %.0, label %22, label %"_ZZN5folly7LogName3cmpENS_5RangeIPKcEES4_ENK3$_1clERS4_.exit10" @@ -381,6 +381,7 @@ define noundef range(i32 -255, 256) i32 @_ZN5folly7LogName3cmpENS_5RangeIPKcEES4 %or.cond.i = icmp eq i8 %43, 46 %44 = icmp eq i8 %42, 92 %spec.select.i = or i1 %44, %or.cond.i + %45 = load i8, ptr %.sroa.014.1, align 1, !tbaa !16 switch i8 %42, label %50 [ i8 92, label %45 i8 47, label %45 @@ -388,27 +389,25 @@ define noundef range(i32 -255, 256) i32 @_ZN5folly7LogName3cmpENS_5RangeIPKcEES4 ] 45: ; preds = %41, %41, %41 - %46 = load i8, ptr %.sroa.014.1, align 1, !tbaa !16 - switch i8 %46, label %47 [ - i8 92, label %56 + switch i8 %45, label %47 [ + i8 92, label %55 i8 47, label %56 i8 46, label %56 ] 47: ; preds = %45 - %48 = sext i8 %46 to i32 + %48 = sext i8 %45 to i32 %49 = sub nsw i32 46, %48 br label %.loopexit 50: ; preds = %41 - %51 = load i8, ptr %.sroa.014.1, align 1, !tbaa !16 - %.not = icmp eq i8 %42, %51 - br i1 %.not, label %56, label %52 - -52: ; preds = %50 - %53 = sext i8 %42 to i32 - %54 = sext i8 %51 to i32 - %55 = sub nsw i32 %53, %54 + %.not = icmp eq i8 %42, %45 + br i1 %.not, label %55, label %51 + +51: ; preds = %50 + %52 = sext i8 %42 to i32 + %53 = sext i8 %45 to i32 + %54 = sub nsw i32 %52, %53 br label %.loopexit 56: ; preds = %45, %45, %45, %50 @@ -416,8 +415,8 @@ define noundef range(i32 -255, 256) i32 @_ZN5folly7LogName3cmpENS_5RangeIPKcEES4 %58 = getelementptr inbounds nuw i8, ptr %.sroa.014.1, i64 1 br label %21, !llvm.loop !25 -.loopexit: ; preds = %39, %52, %47, %36 - %.02 = phi i32 [ %38, %36 ], [ %49, %47 ], [ %55, %52 ], [ 1, %39 ] +.loopexit: ; preds = %39, %51, %47, %36 + %.02 = phi i32 [ %38, %36 ], [ %49, %47 ], [ %54, %51 ], [ 1, %39 ] ret i32 %.02 } diff --git a/bench/git/optimized/path.ll b/bench/git/optimized/path.ll index 2ae4ad42f57..832827d33f4 100644 --- a/bench/git/optimized/path.ll +++ b/bench/git/optimized/path.ll @@ -385,14 +385,14 @@ dir_prefix.exit.thread42.i: ; preds = %62, %62 %69 = getelementptr inbounds nuw i8, ptr %68, i64 64 %70 = load ptr, ptr %69, align 8, !tbaa !61 %71 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %70) #31 - switch i8 %64, label %72 [ + %72 = shl i64 %71, 32 + switch i8 %64, label %73 [ i8 0, label %.critedge.i.i i8 47, label %.critedge.i.i ] 72: ; preds = %dir_prefix.exit.thread42.i - %73 = shl i64 %71, 32 - %sext.i28.i = add i64 %73, -4294967296 + %sext.i28.i = add i64 %72, -4294967296 %74 = ashr exact i64 %sext.i28.i, 32 %75 = getelementptr inbounds i8, ptr %70, i64 %74 %76 = load i8, ptr %75, align 1, !tbaa !14 @@ -400,7 +400,7 @@ dir_prefix.exit.thread42.i: ; preds = %62, %62 %77 = sext i1 %.not20.i.i to i32 %spec.select.i.i = add nsw i32 %65, %77 %78 = sext i32 %spec.select.i.i to i64 - %79 = ashr exact i64 %73, 32 + %79 = ashr exact i64 %72, 32 tail call void @strbuf_splice(ptr noundef nonnull %2, i64 noundef 0, i64 noundef %78, ptr noundef nonnull %70, i64 noundef %79) #30 br i1 %.not20.i.i, label %80, label %adjust_git_path.exit @@ -412,8 +412,7 @@ dir_prefix.exit.thread42.i: ; preds = %62, %62 .critedge.i.i: ; preds = %dir_prefix.exit.thread42.i, %dir_prefix.exit.thread42.i %83 = sext i32 %65 to i64 - %sext18.c.i.i = shl i64 %71, 32 - %84 = ashr exact i64 %sext18.c.i.i, 32 + %84 = ashr exact i64 %72, 32 tail call void @strbuf_splice(ptr noundef nonnull %2, i64 noundef 0, i64 noundef %83, ptr noundef nonnull %70, i64 noundef %84) #30 br label %adjust_git_path.exit @@ -438,22 +437,22 @@ dir_prefix.exit.thread.i: ; preds = %62, %60 dir_prefix.exit32.thread45.i: ; preds = %88, %88 %91 = add nsw i32 %36, 5 %92 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %85) #31 - switch i8 %90, label %93 [ + %93 = shl i64 %92, 32 + switch i8 %90, label %94 [ i8 0, label %.critedge.i33.i i8 47, label %.critedge.i33.i ] 93: ; preds = %dir_prefix.exit32.thread45.i - %94 = shl i64 %92, 32 - %sext.i35.i = add i64 %94, -4294967296 - %95 = ashr exact i64 %sext.i35.i, 32 + %sext.i34.i = add i64 %93, -4294967296 + %95 = ashr exact i64 %sext.i34.i, 32 %96 = getelementptr inbounds i8, ptr %85, i64 %95 %97 = load i8, ptr %96, align 1, !tbaa !14 %.not20.i36.i = icmp ne i8 %97, 47 %98 = sext i1 %.not20.i36.i to i32 %spec.select.i37.i = add nsw i32 %91, %98 %99 = sext i32 %spec.select.i37.i to i64 - %100 = ashr exact i64 %94, 32 + %100 = ashr exact i64 %93, 32 tail call void @strbuf_splice(ptr noundef nonnull %2, i64 noundef 0, i64 noundef %99, ptr noundef nonnull %85, i64 noundef %100) #30 br i1 %.not20.i36.i, label %101, label %adjust_git_path.exit @@ -465,8 +464,7 @@ dir_prefix.exit32.thread45.i: ; preds = %88, %88 .critedge.i33.i: ; preds = %dir_prefix.exit32.thread45.i, %dir_prefix.exit32.thread45.i %104 = sext i32 %91 to i64 - %sext18.c.i34.i = shl i64 %92, 32 - %105 = ashr exact i64 %sext18.c.i34.i, 32 + %105 = ashr exact i64 %93, 32 tail call void @strbuf_splice(ptr noundef nonnull %2, i64 noundef 0, i64 noundef %104, ptr noundef nonnull %85, i64 noundef %105) #30 br label %adjust_git_path.exit @@ -3616,14 +3614,14 @@ init_common_trie.exit: ; preds = %strbuf_strip_suffix %114 = load ptr, ptr %4, align 8, !tbaa !13 %115 = getelementptr inbounds i8, ptr %114, i64 %6 %116 = load i8, ptr %115, align 1, !tbaa !14 - switch i8 %116, label %117 [ + %117 = shl i64 %113, 32 + switch i8 %116, label %118 [ i8 0, label %.critedge.i i8 47, label %.critedge.i ] 117: ; preds = %112 - %118 = shl i64 %113, 32 - %sext.i = add i64 %118, -4294967296 + %sext.i = add i64 %117, -4294967296 %119 = ashr exact i64 %sext.i, 32 %120 = getelementptr inbounds i8, ptr %2, i64 %119 %121 = load i8, ptr %120, align 1, !tbaa !14 @@ -3631,7 +3629,7 @@ init_common_trie.exit: ; preds = %strbuf_strip_suffix %122 = sext i1 %.not20.i to i32 %spec.select.i = add nsw i32 %1, %122 %123 = sext i32 %spec.select.i to i64 - %124 = ashr exact i64 %118, 32 + %124 = ashr exact i64 %117, 32 tail call void @strbuf_splice(ptr noundef nonnull %0, i64 noundef 0, i64 noundef %123, ptr noundef nonnull %2, i64 noundef %124) #30 br i1 %.not20.i, label %125, label %replace_dir.exit @@ -3642,8 +3640,7 @@ init_common_trie.exit: ; preds = %strbuf_strip_suffix br label %replace_dir.exit .critedge.i: ; preds = %112, %112 - %sext18.c.i = shl i64 %113, 32 - %128 = ashr exact i64 %sext18.c.i, 32 + %128 = ashr exact i64 %117, 32 tail call void @strbuf_splice(ptr noundef nonnull %0, i64 noundef 0, i64 noundef %6, ptr noundef nonnull %2, i64 noundef %128) #30 br label %replace_dir.exit diff --git a/bench/glslang/optimized/ShaderLang.ll b/bench/glslang/optimized/ShaderLang.ll index 954394a38c6..06c0c711d63 100644 --- a/bench/glslang/optimized/ShaderLang.ll +++ b/bench/glslang/optimized/ShaderLang.ll @@ -7854,15 +7854,15 @@ define internal fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_120DeduceVersionProfi br label %thread-pre-split 28: ; preds = %23 - switch i32 %16, label %31 [ + %29 = icmp eq i32 %17, 8 + switch i32 %16, label %32 [ i32 300, label %29 i32 310, label %29 - i32 320, label %29 + i32 320, label %30 ] 29: ; preds = %28, %28, %28 - %.not = icmp eq i32 %17, 8 - br i1 %.not, label %thread-pre-split, label %30 + br i1 %29, label %thread-pre-split, label %31 30: ; preds = %29 tail call void @_ZN7glslang13TInfoSinkBase6appendEPKc(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull @.str.59) #24 @@ -7871,8 +7871,7 @@ define internal fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_120DeduceVersionProfi br label %thread-pre-split 31: ; preds = %28 - %32 = icmp eq i32 %17, 8 - br i1 %32, label %33, label %36 + br i1 %29, label %33, label %36 33: ; preds = %31 tail call void @_ZN7glslang13TInfoSinkBase7messageENS_11TPrefixTypeEPKc(ptr noundef nonnull align 8 dereferenceable(48) %0, i32 noundef 2, ptr noundef nonnull @.str.30) @@ -7882,15 +7881,15 @@ define internal fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_120DeduceVersionProfi br label %thread-pre-split thread-pre-split: ; preds = %33, %29, %30, %25, %21, %19, %20 - %.sink = phi i32 [ 8, %20 ], [ 8, %19 ], [ %., %21 ], [ %.140, %25 ], [ 8, %30 ], [ 8, %29 ], [ %.141, %33 ] - %.0.ph = phi i1 [ false, %20 ], [ true, %19 ], [ true, %21 ], [ false, %25 ], [ false, %30 ], [ true, %29 ], [ false, %33 ] + %.sink = phi i32 [ 8, %20 ], [ 8, %19 ], [ %., %21 ], [ %.140, %25 ], [ 8, %31 ], [ 8, %30 ], [ %.141, %33 ] + %.0.ph = phi i1 [ false, %20 ], [ true, %19 ], [ true, %21 ], [ false, %25 ], [ false, %31 ], [ true, %30 ], [ false, %33 ] store i32 %.sink, ptr %6, align 4 %.pr = load i32, ptr %5, align 4 br label %36 36: ; preds = %thread-pre-split, %31 - %37 = phi i32 [ %.pr, %thread-pre-split ], [ %16, %31 ] - %.0 = phi i1 [ %.0.ph, %thread-pre-split ], [ true, %31 ] + %37 = phi i32 [ %.pr, %thread-pre-split ], [ %16, %32 ] + %.0 = phi i1 [ %.0.ph, %thread-pre-split ], [ true, %32 ] switch i32 %37, label %38 [ i32 100, label %43 i32 300, label %43 diff --git a/bench/graphviz/optimized/parse.ll b/bench/graphviz/optimized/parse.ll index f9a7e86ecda..b7683cb4307 100644 --- a/bench/graphviz/optimized/parse.ll +++ b/bench/graphviz/optimized/parse.ll @@ -1230,8 +1230,8 @@ define internal fastcc range(i32 -2147483648, 256) i32 @endBracket(ptr noundef n %9 = zext nneg i8 %2 to i32 br label %10 -10: ; preds = %.lr.ph, %endString.exit.thread - %11 = phi i32 [ %5, %.lr.ph ], [ %36, %endString.exit.thread ] +10: ; preds = %.lr.ph, %36 + %11 = phi i32 [ %5, %.lr.ph ], [ %37, %36 ] %12 = icmp eq i32 %11, %9 br i1 %12, label %13, label %16 @@ -1242,21 +1242,21 @@ define internal fastcc range(i32 -2147483648, 256) i32 @endBracket(ptr noundef n br i1 %15, label %.loopexit, label %endString.exit.thread 16: ; preds = %10 - switch i32 %11, label %endString.exit.thread [ - i32 39, label %17 - i32 34, label %17 + %17 = trunc i32 %11 to i8 + tail call fastcc void @agxbputc(ptr noundef %1, i8 noundef signext %17) + switch i32 %11, label %36 [ + i32 39, label %18 + i32 34, label %18 ] 17: ; preds = %16, %16 - %18 = trunc nuw nsw i32 %11 to i8 - tail call fastcc void @agxbputc(ptr noundef %1, i8 noundef signext %18) %19 = load i32, ptr @lineno, align 4, !tbaa !3 %20 = tail call i32 @getc(ptr noundef nonnull %0) %.not17.i = icmp eq i32 %20, %11 br i1 %.not17.i, label %endString.exit.thread, label %.lr.ph.i .lr.ph.i: ; preds = %17, %32 - %21 = phi i32 [ %34, %32 ], [ %20, %17 ] + %21 = phi i32 [ %34, %32 ], [ %20, %18 ] %22 = icmp eq i32 %21, 92 br i1 %22, label %23, label %25 @@ -1291,18 +1291,21 @@ endString.exit: ; preds = %25 tail call void (i32, ptr, ...) @error(i32 noundef 2, ptr noundef nonnull @.str.17, i32 noundef %19) #17 br label %.loopexit -endString.exit.thread: ; preds = %32, %16, %17, %13 - %.lcssa.i.sink = phi i32 [ %14, %13 ], [ %20, %17 ], [ %11, %16 ], [ %11, %32 ] - %35 = trunc i32 %.lcssa.i.sink to i8 +endString.exit.thread: ; preds = %32, %17, %13 + %.lcssa.i.sink = phi i32 [ %14, %13 ], [ %20, %18 ], [ %11, %32 ] + %35 = trunc nuw i32 %.lcssa.i.sink to i8 tail call fastcc void @agxbputc(ptr noundef %1, i8 noundef signext %35) - %36 = tail call fastcc i32 @readc(ptr noundef %0, ptr noundef nonnull %1) - %37 = icmp slt i32 %36, 0 - %38 = icmp eq i32 %36, %7 - %or.cond31 = select i1 %37, i1 true, i1 %38 + br label %36 + +36:; preds = %.sink.split, %16 + %37 = tail call fastcc i32 @readc(ptr noundef %0, ptr noundef nonnull %1) + %38 = icmp slt i32 %37, 0 + %39 = icmp eq i32 %37, %7 + %or.cond31 = select i1 %38, i1 true, i1 %39 br i1 %or.cond31, label %.loopexit, label %10 -.loopexit: ; preds = %endString.exit.thread, %13, %4, %endString.exit - %.0 = phi i32 [ -1, %endString.exit ], [ %5, %4 ], [ %36, %endString.exit.thread ], [ %14, %13 ] +.loopexit: ; preds = %36, %13, %4, %endString.exit + %.0 = phi i32 [ -1, %endString.exit ], [ %5, %4 ], [ %37, %36 ], [ %14, %13 ] ret i32 %.0 } diff --git a/bench/hdf5/optimized/H5Spoint.ll b/bench/hdf5/optimized/H5Spoint.ll index 7ded1be7a29..acef647dd8c 100644 --- a/bench/hdf5/optimized/H5Spoint.ll +++ b/bench/hdf5/optimized/H5Spoint.ll @@ -2315,7 +2315,7 @@ define range(i32 -1, 1) i32 @H5S_select_elements(ptr noundef %0, i32 noundef %1, %74 = zext i32 %73 to i64 %75 = call noalias ptr @H5FL_arr_malloc(ptr noundef nonnull @H5_hcoords_t_arr_free_list, i64 noundef %74) #15 %76 = icmp eq ptr %75, null - br i1 %76, label %132, label %77 + br i1 %76, label %128, label %77 77: ; preds = %71 store ptr null, ptr %75, align 8, !tbaa !25 @@ -2368,100 +2368,95 @@ define range(i32 -1, 1) i32 @H5S_select_elements(ptr noundef %0, i32 noundef %1, ._crit_edge112.i: ; preds = %._crit_edge.i, %.preheader.i %.079.lcssa.i = phi ptr [ null, %.preheader.i ], [ %.281.i, %._crit_edge.i ] %.077.lcssa.i = phi ptr [ null, %.preheader.i ], [ %75, %._crit_edge.i ] + %102 = getelementptr inbounds nuw i8, ptr %0, i64 360 + %103 = load ptr, ptr %102, align 8, !tbaa !10 + %104 = getelementptr inbounds nuw i8, ptr %103, i64 512 + %105 = load ptr, ptr %104, align 8, !tbaa !22 + %.not.i = icmp eq ptr %105, null switch i32 %1, label %114 [ i32 7, label %102 i32 0, label %102 ] 102: ; preds = %._crit_edge112.i, %._crit_edge112.i - %103 = getelementptr inbounds nuw i8, ptr %0, i64 360 - %104 = load ptr, ptr %103, align 8, !tbaa !10 - %105 = getelementptr inbounds nuw i8, ptr %104, i64 512 - %106 = load ptr, ptr %105, align 8, !tbaa !22 - %.not90.i = icmp eq ptr %106, null - br i1 %.not90.i, label %108, label %107 + br i1 %.not.i, label %108, label %107 107: ; preds = %102 - store ptr %106, ptr %.077.lcssa.i, align 8, !tbaa !25 + store ptr %105, ptr %.077.lcssa.i, align 8, !tbaa !25 br label %108 108: ; preds = %107, %102 - store ptr %.079.lcssa.i, ptr %105, align 8, !tbaa !22 - %109 = load ptr, ptr %103, align 8, !tbaa !10 + store ptr %.079.lcssa.i, ptr %104, align 8, !tbaa !22 + %109 = load ptr, ptr %102, align 8, !tbaa !10 %110 = getelementptr inbounds nuw i8, ptr %109, i64 520 %111 = load ptr, ptr %110, align 8, !tbaa !79 %112 = icmp eq ptr %111, null - br i1 %112, label %113, label %125 + br i1 %112, label %113, label %121 113: ; preds = %108 store ptr %.077.lcssa.i, ptr %110, align 8, !tbaa !79 - br label %125 + br label %121 114: ; preds = %._crit_edge112.i - %115 = getelementptr inbounds nuw i8, ptr %0, i64 360 - %116 = load ptr, ptr %115, align 8, !tbaa !10 - %117 = getelementptr inbounds nuw i8, ptr %116, i64 512 - %118 = load ptr, ptr %117, align 8, !tbaa !22 - %.not.i = icmp eq ptr %118, null - br i1 %.not.i, label %122, label %119 - -119: ; preds = %114 - %120 = getelementptr inbounds nuw i8, ptr %116, i64 520 - %121 = load ptr, ptr %120, align 8, !tbaa !79 - store ptr %.079.lcssa.i, ptr %121, align 8, !tbaa !25 - br label %.thread100.i + br i1 %.not.i, label %118, label %122 122: ; preds = %114 - store ptr %.079.lcssa.i, ptr %117, align 8, !tbaa !22 + %116 = getelementptr inbounds nuw i8, ptr %103, i64 520 + %117 = load ptr, ptr %116, align 8, !tbaa !79 + store ptr %.079.lcssa.i, ptr %117, align 8, !tbaa !25 br label %.thread100.i -.thread100.i: ; preds = %122, %119 - %123 = load ptr, ptr %115, align 8, !tbaa !10 - %124 = getelementptr inbounds nuw i8, ptr %123, i64 520 - store ptr %.077.lcssa.i, ptr %124, align 8, !tbaa !79 - br label %128 - -125: ; preds = %113, %108 - br i1 %22, label %126, label %128 - -126: ; preds = %125 - %127 = getelementptr inbounds nuw i8, ptr %0, i64 352 - store i64 %2, ptr %127, align 8, !tbaa !31 - br label %141 - -128: ; preds = %125, %.thread100.i - %129 = getelementptr inbounds nuw i8, ptr %0, i64 352 - %130 = load i64, ptr %129, align 8, !tbaa !31 - %131 = add i64 %130, %2 - store i64 %131, ptr %129, align 8, !tbaa !31 - br label %141 - -132: ; preds = %71 - %133 = load i64, ptr @H5E_DATASPACE_g, align 8, !tbaa !21 - %134 = load i64, ptr @H5E_CANTALLOC_g, align 8, !tbaa !21 - %135 = call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5S__point_add, i32 noundef 588, i64 noundef %133, i64 noundef %134, ptr noundef nonnull @.str.18) #15 +.thread100.i: ; preds = %114 + store ptr %.079.lcssa.i, ptr %104, align 8, !tbaa !22 + br label %126 + +126: ; preds = %118, %115 + %119 = load ptr, ptr %102, align 8, !tbaa !10 + %120 = getelementptr inbounds nuw i8, ptr %119, i64 520 + store ptr %.077.lcssa.i, ptr %120, align 8, !tbaa !79 + br label %124 + +121: ; preds = %113, %108 + br i1 %22, label %122, label %124 + +122:; preds = %121 + %123 = getelementptr inbounds nuw i8, ptr %0, i64 352 + store i64 %2, ptr %123, align 8, !tbaa !31 + br label %137 + +124:; preds = %121, %126 + %125 = getelementptr inbounds nuw i8, ptr %0, i64 352 + %126 = load i64, ptr %125, align 8, !tbaa !31 + %127 = add i64 %126, %2 + store i64 %127, ptr %125, align 8, !tbaa !31 + br label %137 + +128: ; preds = %71 + %129 = load i64, ptr @H5E_DATASPACE_g, align 8, !tbaa !21 + %130 = load i64, ptr @H5E_CANTALLOC_g, align 8, !tbaa !21 + %131 = call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5S__point_add, i32 noundef 588, i64 noundef %129, i64 noundef %130, ptr noundef nonnull @.str.18) #15 %.not92114.i = icmp eq ptr %.079108.i, null br i1 %.not92114.i, label %H5S__point_add.exit, label %.lr.ph117.i -.lr.ph117.i: ; preds = %132, %.lr.ph117.i - %.4115.i = phi ptr [ %136, %.lr.ph117.i ], [ %.079108.i, %132 ] +.lr.ph117.i: ; preds = %128, %.lr.ph117.i + %.4115.i = phi ptr [ %136, %.lr.ph117.i ], [ %.079108.i, %128 ] %136 = load ptr, ptr %.4115.i, align 8, !tbaa !25 %137 = call ptr @H5FL_arr_free(ptr noundef nonnull @H5_hcoords_t_arr_free_list, ptr noundef nonnull %.4115.i) #15 %.not92.i = icmp eq ptr %136, null br i1 %.not92.i, label %H5S__point_add.exit, label %.lr.ph117.i, !llvm.loop !80 -H5S__point_add.exit: ; preds = %.lr.ph117.i, %132 +H5S__point_add.exit: ; preds = %.lr.ph117.i, %128 %138 = load i64, ptr @H5E_DATASPACE_g, align 8, !tbaa !21 %139 = load i64, ptr @H5E_CANTINSERT_g, align 8, !tbaa !21 %140 = call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5S_select_elements, i32 noundef 764, i64 noundef %138, i64 noundef %139, ptr noundef nonnull @.str.4) #15 br label %142 -141: ; preds = %61, %126, %128 +141: ; preds = %61, %122, %124 store ptr @H5S_sel_point, ptr %62, align 8, !tbaa !34 br label %142 142: ; preds = %57, %18, %141, %H5S__point_add.exit, %31, %14 - %.022 = phi i32 [ -1, %14 ], [ -1, %31 ], [ -1, %H5S__point_add.exit ], [ 0, %141 ], [ -1, %57 ], [ 0, %18 ] + %.022 = phi i32 [ -1, %14 ], [ -1, %31 ], [ -1, %H5S__point_add.exit ], [ 0, %137 ], [ -1, %57 ], [ 0, %18 ] ret i32 %.022 } diff --git a/bench/hermes/optimized/APInt.ll b/bench/hermes/optimized/APInt.ll index 16a3dbbc05b..09589862100 100644 --- a/bench/hermes/optimized/APInt.ll +++ b/bench/hermes/optimized/APInt.ll @@ -362,49 +362,43 @@ for.body.lr.ph: ; preds = %if.end12 for.body: ; preds = %for.body.lr.ph, %_ZN4llvh5APIntpLEm.exit %p.132 = phi ptr [ %p.0, %for.body.lr.ph ], [ %incdec.ptr38, %_ZN4llvh5APIntpLEm.exit ] %4 = load i8, ptr %p.132, align 1 - switch i8 %radix, label %entry.if.end21_crit_edge.i [ + %.pre.i = sext i8 %4 to i32 + %.pre15.i = add nsw i32 %.pre.i, -48 + switch i8 %radix, label %if.end21.i [ i8 36, label %if.then.i i8 16, label %if.then.i ] -entry.if.end21_crit_edge.i: ; preds = %for.body - %.pre.i = sext i8 %4 to i32 - %.pre15.i = add nsw i32 %.pre.i, -48 - br label %if.end21.i - if.then.i: ; preds = %for.body, %for.body - %conv3.i = sext i8 %4 to i32 - %sub.i = add nsw i32 %conv3.i, -48 - %cmp4.i = icmp ult i32 %sub.i, 10 + %cmp4.i = icmp ult i32 %.pre15.i, 10 br i1 %cmp4.i, label %_ZL8getDigitch.exit, label %if.end.i if.end.i: ; preds = %if.then.i - %sub7.i = add nsw i32 %conv3.i, -65 + %sub7.i = add nsw i32 %.pre.i, -65 %cmp10.not.i = icmp ugt i32 %sub7.i, %sub9.i br i1 %cmp10.not.i, label %if.end12.i, label %if.then11.i if.then11.i: ; preds = %if.end.i - %add.i = add nsw i32 %conv3.i, -55 + %add.i = add nsw i32 %.pre.i, -55 br label %_ZL8getDigitch.exit if.end12.i: ; preds = %if.end.i - %sub14.i = add nsw i32 %conv3.i, -97 + %sub14.i = add nsw i32 %.pre.i, -97 %cmp17.not.i = icmp ugt i32 %sub14.i, %sub9.i br i1 %cmp17.not.i, label %if.end21.i, label %if.then18.i if.then18.i: ; preds = %if.end12.i - %add19.i = add nsw i32 %conv3.i, -87 + %add19.i = add nsw i32 %.pre.i, -87 br label %_ZL8getDigitch.exit -if.end21.i: ; preds = %if.end12.i, %entry.if.end21_crit_edge.i - %sub23.pre-phi.i = phi i32 [ %.pre15.i, %entry.if.end21_crit_edge.i ], [ %sub.i, %if.end12.i ] - %radix.addr.0.i = phi i32 [ %conv.i14, %entry.if.end21_crit_edge.i ], [ 10, %if.end12.i ] - %cmp25.i = icmp ult i32 %sub23.pre-phi.i, %radix.addr.0.i - %sub23..i = select i1 %cmp25.i, i32 %sub23.pre-phi.i, i32 -1 +if.end21.i: ; preds = %for.body, %if.end12.i + %sub23.pre-phi.i = phi i32 [ 10, %if.end12.i ], [ %conv.i14, %for.body ] + %cmp25.i = icmp ult i32 %.pre15.i, %sub23.pre-phi.i + %sub23..i = select i1 %cmp25.i, i32 %.pre15.i, i32 -1 br label %_ZL8getDigitch.exit _ZL8getDigitch.exit: ; preds = %if.then.i, %if.then11.i, %if.then18.i, %if.end21.i - %retval.0.i = phi i32 [ %add.i, %if.then11.i ], [ %add19.i, %if.then18.i ], [ %sub.i, %if.then.i ], [ %sub23..i, %if.end21.i ] + %retval.0.i = phi i32 [ %add.i, %if.then11.i ], [ %add19.i, %if.then18.i ], [ %.pre15.i, %if.then.i ], [ %sub23..i, %if.end21.i ] br i1 %cmp27, label %if.then28, label %if.end35 if.then28: ; preds = %_ZL8getDigitch.exit diff --git a/bench/hermes/optimized/CommandLine.ll b/bench/hermes/optimized/CommandLine.ll index 19c477304e7..e13e7f84b2c 100644 --- a/bench/hermes/optimized/CommandLine.ll +++ b/bench/hermes/optimized/CommandLine.ll @@ -3939,6 +3939,7 @@ for.body: ; preds = %for.body.lr.ph, %_Z store i32 0, ptr %Size.i.i.i.i.i.i, align 8 store i32 128, ptr %Capacity2.i.i.i.i.i.i, align 4 %0 = load i8, ptr %Cur.085, align 1 + %cmp21.not77 = icmp eq ptr %Cur.085, %add.ptr.i switch i8 %0, label %for.cond20.preheader [ i8 32, label %_ZL12isWhitespacec.exit i8 13, label %_ZL12isWhitespacec.exit @@ -3948,16 +3949,13 @@ for.body: ; preds = %for.body.lr.ph, %_Z ] while.cond8.preheader: ; preds = %for.body - %cmp10.not70 = icmp eq ptr %Cur.085, %add.ptr.i - br i1 %cmp10.not70, label %_ZN4llvh11SmallStringILj128EED2Ev.exit, label %while.body15, !llvm.loop !69 + br i1 %cmp21.not77, label %_ZN4llvh11SmallStringILj128EED2Ev.exit, label %while.body15, !llvm.loop !69 for.cond20.preheader: ; preds = %for.body - %cmp21.not77 = icmp eq ptr %Cur.085, %add.ptr.i br i1 %cmp21.not77, label %for.end, label %for.body22 _ZL12isWhitespacec.exit: ; preds = %for.body, %for.body, %for.body, %for.body - %cmp4.not73 = icmp eq ptr %Cur.085, %add.ptr.i - br i1 %cmp4.not73, label %_ZN4llvh11SmallStringILj128EED2Ev.exit, label %land.rhs.lr.ph, !llvm.loop !69 + br i1 %cmp21.not77, label %_ZN4llvh11SmallStringILj128EED2Ev.exit, label %land.rhs.lr.ph, !llvm.loop !69 land.rhs.lr.ph: ; preds = %_ZL12isWhitespacec.exit br label %land.rhs, !llvm.loop !69 diff --git a/bench/hermes/optimized/gtest-all.ll b/bench/hermes/optimized/gtest-all.ll index 71c36acad29..a2b02f489e2 100644 --- a/bench/hermes/optimized/gtest-all.ll +++ b/bench/hermes/optimized/gtest-all.ll @@ -3629,6 +3629,8 @@ tailrecurse.outer: ; preds = %tailrecurse.outer.b %pattern.tr.ph = phi ptr [ %pattern, %entry ], [ %pattern.tr.ph.be, %tailrecurse.outer.backedge ] %str.tr.ph = phi ptr [ %str, %entry ], [ %add.ptr9, %tailrecurse.outer.backedge ] %add.ptr9 = getelementptr inbounds nuw i8, ptr %str.tr.ph, i64 1 + %0 = load i8, ptr %str.tr.ph, align 1 + %cmp8.not = icmp eq i8 %0, 0 br label %tailrecurse tailrecurse: ; preds = %tailrecurse.outer, %lor.rhs @@ -3642,13 +3644,11 @@ tailrecurse: ; preds = %tailrecurse.outer, ] sw.bb: ; preds = %tailrecurse, %tailrecurse - %1 = load i8, ptr %str.tr.ph, align 1 - %cmp = icmp eq i8 %1, 0 + %cmp = icmp eq i8 %0, 0 br label %return sw.bb2: ; preds = %tailrecurse - %2 = load i8, ptr %str.tr.ph, align 1 - %cmp4.not = icmp eq i8 %2, 0 + %cmp4.not = icmp eq i8 %0, 0 br i1 %cmp4.not, label %return, label %tailrecurse.outer.backedge tailrecurse.outer.backedge: ; preds = %sw.default, %sw.bb2 @@ -3656,8 +3656,6 @@ tailrecurse.outer.backedge: ; preds = %sw.default, %sw.bb2 br label %tailrecurse.outer sw.bb6: ; preds = %tailrecurse - %3 = load i8, ptr %str.tr.ph, align 1 - %cmp8.not = icmp eq i8 %3, 0 br i1 %cmp8.not, label %lor.rhs, label %land.lhs.true land.lhs.true: ; preds = %sw.bb6 @@ -3669,8 +3667,7 @@ lor.rhs: ; preds = %land.lhs.true, %sw. br label %tailrecurse sw.default: ; preds = %tailrecurse - %4 = load i8, ptr %str.tr.ph, align 1 - %cmp15 = icmp eq i8 %0, %4 + %cmp15 = icmp eq i8 %1, %0 br i1 %cmp15, label %tailrecurse.outer.backedge, label %return return: ; preds = %sw.default, %sw.bb2, %land.lhs.true, %sw.bb diff --git a/bench/hwloc/optimized/traversal.ll b/bench/hwloc/optimized/traversal.ll index a43721faee2..570193c0cd2 100644 --- a/bench/hwloc/optimized/traversal.ll +++ b/bench/hwloc/optimized/traversal.ll @@ -987,7 +987,7 @@ hwloc__type_match.exit153.thread: ; preds = %._crit_edge.i.threa br i1 %.not101, label %112, label %hwloc__type_match.exit 112: ; preds = %110 - switch i8 %33, label %137 [ + switch i8 %33, label %136 [ i8 108, label %113 i8 76, label %113 ] @@ -1004,14 +1004,14 @@ hwloc__type_match.exit153.thread: ; preds = %._crit_edge.i.threa %119 = trunc i64 %118 to i32 %120 = load ptr, ptr %8, align 8, !tbaa !61 %121 = load i8, ptr %120, align 1, !tbaa !60 + %122 = add i32 %119, -1 switch i8 %121, label %127 [ i8 105, label %122 i8 73, label %122 ] 122: ; preds = %117, %117 - %123 = add i32 %119, -1 - %or.cond = icmp ult i32 %123, 3 + %or.cond = icmp ult i32 %122, 3 br i1 %or.cond, label %124, label %.thread 124: ; preds = %122 @@ -1020,31 +1020,30 @@ hwloc__type_match.exit153.thread: ; preds = %._crit_edge.i.threa br label %135 127: ; preds = %117 - %128 = add i32 %119, -1 - %or.cond3 = icmp ult i32 %128, 5 - br i1 %or.cond3, label %129, label %.thread - -129: ; preds = %127 - %130 = add nuw nsw i32 %119, 4 - switch i8 %121, label %135 [ - i8 100, label %131 + %or.cond3 = icmp ult i32 %122, 5 + br i1 %or.cond3, label %128, label %.thread + +128: ; preds = %127 + %129 = add nuw nsw i32 %119, 4 + switch i8 %121, label %134 [ + i8 100, label %130 i8 68, label %131 - i8 117, label %133 + i8 117, label %132 i8 85, label %133 ] -131: ; preds = %129, %129 +131: ; preds = %128, %128 %132 = getelementptr inbounds nuw i8, ptr %120, i64 1 br label %135 -133: ; preds = %129, %129 +133: ; preds = %128, %128 %134 = getelementptr inbounds nuw i8, ptr %120, i64 1 br label %135 -135: ; preds = %124, %131, %133, %129 - %.273 = phi i32 [ %125, %124 ], [ %130, %131 ], [ %130, %133 ], [ %130, %129 ] - %.2 = phi i32 [ 2, %124 ], [ 1, %131 ], [ 0, %133 ], [ 0, %129 ] - %.067 = phi ptr [ %126, %124 ], [ %132, %131 ], [ %134, %133 ], [ %120, %129 ] +135: ; preds = %124, %131, %133, %128 + %.273 = phi i32 [ %125, %124 ], [ %129, %130 ], [ %129, %132 ], [ %129, %128 ] + %.2 = phi i32 [ 2, %124 ], [ 1, %130 ], [ 0, %132 ], [ 0, %128 ] + %.067 = phi ptr [ %126, %124 ], [ %132, %130 ], [ %134, %132 ], [ %120, %128 ] %136 = tail call fastcc ptr @hwloc__type_match(ptr noundef nonnull %.067, ptr noundef nonnull @.str.39, i64 noundef 0) %.not103.not = icmp eq ptr %136, null br i1 %.not103.not, label %.thread, label %hwloc__type_match.exit @@ -1075,10 +1074,10 @@ hwloc__type_match.exit.loopexit192: ; preds = %24 br label %hwloc__type_match.exit hwloc__type_match.exit: ; preds = %hwloc__type_match.exit.loopexit192, %hwloc__type_match.exit.loopexit, %78, %61, %42, %._crit_edge.i149, %._crit_edge.i129, %._crit_edge.i.thread.thread, %._crit_edge.i, %110, %108, %106, %104, %102, %100, %98, %96, %92, %94, %88, %90, %hwloc__type_match.exit153.thread, %._crit_edge.i.thread, %142, %139, %135 - %.071 = phi i32 [ %.273, %135 ], [ 13, %142 ], [ 13, %139 ], [ 18, %._crit_edge.i.thread ], [ 14, %hwloc__type_match.exit153.thread ], [ 15, %90 ], [ 15, %88 ], [ 1, %94 ], [ 1, %92 ], [ 2, %96 ], [ 3, %98 ], [ 4, %100 ], [ 19, %102 ], [ 16, %104 ], [ 16, %106 ], [ 16, %108 ], [ 17, %110 ], [ 18, %._crit_edge.i ], [ 18, %._crit_edge.i.thread.thread ], [ 0, %._crit_edge.i129 ], [ 14, %._crit_edge.i149 ], [ 18, %42 ], [ 0, %61 ], [ 14, %78 ], [ 18, %hwloc__type_match.exit.loopexit ], [ 18, %hwloc__type_match.exit.loopexit192 ] - %.070 = phi i32 [ %119, %135 ], [ %144, %142 ], [ -1, %139 ], [ -1, %._crit_edge.i.thread ], [ -1, %hwloc__type_match.exit153.thread ], [ -1, %90 ], [ -1, %88 ], [ -1, %94 ], [ -1, %92 ], [ -1, %96 ], [ -1, %98 ], [ -1, %100 ], [ -1, %102 ], [ -1, %104 ], [ -1, %106 ], [ -1, %108 ], [ -1, %110 ], [ -1, %._crit_edge.i ], [ -1, %._crit_edge.i.thread.thread ], [ -1, %._crit_edge.i129 ], [ -1, %._crit_edge.i149 ], [ -1, %42 ], [ -1, %61 ], [ -1, %78 ], [ -1, %hwloc__type_match.exit.loopexit ], [ -1, %hwloc__type_match.exit.loopexit192 ] - %.069 = phi i32 [ %.2, %135 ], [ -1, %142 ], [ -1, %139 ], [ -1, %._crit_edge.i.thread ], [ -1, %hwloc__type_match.exit153.thread ], [ -1, %90 ], [ -1, %88 ], [ -1, %94 ], [ -1, %92 ], [ -1, %96 ], [ -1, %98 ], [ -1, %100 ], [ -1, %102 ], [ -1, %104 ], [ -1, %106 ], [ -1, %108 ], [ -1, %110 ], [ -1, %._crit_edge.i ], [ -1, %._crit_edge.i.thread.thread ], [ -1, %._crit_edge.i129 ], [ -1, %._crit_edge.i149 ], [ -1, %42 ], [ -1, %61 ], [ -1, %78 ], [ -1, %hwloc__type_match.exit.loopexit ], [ -1, %hwloc__type_match.exit.loopexit192 ] - %.068 = phi i32 [ -1, %135 ], [ -1, %142 ], [ -1, %139 ], [ -1, %._crit_edge.i.thread ], [ -1, %hwloc__type_match.exit153.thread ], [ -1, %90 ], [ -1, %88 ], [ -1, %94 ], [ -1, %92 ], [ -1, %96 ], [ -1, %98 ], [ -1, %100 ], [ -1, %102 ], [ -1, %104 ], [ 0, %106 ], [ 1, %108 ], [ -1, %110 ], [ -1, %._crit_edge.i ], [ -1, %._crit_edge.i.thread.thread ], [ -1, %._crit_edge.i129 ], [ -1, %._crit_edge.i149 ], [ -1, %42 ], [ -1, %61 ], [ -1, %78 ], [ -1, %hwloc__type_match.exit.loopexit ], [ -1, %hwloc__type_match.exit.loopexit192 ] + %.071 = phi i32 [ %.273, %134 ], [ 13, %141 ], [ 13, %138 ], [ 18, %._crit_edge.i.thread ], [ 14, %hwloc__type_match.exit153.thread ], [ 15, %90 ], [ 15, %88 ], [ 1, %94 ], [ 1, %92 ], [ 2, %96 ], [ 3, %98 ], [ 4, %100 ], [ 19, %102 ], [ 16, %104 ], [ 16, %106 ], [ 16, %108 ], [ 17, %110 ], [ 18, %._crit_edge.i ], [ 18, %._crit_edge.i.thread.thread ], [ 0, %._crit_edge.i129 ], [ 14, %._crit_edge.i149 ], [ 18, %42 ], [ 0, %61 ], [ 14, %78 ], [ 18, %hwloc__type_match.exit.loopexit ], [ 18, %hwloc__type_match.exit.loopexit192 ] + %.070 = phi i32 [ %119, %134 ], [ %145, %141 ], [ -1, %138 ], [ -1, %._crit_edge.i.thread ], [ -1, %hwloc__type_match.exit153.thread ], [ -1, %90 ], [ -1, %88 ], [ -1, %94 ], [ -1, %92 ], [ -1, %96 ], [ -1, %98 ], [ -1, %100 ], [ -1, %102 ], [ -1, %104 ], [ -1, %106 ], [ -1, %108 ], [ -1, %110 ], [ -1, %._crit_edge.i ], [ -1, %._crit_edge.i.thread.thread ], [ -1, %._crit_edge.i129 ], [ -1, %._crit_edge.i149 ], [ -1, %42 ], [ -1, %61 ], [ -1, %78 ], [ -1, %hwloc__type_match.exit.loopexit ], [ -1, %hwloc__type_match.exit.loopexit192 ] + %.069 = phi i32 [ %.2, %134 ], [ -1, %141 ], [ -1, %138 ], [ -1, %._crit_edge.i.thread ], [ -1, %hwloc__type_match.exit153.thread ], [ -1, %90 ], [ -1, %88 ], [ -1, %94 ], [ -1, %92 ], [ -1, %96 ], [ -1, %98 ], [ -1, %100 ], [ -1, %102 ], [ -1, %104 ], [ -1, %106 ], [ -1, %108 ], [ -1, %110 ], [ -1, %._crit_edge.i ], [ -1, %._crit_edge.i.thread.thread ], [ -1, %._crit_edge.i129 ], [ -1, %._crit_edge.i149 ], [ -1, %42 ], [ -1, %61 ], [ -1, %78 ], [ -1, %hwloc__type_match.exit.loopexit ], [ -1, %hwloc__type_match.exit.loopexit192 ] + %.068 = phi i32 [ -1, %134 ], [ -1, %141 ], [ -1, %138 ], [ -1, %._crit_edge.i.thread ], [ -1, %hwloc__type_match.exit153.thread ], [ -1, %90 ], [ -1, %88 ], [ -1, %94 ], [ -1, %92 ], [ -1, %96 ], [ -1, %98 ], [ -1, %100 ], [ -1, %102 ], [ -1, %104 ], [ 0, %106 ], [ 1, %108 ], [ -1, %110 ], [ -1, %._crit_edge.i ], [ -1, %._crit_edge.i.thread.thread ], [ -1, %._crit_edge.i129 ], [ -1, %._crit_edge.i149 ], [ -1, %42 ], [ -1, %61 ], [ -1, %78 ], [ -1, %hwloc__type_match.exit.loopexit ], [ -1, %hwloc__type_match.exit.loopexit192 ] store i32 %.071, ptr %1, align 4, !tbaa !3 %.not104 = icmp eq ptr %2, null br i1 %.not104, label %.thread, label %145 @@ -1132,7 +1131,7 @@ hwloc__type_match.exit: ; preds = %hwloc__type_match.e br label %.thread .thread: ; preds = %127, %122, %hwloc__type_match.exit, %155, %162, %165, %159, %149, %137, %135 - %.175 = phi i32 [ -1, %135 ], [ -1, %137 ], [ 0, %149 ], [ 0, %159 ], [ 0, %165 ], [ 0, %162 ], [ 0, %155 ], [ 0, %hwloc__type_match.exit ], [ -1, %122 ], [ -1, %127 ] + %.175 = phi i32 [ -1, %134 ], [ -1, %136 ], [ 0, %148 ], [ 0, %158 ], [ 0, %164 ], [ 0, %161 ], [ 0, %154 ], [ 0, %hwloc__type_match.exit ], [ -1, %123 ], [ -1, %127 ] call void @llvm.lifetime.end.p0(ptr nonnull %8) call void @llvm.lifetime.end.p0(ptr nonnull %7) ret i32 %.175 diff --git a/bench/hyperscan/optimized/cpuid_flags.ll b/bench/hyperscan/optimized/cpuid_flags.ll index 2ae3f8ee939..c793ff7edeb 100644 --- a/bench/hyperscan/optimized/cpuid_flags.ll +++ b/bench/hyperscan/optimized/cpuid_flags.ll @@ -71,31 +71,26 @@ define hidden i32 @cpuid_tune() local_unnamed_addr #1 { %2 = extractvalue { i32, i32, i32, i32 } %1, 0 %3 = lshr i32 %2, 8 %4 = and i32 %3, 15 + %5 = lshr i32 %2, 4 + %6 = and i32 %5, 15 switch i32 %4, label %11 [ i32 15, label %5 i32 6, label %5 ] 5: ; preds = %0, %0 - %6 = lshr i32 %2, 4 - %7 = and i32 %6, 15 %8 = lshr i32 %2, 12 %9 = and i32 %8, 240 - %10 = or disjoint i32 %7, %9 + %10 = or disjoint i32 %6, %9 br label %14 -11: ; preds = %0 - %12 = lshr i32 %2, 4 - %13 = and i32 %12, 15 - br label %14 - -14: ; preds = %5, %11 - %.015 = phi i32 [ %10, %5 ], [ %13, %11 ] +14: ; preds = %0, %7 + %.015 = phi i32 [ %10, %7 ], [ %6, %0 ] %.not = icmp eq i32 %4, 6 br i1 %.not, label %.split.us, label %.loopexit .split.us: ; preds = %14, %18 - %indvars.iv = phi i64 [ %indvars.iv.next, %18 ], [ 0, %14 ] + %indvars.iv = phi i64 [ %indvars.iv.next, %15 ], [ 0, %11 ] %15 = getelementptr inbounds nuw %struct.family_id, ptr @known_microarch, i64 %indvars.iv %16 = getelementptr inbounds nuw i8, ptr %15, i64 4 %17 = load i32, ptr %16, align 4 @@ -113,7 +108,7 @@ define hidden i32 @cpuid_tune() local_unnamed_addr #1 { br label %.loopexit .loopexit: ; preds = %18, %14, %.split20.us - %spec.select = phi i32 [ %20, %.split20.us ], [ 0, %14 ], [ 0, %18 ] + %spec.select = phi i32 [ %20, %.split20.us ], [ 0, %11 ], [ 0, %15 ] ret i32 %spec.select } diff --git a/bench/icu/optimized/smpdtfst.ll b/bench/icu/optimized/smpdtfst.ll index 6e45020a73e..8e084a9d16c 100644 --- a/bench/icu/optimized/smpdtfst.ll +++ b/bench/icu/optimized/smpdtfst.ll @@ -364,12 +364,13 @@ _ZN6icu_77L17smpdtfmt_initSetsER10UErrorCode.exit: ; preds = %10, %11 br i1 %or.cond, label %19, label %_ZN6icu_7713umtx_initOnceERNS_9UInitOnceEPFvR10UErrorCodeES3_.exit.thread 19: ; preds = %15, %_ZN6icu_77L17smpdtfmt_initSetsER10UErrorCode.exit - switch i32 %0, label %27 [ + %20 = load ptr, ptr @_ZN6icu_7711gStaticSetsE, align 8, !tbaa !17 + switch i32 %0, label %26 [ i32 1, label %20 i32 2, label %20 i32 3, label %20 i32 25, label %20 - i32 26, label %20 + i32 26, label %21 i32 4, label %23 i32 5, label %23 i32 6, label %23 @@ -379,24 +380,21 @@ _ZN6icu_77L17smpdtfmt_initSetsER10UErrorCode.exit: ; preds = %10, %11 ] 20: ; preds = %19, %19, %19, %19, %19 - %21 = load ptr, ptr @_ZN6icu_7711gStaticSetsE, align 8, !tbaa !17 - %22 = load ptr, ptr %21, align 8, !tbaa !9 + %21 = load ptr, ptr %20, align 8, !tbaa !9 br label %_ZN6icu_7713umtx_initOnceERNS_9UInitOnceEPFvR10UErrorCodeES3_.exit.thread 23: ; preds = %19, %19, %19, %19, %19, %19 - %24 = load ptr, ptr @_ZN6icu_7711gStaticSetsE, align 8, !tbaa !17 - %25 = getelementptr inbounds nuw i8, ptr %24, i64 8 - %26 = load ptr, ptr %25, align 8, !tbaa !13 + %24 = getelementptr inbounds nuw i8, ptr %20, i64 8 + %25 = load ptr, ptr %24, align 8, !tbaa !13 br label %_ZN6icu_7713umtx_initOnceERNS_9UInitOnceEPFvR10UErrorCodeES3_.exit.thread 27: ; preds = %19 - %28 = load ptr, ptr @_ZN6icu_7711gStaticSetsE, align 8, !tbaa !17 - %29 = getelementptr inbounds nuw i8, ptr %28, i64 16 - %30 = load ptr, ptr %29, align 8, !tbaa !14 + %27 = getelementptr inbounds nuw i8, ptr %20, i64 16 + %28 = load ptr, ptr %27, align 8, !tbaa !14 br label %_ZN6icu_7713umtx_initOnceERNS_9UInitOnceEPFvR10UErrorCodeES3_.exit.thread _ZN6icu_7713umtx_initOnceERNS_9UInitOnceEPFvR10UErrorCodeES3_.exit.thread: ; preds = %15, %_ZN6icu_77L17smpdtfmt_initSetsER10UErrorCode.exit, %27, %23, %20 - %.0 = phi ptr [ %30, %27 ], [ %22, %20 ], [ %26, %23 ], [ null, %_ZN6icu_77L17smpdtfmt_initSetsER10UErrorCode.exit ], [ null, %15 ] + %.0 = phi ptr [ %28, %26 ], [ %22, %21 ], [ %25, %23 ], [ null, %_ZN6icu_77L17smpdtfmt_initSetsER10UErrorCode.exit ], [ null, %15 ] call void @llvm.lifetime.end.p0(ptr nonnull %2) ret ptr %.0 } diff --git a/bench/icu/optimized/ucol_sit.ll b/bench/icu/optimized/ucol_sit.ll index 8dd950a4706..96635ee941e 100644 --- a/bench/icu/optimized/ucol_sit.ll +++ b/bench/icu/optimized/ucol_sit.ll @@ -2049,44 +2049,40 @@ _ZL15readHexCodeUnitPPKcP10UErrorCode.exit34: ; preds = %._crit_edge.i33._ZL define internal noundef nonnull ptr @_ZL21_processLocaleElementP12CollatorSpecjPKcP10UErrorCode(ptr noundef %0, i32 noundef %1, ptr noundef readonly captures(ret: address, provenance) %2, ptr noundef %3) #1 { %5 = zext i32 %1 to i64 %6 = getelementptr inbounds nuw %"class.icu_77::CharString", ptr %0, i64 %5 - switch i32 %1, label %.split.preheader [ - i32 5, label %.split.us - i32 4, label %.split.us - i32 0, label %.split.us - ] - -.split.preheader: ; preds = %4 %.pre22 = load i8, ptr %2, align 1, !tbaa !22 - br label %.split - -.split.us: ; preds = %4, %4, %4 - %.pre = load i8, ptr %2, align 1, !tbaa !22 - br label %7 + switch i32 %1, label %.split [ + i32 5, label %.split.us.preheader + i32 4, label %.split.us.preheader + i32 0, label %7 + ] -7: ; preds = %13, %.split.us - %8 = phi i8 [ %.pre, %.split.us ], [ %12, %13 ] - %.0.us = phi ptr [ %2, %.split.us ], [ %11, %13 ] - %9 = tail call signext i8 @uprv_asciitolower_77(i8 noundef signext %8) - %10 = tail call noundef nonnull align 8 dereferenceable(60) ptr @_ZN6icu_7710CharString6appendEcR10UErrorCode(ptr noundef nonnull align 8 dereferenceable(60) %6, i8 noundef signext %9, ptr noundef nonnull align 4 dereferenceable(4) %3) - %11 = getelementptr inbounds nuw i8, ptr %.0.us, i64 1 - %12 = load i8, ptr %11, align 1, !tbaa !22 - switch i8 %12, label %13 [ +7: ; preds = %4, %4, %4 + br label %.split.us + +.split.us:; preds = %.split.us.preheader, %12 + %7 = phi i8 [ %11, %12 ], [ %.pre22, %.split.us.preheader ] + %.0.us = phi ptr [ %10, %12 ], [ %2, %.split.us.preheader ] + %8 = tail call signext i8 @uprv_asciitolower_77(i8 noundef signext %7) + %9 = tail call noundef nonnull align 8 dereferenceable(60) ptr @_ZN6icu_7710CharString6appendEcR10UErrorCode(ptr noundef nonnull align 8 dereferenceable(60) %6, i8 noundef signext %8, ptr noundef nonnull align 4 dereferenceable(4) %3) + %10 = getelementptr inbounds nuw i8, ptr %.0.us, i64 1 + %11 = load i8, ptr %10, align 1, !tbaa !22 + switch i8 %11, label %12 [ i8 95, label %.critedge i8 0, label %.critedge ] -13: ; preds = %7 +13: ; preds = %.split.us %14 = load i32, ptr %3, align 4, !tbaa !13 %15 = icmp sgt i32 %14, 0 - br i1 %15, label %.critedge, label %7, !llvm.loop !48 + br i1 %15, label %.critedge, label %.split.us, !llvm.loop !48 -.split: ; preds = %.split.preheader, %20 - %16 = phi i8 [ %19, %20 ], [ %.pre22, %.split.preheader ] - %.0 = phi ptr [ %18, %20 ], [ %2, %.split.preheader ] +.split: ; preds = %4, %20 + %16 = phi i8 [ %19, %19 ], [ %.pre22, %4 ] + %.0 = phi ptr [ %18, %19 ], [ %2, %4 ] %17 = tail call noundef nonnull align 8 dereferenceable(60) ptr @_ZN6icu_7710CharString6appendEcR10UErrorCode(ptr noundef nonnull align 8 dereferenceable(60) %6, i8 noundef signext %16, ptr noundef nonnull align 4 dereferenceable(4) %3) %18 = getelementptr inbounds nuw i8, ptr %.0, i64 1 %19 = load i8, ptr %18, align 1, !tbaa !22 - switch i8 %19, label %20 [ + switch i8 %19, label %19 [ i8 95, label %.critedge i8 0, label %.critedge ] @@ -2096,8 +2092,8 @@ define internal noundef nonnull ptr @_ZL21_processLocaleElementP12CollatorSpecjP %22 = icmp sgt i32 %21, 0 br i1 %22, label %.critedge, label %.split, !llvm.loop !48 -.critedge: ; preds = %7, %7, %13, %20, %.split, %.split - %.us-phi = phi ptr [ %18, %.split ], [ %18, %.split ], [ %18, %20 ], [ %11, %13 ], [ %11, %7 ], [ %11, %7 ] +.critedge: ; preds = %.split.us, %.split.us, %13, %20, %.split, %.split + %.us-phi = phi ptr [ %18, %.split ], [ %18, %.split ], [ %18, %19 ], [ %10, %12 ], [ %10, %.split.us ], [ %10, %.split.us ] ret ptr %.us-phi } diff --git a/bench/icu/optimized/uniset_props.ll b/bench/icu/optimized/uniset_props.ll index b34af90a25f..a4880c47e90 100644 --- a/bench/icu/optimized/uniset_props.ll +++ b/bench/icu/optimized/uniset_props.ll @@ -1867,26 +1867,19 @@ define noundef signext range(i8 0, 2) i8 @_ZN6icu_7710UnicodeSet24resemblesPrope br i1 %10, label %switch.edge, label %13 13: ; preds = %9 + call void @_ZN6icu_7721RuleCharacterIterator6setPosERKNS0_3PosE(ptr noundef nonnull align 8 dereferenceable(36) %0, ptr noundef nonnull align 8 dereferenceable(16) %5) switch i32 %12, label %switch.edge.thread [ i32 112, label %switch.edge.thread18 i32 78, label %switch.edge.thread18 i32 80, label %switch.edge.thread18 ] -switch.edge.thread: ; preds = %13 - call void @_ZN6icu_7721RuleCharacterIterator6setPosERKNS0_3PosE(ptr noundef nonnull align 8 dereferenceable(36) %0, ptr noundef nonnull align 8 dereferenceable(16) %5) - br label %18 - -switch.edge.thread18: ; preds = %13, %13, %13 - call void @_ZN6icu_7721RuleCharacterIterator6setPosERKNS0_3PosE(ptr noundef nonnull align 8 dereferenceable(36) %0, ptr noundef nonnull align 8 dereferenceable(16) %5) - br label %14 - switch.edge: ; preds = %9 %.not = icmp eq i32 %12, 58 call void @_ZN6icu_7721RuleCharacterIterator6setPosERKNS0_3PosE(ptr noundef nonnull align 8 dereferenceable(36) %0, ptr noundef nonnull align 8 dereferenceable(16) %5) br i1 %.not, label %14, label %18 -14: ; preds = %switch.edge.thread18, %switch.edge +14: ; preds = %13, %13, %13, %switch.edge %15 = load i32, ptr %4, align 4, !tbaa !13 %16 = icmp slt i32 %15, 1 %17 = zext i1 %16 to i8 @@ -1896,8 +1889,8 @@ switch.edge: ; preds = %9 call void @_ZN6icu_7721RuleCharacterIterator6setPosERKNS0_3PosE(ptr noundef nonnull align 8 dereferenceable(36) %0, ptr noundef nonnull align 8 dereferenceable(16) %5) br label %18 -18: ; preds = %switch.edge.thread, %.critedge, %14, %switch.edge - %19 = phi i8 [ 0, %switch.edge ], [ %17, %14 ], [ 0, %.critedge ], [ 0, %switch.edge.thread ] +18: ; preds = %13, %.critedge, %14, %switch.edge + %19 = phi i8 [ 0, %switch.edge ], [ %17, %switch.edge.thread18 ], [ 0, %.critedge ], [ 0, %13 ] call void @llvm.lifetime.end.p0(ptr nonnull %5) call void @llvm.lifetime.end.p0(ptr nonnull %4) call void @llvm.lifetime.end.p0(ptr nonnull %3) diff --git a/bench/libcxx/optimized/future.ll b/bench/libcxx/optimized/future.ll index 9d29a88375d..f2d56a68781 100644 --- a/bench/libcxx/optimized/future.ll +++ b/bench/libcxx/optimized/future.ll @@ -68,6 +68,8 @@ define hidden noundef nonnull ptr @_ZNKSt3__123__future_error_category4nameEv(pt ; Function Attrs: mustprogress uwtable define hidden void @_ZNKSt3__123__future_error_category7messageEi(ptr dead_on_unwind noalias writable writeonly sret(%"class.std::__1::basic_string") align 8 captures(none) initializes((0, 24)) %0, ptr nonnull readnone align 8 captures(none) %1, i32 noundef %2) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 { + %4 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %5 = getelementptr inbounds nuw i8, ptr %0, i64 8 switch i32 %2, label %.thread.i.i16 [ i32 0, label %.thread.i.i i32 4, label %.thread.i.i @@ -78,65 +80,55 @@ define hidden void @_ZNKSt3__123__future_error_category7messageEi(ptr dead_on_un .thread.i.i: ; preds = %3, %3 %4 = tail call noalias noundef nonnull dereferenceable(96) ptr @_Znwm(i64 noundef 96) #20 - %5 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %4, ptr %5, align 8, !tbaa !4 + store ptr %6, ptr %4, align 8, !tbaa !4 store i64 97, ptr %0, align 8 - %6 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 88, ptr %6, align 8, !tbaa !4 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(88) %4, ptr noundef nonnull align 1 dereferenceable(88) @.str.1, i64 88, i1 false) - %7 = getelementptr inbounds nuw i8, ptr %4, i64 88 + store i64 88, ptr %5, align 8, !tbaa !4 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(88) %6, ptr noundef nonnull align 1 dereferenceable(88) @.str.1, i64 88, i1 false) + %7 = getelementptr inbounds nuw i8, ptr %6, i64 88 store i8 0, ptr %7, align 1, !tbaa !4 - br label %24 + br label %16 .thread.i.i1: ; preds = %3 %8 = tail call noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #20 - %9 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %8, ptr %9, align 8, !tbaa !4 + store ptr %8, ptr %4, align 8, !tbaa !4 store i64 81, ptr %0, align 8 - %10 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 72, ptr %10, align 8, !tbaa !4 + store i64 72, ptr %5, align 8, !tbaa !4 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(72) %8, ptr noundef nonnull align 1 dereferenceable(72) @.str.2, i64 72, i1 false) %11 = getelementptr inbounds nuw i8, ptr %8, i64 72 store i8 0, ptr %11, align 1, !tbaa !4 - br label %24 + br label %16 .thread.i.i6: ; preds = %3 %12 = tail call noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #20 - %13 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %12, ptr %13, align 8, !tbaa !4 + store ptr %10, ptr %4, align 8, !tbaa !4 store i64 49, ptr %0, align 8 - %14 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 46, ptr %14, align 8, !tbaa !4 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(46) %12, ptr noundef nonnull align 1 dereferenceable(46) @.str.3, i64 46, i1 false) - %15 = getelementptr inbounds nuw i8, ptr %12, i64 46 - store i8 0, ptr %15, align 1, !tbaa !4 - br label %24 + store i64 46, ptr %5, align 8, !tbaa !4 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(46) %10, ptr noundef nonnull align 1 dereferenceable(46) @.str.3, i64 46, i1 false) + %11 = getelementptr inbounds nuw i8, ptr %10, i64 46 + store i8 0, ptr %11, align 1, !tbaa !4 + br label %16 .thread.i.i11: ; preds = %3 %16 = tail call noalias noundef nonnull dereferenceable(72) ptr @_Znwm(i64 noundef 72) #20 - %17 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %16, ptr %17, align 8, !tbaa !4 + store ptr %12, ptr %4, align 8, !tbaa !4 store i64 73, ptr %0, align 8 - %18 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 65, ptr %18, align 8, !tbaa !4 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(65) %16, ptr noundef nonnull align 1 dereferenceable(65) @.str.4, i64 65, i1 false) - %19 = getelementptr inbounds nuw i8, ptr %16, i64 65 - store i8 0, ptr %19, align 1, !tbaa !4 - br label %24 + store i64 65, ptr %5, align 8, !tbaa !4 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(65) %12, ptr noundef nonnull align 1 dereferenceable(65) @.str.4, i64 65, i1 false) + %13 = getelementptr inbounds nuw i8, ptr %16, i64 65 + store i8 0, ptr %13, align 1, !tbaa !4 + br label %16 .thread.i.i16: ; preds = %3 %20 = tail call noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #20 - %21 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %20, ptr %21, align 8, !tbaa !4 + store ptr %14, ptr %4, align 8, !tbaa !4 store i64 33, ptr %0, align 8 - %22 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 30, ptr %22, align 8, !tbaa !4 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(30) %20, ptr noundef nonnull align 1 dereferenceable(30) @.str.5, i64 30, i1 false) - %23 = getelementptr inbounds nuw i8, ptr %20, i64 30 - store i8 0, ptr %23, align 1, !tbaa !4 - br label %24 - -24: ; preds = %.thread.i.i16, %.thread.i.i11, %.thread.i.i6, %.thread.i.i1, %.thread.i.i + store i64 30, ptr %5, align 8, !tbaa !4 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(30) %14, ptr noundef nonnull align 1 dereferenceable(30) @.str.5, i64 30, i1 false) + %15 = getelementptr inbounds nuw i8, ptr %14, i64 30 + store i8 0, ptr %15, align 1, !tbaa !4 + br label %16 + +16: ; preds = %.thread.i.i16, %.thread.i.i11, %.thread.i.i6, %.thread.i.i1, %.thread.i.i ret void } diff --git a/bench/linux/optimized/bus-fixup.ll b/bench/linux/optimized/bus-fixup.ll index fd159aad00e..4b4f2f21fff 100644 --- a/bench/linux/optimized/bus-fixup.ll +++ b/bench/linux/optimized/bus-fixup.ll @@ -548,26 +548,24 @@ define internal void @pxp_is_ready(ptr noundef captures(none) %0) #1 align 16 { %3 = load ptr, ptr %2, align 8 %4 = getelementptr inbounds nuw i8, ptr %3, i64 432 %5 = load i32, ptr %4, align 8 + %6 = getelementptr inbounds nuw i8, ptr %0, i64 880 + %7 = load i8, ptr %6, align 8 switch i32 %5, label %10 [ i32 3, label %6 i32 0, label %6 ] 6: ; preds = %1, %1 - %7 = getelementptr inbounds nuw i8, ptr %0, i64 880 - %8 = load i8, ptr %7, align 8 - %9 = or i8 %8, 1 - store i8 %9, ptr %7, align 8 - br label %14 + %9 = or i8 %7, 1 + br label %12 10: ; preds = %1 - %11 = getelementptr inbounds nuw i8, ptr %0, i64 880 - %12 = load i8, ptr %11, align 8 - %13 = and i8 %12, -2 - store i8 %13, ptr %11, align 8 - br label %14 + %11 = and i8 %7, -2 + br label %12 14: ; preds = %10, %6 + %.sink = phi i8 [ %11, %10 ], [ %9, %8 ] + store i8 %.sink, ptr %6, align 8 ret void } diff --git a/bench/linux/optimized/earlycon.ll b/bench/linux/optimized/earlycon.ll index 3f5e8e50c09..6384fc00a48 100644 --- a/bench/linux/optimized/earlycon.ll +++ b/bench/linux/optimized/earlycon.ll @@ -344,42 +344,33 @@ define internal fastcc void @earlycon_init(ptr noundef %0) unnamed_addr #0 secti define internal fastcc void @earlycon_print_info() unnamed_addr #0 section ".init.text" align 16 { %1 = load ptr, ptr @early_console_dev, align 8 %2 = load i8, ptr getelementptr inbounds nuw (i8, ptr @early_console_dev, i64 202), align 2 - switch i8 %2, label %14 [ - i8 2, label %3 - i8 7, label %3 - i8 3, label %3 - i8 6, label %3 + %3 = getelementptr inbounds nuw i8, ptr %1, i64 74 + %4 = load i16, ptr %3, align 2 + %5 = sext i16 %4 to i32 + switch i8 %2, label %13 [ + i8 2, label %10 + i8 7, label %9 + i8 3, label %6 + i8 6, label %6 ] -3: ; preds = %0, %0, %0, %0 - %4 = getelementptr inbounds nuw i8, ptr %1, i64 74 - %5 = load i16, ptr %4, align 2 - %6 = sext i16 %5 to i32 - switch i8 %2, label %7 [ - i8 2, label %11 - i8 7, label %10 - ] - -7: ; preds = %3 - %8 = icmp eq i8 %2, 3 - %9 = select i1 %8, ptr @.str.6, ptr @.str.7 - br label %11 +3: ; preds = %0, %0 + %7 = icmp eq i8 %2, 3 + %8 = select i1 %7, ptr @.str.3, ptr @.str.7 + br label %10 -10: ; preds = %3 +10: ; preds = %0 br label %11 -11: ; preds = %10, %7, %3 - %12 = phi ptr [ @.str.4, %3 ], [ %9, %7 ], [ @.str.5, %10 ] - %13 = tail call i32 (ptr, ...) @_printk(ptr noundef nonnull @.str.3, ptr noundef %1, i32 noundef %6, ptr noundef nonnull %12, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @early_console_dev, i64 336), ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @early_console_dev, i64 536)) #8 +11: ; preds = %0, %9, %3 + %12 = phi ptr [ %8, %6 ], [ @.str.5, %9 ], [ @.str.4, %0 ] + %13 = tail call i32 (ptr, ...) @_printk(ptr noundef nonnull @.str.3, ptr noundef %1, i32 noundef %5, ptr noundef nonnull %12, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @early_console_dev, i64 336), ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @early_console_dev, i64 536)) #8 br label %20 14: ; preds = %0 - %15 = getelementptr inbounds nuw i8, ptr %1, i64 74 - %16 = load i16, ptr %15, align 2 - %17 = sext i16 %16 to i32 - %18 = load i64, ptr getelementptr inbounds nuw (i8, ptr @early_console_dev, i64 16), align 8 - %19 = tail call i32 (ptr, ...) @_printk(ptr noundef nonnull @.str.8, ptr noundef %1, i32 noundef %17, i64 noundef %18, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @early_console_dev, i64 536)) #8 - br label %20 + %14 = load i64, ptr getelementptr inbounds nuw (i8, ptr @early_console_dev, i64 16), align 8 + %15 = tail call i32 (ptr, ...) @_printk(ptr noundef nonnull @.str.8, ptr noundef %1, i32 noundef %5, i64 noundef %14, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @early_console_dev, i64 536)) #8 + br label %16 20: ; preds = %14, %11 ret void diff --git a/bench/linux/optimized/hooks.ll b/bench/linux/optimized/hooks.ll index ae3b44df86f..408595b0ad5 100644 --- a/bench/linux/optimized/hooks.ll +++ b/bench/linux/optimized/hooks.ll @@ -2389,41 +2389,35 @@ define internal i32 @selinux_quota_on(ptr noundef %0) #1 align 16 { ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid define internal i32 @selinux_syslog(i32 noundef %0) #1 align 16 { - switch i32 %0, label %6 [ - i32 3, label %2 - i32 10, label %2 - i32 6, label %4 - i32 7, label %4 - i32 8, label %4 + %2 = tail call i64 asm "movq %gs:${1:P}, $0", "=r,p,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @pcpu_hot) #26 + switch i32 %0, label %4 [ + i32 3, label %5 + i32 10, label %5 + i32 6, label %3 + i32 7, label %3 + i32 8, label %3 ] -2: ; preds = %1, %1 - %3 = tail call i64 asm "movq %gs:${1:P}, $0", "=r,p,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @pcpu_hot) #26, !srcloc !6 - br label %8 - -4: ; preds = %1, %1, %1 - %5 = tail call i64 asm "movq %gs:${1:P}, $0", "=r,p,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @pcpu_hot) #26, !srcloc !6 - br label %8 +2: ; preds = %1, %1, %1 + br label %5 6: ; preds = %1 - %7 = tail call i64 asm "movq %gs:${1:P}, $0", "=r,p,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @pcpu_hot) #26, !srcloc !6 - br label %8 + br label %5 -8: ; preds = %6, %4, %2 - %9 = phi i64 [ %7, %6 ], [ %5, %4 ], [ %3, %2 ] - %10 = phi i32 [ 4, %6 ], [ 8, %4 ], [ 2, %2 ] - %11 = inttoptr i64 %9 to ptr - %12 = getelementptr inbounds nuw i8, ptr %11, i64 1784 - %13 = load ptr, ptr %12, align 8 - %14 = getelementptr inbounds nuw i8, ptr %13, i64 128 - %15 = load ptr, ptr %14, align 8 - %16 = load i32, ptr @selinux_blob_sizes, align 4 - %17 = sext i32 %16 to i64 - %18 = getelementptr i8, ptr %15, i64 %17 - %19 = getelementptr inbounds nuw i8, ptr %18, i64 4 - %20 = load i32, ptr %19, align 4 - %21 = tail call i32 @avc_has_perm(i32 noundef %20, i32 noundef 1, i16 noundef zeroext 4, i32 noundef %10, ptr noundef null) #24 - ret i32 %21 +8: ; preds = %1, %1, %4, %2 + %9 = phi i32 [ 6, %4 ], [ 8, %3 ], [ 2, %1 ], [ 2, %1 ] + %7 = inttoptr i64 %2 to ptr + %8 = getelementptr inbounds nuw i8, ptr %7, i64 1784 + %9 = load ptr, ptr %8, align 8 + %10 = getelementptr inbounds nuw i8, ptr %9, i64 128 + %11 = load ptr, ptr %10, align 8 + %15 = load i32, ptr @selinux_blob_sizes, align 4 + %13 = sext i32 %12 to i64 + %14 = getelementptr i8, ptr %11, i64 %13 + %18 = getelementptr inbounds nuw i8, ptr %14, i64 4 + %16 = load i32, ptr %18, align 4 + %17 = tail call i32 @avc_has_perm(i32 noundef %16, i32 noundef 1, i16 noundef zeroext 4, i32 noundef %6, ptr noundef null) #24 + ret i32 %17 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid diff --git a/bench/llvm/optimized/CGCleanup.ll b/bench/llvm/optimized/CGCleanup.ll index 01f74c3e329..e871da4f13b 100644 --- a/bench/llvm/optimized/CGCleanup.ll +++ b/bench/llvm/optimized/CGCleanup.ll @@ -726,6 +726,7 @@ define dso_local void @_ZN5clang7CodeGen15DominatingValueINS0_6RValueEE10saved_t %9 = getelementptr inbounds nuw i8, ptr %1, i64 40 %10 = load i8, ptr %9, align 8 %11 = and i8 %10, 7 + %.sroa.03.0.copyload = load i64, ptr %1, align 8, !tbaa !3 switch i8 %11, label %85 [ i8 0, label %12 i8 1, label %12 @@ -735,7 +736,6 @@ define dso_local void @_ZN5clang7CodeGen15DominatingValueINS0_6RValueEE10saved_t ] 12: ; preds = %3, %3 - %.sroa.03.0.copyload = load i64, ptr %1, align 8, !tbaa !3 %13 = and i64 %.sroa.03.0.copyload, 4 %.not.i = icmp eq i64 %13, 0 %14 = and i64 %.sroa.03.0.copyload, -8 @@ -769,16 +769,15 @@ _ZN5clang7CodeGen19DominatingLLVMValue7restoreERNS0_15CodeGenFunctionEN4llvm14Po br label %86 28: ; preds = %3, %3 - %.sroa.023.0.copyload = load i64, ptr %1, align 8, !tbaa !3 %.sroa.224.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 8 %.sroa.224.0.copyload = load ptr, ptr %.sroa.224.0..sroa_idx, align 8, !tbaa !645 %.sroa.325.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 16 %.sroa.325.0.copyload = load i64, ptr %.sroa.325.0..sroa_idx, align 8, !tbaa !626 %.sroa.426.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 24 %.sroa.426.0.copyload = load i64, ptr %.sroa.426.0..sroa_idx, align 8, !tbaa !3 - %29 = and i64 %.sroa.023.0.copyload, 4 + %29 = and i64 %.sroa.03.0.copyload, 4 %.not.i.i = icmp eq i64 %29, 0 - %30 = and i64 %.sroa.023.0.copyload, -8 + %30 = and i64 %.sroa.03.0.copyload, -8 br i1 %.not.i.i, label %_ZN5clang7CodeGen19DominatingLLVMValue7restoreERNS0_15CodeGenFunctionEN4llvm14PointerIntPairIPNS4_5ValueELj1EbNS4_21PointerLikeTypeTraitsIS7_EENS4_18PointerIntPairInfoIS7_Lj1ES9_EEEE.exit.i, label %31 31: ; preds = %28 @@ -841,10 +840,9 @@ _ZN5clang7CodeGen15DominatingValueINS0_7AddressEE7restoreERNS0_15CodeGenFunction br label %86 57: ; preds = %3 - %.sroa.01.0.copyload = load i64, ptr %1, align 8, !tbaa !3 - %58 = and i64 %.sroa.01.0.copyload, 4 + %58 = and i64 %.sroa.03.0.copyload, 4 %.not.i9 = icmp eq i64 %58, 0 - %59 = and i64 %.sroa.01.0.copyload, -8 + %59 = and i64 %.sroa.03.0.copyload, -8 %60 = inttoptr i64 %59 to ptr br i1 %.not.i9, label %_ZN5clang7CodeGen19DominatingLLVMValue7restoreERNS0_15CodeGenFunctionEN4llvm14PointerIntPairIPNS4_5ValueELj1EbNS4_21PointerLikeTypeTraitsIS7_EENS4_18PointerIntPairInfoIS7_Lj1ES9_EEEE.exit13, label %61 diff --git a/bench/llvm/optimized/FunctionAttrs.ll b/bench/llvm/optimized/FunctionAttrs.ll index 0519b45a522..ff748c16fa7 100644 --- a/bench/llvm/optimized/FunctionAttrs.ll +++ b/bench/llvm/optimized/FunctionAttrs.ll @@ -28398,18 +28398,14 @@ define internal noundef zeroext i1 @"_ZNSt17_Function_handlerIFbRN4llvm11Instruc %3 = alloca ptr, align 8 %.val = load ptr, ptr %0, align 8, !tbaa !214 %4 = load i8, ptr %1, align 8, !tbaa !78 - switch i8 %4, label %_ZN4llvm8dyn_castINS_8CallBaseENS_11InstructionEEEDcPT0_.exit.thread.i.i.i.i [ + call void @llvm.lifetime.start.p0(ptr nonnull %3) + switch i8 %4, label %"_ZSt10__invoke_rIbRZL15inferConvergentRKN4llvm14SmallSetVectorIPNS0_8FunctionELj8EEERNS0_8SmallSetIS3_Lj8ESt4lessIS3_EEEE3$_1JRNS0_11InstructionEEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESH_E4typeEOSI_DpOSJ_.exit" [ i8 85, label %5 i8 34, label %5 i8 40, label %5 ] -_ZN4llvm8dyn_castINS_8CallBaseENS_11InstructionEEEDcPT0_.exit.thread.i.i.i.i: ; preds = %2 - call void @llvm.lifetime.start.p0(ptr nonnull %3) - br label %"_ZSt10__invoke_rIbRZL15inferConvergentRKN4llvm14SmallSetVectorIPNS0_8FunctionELj8EEERNS0_8SmallSetIS3_Lj8ESt4lessIS3_EEEE3$_1JRNS0_11InstructionEEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESH_E4typeEOSI_DpOSJ_.exit" - 5: ; preds = %2, %2, %2 - call void @llvm.lifetime.start.p0(ptr nonnull %3) %6 = getelementptr inbounds nuw i8, ptr %1, i64 72 %7 = tail call noundef zeroext i1 @_ZNK4llvm13AttributeList9hasFnAttrENS_9Attribute8AttrKindE(ptr noundef nonnull align 8 dereferenceable(8) %6, i32 noundef 6) #23 br i1 %7, label %_ZNK4llvm8CallBase12isConvergentEv.exit.thread.i.i.i.i, label %_ZNK4llvm8CallBase12isConvergentEv.exit.i.i.i.i @@ -28445,8 +28441,8 @@ _ZNK4llvm8CallBase17getCalledFunctionEv.exit.i.i.i.i: ; preds = %_ZN4llvm16dyn_c %21 = xor i1 %20, true br label %"_ZSt10__invoke_rIbRZL15inferConvergentRKN4llvm14SmallSetVectorIPNS0_8FunctionELj8EEERNS0_8SmallSetIS3_Lj8ESt4lessIS3_EEEE3$_1JRNS0_11InstructionEEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESH_E4typeEOSI_DpOSJ_.exit" -"_ZSt10__invoke_rIbRZL15inferConvergentRKN4llvm14SmallSetVectorIPNS0_8FunctionELj8EEERNS0_8SmallSetIS3_Lj8ESt4lessIS3_EEEE3$_1JRNS0_11InstructionEEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESH_E4typeEOSI_DpOSJ_.exit": ; preds = %_ZN4llvm8dyn_castINS_8CallBaseENS_11InstructionEEEDcPT0_.exit.thread.i.i.i.i, %_ZNK4llvm8CallBase12isConvergentEv.exit.i.i.i.i, %_ZNK4llvm8CallBase17getCalledFunctionEv.exit.i.i.i.i - %22 = phi i1 [ false, %_ZNK4llvm8CallBase12isConvergentEv.exit.i.i.i.i ], [ %21, %_ZNK4llvm8CallBase17getCalledFunctionEv.exit.i.i.i.i ], [ false, %_ZN4llvm8dyn_castINS_8CallBaseENS_11InstructionEEEDcPT0_.exit.thread.i.i.i.i ] +"_ZSt10__invoke_rIbRZL15inferConvergentRKN4llvm14SmallSetVectorIPNS0_8FunctionELj8EEERNS0_8SmallSetIS3_Lj8ESt4lessIS3_EEEE3$_1JRNS0_11InstructionEEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESH_E4typeEOSI_DpOSJ_.exit": ; preds = %2, %_ZNK4llvm8CallBase12isConvergentEv.exit.i.i.i.i, %_ZNK4llvm8CallBase17getCalledFunctionEv.exit.i.i.i.i + %22 = phi i1 [ false, %_ZNK4llvm8CallBase12isConvergentEv.exit.i.i.i.i ], [ %21, %_ZNK4llvm8CallBase17getCalledFunctionEv.exit.i.i.i.i ], [ false, %2 ] call void @llvm.lifetime.end.p0(ptr nonnull %3) ret i1 %22 } diff --git a/bench/llvm/optimized/InstCombineCompares.ll b/bench/llvm/optimized/InstCombineCompares.ll index 729b52cd18c..78b27c8f643 100644 --- a/bench/llvm/optimized/InstCombineCompares.ll +++ b/bench/llvm/optimized/InstCombineCompares.ll @@ -60489,21 +60489,16 @@ _ZN4llvm12PatternMatch5matchINS_5ValueENS0_7bind_tyINS_8ConstantEEEEEbPT_RKT0_.e ] 491: ; preds = %490 - switch i16 %92, label %_ZN4llvm8FCmpInst10isEqualityENS_7CmpInst9PredicateE.exit [ + call void @llvm.lifetime.start.p0(ptr nonnull %43) + call void @llvm.lifetime.start.p0(ptr nonnull %44) + switch i16 %92, label %.critedge38 [ i16 9, label %492 i16 6, label %492 i16 1, label %492 i16 14, label %492 ] -_ZN4llvm8FCmpInst10isEqualityENS_7CmpInst9PredicateE.exit: ; preds = %491 - call void @llvm.lifetime.start.p0(ptr nonnull %43) - call void @llvm.lifetime.start.p0(ptr nonnull %44) - br label %.critedge38 - 492: ; preds = %491, %491, %491, %491 - call void @llvm.lifetime.start.p0(ptr nonnull %43) - call void @llvm.lifetime.start.p0(ptr nonnull %44) store ptr null, ptr %43, align 8 %493 = call noundef zeroext i1 @_ZN4llvm12PatternMatch14cstval_pred_tyINS0_14is_any_zero_fpENS_10ConstantFPELb1EE10match_implINS_8ConstantEEEbPT_(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull %95) %494 = load ptr, ptr %43, align 8 @@ -60533,7 +60528,7 @@ _ZN4llvm12PatternMatch5matchINS_8ConstantENS0_14cstval_pred_tyINS0_14is_any_zero %502 = call noundef ptr @_ZN4llvm12InstCombiner14replaceOperandERNS_11InstructionEjPNS_5ValueE(ptr noundef nonnull align 8 dereferenceable(1081) %0, ptr noundef nonnull align 8 dereferenceable(72) %1, i32 noundef 0, ptr noundef %501) br label %747 -.critedge38: ; preds = %_ZN4llvm8FCmpInst10isEqualityENS_7CmpInst9PredicateE.exit, %_ZN4llvm12PatternMatch5matchINS_8ConstantENS0_14cstval_pred_tyINS0_14is_any_zero_fpENS_10ConstantFPELb1EEEEEbPT_RKT0_.exit +.critedge38: ; preds = %491, %_ZN4llvm12PatternMatch5matchINS_8ConstantENS0_14cstval_pred_tyINS0_14is_any_zero_fpENS_10ConstantFPELb1EEEEEbPT_RKT0_.exit call void @llvm.lifetime.end.p0(ptr nonnull %44) call void @llvm.lifetime.end.p0(ptr nonnull %43) br label %503 diff --git a/bench/llvm/optimized/Lexer.ll b/bench/llvm/optimized/Lexer.ll index 6adf9080648..9c041d424ce 100644 --- a/bench/llvm/optimized/Lexer.ll +++ b/bench/llvm/optimized/Lexer.ll @@ -3097,18 +3097,17 @@ define dso_local noundef i32 @_ZN5clang5Lexer20getTokenPrefixLengthENS_14SourceL %.025 = phi i32 [ %20, %17 ], [ 0, %.preheader86 ] %.023 = phi i32 [ %19, %17 ], [ %1, %.preheader86 ] %14 = load i8, ptr %.027, align 1, !tbaa !381 - switch i8 %14, label %15 [ + %15 = icmp eq i32 %.023, 0 + switch i8 %14, label %16 [ i8 92, label %.preheader i8 63, label %.preheader ] .preheader: ; preds = %13, %13 - %.not38 = icmp eq i32 %.023, 0 - br i1 %.not38, label %._crit_edge, label %.lr.ph + br i1 %15, label %._crit_edge, label %.lr.ph 15: ; preds = %13 - %16 = icmp eq i32 %.023, 0 - br i1 %16, label %.loopexit, label %17 + br i1 %15, label %.loopexit, label %17 17: ; preds = %15 %18 = getelementptr inbounds nuw i8, ptr %.027, i64 1 @@ -3236,7 +3235,7 @@ _ZN5clang5Lexer19SkipEscapedNewLinesEPKc.exit: ; preds = %30, %32, %35, %_ZN5 br label %.loopexit .loopexit: ; preds = %15, %._crit_edge, %11, %_ZN5clang5Lexer19SkipEscapedNewLinesEPKc.exit, %4 - %.0 = phi i32 [ 0, %11 ], [ 0, %4 ], [ %.126.lcssa, %._crit_edge ], [ %61, %_ZN5clang5Lexer19SkipEscapedNewLinesEPKc.exit ], [ %1, %15 ] + %.0 = phi i32 [ 0, %11 ], [ 0, %4 ], [ %.126.lcssa, %._crit_edge ], [ %61, %_ZN5clang5Lexer19SkipEscapedNewLinesEPKc.exit ], [ %1, %16 ] call void @llvm.lifetime.end.p0(ptr nonnull %5) ret i32 %.0 } diff --git a/bench/llvm/optimized/RISCVISelDAGToDAG.ll b/bench/llvm/optimized/RISCVISelDAGToDAG.ll index 4c98cb91470..4bcda853433 100644 --- a/bench/llvm/optimized/RISCVISelDAGToDAG.ll +++ b/bench/llvm/optimized/RISCVISelDAGToDAG.ll @@ -12048,20 +12048,20 @@ define dso_local noundef zeroext i1 @_ZN4llvm17RISCVDAGToDAGISel21SelectAddrRegR %26 = load ptr, ptr %25, align 8, !tbaa !399 %27 = getelementptr inbounds nuw i8, ptr %26, i64 24 %28 = load i32, ptr %27, align 8, !tbaa !131 + %.sroa.014.0.copyload = load ptr, ptr %24, align 8, !tbaa !268 switch i32 %28, label %125 [ i32 35, label %_ZN4llvm8dyn_castINS_14ConstantSDNodeENS_7SDValueEEEDcRKT0_.exit i32 11, label %_ZN4llvm8dyn_castINS_14ConstantSDNodeENS_7SDValueEEEDcRKT0_.exit ] _ZN4llvm8dyn_castINS_14ConstantSDNodeENS_7SDValueEEEDcRKT0_.exit: ; preds = %22, %22 - %.sroa.0121.0.copyload = load ptr, ptr %24, align 8, !tbaa !268 - %29 = getelementptr inbounds nuw i8, ptr %.sroa.0121.0.copyload, i64 24 + %29 = getelementptr inbounds nuw i8, ptr %.sroa.014.0.copyload, i64 24 %30 = load i32, ptr %29, align 8, !tbaa !131 %31 = icmp eq i32 %30, 56 br i1 %31, label %32, label %.critedge 32: ; preds = %_ZN4llvm8dyn_castINS_14ConstantSDNodeENS_7SDValueEEEDcRKT0_.exit - %33 = getelementptr inbounds nuw i8, ptr %.sroa.0121.0.copyload, i64 40 + %33 = getelementptr inbounds nuw i8, ptr %.sroa.014.0.copyload, i64 40 %34 = load ptr, ptr %33, align 8, !tbaa !267 %.sroa.037.0.copyload = load ptr, ptr %34, align 8, !tbaa !268 %.sroa.238.0..sroa_idx = getelementptr inbounds nuw i8, ptr %34, i64 8 @@ -12266,7 +12266,6 @@ _ZN4llvm5SDLocD2Ev.exit67: ; preds = %_ZN4llvm5SDLocC2ENS br label %.critedge 125: ; preds = %22 - %.sroa.014.0.copyload = load ptr, ptr %24, align 8, !tbaa !268 %.sroa.215.0..sroa_idx = getelementptr inbounds nuw i8, ptr %24, i64 8 %.sroa.215.0.copyload = load i32, ptr %.sroa.215.0..sroa_idx, align 8, !tbaa !270 store ptr %.sroa.014.0.copyload, ptr %5, align 8, !tbaa !268 diff --git a/bench/lua/optimized/lua.ll b/bench/lua/optimized/lua.ll index d239c302dd0..659f8f5dd3e 100644 --- a/bench/lua/optimized/lua.ll +++ b/bench/lua/optimized/lua.ll @@ -665,12 +665,12 @@ define internal fastcc void @print_usage(ptr noundef %0) unnamed_addr #2 { %6 = tail call i32 @fflush(ptr noundef %5) %7 = getelementptr inbounds nuw i8, ptr %0, i64 1 %8 = load i8, ptr %7, align 1, !tbaa !11 + %9 = load ptr, ptr @stderr, align 8, !tbaa !9 %switch.selectcmp.case1 = icmp eq i8 %8, 101 %switch.selectcmp.case2 = icmp eq i8 %8, 108 %switch.selectcmp = or i1 %switch.selectcmp.case1, %switch.selectcmp.case2 %9 = select i1 %switch.selectcmp, ptr @.str.5, ptr @.str.6 - %10 = load ptr, ptr @stderr, align 8, !tbaa !9 - %11 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10, ptr noundef nonnull %9, ptr noundef nonnull %0) #11 + %11 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9, ptr noundef nonnull %9, ptr noundef nonnull %0) #11 %12 = load ptr, ptr @stderr, align 8, !tbaa !9 %13 = tail call i32 @fflush(ptr noundef %12) %14 = load ptr, ptr @stderr, align 8, !tbaa !9 diff --git a/bench/meshlab/optimized/edit_paint.ll b/bench/meshlab/optimized/edit_paint.ll index ac54dcc3d30..0739799389c 100644 --- a/bench/meshlab/optimized/edit_paint.ll +++ b/bench/meshlab/optimized/edit_paint.ll @@ -2100,8 +2100,9 @@ declare void @llvm.memset.p0.i64(ptr writeonly captures(none), i8, i64, i1 immar define void @_ZN15EditPaintPlugin11setToolTypeE8ToolType(ptr noundef nonnull align 8 dereferenceable(704) initializes((480, 488)) %0, i32 noundef %1) local_unnamed_addr #10 align 2 { %3 = getelementptr inbounds nuw i8, ptr %0, i64 480 store i32 %1, ptr %3, align 8 - switch i32 %1, label %10 [ - i32 7, label %4 + %4 = getelementptr inbounds nuw i8, ptr %0, i64 484 + switch i32 %1, label %8 [ + i32 7, label %5 i32 0, label %6 i32 6, label %6 i32 4, label %6 @@ -2112,25 +2113,21 @@ define void @_ZN15EditPaintPlugin11setToolTypeE8ToolType(ptr noundef nonnull ali ] 4: ; preds = %2 - %5 = getelementptr inbounds nuw i8, ptr %0, i64 484 - store i32 9, ptr %5, align 4 + store i32 9, ptr %4, align 4 tail call void @_ZN15EditPaintPlugin21setSelectionRenderingEb(ptr noundef nonnull align 8 dereferenceable(704) %0, i1 noundef zeroext true) br label %12 6: ; preds = %2, %2, %2, %2, %2 - %7 = getelementptr inbounds nuw i8, ptr %0, i64 484 - store i32 11, ptr %7, align 4 - br label %12 + store i32 11, ptr %4, align 4 + br label %9 8: ; preds = %2, %2 - %9 = getelementptr inbounds nuw i8, ptr %0, i64 484 - store i32 15, ptr %9, align 4 - br label %12 + store i32 15, ptr %4, align 4 + br label %9 10: ; preds = %2 - %11 = getelementptr inbounds nuw i8, ptr %0, i64 484 - store i32 0, ptr %11, align 4 - br label %12 + store i32 0, ptr %4, align 4 + br label %9 12: ; preds = %10, %8, %6, %4 ret void diff --git a/bench/minetest/optimized/c_packer.ll b/bench/minetest/optimized/c_packer.ll index 647559b17af..297ca8824b1 100644 --- a/bench/minetest/optimized/c_packer.ll +++ b/bench/minetest/optimized/c_packer.ll @@ -2284,6 +2284,9 @@ if.then88: ; preds = %if.then85 if.end89: ; preds = %if.then88, %if.then85 %44 = load i16, ptr %add.ptr.i, align 8, !tbaa !59 + %45 = load i16, ptr %set_into83, align 2, !tbaa !65 + %conv100 = zext i16 %45 to i32 + %add101 = add nsw i32 %call, %conv100 switch i16 %44, label %if.else98 [ i16 4, label %if.then93 i16 6, label %if.then93 @@ -2291,18 +2294,12 @@ if.end89: ; preds = %if.then88, %if.then ] if.then93: ; preds = %if.end89, %if.end89, %if.end89 - %45 = load i16, ptr %set_into83, align 2, !tbaa !65 - %conv95 = zext i16 %45 to i32 - %add96 = add nsw i32 %call, %conv95 %46 = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 8 %47 = load i32, ptr %46, align 8, !tbaa !23 - call void @lua_rawseti(ptr noundef %L, i32 noundef %add96, i32 noundef %47) + call void @lua_rawseti(ptr noundef %L, i32 noundef %add101, i32 noundef %47) br label %cleanup if.else98: ; preds = %if.end89 - %48 = load i16, ptr %set_into83, align 2, !tbaa !65 - %conv100 = zext i16 %48 to i32 - %add101 = add nsw i32 %call, %conv100 %sdata102 = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 16 %49 = load ptr, ptr %sdata102, align 8, !tbaa !14 call void @lua_setfield(ptr noundef %L, i32 noundef %add101, ptr noundef %49) @@ -2727,6 +2724,7 @@ sw.epilog: ; preds = %sw.bb41, %sw.bb36, if.then: ; preds = %sw.epilog %25 = load i16, ptr %__begin1.sroa.0.0115, align 8, !tbaa !59 %cmp = icmp sgt i16 %25, -1 + %conv63 = zext i16 %24 to i32 br i1 %cmp, label %land.lhs.true, label %if.else65 land.lhs.true: ; preds = %if.then @@ -2739,20 +2737,17 @@ land.lhs.true: ; preds = %if.then if.then51: ; preds = %land.lhs.true, %land.lhs.true, %land.lhs.true %26 = getelementptr inbounds nuw i8, ptr %__begin1.sroa.0.0115, i64 8 %27 = load i32, ptr %26, align 8, !tbaa !23 - %conv54 = zext i16 %24 to i32 - %call55 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.22, i32 noundef %27, i32 noundef %conv54) + %call55 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.22, i32 noundef %27, i32 noundef %conv63) br label %if.end70 if.then59: ; preds = %land.lhs.true %sdata60 = getelementptr inbounds nuw i8, ptr %__begin1.sroa.0.0115, i64 16 %28 = load ptr, ptr %sdata60, align 8, !tbaa !14 - %conv63 = zext i16 %24 to i32 %call64 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.23, ptr noundef %28, i32 noundef %conv63) br label %if.end70 if.else65: ; preds = %if.then - %conv67 = zext i16 %24 to i32 - %call68 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.24, i32 noundef %conv67) + %call68 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.24, i32 noundef %conv63) br label %if.end70 if.end70: ; preds = %if.else65, %if.then59, %if.then51, %sw.epilog diff --git a/bench/minetest/optimized/nodedef.ll b/bench/minetest/optimized/nodedef.ll index 1316d2909b6..86838cbda1e 100644 --- a/bench/minetest/optimized/nodedef.ll +++ b/bench/minetest/optimized/nodedef.ll @@ -9453,6 +9453,7 @@ define dso_local void @_ZN15ContentFeatures18setAlphaFromLegacyEh(ptr noundef no entry: %drawtype = getelementptr inbounds nuw i8, ptr %this, i64 1538 %0 = load i8, ptr %drawtype, align 2, !tbaa !265 + %cmp9 = icmp eq i8 %legacy_alpha, -1 switch i8 %0, label %sw.default [ i8 0, label %sw.bb i8 2, label %sw.bb3 @@ -9460,17 +9461,14 @@ entry: ] sw.bb: ; preds = %entry - %cmp = icmp eq i8 %legacy_alpha, -1 - %cond = select i1 %cmp, i8 2, i8 1 + %cond = select i1 %cmp9, i8 2, i8 1 br label %sw.epilog sw.bb3: ; preds = %entry, %entry - %cmp5 = icmp eq i8 %legacy_alpha, -1 - %cond6 = select i1 %cmp5, i8 2, i8 0 + %cond6 = select i1 %cmp9, i8 2, i8 0 br label %sw.epilog sw.default: ; preds = %entry - %cmp9 = icmp eq i8 %legacy_alpha, -1 %cond10 = zext i1 %cmp9 to i8 br label %sw.epilog @@ -10860,6 +10858,7 @@ for.body123.preheader: ; preds = %for.body74.preheade %56 = load i8, ptr %buf.i566, align 1, !tbaa !13 call void @llvm.lifetime.end.p0(ptr nonnull %buf.i566) %57 = load i8, ptr %drawtype, align 2, !tbaa !265 + %cmp9.i = icmp eq i8 %56, -1 switch i8 %57, label %sw.default.i [ i8 0, label %sw.bb.i i8 2, label %sw.bb3.i @@ -10904,17 +10903,14 @@ cleanup.action111: ; preds = %if.then96 br label %eh.resume sw.bb.i: ; preds = %for.body123.preheader - %cmp.i = icmp eq i8 %56, -1 - %cond.i = select i1 %cmp.i, i8 2, i8 1 + %cond.i = select i1 %cmp9.i, i8 2, i8 1 br label %_ZN15ContentFeatures18setAlphaFromLegacyEh.exit sw.bb3.i: ; preds = %for.body123.preheader, %for.body123.preheader - %cmp5.i = icmp eq i8 %56, -1 - %cond6.i = select i1 %cmp5.i, i8 2, i8 0 + %cond6.i = select i1 %cmp9.i, i8 2, i8 0 br label %_ZN15ContentFeatures18setAlphaFromLegacyEh.exit sw.default.i: ; preds = %for.body123.preheader - %cmp9.i = icmp eq i8 %56, -1 %cond10.i = zext i1 %cmp9.i to i8 br label %_ZN15ContentFeatures18setAlphaFromLegacyEh.exit diff --git a/bench/minetest/optimized/s_base.ll b/bench/minetest/optimized/s_base.ll index 396e3281f45..837b3e45c85 100644 --- a/bench/minetest/optimized/s_base.ll +++ b/bench/minetest/optimized/s_base.ll @@ -3883,6 +3883,8 @@ if.then4: ; preds = %if.end call void @llvm.lifetime.start.p0(ptr nonnull %ref.tmp) tail call void @llvm.experimental.noalias.scope.decl(metadata !222) %1 = load i8, ptr %reason, align 8, !tbaa !225, !noalias !222 + %2 = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 16 + store ptr %2, ptr %ref.tmp, align 8, !tbaa !18, !alias.scope !222 switch i8 %1, label %sw.default.i [ i8 0, label %sw.bb.i i8 1, label %sw.bb.i @@ -3894,55 +3896,40 @@ if.then4: ; preds = %if.end ] sw.bb.i: ; preds = %if.then4, %if.then4 - %2 = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 16 - store ptr %2, ptr %ref.tmp, align 8, !tbaa !18, !alias.scope !222 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(6) %2, ptr noundef nonnull align 1 dereferenceable(6) @.str.78, i64 6, i1 false) br label %_ZNK20PlayerHPChangeReason15getTypeAsStringB5cxx11Ev.exit sw.bb2.i: ; preds = %if.then4 - %3 = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 16 - store ptr %3, ptr %ref.tmp, align 8, !tbaa !18, !alias.scope !222 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(5) %3, ptr noundef nonnull align 1 dereferenceable(5) @.str.79, i64 5, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(5) %2, ptr noundef nonnull align 1 dereferenceable(5) @.str.79, i64 5, i1 false) br label %_ZNK20PlayerHPChangeReason15getTypeAsStringB5cxx11Ev.exit sw.bb6.i: ; preds = %if.then4 - %4 = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 16 - store ptr %4, ptr %ref.tmp, align 8, !tbaa !18, !alias.scope !222 - store i32 1819042150, ptr %4, align 8, !alias.scope !222 + store i32 1819042150, ptr %2, align 8, !alias.scope !222 br label %_ZNK20PlayerHPChangeReason15getTypeAsStringB5cxx11Ev.exit sw.bb10.i: ; preds = %if.then4 - %5 = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 16 - store ptr %5, ptr %ref.tmp, align 8, !tbaa !18, !alias.scope !222 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(11) %5, ptr noundef nonnull align 1 dereferenceable(11) @.str.81, i64 11, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(11) %2, ptr noundef nonnull align 1 dereferenceable(11) @.str.81, i64 11, i1 false) br label %_ZNK20PlayerHPChangeReason15getTypeAsStringB5cxx11Ev.exit sw.bb14.i: ; preds = %if.then4 - %6 = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 16 - store ptr %6, ptr %ref.tmp, align 8, !tbaa !18, !alias.scope !222 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(5) %6, ptr noundef nonnull align 1 dereferenceable(5) @.str.82, i64 5, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(5) %2, ptr noundef nonnull align 1 dereferenceable(5) @.str.82, i64 5, i1 false) br label %_ZNK20PlayerHPChangeReason15getTypeAsStringB5cxx11Ev.exit sw.bb18.i: ; preds = %if.then4 - %7 = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 16 - store ptr %7, ptr %ref.tmp, align 8, !tbaa !18, !alias.scope !222 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(7) %7, ptr noundef nonnull align 1 dereferenceable(7) @.str.83, i64 7, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(7) %2, ptr noundef nonnull align 1 dereferenceable(7) @.str.83, i64 7, i1 false) br label %_ZNK20PlayerHPChangeReason15getTypeAsStringB5cxx11Ev.exit sw.default.i: ; preds = %if.then4 - %8 = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 16 - store ptr %8, ptr %ref.tmp, align 8, !tbaa !18, !alias.scope !222 - store i8 63, ptr %8, align 8, !tbaa !20, !alias.scope !222 + store i8 63, ptr %2, align 8, !tbaa !20, !alias.scope !222 br label %_ZNK20PlayerHPChangeReason15getTypeAsStringB5cxx11Ev.exit _ZNK20PlayerHPChangeReason15getTypeAsStringB5cxx11Ev.exit: ; preds = %sw.default.i, %sw.bb18.i, %sw.bb14.i, %sw.bb10.i, %sw.bb6.i, %sw.bb2.i, %sw.bb.i - %9 = phi ptr [ %8, %sw.default.i ], [ %7, %sw.bb18.i ], [ %6, %sw.bb14.i ], [ %5, %sw.bb10.i ], [ %4, %sw.bb6.i ], [ %3, %sw.bb2.i ], [ %2, %sw.bb.i ] %.sink100.i = phi i64 [ 1, %sw.default.i ], [ 7, %sw.bb18.i ], [ 5, %sw.bb14.i ], [ 11, %sw.bb10.i ], [ 4, %sw.bb6.i ], [ 5, %sw.bb2.i ], [ 6, %sw.bb.i ] %.sink.i.sroa.phi = phi ptr [ %.sink.i.sroa.gep, %sw.default.i ], [ %.sink.i.sroa.gep47, %sw.bb18.i ], [ %.sink.i.sroa.gep48, %sw.bb14.i ], [ %.sink.i.sroa.gep49, %sw.bb10.i ], [ %.sink.i.sroa.gep50, %sw.bb6.i ], [ %.sink.i.sroa.gep48, %sw.bb2.i ], [ %.sink.i.sroa.gep52, %sw.bb.i ] %_M_string_length.i.i.i.i92.i = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 8 store i64 %.sink100.i, ptr %_M_string_length.i.i.i.i92.i, align 8, !tbaa !19, !alias.scope !222 store i8 0, ptr %.sink.i.sroa.phi, align 1, !tbaa !20, !alias.scope !222 - invoke void @lua_pushstring(ptr noundef %L, ptr noundef nonnull %9) + invoke void @lua_pushstring(ptr noundef %L, ptr noundef nonnull %2) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %_ZNK20PlayerHPChangeReason15getTypeAsStringB5cxx11Ev.exit diff --git a/bench/miniaudio/optimized/unity.ll b/bench/miniaudio/optimized/unity.ll index b4790332216..98156722be0 100644 --- a/bench/miniaudio/optimized/unity.ll +++ b/bench/miniaudio/optimized/unity.ll @@ -50924,14 +50924,14 @@ define range(i32 -10, 1) i32 @ma_dr_wav_uninit(ptr noundef readonly captures(add 13: ; preds = %10 %14 = getelementptr inbounds nuw i8, ptr %0, i64 64 %15 = load i32, ptr %14, align 8, !tbaa !1150 + %16 = getelementptr inbounds nuw i8, ptr %0, i64 128 + %17 = load i64, ptr %16, align 8, !tbaa !1151 + %18 = trunc i64 %17 to i32 %switch.selectcmp.case1 = icmp eq i32 %15, 0 %switch.selectcmp.case2 = icmp eq i32 %15, 3 %switch.selectcmp = or i1 %switch.selectcmp.case1, %switch.selectcmp.case2 %16 = select i1 %switch.selectcmp, i32 1, i32 7 - %17 = getelementptr inbounds nuw i8, ptr %0, i64 128 - %18 = load i64, ptr %17, align 8, !tbaa !1151 - %19 = trunc i64 %18 to i32 - %20 = and i32 %16, %19 + %20 = and i32 %19, %18 %.not67 = icmp eq i32 %20, 0 br i1 %.not67, label %25, label %21 diff --git a/bench/mitsuba3/optimized/bitmap.ll b/bench/mitsuba3/optimized/bitmap.ll index 32cc197a4ad..8ffbf10bee8 100644 --- a/bench/mitsuba3/optimized/bitmap.ll +++ b/bench/mitsuba3/optimized/bitmap.ll @@ -20017,21 +20017,21 @@ _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ILi0E %70 = sub i64 %68, %69 %71 = sdiv i64 %70, 88 %72 = load i32, ptr %18, align 8 + %73 = load i32, ptr %55, align 8 + %74 = zext i32 %73 to i64 + %75 = mul i64 %71, %74 switch i32 %72, label %100 [ i32 2, label %73 i32 0, label %73 ] 73: ; preds = %59, %59 - %74 = load i32, ptr %55, align 8 - %75 = zext i32 %74 to i64 - %76 = mul i64 %71, %75 %77 = load i32, ptr %56, align 4 %.not111 = icmp eq i32 %77, 0 br i1 %.not111, label %.loopexit, label %.lr.ph .lr.ph: ; preds = %73 - %78 = shl i64 %76, 2 + %78 = shl i64 %75, 2 br label %79 79: ; preds = %.lr.ph, %89 @@ -20040,7 +20040,7 @@ _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ILi0E %81 = add i32 %80, -1 %82 = zext i32 %81 to i64 %83 = sub nsw i64 %82, %.08197 - %84 = mul i64 %83, %76 + %84 = mul i64 %83, %75 %85 = getelementptr inbounds float, ptr %61, i64 %84 %86 = load ptr, ptr %1, align 8 %87 = getelementptr inbounds nuw i8, ptr %86, i64 96 @@ -20089,13 +20089,10 @@ _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ILi0E br label %.loopexit92 100: ; preds = %59 - %101 = load i32, ptr %55, align 8 - %102 = zext i32 %101 to i64 - %103 = mul i64 %71, %102 - %104 = shl i64 %103, 2 - %105 = alloca i8, i64 %104, align 16 - %106 = load i32, ptr %56, align 4 - %.not112 = icmp eq i32 %106, 0 + %101 = shl i64 %75, 2 + %102 = alloca i8, i64 %101, align 16 + %103 = load i32, ptr %56, align 4 + %.not112 = icmp eq i32 %103, 0 br i1 %.not112, label %.loopexit, label %.lr.ph109 .lr.ph109: ; preds = %100 @@ -20106,8 +20103,8 @@ _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ILi0E br i1 %.not115, label %.lr.ph109.split, label %.lr.ph109.split.us .lr.ph109.split.us: ; preds = %.lr.ph109, %121 - %110 = phi i32 [ %123, %121 ], [ %106, %.lr.ph109 ] - %.076108.us = phi i64 [ %122, %121 ], [ 0, %.lr.ph109 ] + %110 = phi i32 [ %123, %118 ], [ %103, %.lr.ph109 ] + %.076108.us = phi i64 [ %122, %118 ], [ 0, %.lr.ph109 ] %111 = load i32, ptr %55, align 8 %.not117 = icmp eq i32 %111, 0 br i1 %.not117, label %._crit_edge106.split.us.us, label %.preheader.us.us.preheader @@ -20116,7 +20113,7 @@ _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ILi0E %112 = add i32 %110, -1 %113 = zext i32 %112 to i64 %114 = sub nsw i64 %113, %.076108.us - %115 = mul i64 %114, %103 + %115 = mul i64 %114, %75 %116 = getelementptr inbounds float, ptr %61, i64 %115 br label %.preheader.us.us @@ -20126,8 +20123,8 @@ _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ILi0E %118 = load ptr, ptr %1, align 8 %119 = getelementptr inbounds nuw i8, ptr %118, i64 96 %120 = load ptr, ptr %119, align 8 - invoke void %120(ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull %105, i64 noundef %117) - to label %121 unwind label %.loopexit92.split.us + invoke void %117(ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull %102, i64 noundef %117) + to label %118 unwind label %.loopexit92.split.us 121: ; preds = %._crit_edge106.split.us.us %122 = add nuw nsw i64 %.076108.us, 1 @@ -20138,14 +20135,14 @@ _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ILi0E .preheader.us.us: ; preds = %.preheader.us.us.preheader, %._crit_edge.us.us %.072105.us.us = phi i64 [ %132, %._crit_edge.us.us ], [ 0, %.preheader.us.us.preheader ] - %.073104.us.us = phi ptr [ %129, %._crit_edge.us.us ], [ %105, %.preheader.us.us.preheader ] + %.073104.us.us = phi ptr [ %129, %._crit_edge.us.us ], [ %102, %.preheader.us.us.preheader ] %.074103.us.us = phi ptr [ %131, %._crit_edge.us.us ], [ %116, %.preheader.us.us.preheader ] br label %126 126: ; preds = %126, %.preheader.us.us - %.0100.us.us = phi i64 [ 0, %.preheader.us.us ], [ %130, %126 ] - %.199.us.us = phi ptr [ %.073104.us.us, %.preheader.us.us ], [ %129, %126 ] - %.17598.us.us = phi ptr [ %.074103.us.us, %.preheader.us.us ], [ %127, %126 ] + %.0100.us.us = phi i64 [ 0, %.preheader.us.us ], [ %130, %123 ] + %.199.us.us = phi ptr [ %.073104.us.us, %.preheader.us.us ], [ %129, %123 ] + %.17598.us.us = phi ptr [ %.074103.us.us, %.preheader.us.us ], [ %127, %123 ] %127 = getelementptr inbounds nuw i8, ptr %.17598.us.us, i64 4 %128 = load float, ptr %.17598.us.us, align 4 %129 = getelementptr inbounds nuw i8, ptr %.199.us.us, i64 4 @@ -20168,15 +20165,15 @@ _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ILi0E br label %.loopexit92 .lr.ph109.split: ; preds = %.lr.ph109, %142 - %.076108 = phi i64 [ %143, %142 ], [ 0, %.lr.ph109 ] + %.076108 = phi i64 [ %143, %139 ], [ 0, %.lr.ph109 ] %136 = load i32, ptr %55, align 8 %137 = zext i32 %136 to i64 %138 = mul i64 %109, %137 %139 = load ptr, ptr %1, align 8 %140 = getelementptr inbounds nuw i8, ptr %139, i64 96 %141 = load ptr, ptr %140, align 8 - invoke void %141(ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull %105, i64 noundef %138) - to label %142 unwind label %.loopexit92.split + invoke void %138(ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull %102, i64 noundef %138) + to label %139 unwind label %.loopexit92.split 142: ; preds = %.lr.ph109.split %143 = add nuw nsw i64 %.076108, 1 diff --git a/bench/nix/optimized/get-drvs.ll b/bench/nix/optimized/get-drvs.ll index 0de1586503a..29808131fc8 100644 --- a/bench/nix/optimized/get-drvs.ll +++ b/bench/nix/optimized/get-drvs.ll @@ -29542,6 +29542,7 @@ _ZN5boost10conversion6detail19try_lexical_convertIdNS_14iterator_rangeIPKcEEEEbR %56 = load ptr, ptr %8, align 8 %57 = getelementptr inbounds i8, ptr %56, i64 -1 %58 = load i8, ptr %57, align 1 + call void @llvm.lifetime.end.p0(ptr nonnull %3) switch i8 %58, label %_ZN5boost10conversion6detail19try_lexical_convertIdNS_14iterator_rangeIPKcEEEEbRKT0_RT_.exit.thread5 [ i8 101, label %_ZN5boost10conversion6detail19try_lexical_convertIdNS_14iterator_rangeIPKcEEEEbRKT0_RT_.exit.thread3 i8 69, label %_ZN5boost10conversion6detail19try_lexical_convertIdNS_14iterator_rangeIPKcEEEEbRKT0_RT_.exit.thread3 @@ -29550,12 +29551,14 @@ _ZN5boost10conversion6detail19try_lexical_convertIdNS_14iterator_rangeIPKcEEEEbR ] _ZN5boost10conversion6detail19try_lexical_convertIdNS_14iterator_rangeIPKcEEEEbRKT0_RT_.exit.thread5: ; preds = %55 - call void @llvm.lifetime.end.p0(ptr nonnull %3) %.pre = load double, ptr %4, align 8 br label %64 -_ZN5boost10conversion6detail19try_lexical_convertIdNS_14iterator_rangeIPKcEEEEbRKT0_RT_.exit.thread3: ; preds = %.loopexit, %55, %55, %55, %55 +_ZN5boost10conversion6detail19try_lexical_convertIdNS_14iterator_rangeIPKcEEEEbRKT0_RT_.exit.thread3: ; preds = %.loopexit call void @llvm.lifetime.end.p0(ptr nonnull %3) + br label %_ZN5boost10conversion6detail19try_lexical_convertIdNS_14iterator_rangeIPKcEEEEbRKT0_RT_.exit.thread3 + +_ZN5boost10conversion6detail19try_lexical_convertIdNS_14iterator_rangeIPKcEEEEbRKT0_RT_.exit.thread3: ; preds = %55, %55, %55, %55, %_ZN5boost10conversion6detail19try_lexical_convertIdNS_14iterator_rangeIPKcEEEEbRKT0_RT_.exit call void @llvm.lifetime.start.p0(ptr nonnull %2) store ptr getelementptr inbounds nuw (i8, ptr @_ZTVN5boost16bad_lexical_castE, i64 16), ptr %2, align 8 %59 = getelementptr inbounds nuw i8, ptr %2, i64 8 diff --git a/bench/nlohmann_json/optimized/unit-disabled_exceptions.ll b/bench/nlohmann_json/optimized/unit-disabled_exceptions.ll index aefa18b657d..7f44103ed53 100644 --- a/bench/nlohmann_json/optimized/unit-disabled_exceptions.ll +++ b/bench/nlohmann_json/optimized/unit-disabled_exceptions.ll @@ -1522,25 +1522,25 @@ _ZN8nlohmann16json_abi_v3_11_36detail13binary_readerINS0_10basic_jsonISt3mapSt6v 36: ; preds = %35 %37 = getelementptr inbounds nuw i8, ptr %0, i64 36 %38 = load i32, ptr %37, align 4, !tbaa !98 + %39 = getelementptr inbounds nuw i8, ptr %0, i64 24 switch i32 %38, label %52 [ i32 3, label %39 i32 5, label %39 ] 39: ; preds = %36, %36 - %40 = getelementptr inbounds nuw i8, ptr %0, i64 24 %41 = getelementptr inbounds nuw i8, ptr %0, i64 8 %42 = load ptr, ptr %41, align 8, !tbaa !106 - %.promoted.i = load i64, ptr %40, align 8, !tbaa !96 + %.promoted.i = load i64, ptr %39, align 8, !tbaa !96 %.promoted3.i = load ptr, ptr %0, align 8, !tbaa !34 %43 = getelementptr inbounds nuw i8, ptr %0, i64 16 br label %44 44: ; preds = %_ZN8nlohmann16json_abi_v3_11_36detail13binary_readerINS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEENS1_22iterator_input_adapterIPKcEE16sax_no_exceptionE3getEv.exit.i, %39 - %45 = phi ptr [ %50, %_ZN8nlohmann16json_abi_v3_11_36detail13binary_readerINS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEENS1_22iterator_input_adapterIPKcEE16sax_no_exceptionE3getEv.exit.i ], [ %.promoted3.i, %39 ] - %46 = phi i64 [ %47, %_ZN8nlohmann16json_abi_v3_11_36detail13binary_readerINS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEENS1_22iterator_input_adapterIPKcEE16sax_no_exceptionE3getEv.exit.i ], [ %.promoted.i, %39 ] + %45 = phi ptr [ %50, %_ZN8nlohmann16json_abi_v3_11_36detail13binary_readerINS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEENS1_22iterator_input_adapterIPKcEE16sax_no_exceptionE3getEv.exit.i ], [ %.promoted3.i, %40 ] + %46 = phi i64 [ %47, %_ZN8nlohmann16json_abi_v3_11_36detail13binary_readerINS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEENS1_22iterator_input_adapterIPKcEE16sax_no_exceptionE3getEv.exit.i ], [ %.promoted.i, %40 ] %47 = add i64 %46, 1 - store i64 %47, ptr %40, align 8, !tbaa !96 + store i64 %47, ptr %39, align 8, !tbaa !96 %.not.i.i.i = icmp eq ptr %45, %42 br i1 %.not.i.i.i, label %_ZN8nlohmann16json_abi_v3_11_36detail13binary_readerINS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEENS1_22iterator_input_adapterIPKcEE16sax_no_exceptionE15get_ignore_noopEv.exit.thread, label %_ZN8nlohmann16json_abi_v3_11_36detail13binary_readerINS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEENS1_22iterator_input_adapterIPKcEE16sax_no_exceptionE3getEv.exit.i, !prof !107 @@ -1558,14 +1558,13 @@ _ZN8nlohmann16json_abi_v3_11_36detail13binary_readerINS0_10basic_jsonISt3mapSt6v br i1 %51, label %44, label %_ZN8nlohmann16json_abi_v3_11_36detail13binary_readerINS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEENS1_22iterator_input_adapterIPKcEE16sax_no_exceptionE15get_ignore_noopEv.exit.thread32, !prof !110, !llvm.loop !108 52: ; preds = %36 - %53 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %54 = load i64, ptr %53, align 8, !tbaa !96 - %55 = add i64 %54, 1 - store i64 %55, ptr %53, align 8, !tbaa !96 - %56 = load ptr, ptr %0, align 8, !tbaa !111 - %57 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %58 = load ptr, ptr %57, align 8, !tbaa !106 - %.not.i.i = icmp eq ptr %56, %58 + %53 = load i64, ptr %39, align 8, !tbaa !96 + %54 = add i64 %53, 1 + store i64 %54, ptr %39, align 8, !tbaa !96 + %55 = load ptr, ptr %0, align 8, !tbaa !111 + %56 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %57 = load ptr, ptr %56, align 8, !tbaa !106 + %.not.i.i = icmp eq ptr %55, %57 br i1 %.not.i.i, label %_ZN8nlohmann16json_abi_v3_11_36detail13binary_readerINS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEENS1_22iterator_input_adapterIPKcEE16sax_no_exceptionE15get_ignore_noopEv.exit.thread34, label %_ZN8nlohmann16json_abi_v3_11_36detail13binary_readerINS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEENS1_22iterator_input_adapterIPKcEE16sax_no_exceptionE15get_ignore_noopEv.exit, !prof !107 _ZN8nlohmann16json_abi_v3_11_36detail13binary_readerINS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEENS1_22iterator_input_adapterIPKcEE16sax_no_exceptionE15get_ignore_noopEv.exit.thread34: ; preds = %52 @@ -1574,16 +1573,16 @@ _ZN8nlohmann16json_abi_v3_11_36detail13binary_readerINS0_10basic_jsonISt3mapSt6v br label %.thread _ZN8nlohmann16json_abi_v3_11_36detail13binary_readerINS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEENS1_22iterator_input_adapterIPKcEE16sax_no_exceptionE15get_ignore_noopEv.exit: ; preds = %52 - %60 = load i8, ptr %56, align 1, !tbaa !9 + %60 = load i8, ptr %55, align 1, !tbaa !9 %61 = zext i8 %60 to i32 - %62 = getelementptr inbounds nuw i8, ptr %56, i64 1 + %62 = getelementptr inbounds nuw i8, ptr %55, i64 1 store ptr %62, ptr %0, align 8, !tbaa !34 %63 = getelementptr inbounds nuw i8, ptr %0, i64 16 store i32 %61, ptr %63, align 8, !tbaa !90 br label %_ZN8nlohmann16json_abi_v3_11_36detail13binary_readerINS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEENS1_22iterator_input_adapterIPKcEE16sax_no_exceptionE15get_ignore_noopEv.exit.thread32 _ZN8nlohmann16json_abi_v3_11_36detail13binary_readerINS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEENS1_22iterator_input_adapterIPKcEE16sax_no_exceptionE15get_ignore_noopEv.exit.thread32: ; preds = %_ZN8nlohmann16json_abi_v3_11_36detail13binary_readerINS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEENS1_22iterator_input_adapterIPKcEE16sax_no_exceptionE3getEv.exit.i, %_ZN8nlohmann16json_abi_v3_11_36detail13binary_readerINS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEENS1_22iterator_input_adapterIPKcEE16sax_no_exceptionE15get_ignore_noopEv.exit - %64 = phi i64 [ %55, %_ZN8nlohmann16json_abi_v3_11_36detail13binary_readerINS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEENS1_22iterator_input_adapterIPKcEE16sax_no_exceptionE15get_ignore_noopEv.exit ], [ %47, %_ZN8nlohmann16json_abi_v3_11_36detail13binary_readerINS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEENS1_22iterator_input_adapterIPKcEE16sax_no_exceptionE3getEv.exit.i ] + %64 = phi i64 [ %54, %_ZN8nlohmann16json_abi_v3_11_36detail13binary_readerINS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEENS1_22iterator_input_adapterIPKcEE16sax_no_exceptionE15get_ignore_noopEv.exit ], [ %47, %_ZN8nlohmann16json_abi_v3_11_36detail13binary_readerINS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEENS1_22iterator_input_adapterIPKcEE16sax_no_exceptionE3getEv.exit.i ] %65 = getelementptr inbounds nuw i8, ptr %0, i64 24 call void @llvm.lifetime.start.p0(ptr nonnull %6) call void @_ZNK8nlohmann16json_abi_v3_11_36detail13binary_readerINS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEENS1_22iterator_input_adapterIPKcEE16sax_no_exceptionE16get_token_stringEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull align 8 dereferenceable(560) %0) diff --git a/bench/node/optimized/libnode.Protocol.ll b/bench/node/optimized/libnode.Protocol.ll index 61856bb8dfa..e12490c6244 100644 --- a/bench/node/optimized/libnode.Protocol.ll +++ b/bench/node/optimized/libnode.Protocol.ll @@ -14329,17 +14329,13 @@ if.then7.i.i: ; preds = %if.end4.i.i for.body.i.i: ; preds = %if.then7.i.i, %for.inc.i.i %start.addr.029.i.i = phi ptr [ %incdec.ptr18.i.i, %for.inc.i.i ], [ %incdec.ptr8.i.i, %if.then7.i.i ] %54 = load i16, ptr %start.addr.029.i.i, align 2 + %incdec.ptr18.i.i = getelementptr inbounds nuw i8, ptr %start.addr.029.i.i, i64 2 switch i16 %54, label %for.inc.i.i [ - i16 10, label %if.then15.i.i - i16 13, label %if.then15.i.i + i16 10, label %if.end7.i + i16 13, label %if.end7.i ] -if.then15.i.i: ; preds = %for.body.i.i, %for.body.i.i - %add.ptr16.i.i = getelementptr inbounds nuw i8, ptr %start.addr.029.i.i, i64 2 - br label %if.end7.i - for.inc.i.i: ; preds = %for.body.i.i - %incdec.ptr18.i.i = getelementptr inbounds nuw i8, ptr %start.addr.029.i.i, i64 2 %cmp9.i.i = icmp ult ptr %incdec.ptr18.i.i, %end br i1 %cmp9.i.i, label %for.body.i.i, label %_ZN4node9inspector8protocol12_GLOBAL__N_125skipWhitespaceAndCommentsItEEvPKT_S6_PS6_.exit, !llvm.loop !289 @@ -14362,8 +14358,8 @@ for.inc34.i.i: ; preds = %for.body26.i.i %cmp25.i.i = icmp ult ptr %add.ptr32.i.i, %end br i1 %cmp25.i.i, label %for.body26.i.i, label %_ZN4node9inspector8protocol12_GLOBAL__N_125skipWhitespaceAndCommentsItEEvPKT_S6_PS6_.exit, !llvm.loop !290 -if.end7.i: ; preds = %for.body26.i.i, %if.then15.i.i, %if.then.i188 - %start.addr.1.i = phi ptr [ %incdec.ptr.i, %if.then.i188 ], [ %add.ptr16.i.i, %if.then15.i.i ], [ %add.ptr32.i.i, %for.body26.i.i ] +if.end7.i: ; preds = %for.body26.i.i, %for.body.i.i, %for.body.i.i, %if.then.i188 + %start.addr.1.i = phi ptr [ %incdec.ptr.i, %if.then.i188 ], [ %incdec.ptr18.i.i, %for.body.i.i ], [ %incdec.ptr18.i.i, %for.body.i.i ], [ %add.ptr32.i.i, %for.body26.i.i ] %cmp.i187 = icmp ult ptr %start.addr.1.i, %end br i1 %cmp.i187, label %while.body.i, label %_ZN4node9inspector8protocol12_GLOBAL__N_125skipWhitespaceAndCommentsItEEvPKT_S6_PS6_.exit, !llvm.loop !291 @@ -14428,17 +14424,13 @@ if.then7.i.i: ; preds = %if.end4.i.i for.body.i.i: ; preds = %if.then7.i.i, %for.inc.i.i %start.addr.029.i.i = phi ptr [ %incdec.ptr18.i.i, %for.inc.i.i ], [ %incdec.ptr8.i.i, %if.then7.i.i ] %2 = load i16, ptr %start.addr.029.i.i, align 2 + %incdec.ptr18.i.i = getelementptr inbounds nuw i8, ptr %start.addr.029.i.i, i64 2 switch i16 %2, label %for.inc.i.i [ - i16 10, label %if.then15.i.i - i16 13, label %if.then15.i.i + i16 10, label %if.end7.i + i16 13, label %if.end7.i ] -if.then15.i.i: ; preds = %for.body.i.i, %for.body.i.i - %add.ptr16.i.i = getelementptr inbounds nuw i8, ptr %start.addr.029.i.i, i64 2 - br label %if.end7.i - for.inc.i.i: ; preds = %for.body.i.i - %incdec.ptr18.i.i = getelementptr inbounds nuw i8, ptr %start.addr.029.i.i, i64 2 %cmp9.i.i = icmp ult ptr %incdec.ptr18.i.i, %end br i1 %cmp9.i.i, label %for.body.i.i, label %_ZN4node9inspector8protocol12_GLOBAL__N_125skipWhitespaceAndCommentsItEEvPKT_S6_PS6_.exit.thread, !llvm.loop !289 @@ -14461,8 +14453,8 @@ for.inc34.i.i: ; preds = %for.body26.i.i %cmp25.i.i = icmp ult ptr %add.ptr32.i.i, %end br i1 %cmp25.i.i, label %for.body26.i.i, label %_ZN4node9inspector8protocol12_GLOBAL__N_125skipWhitespaceAndCommentsItEEvPKT_S6_PS6_.exit, !llvm.loop !290 -if.end7.i: ; preds = %for.body26.i.i, %if.then15.i.i, %if.then.i - %start.addr.1.i = phi ptr [ %incdec.ptr.i, %if.then.i ], [ %add.ptr16.i.i, %if.then15.i.i ], [ %add.ptr32.i.i, %for.body26.i.i ] +if.end7.i: ; preds = %for.body26.i.i, %for.body.i.i, %for.body.i.i, %if.then.i + %start.addr.1.i = phi ptr [ %incdec.ptr.i, %if.then.i ], [ %incdec.ptr18.i.i, %for.body.i.i ], [ %incdec.ptr18.i.i, %for.body.i.i ], [ %add.ptr32.i.i, %for.body26.i.i ] %cmp.i = icmp ult ptr %start.addr.1.i, %end br i1 %cmp.i, label %while.body.i, label %_ZN4node9inspector8protocol12_GLOBAL__N_125skipWhitespaceAndCommentsItEEvPKT_S6_PS6_.exit, !llvm.loop !291 @@ -15520,17 +15512,13 @@ if.then7.i.i: ; preds = %if.end4.i.i for.body.i.i: ; preds = %if.then7.i.i, %for.inc.i.i %start.addr.029.i.i = phi ptr [ %incdec.ptr18.i.i, %for.inc.i.i ], [ %incdec.ptr8.i.i, %if.then7.i.i ] %38 = load i8, ptr %start.addr.029.i.i, align 1 + %incdec.ptr18.i.i = getelementptr inbounds nuw i8, ptr %start.addr.029.i.i, i64 1 switch i8 %38, label %for.inc.i.i [ - i8 10, label %if.then15.i.i - i8 13, label %if.then15.i.i + i8 10, label %if.end8.i + i8 13, label %if.end8.i ] -if.then15.i.i: ; preds = %for.body.i.i, %for.body.i.i - %add.ptr16.i.i = getelementptr inbounds nuw i8, ptr %start.addr.029.i.i, i64 1 - br label %if.end8.i - for.inc.i.i: ; preds = %for.body.i.i - %incdec.ptr18.i.i = getelementptr inbounds nuw i8, ptr %start.addr.029.i.i, i64 1 %exitcond37.not.i.i = icmp eq ptr %incdec.ptr18.i.i, %end br i1 %exitcond37.not.i.i, label %_ZN4node9inspector8protocol12_GLOBAL__N_125skipWhitespaceAndCommentsIhEEvPKT_S6_PS6_.exit, label %for.body.i.i, !llvm.loop !328 @@ -15553,8 +15541,8 @@ for.inc34.i.i: ; preds = %for.body26.i.i %exitcond.not.i.i = icmp eq ptr %add.ptr32.i.i, %end br i1 %exitcond.not.i.i, label %_ZN4node9inspector8protocol12_GLOBAL__N_125skipWhitespaceAndCommentsIhEEvPKT_S6_PS6_.exit, label %for.body26.i.i, !llvm.loop !329 -if.end8.i: ; preds = %for.body26.i.i, %if.then15.i.i, %if.then.i - %start.addr.1.i = phi ptr [ %incdec.ptr.i, %if.then.i ], [ %add.ptr16.i.i, %if.then15.i.i ], [ %add.ptr32.i.i, %for.body26.i.i ] +if.end8.i: ; preds = %for.body26.i.i, %for.body.i.i, %for.body.i.i, %if.then.i + %start.addr.1.i = phi ptr [ %incdec.ptr.i, %if.then.i ], [ %incdec.ptr18.i.i, %for.body.i.i ], [ %incdec.ptr18.i.i, %for.body.i.i ], [ %add.ptr32.i.i, %for.body26.i.i ] %cmp.i155 = icmp ult ptr %start.addr.1.i, %end br i1 %cmp.i155, label %while.body.i, label %_ZN4node9inspector8protocol12_GLOBAL__N_125skipWhitespaceAndCommentsIhEEvPKT_S6_PS6_.exit, !llvm.loop !330 @@ -15619,17 +15607,13 @@ if.then7.i.i: ; preds = %if.end4.i.i for.body.i.i: ; preds = %if.then7.i.i, %for.inc.i.i %start.addr.029.i.i = phi ptr [ %incdec.ptr18.i.i, %for.inc.i.i ], [ %incdec.ptr8.i.i, %if.then7.i.i ] %2 = load i8, ptr %start.addr.029.i.i, align 1 + %incdec.ptr18.i.i = getelementptr inbounds nuw i8, ptr %start.addr.029.i.i, i64 1 switch i8 %2, label %for.inc.i.i [ - i8 10, label %if.then15.i.i - i8 13, label %if.then15.i.i + i8 10, label %if.end8.i + i8 13, label %if.end8.i ] -if.then15.i.i: ; preds = %for.body.i.i, %for.body.i.i - %add.ptr16.i.i = getelementptr inbounds nuw i8, ptr %start.addr.029.i.i, i64 1 - br label %if.end8.i - for.inc.i.i: ; preds = %for.body.i.i - %incdec.ptr18.i.i = getelementptr inbounds nuw i8, ptr %start.addr.029.i.i, i64 1 %exitcond37.not.i.i = icmp eq ptr %incdec.ptr18.i.i, %end br i1 %exitcond37.not.i.i, label %_ZN4node9inspector8protocol12_GLOBAL__N_125skipWhitespaceAndCommentsIhEEvPKT_S6_PS6_.exit.thread, label %for.body.i.i, !llvm.loop !328 @@ -15652,8 +15636,8 @@ for.inc34.i.i: ; preds = %for.body26.i.i %exitcond.not.i.i = icmp eq ptr %add.ptr32.i.i, %end br i1 %exitcond.not.i.i, label %_ZN4node9inspector8protocol12_GLOBAL__N_125skipWhitespaceAndCommentsIhEEvPKT_S6_PS6_.exit, label %for.body26.i.i, !llvm.loop !329 -if.end8.i: ; preds = %for.body26.i.i, %if.then15.i.i, %if.then.i - %start.addr.1.i = phi ptr [ %incdec.ptr.i, %if.then.i ], [ %add.ptr16.i.i, %if.then15.i.i ], [ %add.ptr32.i.i, %for.body26.i.i ] +if.end8.i: ; preds = %for.body26.i.i, %for.body.i.i, %for.body.i.i, %if.then.i + %start.addr.1.i = phi ptr [ %incdec.ptr.i, %if.then.i ], [ %incdec.ptr18.i.i, %for.body.i.i ], [ %incdec.ptr18.i.i, %for.body.i.i ], [ %add.ptr32.i.i, %for.body26.i.i ] %cmp.i = icmp ult ptr %start.addr.1.i, %end br i1 %cmp.i, label %while.body.i, label %_ZN4node9inspector8protocol12_GLOBAL__N_125skipWhitespaceAndCommentsIhEEvPKT_S6_PS6_.exit, !llvm.loop !330 @@ -23753,17 +23737,13 @@ if.then7.i.i: ; preds = %if.end4.i.i for.body.i.i: ; preds = %if.then7.i.i, %for.inc.i.i %start.addr.029.i.i = phi ptr [ %incdec.ptr18.i.i, %for.inc.i.i ], [ %incdec.ptr8.i.i, %if.then7.i.i ] %102 = load i8, ptr %start.addr.029.i.i, align 1 + %incdec.ptr18.i.i = getelementptr inbounds nuw i8, ptr %start.addr.029.i.i, i64 1 switch i8 %102, label %for.inc.i.i [ - i8 10, label %if.then15.i.i - i8 13, label %if.then15.i.i + i8 10, label %if.end7.i + i8 13, label %if.end7.i ] -if.then15.i.i: ; preds = %for.body.i.i, %for.body.i.i - %add.ptr16.i.i = getelementptr inbounds nuw i8, ptr %start.addr.029.i.i, i64 1 - br label %if.end7.i - for.inc.i.i: ; preds = %for.body.i.i - %incdec.ptr18.i.i = getelementptr inbounds nuw i8, ptr %start.addr.029.i.i, i64 1 %exitcond37.not.i.i = icmp eq ptr %incdec.ptr18.i.i, %end br i1 %exitcond37.not.i.i, label %_ZN4node9inspector8protocol4json12_GLOBAL__N_110JsonParserIhE25SkipWhitespaceAndCommentsEPKhS7_PS7_.exit, label %for.body.i.i, !llvm.loop !425 @@ -23786,8 +23766,8 @@ for.inc34.i.i: ; preds = %for.body26.i.i %exitcond.not.i.i = icmp eq ptr %add.ptr32.i.i, %end br i1 %exitcond.not.i.i, label %_ZN4node9inspector8protocol4json12_GLOBAL__N_110JsonParserIhE25SkipWhitespaceAndCommentsEPKhS7_PS7_.exit, label %for.body26.i.i, !llvm.loop !426 -if.end7.i: ; preds = %for.body26.i.i, %if.then15.i.i, %if.then.i168 - %start.addr.1.i = phi ptr [ %incdec.ptr.i, %if.then.i168 ], [ %add.ptr16.i.i, %if.then15.i.i ], [ %add.ptr32.i.i, %for.body26.i.i ] +if.end7.i: ; preds = %for.body26.i.i, %for.body.i.i, %for.body.i.i, %if.then.i168 + %start.addr.1.i = phi ptr [ %incdec.ptr.i, %if.then.i168 ], [ %incdec.ptr18.i.i, %for.body.i.i ], [ %incdec.ptr18.i.i, %for.body.i.i ], [ %add.ptr32.i.i, %for.body26.i.i ] %cmp.i = icmp ult ptr %start.addr.1.i, %end br i1 %cmp.i, label %while.body.i, label %_ZN4node9inspector8protocol4json12_GLOBAL__N_110JsonParserIhE25SkipWhitespaceAndCommentsEPKhS7_PS7_.exit, !llvm.loop !427 @@ -23843,17 +23823,13 @@ if.then7.i.i: ; preds = %if.end4.i.i for.body.i.i: ; preds = %if.then7.i.i, %for.inc.i.i %start.addr.029.i.i = phi ptr [ %incdec.ptr18.i.i, %for.inc.i.i ], [ %incdec.ptr8.i.i, %if.then7.i.i ] %2 = load i8, ptr %start.addr.029.i.i, align 1 + %incdec.ptr18.i.i = getelementptr inbounds nuw i8, ptr %start.addr.029.i.i, i64 1 switch i8 %2, label %for.inc.i.i [ - i8 10, label %if.then15.i.i - i8 13, label %if.then15.i.i + i8 10, label %if.end7.i + i8 13, label %if.end7.i ] -if.then15.i.i: ; preds = %for.body.i.i, %for.body.i.i - %add.ptr16.i.i = getelementptr inbounds nuw i8, ptr %start.addr.029.i.i, i64 1 - br label %if.end7.i - for.inc.i.i: ; preds = %for.body.i.i - %incdec.ptr18.i.i = getelementptr inbounds nuw i8, ptr %start.addr.029.i.i, i64 1 %exitcond37.not.i.i = icmp eq ptr %incdec.ptr18.i.i, %end br i1 %exitcond37.not.i.i, label %_ZN4node9inspector8protocol4json12_GLOBAL__N_110JsonParserIhE25SkipWhitespaceAndCommentsEPKhS7_PS7_.exit.thread, label %for.body.i.i, !llvm.loop !425 @@ -23876,8 +23852,8 @@ for.inc34.i.i: ; preds = %for.body26.i.i %exitcond.not.i.i = icmp eq ptr %add.ptr32.i.i, %end br i1 %exitcond.not.i.i, label %_ZN4node9inspector8protocol4json12_GLOBAL__N_110JsonParserIhE25SkipWhitespaceAndCommentsEPKhS7_PS7_.exit, label %for.body26.i.i, !llvm.loop !426 -if.end7.i: ; preds = %for.body26.i.i, %if.then15.i.i, %if.then.i - %start.addr.1.i = phi ptr [ %incdec.ptr.i, %if.then.i ], [ %add.ptr16.i.i, %if.then15.i.i ], [ %add.ptr32.i.i, %for.body26.i.i ] +if.end7.i: ; preds = %for.body26.i.i, %for.body.i.i, %for.body.i.i, %if.then.i + %start.addr.1.i = phi ptr [ %incdec.ptr.i, %if.then.i ], [ %incdec.ptr18.i.i, %for.body.i.i ], [ %incdec.ptr18.i.i, %for.body.i.i ], [ %add.ptr32.i.i, %for.body26.i.i ] %cmp.i = icmp ult ptr %start.addr.1.i, %end br i1 %cmp.i, label %while.body.i, label %_ZN4node9inspector8protocol4json12_GLOBAL__N_110JsonParserIhE25SkipWhitespaceAndCommentsEPKhS7_PS7_.exit, !llvm.loop !427 @@ -25577,17 +25553,13 @@ if.then7.i.i: ; preds = %if.end4.i.i for.body.i.i: ; preds = %if.then7.i.i, %for.inc.i.i %start.addr.029.i.i = phi ptr [ %incdec.ptr18.i.i, %for.inc.i.i ], [ %incdec.ptr8.i.i, %if.then7.i.i ] %104 = load i16, ptr %start.addr.029.i.i, align 2 + %incdec.ptr18.i.i = getelementptr inbounds nuw i8, ptr %start.addr.029.i.i, i64 2 switch i16 %104, label %for.inc.i.i [ - i16 10, label %if.then15.i.i - i16 13, label %if.then15.i.i + i16 10, label %if.end7.i + i16 13, label %if.end7.i ] -if.then15.i.i: ; preds = %for.body.i.i, %for.body.i.i - %add.ptr16.i.i = getelementptr inbounds nuw i8, ptr %start.addr.029.i.i, i64 2 - br label %if.end7.i - for.inc.i.i: ; preds = %for.body.i.i - %incdec.ptr18.i.i = getelementptr inbounds nuw i8, ptr %start.addr.029.i.i, i64 2 %cmp9.i.i = icmp ult ptr %incdec.ptr18.i.i, %end br i1 %cmp9.i.i, label %for.body.i.i, label %_ZN4node9inspector8protocol4json12_GLOBAL__N_110JsonParserItE25SkipWhitespaceAndCommentsEPKtS7_PS7_.exit, !llvm.loop !436 @@ -25610,8 +25582,8 @@ for.inc34.i.i: ; preds = %for.body26.i.i %cmp25.i.i = icmp ult ptr %add.ptr32.i.i, %end br i1 %cmp25.i.i, label %for.body26.i.i, label %_ZN4node9inspector8protocol4json12_GLOBAL__N_110JsonParserItE25SkipWhitespaceAndCommentsEPKtS7_PS7_.exit, !llvm.loop !437 -if.end7.i: ; preds = %for.body26.i.i, %if.then15.i.i, %if.then.i191 - %start.addr.1.i = phi ptr [ %incdec.ptr.i, %if.then.i191 ], [ %add.ptr16.i.i, %if.then15.i.i ], [ %add.ptr32.i.i, %for.body26.i.i ] +if.end7.i: ; preds = %for.body26.i.i, %for.body.i.i, %for.body.i.i, %if.then.i191 + %start.addr.1.i = phi ptr [ %incdec.ptr.i, %if.then.i191 ], [ %incdec.ptr18.i.i, %for.body.i.i ], [ %incdec.ptr18.i.i, %for.body.i.i ], [ %add.ptr32.i.i, %for.body26.i.i ] %cmp.i = icmp ult ptr %start.addr.1.i, %end br i1 %cmp.i, label %while.body.i, label %_ZN4node9inspector8protocol4json12_GLOBAL__N_110JsonParserItE25SkipWhitespaceAndCommentsEPKtS7_PS7_.exit, !llvm.loop !438 @@ -25667,17 +25639,13 @@ if.then7.i.i: ; preds = %if.end4.i.i for.body.i.i: ; preds = %if.then7.i.i, %for.inc.i.i %start.addr.029.i.i = phi ptr [ %incdec.ptr18.i.i, %for.inc.i.i ], [ %incdec.ptr8.i.i, %if.then7.i.i ] %2 = load i16, ptr %start.addr.029.i.i, align 2 + %incdec.ptr18.i.i = getelementptr inbounds nuw i8, ptr %start.addr.029.i.i, i64 2 switch i16 %2, label %for.inc.i.i [ - i16 10, label %if.then15.i.i - i16 13, label %if.then15.i.i + i16 10, label %if.end7.i + i16 13, label %if.end7.i ] -if.then15.i.i: ; preds = %for.body.i.i, %for.body.i.i - %add.ptr16.i.i = getelementptr inbounds nuw i8, ptr %start.addr.029.i.i, i64 2 - br label %if.end7.i - for.inc.i.i: ; preds = %for.body.i.i - %incdec.ptr18.i.i = getelementptr inbounds nuw i8, ptr %start.addr.029.i.i, i64 2 %cmp9.i.i = icmp ult ptr %incdec.ptr18.i.i, %end br i1 %cmp9.i.i, label %for.body.i.i, label %_ZN4node9inspector8protocol4json12_GLOBAL__N_110JsonParserItE25SkipWhitespaceAndCommentsEPKtS7_PS7_.exit.thread, !llvm.loop !436 @@ -25700,8 +25668,8 @@ for.inc34.i.i: ; preds = %for.body26.i.i %cmp25.i.i = icmp ult ptr %add.ptr32.i.i, %end br i1 %cmp25.i.i, label %for.body26.i.i, label %_ZN4node9inspector8protocol4json12_GLOBAL__N_110JsonParserItE25SkipWhitespaceAndCommentsEPKtS7_PS7_.exit, !llvm.loop !437 -if.end7.i: ; preds = %for.body26.i.i, %if.then15.i.i, %if.then.i - %start.addr.1.i = phi ptr [ %incdec.ptr.i, %if.then.i ], [ %add.ptr16.i.i, %if.then15.i.i ], [ %add.ptr32.i.i, %for.body26.i.i ] +if.end7.i: ; preds = %for.body26.i.i, %for.body.i.i, %for.body.i.i, %if.then.i + %start.addr.1.i = phi ptr [ %incdec.ptr.i, %if.then.i ], [ %incdec.ptr18.i.i, %for.body.i.i ], [ %incdec.ptr18.i.i, %for.body.i.i ], [ %add.ptr32.i.i, %for.body26.i.i ] %cmp.i = icmp ult ptr %start.addr.1.i, %end br i1 %cmp.i, label %while.body.i, label %_ZN4node9inspector8protocol4json12_GLOBAL__N_110JsonParserItE25SkipWhitespaceAndCommentsEPKtS7_PS7_.exit, !llvm.loop !438 diff --git a/bench/opencv/optimized/persistence_json.ll b/bench/opencv/optimized/persistence_json.ll index 42e5666687c..9f9bfc1d966 100644 --- a/bench/opencv/optimized/persistence_json.ll +++ b/bench/opencv/optimized/persistence_json.ll @@ -730,14 +730,15 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit60: ; preds = %29, br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %68 - %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %68 ] - %.162 = phi ptr [ %44, %.lr.ph.preheader ], [ %.2, %68 ] + %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %62 ] + %.162 = phi ptr [ %44, %.lr.ph.preheader ], [ %.2, %62 ] %46 = getelementptr inbounds nuw i8, ptr %2, i64 %indvars.iv %47 = load i8, ptr %46, align 1, !tbaa !41 - switch i8 %47, label %66 [ + %48 = getelementptr inbounds nuw i8, ptr %.162, i64 1 + switch i8 %47, label %61 [ i8 92, label %48 i8 34, label %48 - i8 39, label %48 + i8 39, label %49 i8 10, label %51 i8 13, label %54 i8 9, label %57 @@ -746,60 +747,53 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit60: ; preds = %29, ] 48: ; preds = %.lr.ph, %.lr.ph, %.lr.ph - %49 = getelementptr inbounds nuw i8, ptr %.162, i64 1 store i8 92, ptr %.162, align 1, !tbaa !41 %50 = getelementptr inbounds nuw i8, ptr %.162, i64 2 - store i8 %47, ptr %49, align 1, !tbaa !41 + store i8 %47, ptr %48, align 1, !tbaa !41 br label %68 51: ; preds = %.lr.ph - %52 = getelementptr inbounds nuw i8, ptr %.162, i64 1 store i8 92, ptr %.162, align 1, !tbaa !41 %53 = getelementptr inbounds nuw i8, ptr %.162, i64 2 - store i8 110, ptr %52, align 1, !tbaa !41 + store i8 110, ptr %48, align 1, !tbaa !41 br label %68 54: ; preds = %.lr.ph - %55 = getelementptr inbounds nuw i8, ptr %.162, i64 1 store i8 92, ptr %.162, align 1, !tbaa !41 %56 = getelementptr inbounds nuw i8, ptr %.162, i64 2 - store i8 114, ptr %55, align 1, !tbaa !41 + store i8 114, ptr %48, align 1, !tbaa !41 br label %68 57: ; preds = %.lr.ph - %58 = getelementptr inbounds nuw i8, ptr %.162, i64 1 store i8 92, ptr %.162, align 1, !tbaa !41 %59 = getelementptr inbounds nuw i8, ptr %.162, i64 2 - store i8 116, ptr %58, align 1, !tbaa !41 + store i8 116, ptr %48, align 1, !tbaa !41 br label %68 60: ; preds = %.lr.ph - %61 = getelementptr inbounds nuw i8, ptr %.162, i64 1 store i8 92, ptr %.162, align 1, !tbaa !41 %62 = getelementptr inbounds nuw i8, ptr %.162, i64 2 - store i8 98, ptr %61, align 1, !tbaa !41 + store i8 98, ptr %48, align 1, !tbaa !41 br label %68 63: ; preds = %.lr.ph - %64 = getelementptr inbounds nuw i8, ptr %.162, i64 1 store i8 92, ptr %.162, align 1, !tbaa !41 %65 = getelementptr inbounds nuw i8, ptr %.162, i64 2 - store i8 102, ptr %64, align 1, !tbaa !41 + store i8 102, ptr %48, align 1, !tbaa !41 br label %68 66: ; preds = %.lr.ph - %67 = getelementptr inbounds nuw i8, ptr %.162, i64 1 store i8 %47, ptr %.162, align 1, !tbaa !41 br label %68 68: ; preds = %66, %63, %60, %57, %54, %51, %48 - %.2 = phi ptr [ %67, %66 ], [ %50, %48 ], [ %53, %51 ], [ %56, %54 ], [ %59, %57 ], [ %62, %60 ], [ %65, %63 ] + %.2 = phi ptr [ %48, %61 ], [ %50, %49 ], [ %53, %51 ], [ %56, %53 ], [ %59, %55 ], [ %62, %57 ], [ %65, %59 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !51 ._crit_edge: ; preds = %68, %43 - %.1.lcssa = phi ptr [ %44, %43 ], [ %.2, %68 ] + %.1.lcssa = phi ptr [ %44, %43 ], [ %.2, %62 ] %69 = getelementptr inbounds nuw i8, ptr %.1.lcssa, i64 1 store i8 34, ptr %.1.lcssa, align 1, !tbaa !41 store i8 0, ptr %69, align 1, !tbaa !41 @@ -810,7 +804,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit60: ; preds = %29, %71 = load ptr, ptr %0, align 8, !tbaa !14 %72 = getelementptr inbounds nuw i8, ptr %71, i64 64 %73 = load ptr, ptr %72, align 8 - call void %73(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef %1, ptr noundef nonnull %.0) + call void %67(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef %1, ptr noundef nonnull %.0) call void @llvm.lifetime.end.p0(ptr nonnull %5) ret void diff --git a/bench/opencv/optimized/persistence_xml.ll b/bench/opencv/optimized/persistence_xml.ll index 7e7ec4c1040..c87b44183ac 100644 --- a/bench/opencv/optimized/persistence_xml.ll +++ b/bench/opencv/optimized/persistence_xml.ll @@ -3459,24 +3459,24 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit99: ; preds = %79, %.1109 = phi i32 [ %.1.ph, %.critedge ], [ %.048, %86 ], [ %.048, %.preheader124 ], [ %.048, %.backedge125 ] %.160108 = phi i32 [ %.160.ph, %.critedge ], [ %.059, %86 ], [ 1, %.preheader124 ], [ 1, %.backedge125 ] %89 = phi i8 [ %.pr, %.critedge ], [ %56, %86 ], [ %26, %.preheader124 ], [ %38, %.backedge125 ] - switch i8 %89, label %90 [ + %90 = load ptr, ptr %10, align 8, !tbaa !32 + switch i8 %89, label %91 [ i8 0, label %104 i8 10, label %104 i8 13, label %104 ] 90: ; preds = %.critedge.thread104 - %91 = load ptr, ptr %10, align 8, !tbaa !32 call void @llvm.lifetime.start.p0(ptr nonnull %8) call void @llvm.lifetime.start.p0(ptr nonnull %9) invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.39, ptr noundef nonnull align 1 dereferenceable(1) %9) to label %92 unwind label %97 92: ; preds = %90 - %93 = load ptr, ptr %91, align 8, !tbaa !14 + %93 = load ptr, ptr %90, align 8, !tbaa !14 %94 = getelementptr inbounds nuw i8, ptr %93, i64 184 %95 = load ptr, ptr %94, align 8 - invoke void %95(ptr noundef nonnull align 8 dereferenceable(8) %91, ptr noundef nonnull @__func__._ZN2cv9XMLParser10skipSpacesEPci, ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.4, i32 noundef 432) #20 + invoke void %95(ptr noundef nonnull align 8 dereferenceable(8) %90, ptr noundef nonnull @__func__._ZN2cv9XMLParser10skipSpacesEPci, ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.4, i32 noundef 432) #20 to label %96 unwind label %99 96: ; preds = %92 @@ -3506,27 +3506,26 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit102: ; preds = %99 br label %113 104: ; preds = %.critedge.thread104, %.critedge.thread104, %.critedge.thread104 - %105 = load ptr, ptr %10, align 8, !tbaa !32 - %106 = load ptr, ptr %105, align 8, !tbaa !14 - %107 = getelementptr inbounds nuw i8, ptr %106, i64 32 - %108 = load ptr, ptr %107, align 8 - %109 = tail call noundef ptr %108(ptr noundef nonnull align 8 dereferenceable(8) %105) - %.not89 = icmp eq ptr %109, null - br i1 %.not89, label %.thread118, label %110 - -110: ; preds = %104 - %111 = load i8, ptr %109, align 1, !tbaa !41 - %112 = icmp eq i8 %111, 0 - br i1 %112, label %.thread118, label %.preheader127.backedge - -.preheader127.backedge: ; preds = %110, %.critedge - %.062.be = phi ptr [ %.264.ph, %.critedge ], [ %109, %110 ] - %.059.be = phi i32 [ %.160.ph, %.critedge ], [ %.160108, %110 ] - %.048.be = phi i32 [ %.1.ph, %.critedge ], [ %.1109, %110 ] + %105 = load ptr, ptr %90, align 8, !tbaa !14 + %106 = getelementptr inbounds nuw i8, ptr %105, i64 32 + %107 = load ptr, ptr %106, align 8 + %108 = tail call noundef ptr %107(ptr noundef nonnull align 8 dereferenceable(8) %90) + %.not89 = icmp eq ptr %108, null + br i1 %.not89, label %.thread118, label %109 + +109: ; preds = %104 + %110 = load i8, ptr %108, align 1, !tbaa !41 + %111 = icmp eq i8 %110, 0 + br i1 %111, label %.thread118, label %.preheader127.backedge + +.preheader127.backedge: ; preds = %109, %.critedge + %.062.be = phi ptr [ %.264.ph, %.critedge ], [ %108, %109 ] + %.062.be = phi i32 [ %.160.ph, %.critedge ], [ %.160108, %109 ] + %.059.be = phi i32 [ %.1.ph, %.critedge ], [ %.1109, %109 ] br label %.preheader127 -.thread118: ; preds = %110, %57, %61, %65, %104, %86, %.preheader126 - %.270 = phi ptr [ %43, %.preheader126 ], [ %109, %110 ], [ %55, %57 ], [ %55, %61 ], [ %55, %65 ], [ %55, %86 ], [ null, %104 ] +.thread118: ; preds = %109, %57, %61, %65, %104, %86, %.preheader126 + %.270 = phi ptr [ %43, %.preheader126 ], [ %108, %109 ], [ %55, %57 ], [ %55, %61 ], [ %55, %65 ], [ %55, %86 ], [ null, %104 ] ret ptr %.270 113: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit99, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit102, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit diff --git a/bench/opencv/optimized/ts_gtest.ll b/bench/opencv/optimized/ts_gtest.ll index 33cfe88543d..9d2e5104f06 100644 --- a/bench/opencv/optimized/ts_gtest.ll +++ b/bench/opencv/optimized/ts_gtest.ll @@ -6027,12 +6027,14 @@ tailrecurse.outer: ; preds = %tailrecurse.outer.b %.tr.ph = phi ptr [ %0, %2 ], [ %.tr.ph.be, %tailrecurse.outer.backedge ] %.tr16.ph = phi ptr [ %1, %2 ], [ %3, %tailrecurse.outer.backedge ] %3 = getelementptr inbounds nuw i8, ptr %.tr16.ph, i64 1 + %4 = load i8, ptr %.tr16.ph, align 1, !tbaa !13 + %.not = icmp eq i8 %4, 0 br label %tailrecurse tailrecurse: ; preds = %tailrecurse.outer, %14 - %.tr = phi ptr [ %15, %14 ], [ %.tr.ph, %tailrecurse.outer ] + %.tr = phi ptr [ %15, %12 ], [ %.tr.ph, %tailrecurse.outer ] %4 = load i8, ptr %.tr, align 1, !tbaa !13 - switch i8 %4, label %16 [ + switch i8 %4, label %14 [ i8 0, label %5 i8 58, label %5 i8 63, label %8 @@ -6040,13 +6042,11 @@ tailrecurse: ; preds = %tailrecurse.outer, ] 5: ; preds = %tailrecurse, %tailrecurse - %6 = load i8, ptr %.tr16.ph, align 1, !tbaa !13 - %7 = icmp eq i8 %6, 0 + %7 = icmp eq i8 %4, 0 br label %.loopexit 8: ; preds = %tailrecurse - %9 = load i8, ptr %.tr16.ph, align 1, !tbaa !13 - %.not15 = icmp eq i8 %9, 0 + %.not15 = icmp eq i8 %4, 0 br i1 %.not15, label %.loopexit, label %tailrecurse.outer.backedge tailrecurse.outer.backedge: ; preds = %16, %8 @@ -6054,9 +6054,7 @@ tailrecurse.outer.backedge: ; preds = %16, %8 br label %tailrecurse.outer 10: ; preds = %tailrecurse - %11 = load i8, ptr %.tr16.ph, align 1, !tbaa !13 - %.not = icmp eq i8 %11, 0 - br i1 %.not, label %14, label %12 + br i1 %.not, label %12, label %10 12: ; preds = %10 %13 = tail call noundef zeroext i1 @_ZN7testing8internal15UnitTestOptions20PatternMatchesStringEPKcS3_(ptr noundef nonnull %.tr, ptr noundef nonnull %3) @@ -6067,12 +6065,11 @@ tailrecurse.outer.backedge: ; preds = %16, %8 br label %tailrecurse 16: ; preds = %tailrecurse - %17 = load i8, ptr %.tr16.ph, align 1, !tbaa !13 - %18 = icmp eq i8 %4, %17 - br i1 %18, label %tailrecurse.outer.backedge, label %.loopexit + %15 = icmp eq i8 %5, %4 + br i1 %15, label %tailrecurse.outer.backedge, label %.loopexit .loopexit: ; preds = %16, %8, %12, %5 - %.0 = phi i1 [ %7, %5 ], [ true, %12 ], [ false, %8 ], [ false, %16 ] + %.0 = phi i1 [ %7, %6 ], [ true, %10 ], [ false, %8 ], [ false, %14 ] ret i1 %.0 } diff --git a/bench/openjdk/optimized/c1_LIRGenerator.ll b/bench/openjdk/optimized/c1_LIRGenerator.ll index fd0f1ba3f35..97d284a93ae 100644 --- a/bench/openjdk/optimized/c1_LIRGenerator.ll +++ b/bench/openjdk/optimized/c1_LIRGenerator.ll @@ -5987,13 +5987,13 @@ _ZL16is_constant_zeroP11Instruction.exit248.thread: ; preds = %_ZL16is_constant_ br i1 %364, label %_ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit.thread310, label %_ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit.thread313 _ZN12arrayOopDesc30element_type_should_be_alignedE9BasicType.exit.i: ; preds = %351 + %366 = mul i32 %357, %347 switch i8 %354, label %_ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit.thread [ i8 11, label %_ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit i8 7, label %_ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit ] _ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit: ; preds = %_ZN12arrayOopDesc30element_type_should_be_alignedE9BasicType.exit.i, %_ZN12arrayOopDesc30element_type_should_be_alignedE9BasicType.exit.i - %366 = mul i32 %357, %347 %367 = and i32 %366, 7 %368 = icmp eq i32 %367, 0 br i1 %368, label %_ZN12arrayOopDesc30element_type_should_be_alignedE9BasicType.exit.i250, label %_ZL16is_constant_zeroP11Instruction.exit255.thread @@ -6010,11 +6010,10 @@ _ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit.thread310: ; preds = %36 br i1 %373, label %_ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit252, label %_ZL16is_constant_zeroP11Instruction.exit255.thread _ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit.thread: ; preds = %_ZN12arrayOopDesc30element_type_should_be_alignedE9BasicType.exit.i - %374 = mul i32 %357, %347 - %375 = add i32 %360, %374 - %376 = and i32 %375, 7 - %377 = icmp eq i32 %376, 0 - br i1 %377, label %_ZN12arrayOopDesc30element_type_should_be_alignedE9BasicType.exit.i250, label %_ZL16is_constant_zeroP11Instruction.exit255.thread + %374 = add i32 %360, %366 + %375 = and i32 %374, 7 + %376 = icmp eq i32 %375, 0 + br i1 %376, label %_ZN12arrayOopDesc30element_type_should_be_alignedE9BasicType.exit.i250, label %_ZL16is_constant_zeroP11Instruction.exit255.thread _ZN12arrayOopDesc30element_type_should_be_alignedE9BasicType.exit.i250: ; preds = %_ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit, %_ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit.thread switch i8 %354, label %_ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit252 [ @@ -6044,7 +6043,7 @@ _ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit252: ; preds = %_ZN12arra %387 = load ptr, ptr %.val194, align 8 %388 = getelementptr inbounds nuw i8, ptr %387, i64 136 %389 = load ptr, ptr %388, align 8 - %390 = tail call noundef ptr %389(ptr noundef nonnull align 8 dereferenceable(16) %.val194) #17 + %390 = tail call noundef ptr %388(ptr noundef nonnull align 8 dereferenceable(16) %.val194) #17 %.not.i253 = icmp eq ptr %390, null br i1 %.not.i253, label %_ZL16is_constant_zeroP11Instruction.exit255.thread, label %_ZL16is_constant_zeroP11Instruction.exit255 @@ -6059,7 +6058,7 @@ _ZL16is_constant_zeroP11Instruction.exit255: ; preds = %386 br label %_ZL16is_constant_zeroP11Instruction.exit255.thread _ZL16is_constant_zeroP11Instruction.exit255.thread: ; preds = %386, %_ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit.thread313, %_ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit.thread310, %_ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit.thread, %_ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit252, %_ZL16is_constant_zeroP11Instruction.exit255, %394, %345, %_ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit - %.13 = phi i32 [ %spec.select188, %_ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit ], [ %spec.select188, %345 ], [ %395, %394 ], [ %.4, %_ZL16is_constant_zeroP11Instruction.exit255 ], [ %spec.select189, %_ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit252 ], [ %spec.select188, %_ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit.thread ], [ %spec.select188, %_ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit.thread310 ], [ %spec.select188, %_ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit.thread313 ], [ %.4, %386 ] + %.13 = phi i32 [ %spec.select188, %_ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit ], [ %spec.select188, %345 ], [ %395, %393 ], [ %.4, %_ZL16is_constant_zeroP11Instruction.exit255 ], [ %spec.select189, %_ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit252 ], [ %spec.select188, %_ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit.thread ], [ %spec.select188, %_ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit.thread310 ], [ %spec.select188, %_ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit.thread313 ], [ %.4, %385 ] %.not332 = icmp eq ptr %9, %13 %396 = and i32 %.13, -129 %.14 = select i1 %.not332, i32 %396, i32 %.13 diff --git a/bench/openjdk/optimized/constantPool.ll b/bench/openjdk/optimized/constantPool.ll index 7bab4c9ba70..05d4f8d3307 100644 --- a/bench/openjdk/optimized/constantPool.ll +++ b/bench/openjdk/optimized/constantPool.ll @@ -3819,16 +3819,15 @@ declare void @llvm.trap() #9 ; Function Attrs: mustprogress nounwind uwtable define hidden noundef zeroext i16 @_ZN12ConstantPool35uncached_name_and_type_ref_index_atEi(ptr noundef nonnull readonly align 8 captures(none) dereferenceable(68) %0, i32 noundef %1) local_unnamed_addr #0 align 2 { -_ZNK11constantTag13has_bootstrapEv.exit: - %2 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %3 = load ptr, ptr %2, align 8 - %4 = getelementptr inbounds nuw i8, ptr %3, i64 4 - %5 = sext i32 %1 to i64 - %6 = getelementptr inbounds i8, ptr %4, i64 %5 - %7 = load volatile i8, ptr %6, align 1 + %3 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %4 = load ptr, ptr %3, align 8 + %5 = getelementptr inbounds nuw i8, ptr %4, i64 4 + %6 = sext i32 %1 to i64 + %7 = getelementptr inbounds i8, ptr %5, i64 %6 + %8 = load volatile i8, ptr %7, align 1 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #17, !srcloc !6 %.pn = getelementptr inbounds nuw i8, ptr %0, i64 72 - %.0.in.in.in = getelementptr inbounds i64, ptr %.pn, i64 %5 + %.0.in.in.in = getelementptr inbounds i64, ptr %.pn, i64 %6 %.0.in.in = load i32, ptr %.0.in.in.in, align 8 %.0.in = lshr i32 %.0.in.in, 16 %.0 = trunc nuw i32 %.0.in to i16 diff --git a/bench/openjdk/optimized/diagnosticArgument.ll b/bench/openjdk/optimized/diagnosticArgument.ll index bfa0362a55f..2a154b46caa 100644 --- a/bench/openjdk/optimized/diagnosticArgument.ll +++ b/bench/openjdk/optimized/diagnosticArgument.ll @@ -906,43 +906,40 @@ define hidden void @_ZN12DCmdArgumentI18MemorySizeArgumentE11parse_valueEPKcmP10 %15 = getelementptr inbounds nuw i8, ptr %0, i64 64 %16 = getelementptr inbounds nuw i8, ptr %0, i64 72 %17 = tail call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %1, ptr noundef nonnull @.str.33, ptr noundef nonnull %15, ptr noundef nonnull %16) #15 - switch i32 %17, label %33 [ + switch i32 %17, label %30 [ i32 2, label %18 i32 1, label %31 ] 18: ; preds = %13 %19 = load i8, ptr %16, align 8 - switch i8 %19, label %29 [ + %20 = load i64, ptr %15, align 8 + switch i8 %19, label %27 [ i8 107, label %20 - i8 75, label %20 + i8 75, label %21 i8 109, label %23 i8 77, label %23 - i8 103, label %26 - i8 71, label %26 + i8 103, label %25 + i8 71, label %25 ] 20: ; preds = %18, %18 - %21 = load i64, ptr %15, align 8 - %22 = shl i64 %21, 10 + %22 = shl i64 %20, 10 store i64 %22, ptr %14, align 8 br label %35 23: ; preds = %18, %18 - %24 = load i64, ptr %15, align 8 - %25 = shl i64 %24, 20 - store i64 %25, ptr %14, align 8 - br label %35 + %24 = shl i64 %20, 20 + store i64 %24, ptr %14, align 8 + br label %32 -26: ; preds = %18, %18 - %27 = load i64, ptr %15, align 8 - %28 = shl i64 %27, 30 - store i64 %28, ptr %14, align 8 - br label %35 +25: ; preds = %18, %18 + %26 = shl i64 %20, 30 + store i64 %26, ptr %14, align 8 + br label %32 -29: ; preds = %18 - %30 = load i64, ptr %15, align 8 - store i64 %30, ptr %14, align 8 +27:; preds = %18 + store i64 %20, ptr %14, align 8 store i8 32, ptr %16, align 8 br label %35 @@ -956,7 +953,7 @@ define hidden void @_ZN12DCmdArgumentI18MemorySizeArgumentE11parse_valueEPKcmP10 tail call void @_ZN10Exceptions10_throw_msgEP10JavaThreadPKciP6SymbolS3_(ptr noundef %3, ptr noundef nonnull @.str, i32 noundef 335, ptr noundef %34, ptr noundef nonnull @.str.34) #15 br label %35 -35: ; preds = %20, %23, %26, %29, %31, %33, %11, %6 +35: ; preds = %20, %23, %25, %27, %31, %33, %11, %6 ret void } diff --git a/bench/openjdk/optimized/macroArrayCopy.ll b/bench/openjdk/optimized/macroArrayCopy.ll index 7ade0a7a0f3..221834f5d4a 100644 --- a/bench/openjdk/optimized/macroArrayCopy.ll +++ b/bench/openjdk/optimized/macroArrayCopy.ll @@ -2844,13 +2844,13 @@ define hidden noundef ptr @_ZN16PhaseMacroExpand19basictype2arraycopyE9BasicType br i1 %36, label %_ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit.thread38, label %_ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit.thread40 _ZN12arrayOopDesc30element_type_should_be_alignedE9BasicType.exit.i: ; preds = %26 + %38 = mul i32 %29, %15 switch i8 %1, label %_ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit.thread [ i8 11, label %_ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit i8 7, label %_ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit ] _ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit: ; preds = %_ZN12arrayOopDesc30element_type_should_be_alignedE9BasicType.exit.i, %_ZN12arrayOopDesc30element_type_should_be_alignedE9BasicType.exit.i - %38 = mul i32 %29, %15 %39 = and i32 %38, 7 %40 = icmp eq i32 %39, 0 br i1 %40, label %_ZN12arrayOopDesc30element_type_should_be_alignedE9BasicType.exit.i35, label %55 @@ -2867,11 +2867,10 @@ _ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit.thread38: ; preds = %34 br i1 %45, label %_ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit37, label %55 _ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit.thread: ; preds = %_ZN12arrayOopDesc30element_type_should_be_alignedE9BasicType.exit.i - %46 = mul i32 %29, %15 - %47 = add i32 %32, %46 - %48 = and i32 %47, 7 - %49 = icmp eq i32 %48, 0 - br i1 %49, label %_ZN12arrayOopDesc30element_type_should_be_alignedE9BasicType.exit.i35, label %55 + %46 = add i32 %32, %38 + %47 = and i32 %46, 7 + %48 = icmp eq i32 %47, 0 + br i1 %48, label %_ZN12arrayOopDesc30element_type_should_be_alignedE9BasicType.exit.i35, label %54 _ZN12arrayOopDesc30element_type_should_be_alignedE9BasicType.exit.i35: ; preds = %_ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit, %_ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit.thread switch i8 %1, label %_ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit37 [ @@ -2902,8 +2901,8 @@ _ZN12arrayOopDesc20base_offset_in_bytesE9BasicType.exit37: ; preds = %_ZN12array br label %60 60: ; preds = %57, %55 - %.not32.pn = phi i1 [ %.not32, %55 ], [ %or.cond3, %57 ] - %.0 = phi i1 [ %56, %55 ], [ false, %57 ] + %.not32.pn = phi i1 [ %.not32, %54 ], [ %or.cond3, %56 ] + %.0 = phi i1 [ %56, %54 ], [ false, %56 ] %.029.shrunk = or i1 %4, %.not32.pn %61 = tail call noundef ptr @_ZN12StubRoutines25select_arraycopy_functionE9BasicTypebbRPKcb(i8 noundef zeroext %1, i1 noundef zeroext %.0, i1 noundef zeroext %.029.shrunk, ptr noundef nonnull align 8 dereferenceable(8) %5, i1 noundef zeroext %6) #6 ret ptr %61 diff --git a/bench/openspiel/optimized/twixt.ll b/bench/openspiel/optimized/twixt.ll index 0ba6de1d712..a958f0e2506 100644 --- a/bench/openspiel/optimized/twixt.ll +++ b/bench/openspiel/optimized/twixt.ll @@ -4256,50 +4256,38 @@ _ZNSt12_Vector_baseIdSaIdEEC2EmRKS0_.exit.thread.i: ; preds = %_ZNSt6vectorIdSaI define linkonce_odr void @_ZNK10open_spiel5twixt10TwixTState7ReturnsEv(ptr dead_on_unwind noalias writable sret(%"class.std::vector.27") align 8 %0, ptr noundef nonnull align 8 dereferenceable(168) %1) unnamed_addr #3 comdat align 2 personality ptr @__gxx_personality_v0 { %3 = getelementptr inbounds nuw i8, ptr %1, i64 80 %4 = load i32, ptr %3, align 8 - switch i32 %4, label %15 [ - i32 3, label %5 - i32 0, label %5 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, i8 0, i64 24, i1 false) + %5 = tail call noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #25 + store ptr %5, ptr %0, align 8 + %6 = getelementptr inbounds nuw i8, ptr %5, i64 16 + %7 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %6, ptr %7, align 8 + switch i32 %4, label %12 [ + i32 3, label %8 + i32 0, label %8 i32 1, label %10 ] 5: ; preds = %2, %2 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, i8 0, i64 24, i1 false) - %6 = tail call noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #25 - store ptr %6, ptr %0, align 8 - %7 = getelementptr inbounds nuw i8, ptr %6, i64 16 - %8 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %7, ptr %8, align 8 %9 = getelementptr inbounds nuw i8, ptr %0, i64 8 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %6, i8 0, i64 16, i1 false) - store ptr %7, ptr %9, align 8 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %5, i8 0, i64 16, i1 false) + store ptr %6, ptr %9, align 8 br label %20 10: ; preds = %2 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, i8 0, i64 24, i1 false) - %11 = tail call noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #25 - store ptr %11, ptr %0, align 8 - %12 = getelementptr inbounds nuw i8, ptr %11, i64 16 - %13 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %12, ptr %13, align 8 - store double 1.000000e+00, ptr %11, align 8 - %.sroa.228.0..sroa_idx = getelementptr inbounds nuw i8, ptr %11, i64 8 + store double 1.000000e+00, ptr %5, align 8 + %.sroa.228.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 5 store double -1.000000e+00, ptr %.sroa.228.0..sroa_idx, align 8 %14 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %12, ptr %14, align 8 + store ptr %6, ptr %14, align 8 br label %20 15: ; preds = %2 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, i8 0, i64 24, i1 false) - %16 = tail call noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #25 - store ptr %16, ptr %0, align 8 - %17 = getelementptr inbounds nuw i8, ptr %16, i64 16 - %18 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %17, ptr %18, align 8 - store double -1.000000e+00, ptr %16, align 8 - %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %16, i64 8 + store double -1.000000e+00, ptr %5, align 8 + %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 5 store double 1.000000e+00, ptr %.sroa.2.0..sroa_idx, align 8 %19 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %17, ptr %19, align 8 + store ptr %6, ptr %19, align 8 br label %20 20: ; preds = %15, %10, %5 diff --git a/bench/openssl/optimized/extensions_clnt.ll b/bench/openssl/optimized/extensions_clnt.ll index ed2a03d2d7d..bf2e095df48 100644 --- a/bench/openssl/optimized/extensions_clnt.ll +++ b/bench/openssl/optimized/extensions_clnt.ll @@ -4350,55 +4350,48 @@ PACKET_get_net_2.exit.thread: ; preds = %5, %8 %34 = getelementptr inbounds nuw i8, ptr %0, i64 2312 %35 = getelementptr inbounds nuw i8, ptr %0, i64 240 %36 = load i32, ptr %35, align 8, !tbaa !155 + %.phi.trans.insert38.phi.trans.insert = getelementptr inbounds nuw i8, ptr %0, i64 2304 + %.pre39.pre = load ptr, ptr %.phi.trans.insert38.phi.trans.insert, align 8, !tbaa !95 switch i32 %36, label %._crit_edge40 [ i32 3, label %37 i32 7, label %37 ] -._crit_edge40: ; preds = %.thread - %.phi.trans.insert38.phi.trans.insert = getelementptr inbounds nuw i8, ptr %0, i64 2304 - %.pre39.pre = load ptr, ptr %.phi.trans.insert38.phi.trans.insert, align 8, !tbaa !95 - br label %46 - 37: ; preds = %.thread, %.thread - %38 = getelementptr inbounds nuw i8, ptr %0, i64 2304 - %39 = load ptr, ptr %38, align 8, !tbaa !95 - %40 = getelementptr inbounds nuw i8, ptr %39, i64 836 - %41 = load i32, ptr %40, align 4, !tbaa !156 - %.not31 = icmp eq i32 %41, 0 - br i1 %.not31, label %42, label %46 + %38 = getelementptr inbounds nuw i8, ptr %.pre39.pre, i64 836 + %39 = load i32, ptr %38, align 4, !tbaa !156 + %.not31 = icmp eq i32 %39, 0 + br i1 %.not31, label %40, label %._crit_edge40 + +40:; preds = %37 + %41 = getelementptr inbounds nuw i8, ptr %26, i64 836 + %42 = load i32, ptr %41, align 4, !tbaa !156 + %43 = icmp eq i32 %42, 0 + br i1 %43, label %._crit_edge40, label %46 + +._crit_edge40: ; preds = %.thread, %40, %37 + %44 = getelementptr inbounds nuw i8, ptr %0, i64 1404 + %45 = getelementptr inbounds nuw i8, ptr %26, i64 16 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %44, ptr noundef nonnull align 8 dereferenceable(64) %45, i64 64, i1 false) + br label %46 -42: ; preds = %37 - %43 = getelementptr inbounds nuw i8, ptr %26, i64 836 - %44 = load i32, ptr %43, align 4, !tbaa !156 - %45 = icmp eq i32 %44, 0 - br i1 %45, label %46, label %49 - -46: ; preds = %._crit_edge40, %42, %37 - %.pre39 = phi ptr [ %.pre39.pre, %._crit_edge40 ], [ %39, %42 ], [ %39, %37 ] - %47 = getelementptr inbounds nuw i8, ptr %0, i64 1404 - %48 = getelementptr inbounds nuw i8, ptr %26, i64 16 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %47, ptr noundef nonnull align 8 dereferenceable(64) %48, i64 64, i1 false) - br label %49 - -49: ; preds = %46, %42 - %50 = phi ptr [ %.pre39, %46 ], [ %39, %42 ] - %51 = getelementptr inbounds nuw i8, ptr %0, i64 2304 - tail call void @SSL_SESSION_free(ptr noundef %50) #10 - %52 = load ptr, ptr %34, align 8, !tbaa !152 - store ptr %52, ptr %51, align 8, !tbaa !95 +42: ; preds = %._crit_edge40, %40 + %43 = getelementptr inbounds nuw i8, ptr %0, i64 2304 + tail call void @SSL_SESSION_free(ptr noundef %.pre39.pre) #10 + %48 = load ptr, ptr %34, align 8, !tbaa !152 + store ptr %48, ptr %47, align 8, !tbaa !95 store ptr null, ptr %34, align 8, !tbaa !152 %53 = getelementptr inbounds nuw i8, ptr %0, i64 1288 store i32 1, ptr %53, align 8, !tbaa !179 br i1 %24, label %56, label %54 -54: ; preds = %49 +54: ; preds = %46 %55 = getelementptr inbounds nuw i8, ptr %0, i64 2844 store i32 0, ptr %55, align 4, !tbaa !164 br label %56 -56: ; preds = %49, %54, %33, %30, %22, %PACKET_get_net_2.exit.thread - %.0 = phi i32 [ 0, %PACKET_get_net_2.exit.thread ], [ 0, %22 ], [ 1, %30 ], [ 0, %33 ], [ 1, %54 ], [ 1, %49 ] +56: ; preds = %46, %54, %33, %30, %22, %PACKET_get_net_2.exit.thread + %.0 = phi i32 [ 0, %PACKET_get_net_2.exit.thread ], [ 0, %22 ], [ 1, %30 ], [ 0, %33 ], [ 1, %50 ], [ 1, %46 ] ret i32 %.0 } diff --git a/bench/openssl/optimized/opt.ll b/bench/openssl/optimized/opt.ll index 273a062b2dc..fe295b98cce 100644 --- a/bench/openssl/optimized/opt.ll +++ b/bench/openssl/optimized/opt.ll @@ -2051,14 +2051,14 @@ sub_057: ; preds = %sub_057.lr.ph.split %.us-phi64 = phi ptr [ %42, %sub_057.us65 ], [ %42, %45 ], [ %50, %sub_057 ], [ %34, %sub_057.us ] %52 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 12 %53 = load i32, ptr %52, align 4, !tbaa !20 - switch i32 %53, label %60 [ + %54 = icmp eq ptr %30, null + switch i32 %53, label %61 [ i32 0, label %54 - i32 45, label %54 + i32 45, label %55 ] 54: ; preds = %.split.us, %.split.us - %.not54 = icmp eq ptr %30, null - br i1 %.not54, label %57, label %55 + br i1 %54, label %58, label %56 55: ; preds = %54 %56 = tail call i32 (ptr, ...) @opt_printf_stderr(ptr noundef nonnull @.str.39, ptr noundef nonnull @prog, ptr noundef nonnull %spec.select) #20 @@ -2070,8 +2070,7 @@ sub_057: ; preds = %sub_057.lr.ph.split br label %137 60: ; preds = %.split.us - %61 = icmp eq ptr %30, null - br i1 %61, label %62, label %71 + br i1 %54, label %62, label %71 62: ; preds = %60 %63 = sext i32 %15 to i64 @@ -2091,7 +2090,7 @@ sub_057: ; preds = %sub_057.lr.ph.split br label %71 71: ; preds = %69, %60 - %72 = phi ptr [ %65, %69 ], [ %30, %60 ] + %72 = phi ptr [ %65, %69 ], [ %30, %61 ] switch i32 %53, label %120 [ i32 117, label %108 i32 108, label %106 @@ -2237,7 +2236,7 @@ sub_057: ; preds = %sub_057.lr.ph.split br label %137 137: ; preds = %108, %106, %104, %102, %84, %.tail, %13, %0, %135, %132, %129, %120, %116, %98, %91, %81, %67, %57, %55 - %.036 = phi i32 [ -1, %55 ], [ %59, %57 ], [ -1, %67 ], [ %122, %120 ], [ -1, %81 ], [ -1, %91 ], [ -1, %98 ], [ -1, %116 ], [ -1, %129 ], [ %134, %132 ], [ -1, %135 ], [ 0, %0 ], [ 0, %13 ], [ 0, %.tail ], [ -1, %84 ], [ -1, %102 ], [ -1, %104 ], [ -1, %106 ], [ -1, %108 ] + %.036 = phi i32 [ -1, %56 ], [ %60, %58 ], [ -1, %67 ], [ %122, %120 ], [ -1, %81 ], [ -1, %91 ], [ -1, %98 ], [ -1, %116 ], [ -1, %129 ], [ %134, %132 ], [ -1, %135 ], [ 0, %0 ], [ 0, %13 ], [ 0, %.tail ], [ -1, %84 ], [ -1, %102 ], [ -1, %104 ], [ -1, %106 ], [ -1, %108 ] call void @llvm.lifetime.end.p0(ptr nonnull %6) call void @llvm.lifetime.end.p0(ptr nonnull %5) call void @llvm.lifetime.end.p0(ptr nonnull %4) diff --git a/bench/openssl/optimized/statem_lib.ll b/bench/openssl/optimized/statem_lib.ll index 212957ace8c..da776c053a8 100644 --- a/bench/openssl/optimized/statem_lib.ll +++ b/bench/openssl/optimized/statem_lib.ll @@ -1177,30 +1177,29 @@ define internal fastcc range(i32 0, 2) i32 @get_cert_verify_tbs_data(ptr noundef 22: ; preds = %21, %20 %23 = load i32, ptr %17, align 4, !tbaa !88 + %24 = getelementptr inbounds nuw i8, ptr %1, i64 98 switch i32 %23, label %29 [ i32 43, label %24 i32 33, label %24 ] 24: ; preds = %22, %22 - %25 = getelementptr inbounds nuw i8, ptr %1, i64 98 %26 = getelementptr inbounds nuw i8, ptr %0, i64 2184 %27 = getelementptr inbounds nuw i8, ptr %0, i64 2248 %28 = load i64, ptr %27, align 8, !tbaa !141 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %25, ptr nonnull align 8 %26, i64 %28, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %24, ptr nonnull align 8 %26, i64 %28, i1 false) br label %.thread 29: ; preds = %22 - %30 = getelementptr inbounds nuw i8, ptr %1, i64 98 - %31 = call i32 @ssl_handshake_hash(ptr noundef nonnull %0, ptr noundef nonnull %30, i64 noundef 64, ptr noundef nonnull %5) #11 - %.not33 = icmp eq i32 %31, 0 - br i1 %.not33, label %34, label %.thread - -.thread: ; preds = %29, %24 - %.in = phi ptr [ %27, %24 ], [ %5, %29 ] - %32 = load i64, ptr %.in, align 8, !tbaa !72 + %30 = call i32 @ssl_handshake_hash(ptr noundef nonnull %0, ptr noundef nonnull %24, i64 noundef 64, ptr noundef nonnull %5) #11 + %.not33 = icmp eq i32 %30, 0 + br i1 %.not33, label %33, label %.thread + +.thread: ; preds = %29, %25 + %.in = phi ptr [ %27, %25 ], [ %5, %29 ] + %31 = load i64, ptr %.in, align 8, !tbaa !72 store ptr %1, ptr %2, align 8, !tbaa !136 - %33 = add i64 %32, 98 + %33 = add i64 %31, 98 store i64 %33, ptr %3, align 8, !tbaa !72 call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %41 @@ -1227,7 +1226,7 @@ define internal fastcc range(i32 0, 2) i32 @get_cert_verify_tbs_data(ptr noundef br label %41 41: ; preds = %.thread, %.thread36, %40, %34 - %.1 = phi i32 [ 0, %40 ], [ 0, %34 ], [ 1, %.thread36 ], [ 1, %.thread ] + %.1 = phi i32 [ 0, %39 ], [ 0, %33 ], [ 1, %.thread36 ], [ 1, %.thread ] ret i32 %.1 } diff --git a/bench/osqp/optimized/auxil.ll b/bench/osqp/optimized/auxil.ll index c87251df534..8a01a9759b4 100644 --- a/bench/osqp/optimized/auxil.ll +++ b/bench/osqp/optimized/auxil.ll @@ -832,7 +832,8 @@ define void @store_solution(ptr noundef %0, ptr noundef readonly captures(addres %8 = load ptr, ptr %7, align 8, !tbaa !31 %9 = getelementptr inbounds nuw i8, ptr %8, i64 32 %10 = load i64, ptr %9, align 8, !tbaa !80 - switch i64 %10, label %11 [ + %11 = getelementptr inbounds nuw i8, ptr %5, i64 56 + switch i64 %10, label %12 [ i64 9, label %47 i64 6, label %47 i64 5, label %47 @@ -844,7 +845,6 @@ define void @store_solution(ptr noundef %0, ptr noundef readonly captures(addres %12 = getelementptr inbounds nuw i8, ptr %3, i64 48 %13 = load i64, ptr %12, align 8, !tbaa !62 %.not55 = icmp eq i64 %13, 0 - %14 = getelementptr inbounds nuw i8, ptr %5, i64 56 br i1 %.not55, label %29, label %15 15: ; preds = %11 @@ -854,7 +854,7 @@ define void @store_solution(ptr noundef %0, ptr noundef readonly captures(addres %19 = load ptr, ptr %18, align 8, !tbaa !52 %20 = getelementptr inbounds nuw i8, ptr %5, i64 48 %21 = load ptr, ptr %20, align 8, !tbaa !56 - %22 = load ptr, ptr %14, align 8, !tbaa !51 + %22 = load ptr, ptr %11, align 8, !tbaa !51 %23 = tail call i64 @unscale_solution(ptr noundef %17, ptr noundef %19, ptr noundef %21, ptr noundef %22, ptr noundef %5) #10 %24 = load ptr, ptr %1, align 8, !tbaa !81 %25 = load ptr, ptr %16, align 8, !tbaa !48 @@ -872,7 +872,7 @@ define void @store_solution(ptr noundef %0, ptr noundef readonly captures(addres tail call void @OSQPVectorf_to_raw(ptr noundef %30, ptr noundef %32) #10 %33 = getelementptr inbounds nuw i8, ptr %1, i64 8 %34 = load ptr, ptr %33, align 8, !tbaa !84 - %35 = load ptr, ptr %14, align 8, !tbaa !51 + %35 = load ptr, ptr %11, align 8, !tbaa !51 tail call void @OSQPVectorf_to_raw(ptr noundef %34, ptr noundef %35) #10 br label %36 @@ -897,16 +897,15 @@ define void @store_solution(ptr noundef %0, ptr noundef readonly captures(addres %48 = getelementptr inbounds nuw i8, ptr %5, i64 48 %49 = load ptr, ptr %48, align 8, !tbaa !56 tail call void @OSQPVectorf_set_scalar(ptr noundef %49, double noundef 0x41DFF00000000000) #10 - %50 = getelementptr inbounds nuw i8, ptr %5, i64 56 - %51 = load ptr, ptr %50, align 8, !tbaa !51 - tail call void @OSQPVectorf_set_scalar(ptr noundef %51, double noundef 0x41DFF00000000000) #10 - %52 = load ptr, ptr %1, align 8, !tbaa !81 - %53 = load ptr, ptr %48, align 8, !tbaa !56 - tail call void @OSQPVectorf_to_raw(ptr noundef %52, ptr noundef %53) #10 - %54 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %55 = load ptr, ptr %54, align 8, !tbaa !84 - %56 = load ptr, ptr %50, align 8, !tbaa !51 - tail call void @OSQPVectorf_to_raw(ptr noundef %55, ptr noundef %56) #10 + %50 = load ptr, ptr %11, align 8, !tbaa !51 + tail call void @OSQPVectorf_set_scalar(ptr noundef %50, double noundef 0x41DFF00000000000) #10 + %51 = load ptr, ptr %1, align 8, !tbaa !81 + %52 = load ptr, ptr %48, align 8, !tbaa !56 + tail call void @OSQPVectorf_to_raw(ptr noundef %51, ptr noundef %52) #10 + %53 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %54 = load ptr, ptr %53, align 8, !tbaa !84 + %55 = load ptr, ptr %11, align 8, !tbaa !51 + tail call void @OSQPVectorf_to_raw(ptr noundef %54, ptr noundef %55) #10 tail call void @osqp_cold_start(ptr noundef nonnull %0) #10 %57 = load i64, ptr %9, align 8, !tbaa !80 %.off = add i64 %57, -3 @@ -935,7 +934,7 @@ define void @store_solution(ptr noundef %0, ptr noundef readonly captures(addres br label %72 72: ; preds = %47, %58 - %73 = phi i64 [ %57, %47 ], [ %.pre, %58 ] + %73 = phi i64 [ %57, %47 ], [ %.pre, %57 ] %.off56 = add i64 %73, -5 %switch57 = icmp ult i64 %.off56, 2 br i1 %switch57, label %74, label %88 diff --git a/bench/php/optimized/mail.ll b/bench/php/optimized/mail.ll index 6eb7aa447e0..4c827f98b75 100644 --- a/bench/php/optimized/mail.ll +++ b/bench/php/optimized/mail.ll @@ -2679,20 +2679,9 @@ php_mail_detect_multiple_crlf.exit: ; preds = %.preheader.i, %85, %128 = icmp eq i32 %127, 0 %129 = icmp eq i32 %127, 75 %or.cond.not = or i1 %128, %129 - switch i32 %127, label %130 [ - i32 75, label %132 - i32 0, label %132 - ] - -130: ; preds = %125 - %131 = load ptr, ptr %7, align 8, !tbaa !63 - %.not79 = icmp eq ptr %131, null - br i1 %.not79, label %136, label %.sink.split - -132: ; preds = %125, %125 - %133 = load ptr, ptr %7, align 8, !tbaa !63 - %.not78 = icmp eq ptr %133, null - br i1 %.not78, label %136, label %.sink.split + %130 = load ptr, ptr %7, align 8, !tbaa !63 + %.not79 = icmp eq ptr %130, null + br i1 %.not79, label %133, label %.sink.split 134: ; preds = %113 call void (ptr, i32, ptr, ...) @php_error_docref(ptr noundef null, i32 noundef 2, ptr noundef nonnull @.str.37, ptr noundef nonnull %11) #11 @@ -2700,14 +2689,14 @@ php_mail_detect_multiple_crlf.exit: ; preds = %.preheader.i, %85, %.not77 = icmp eq ptr %135, null br i1 %.not77, label %136, label %.sink.split -.sink.split: ; preds = %134, %132, %130, %117, %101, %.loopexit, %52 - %.sink = phi ptr [ %53, %52 ], [ %100, %.loopexit ], [ %102, %101 ], [ %119, %117 ], [ %131, %130 ], [ %133, %132 ], [ %135, %134 ] - %.0.ph = phi i1 [ false, %52 ], [ false, %.loopexit ], [ false, %101 ], [ false, %117 ], [ %or.cond.not, %130 ], [ %or.cond.not, %132 ], [ false, %134 ] +.sink.split: ; preds = %125, %131, %117, %101, %.loopexit, %52 + %.sink = phi ptr [ %53, %52 ], [ %100, %.loopexit ], [ %102, %101 ], [ %119, %117 ], [ %132, %131 ], [ %130, %125 ] + %.0.ph = phi i1 [ false, %52 ], [ false, %.loopexit ], [ false, %101 ], [ false, %117 ], [ false, %131 ], [ %or.cond.not, %125 ] call void @_efree(ptr noundef nonnull %.sink) #11 br label %136 -136: ; preds = %.sink.split, %.loopexit, %101, %117, %132, %130, %134, %52 - %.0 = phi i1 [ false, %52 ], [ false, %.loopexit ], [ false, %101 ], [ false, %117 ], [ %or.cond.not, %132 ], [ %or.cond.not, %130 ], [ false, %134 ], [ %.0.ph, %.sink.split ] +136: ; preds = %125, %.sink.split, %.loopexit, %101, %117, %131, %52 + %.0 = phi i1 [ false, %52 ], [ false, %.loopexit ], [ false, %101 ], [ false, %117 ], [ false, %131 ], [ %.0.ph, %.sink.split ], [ %or.cond.not, %125 ] call void @llvm.lifetime.end.p0(ptr nonnull %7) call void @llvm.lifetime.end.p0(ptr nonnull %6) ret i1 %.0 diff --git a/bench/php/optimized/rfc1867.ll b/bench/php/optimized/rfc1867.ll index 43279fe9b8c..b731300708e 100644 --- a/bench/php/optimized/rfc1867.ll +++ b/bench/php/optimized/rfc1867.ll @@ -1894,25 +1894,25 @@ define internal noalias ptr @php_ap_getword(ptr readnone captures(none) %0, ptr %or.cond4655 = or i1 %.not53, %.not4154 br i1 %or.cond4655, label %.critedge, label %.lr.ph57 -.lr.ph57: ; preds = %3, %22 - %6 = phi i8 [ %23, %22 ], [ %5, %3 ] - %.03756 = phi ptr [ %.3, %22 ], [ %4, %3 ] +.lr.ph57: ; preds = %3, %20 + %6 = phi i8 [ %21, %20 ], [ %5, %3 ] + %.03756 = phi ptr [ %.3, %20 ], [ %4, %3 ] + %7 = getelementptr inbounds nuw i8, ptr %.03756, i64 1 switch i8 %6, label %20 [ i8 39, label %7 i8 34, label %7 ] 7: ; preds = %.lr.ph57, %.lr.ph57 - %8 = getelementptr inbounds nuw i8, ptr %.03756, i64 1 - %9 = load i8, ptr %8, align 1, !tbaa !32 + %9 = load i8, ptr %7, align 1, !tbaa !32 %.not4248 = icmp eq i8 %9, 0 %.not4349 = icmp eq i8 %9, %6 %or.cond50 = or i1 %.not4248, %.not4349 br i1 %or.cond50, label %.critedge4, label %.lr.ph .lr.ph: ; preds = %7, %17 - %10 = phi i8 [ %19, %17 ], [ %9, %7 ] - %.151 = phi ptr [ %18, %17 ], [ %8, %7 ] + %10 = phi i8 [ %19, %17 ], [ %9, %8 ] + %.151 = phi ptr [ %18, %17 ], [ %7, %8 ] %11 = icmp eq i8 %10, 92 br i1 %11, label %12, label %16 @@ -1935,28 +1935,24 @@ define internal noalias ptr @php_ap_getword(ptr readnone captures(none) %0, ptr br i1 %or.cond, label %.critedge4, label %.lr.ph .critedge4: ; preds = %17, %7 - %.1.lcssa = phi ptr [ %8, %7 ], [ %18, %17 ] - %.not42.lcssa = phi i1 [ %.not4248, %7 ], [ %.not42, %17 ] + %.1.lcssa = phi ptr [ %7, %8 ], [ %18, %17 ] + %.not42.lcssa = phi i1 [ %.not4248, %8 ], [ %.not42, %17 ] %not..not42 = xor i1 %.not42.lcssa, true %spec.select.idx = zext i1 %not..not42 to i64 %spec.select = getelementptr inbounds nuw i8, ptr %.1.lcssa, i64 %spec.select.idx - br label %22 + br label %20 -20: ; preds = %.lr.ph57 - %21 = getelementptr inbounds nuw i8, ptr %.03756, i64 1 - br label %22 - -22: ; preds = %.critedge4, %20 - %.3 = phi ptr [ %21, %20 ], [ %spec.select, %.critedge4 ] - %23 = load i8, ptr %.3, align 1, !tbaa !32 - %.not = icmp eq i8 %23, 0 - %.not41 = icmp eq i8 %23, %2 +20: ; preds = %.lr.ph57, %.critedge4 + %.3 = phi ptr [ %spec.select, %.critedge4 ], [ %7, %.lr.ph57 ] + %21 = load i8, ptr %.3, align 1, !tbaa !32 + %.not = icmp eq i8 %21, 0 + %.not41 = icmp eq i8 %21, %2 %or.cond46 = or i1 %.not, %.not41 br i1 %or.cond46, label %.critedge, label %.lr.ph57 -.critedge: ; preds = %22, %3 - %.037.lcssa = phi ptr [ %4, %3 ], [ %.3, %22 ] - %.not.lcssa = phi i1 [ %.not53, %3 ], [ %.not, %22 ] +.critedge: ; preds = %20, %3 + %.037.lcssa = phi ptr [ %4, %3 ], [ %.3, %20 ] + %.not.lcssa = phi i1 [ %.not53, %3 ], [ %.not, %20 ] br i1 %.not.lcssa, label %24, label %29 24: ; preds = %.critedge @@ -1974,15 +1970,15 @@ define internal noalias ptr @php_ap_getword(ptr readnone captures(none) %0, ptr br label %34 34: ; preds = %34, %29 - %.4 = phi ptr [ %.037.lcssa, %29 ], [ %37, %34 ] + %.4 = phi ptr [ %.037.lcssa, %27 ], [ %37, %32 ] %35 = load i8, ptr %.4, align 1, !tbaa !32 %36 = icmp eq i8 %35, %2 %37 = getelementptr inbounds nuw i8, ptr %.4, i64 1 br i1 %36, label %34, label %.loopexit .loopexit: ; preds = %34, %24 - %storemerge = phi ptr [ %28, %24 ], [ %.4, %34 ] - %.0 = phi ptr [ %25, %24 ], [ %33, %34 ] + %storemerge = phi ptr [ %28, %22 ], [ %.4, %32 ] + %.0 = phi ptr [ %25, %22 ], [ %33, %32 ] store ptr %storemerge, ptr %1, align 8, !tbaa !62 ret ptr %.0 } diff --git a/bench/php/optimized/str.ll b/bench/php/optimized/str.ll index 7f72707f773..ff217901981 100644 --- a/bench/php/optimized/str.ll +++ b/bench/php/optimized/str.ll @@ -684,43 +684,40 @@ define hidden void @lexbor_str_strip_collapse_whitespace(ptr noundef captures(no br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %21 - %.055 = phi i64 [ %22, %21 ], [ 0, %.lr.ph.preheader ] - %.04454 = phi i64 [ %.2, %21 ], [ 0, %.lr.ph.preheader ] - %.04553 = phi i64 [ %.146, %21 ], [ 0, %.lr.ph.preheader ] + %.055 = phi i64 [ %22, %19 ], [ 0, %.lr.ph.preheader ] + %.04454 = phi i64 [ %.2, %19 ], [ 0, %.lr.ph.preheader ] + %.04553 = phi i64 [ %.146, %19 ], [ 0, %.lr.ph.preheader ] %10 = getelementptr inbounds nuw i8, ptr %2, i64 %.055 %11 = load i8, ptr %10, align 1, !tbaa !12 - switch i8 %11, label %15 [ + %12 = getelementptr inbounds nuw i8, ptr %2, i64 %.04454 + %13 = load i8, ptr %12, align 1, !tbaa !12 + %14 = icmp eq i8 %13, 32 + switch i8 %11, label %16 [ i8 32, label %12 i8 9, label %12 - i8 10, label %12 - i8 12, label %12 - i8 13, label %12 + i8 10, label %15 + i8 12, label %15 + i8 13, label %15 ] 12: ; preds = %.lr.ph, %.lr.ph, %.lr.ph, %.lr.ph, %.lr.ph - %13 = getelementptr inbounds nuw i8, ptr %2, i64 %.04454 - %14 = load i8, ptr %13, align 1, !tbaa !12 - %.not51 = icmp eq i8 %14, 32 - br i1 %.not51, label %21, label %.sink.split + br i1 %14, label %21, label %.sink.split 15: ; preds = %.lr.ph - %16 = getelementptr inbounds nuw i8, ptr %2, i64 %.04454 - %17 = load i8, ptr %16, align 1, !tbaa !12 - %18 = icmp eq i8 %17, 32 - %spec.select = select i1 %18, i64 %.04553, i64 %.04454 + %spec.select = select i1 %14, i64 %.04553, i64 %.04454 br label %.sink.split .sink.split: ; preds = %12, %15 - %.sink = phi i8 [ %11, %15 ], [ 32, %12 ] - %.2.ph = phi i64 [ %spec.select, %15 ], [ %.04553, %12 ] + %.sink = phi i8 [ %11, %16 ], [ 32, %15 ] + %.2.ph = phi i64 [ %spec.select, %16 ], [ %.04553, %15 ] %19 = getelementptr inbounds nuw i8, ptr %2, i64 %.04553 store i8 %.sink, ptr %19, align 1, !tbaa !12 %20 = add i64 %.04553, 1 br label %21 21: ; preds = %.sink.split, %12 - %.146 = phi i64 [ %.04553, %12 ], [ %20, %.sink.split ] - %.2 = phi i64 [ %.04454, %12 ], [ %.2.ph, %.sink.split ] + %.146 = phi i64 [ %.04553, %15 ], [ %20, %.sink.split ] + %.2 = phi i64 [ %.04454, %15 ], [ %.2.ph, %.sink.split ] %22 = add nuw i64 %.055, 1 %23 = load i64, ptr %3, align 8, !tbaa !11 %24 = icmp ult i64 %22, %23 @@ -744,7 +741,7 @@ define hidden void @lexbor_str_strip_collapse_whitespace(ptr noundef captures(no br label %33 33: ; preds = %27, %26 - %.247 = phi i64 [ 0, %26 ], [ %spec.select52, %27 ] + %.247 = phi i64 [ 0, %24 ], [ %spec.select52, %25 ] %34 = getelementptr inbounds nuw i8, ptr %2, i64 %.247 store i8 0, ptr %34, align 1, !tbaa !12 store i64 %.247, ptr %3, align 8, !tbaa !11 diff --git a/bench/pola-rs/optimized/4e0hf67d1zghwocjlymu8g39x.ll b/bench/pola-rs/optimized/4e0hf67d1zghwocjlymu8g39x.ll index 0f1c02f1dd2..ed848acfba8 100644 --- a/bench/pola-rs/optimized/4e0hf67d1zghwocjlymu8g39x.ll +++ b/bench/pola-rs/optimized/4e0hf67d1zghwocjlymu8g39x.ll @@ -48460,7 +48460,7 @@ switch.lookup: ; preds = %165 br label %328 .body: ; preds = %.loopexit, %.loopexit.split-lp, %741, %703, %.body6 - %.pn242.i = phi { ptr, i32 } [ %eh.lpad-body7, %.body6 ], [ %704, %703 ], [ %742, %741 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] + %.pn242.i = phi { ptr, i32 } [ %eh.lpad-body7, %.body6 ], [ %704, %702 ], [ %742, %740 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h7f7a3be928754286E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %153) #33 to label %332 unwind label %330, !noalias !6004 @@ -48485,6 +48485,7 @@ switch.lookup: ; preds = %165 %664 = or disjoint i64 %662, %663 store i64 %664, ptr %53, align 8, !noalias !6010 %665 = load i8, ptr %167, align 16, !range !5913, !noalias !6004, !noundef !7 + call void @llvm.lifetime.start.p0(ptr nonnull %52), !noalias !6010 switch i8 %665, label %_ZN13polars_stream13physical_plan3fmt9NodeStyle10node_attrs17h85b2b92ebde1603bE.exit.thread [ i8 0, label %667 i8 3, label %667 @@ -48501,7 +48502,6 @@ switch.lookup: ; preds = %165 ] 666: ; preds = %657 - call void @llvm.lifetime.start.p0(ptr nonnull %52), !noalias !6010 call void @llvm.lifetime.start.p0(ptr nonnull %35), !noalias !6207 store ptr @anon.cf83910d1ddc55e22adc8fa20d5b46e2.725, ptr %35, align 8, !noalias !6207 %.sroa.46.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %35, i64 8 @@ -48525,7 +48525,6 @@ switch.lookup: ; preds = %165 br label %_ZN13polars_stream13physical_plan3fmt9NodeStyle10node_attrs17h85b2b92ebde1603bE.exit 667: ; preds = %657, %657, %657, %657, %657, %657, %657, %657, %657, %657, %657 - call void @llvm.lifetime.start.p0(ptr nonnull %52), !noalias !6010 call void @llvm.lifetime.start.p0(ptr nonnull %34), !noalias !6207 store ptr @anon.cf83910d1ddc55e22adc8fa20d5b46e2.730, ptr %34, align 8, !noalias !6207 %.sroa.42.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %34, i64 8 @@ -48548,10 +48547,6 @@ switch.lookup: ; preds = %165 call void @llvm.lifetime.end.p0(ptr nonnull %34), !noalias !6207 br label %_ZN13polars_stream13physical_plan3fmt9NodeStyle10node_attrs17h85b2b92ebde1603bE.exit -_ZN13polars_stream13physical_plan3fmt9NodeStyle10node_attrs17h85b2b92ebde1603bE.exit.thread: ; preds = %657 - call void @llvm.lifetime.start.p0(ptr nonnull %52), !noalias !6010 - br label %694 - _ZN13polars_stream13physical_plan3fmt9NodeStyle10node_attrs17h85b2b92ebde1603bE.exit: ; preds = %.noexc14, %.noexc13 %.pr = load i64, ptr %52, align 8, !noalias !6010 %.not240.i = icmp eq i64 %.pr, -9223372036854775808 @@ -48653,7 +48648,7 @@ _ZN13polars_stream13physical_plan3fmt9NodeStyle10node_attrs17h85b2b92ebde1603bE. %.sroa.7197.0..sroa_idx = getelementptr inbounds nuw i8, ptr %38, i64 32 br label %711 -694: ; preds = %_ZN13polars_stream13physical_plan3fmt9NodeStyle10node_attrs17h85b2b92ebde1603bE.exit.thread, %_ZN13polars_stream13physical_plan3fmt9NodeStyle10node_attrs17h85b2b92ebde1603bE.exit +_ZN13polars_stream13physical_plan3fmt9NodeStyle10node_attrs17h85b2b92ebde1603bE.exit.thread:; preds = %657, %_ZN13polars_stream13physical_plan3fmt9NodeStyle10node_attrs17h85b2b92ebde1603bE.exit call void @llvm.lifetime.end.p0(ptr nonnull %52), !noalias !6010 %695 = load ptr, ptr %.sroa.9.0..sroa_idx, align 8, !alias.scope !6007, !noalias !6004, !nonnull !7, !align !8, !noundef !7 call void @llvm.lifetime.start.p0(ptr nonnull %47), !noalias !6010 @@ -48675,7 +48670,7 @@ _ZN13polars_stream13physical_plan3fmt9NodeStyle10node_attrs17h85b2b92ebde1603bE. %.sroa.7191.0..sroa_idx = getelementptr inbounds nuw i8, ptr %37, i64 32 store ptr null, ptr %.sroa.7191.0..sroa_idx, align 8, !noalias !6253 invoke void @_ZN5alloc3fmt6format12format_inner17h1e07221face03266E(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %48, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %37) - to label %697 unwind label %.loopexit.split-lp + to label %696 unwind label %.loopexit.split-lp 697: ; preds = %694 call void @llvm.lifetime.end.p0(ptr nonnull %37), !noalias !6245 @@ -48720,7 +48715,7 @@ _ZN13polars_stream13physical_plan3fmt9NodeStyle10node_attrs17h85b2b92ebde1603bE. %714 = load ptr, ptr %.sroa.8.0..sroa_idx, align 8, !alias.scope !6007, !noalias !6004, !nonnull !7, !align !8, !noundef !7 %715 = load ptr, ptr %.sroa.9.0..sroa_idx, align 8, !alias.scope !6007, !noalias !6004, !nonnull !7, !align !8, !noundef !7 invoke void @_ZN13polars_stream13physical_plan3fmt18visualize_plan_rec17he04f83fe8fd9fc3fE(i32 noundef %712, i32 noundef %713, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %714, ptr noalias noundef nonnull align 8 dereferenceable(32) %4, ptr noalias noundef nonnull align 8 dereferenceable(24) %715) - to label %716 unwind label %.loopexit, !noalias !6004 + to label %715 unwind label %.loopexit, !noalias !6004 ._crit_edge: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he8647d9042ac78b2E.exit", %690 call void @llvm.lifetime.end.p0(ptr nonnull %53), !noalias !6010 @@ -48735,7 +48730,7 @@ _ZN13polars_stream13physical_plan3fmt9NodeStyle10node_attrs17h85b2b92ebde1603bE. call void @llvm.lifetime.start.p0(ptr nonnull %45), !noalias !6010 call void @llvm.lifetime.start.p0(ptr nonnull %44), !noalias !6010 %717 = invoke { i32, i32 } @"_ZN74_$LT$polars_stream..physical_plan..PhysNodeKey$u20$as$u20$slotmap..Key$GT$4data17h0b72a9a3d5615e5fE"(ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %.sroa.0220.0.i213) - to label %718 unwind label %.loopexit, !noalias !6004 + to label %717 unwind label %.loopexit, !noalias !6004 718: ; preds = %716 %719 = extractvalue { i32, i32 } %717, 0 @@ -48749,7 +48744,7 @@ _ZN13polars_stream13physical_plan3fmt9NodeStyle10node_attrs17h85b2b92ebde1603bE. store i64 %725, ptr %44, align 8, !noalias !6010 call void @llvm.lifetime.start.p0(ptr nonnull %43), !noalias !6010 %726 = invoke { i32, i32 } @"_ZN74_$LT$polars_stream..physical_plan..PhysNodeKey$u20$as$u20$slotmap..Key$GT$4data17h0b72a9a3d5615e5fE"(ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %.sroa.5.0..sroa_idx) - to label %727 unwind label %.loopexit, !noalias !6004 + to label %726 unwind label %.loopexit, !noalias !6004 727: ; preds = %718 %728 = extractvalue { i32, i32 } %726, 0 @@ -48772,7 +48767,7 @@ _ZN13polars_stream13physical_plan3fmt9NodeStyle10node_attrs17h85b2b92ebde1603bE. store i64 2, ptr %.sroa.6196.0..sroa_idx, align 8, !noalias !6269 store ptr null, ptr %.sroa.7197.0..sroa_idx, align 8, !noalias !6269 invoke void @_ZN5alloc3fmt6format12format_inner17h1e07221face03266E(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %46, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %38) - to label %735 unwind label %.loopexit + to label %734 unwind label %.loopexit 735: ; preds = %727 call void @llvm.lifetime.end.p0(ptr nonnull %38), !noalias !6261 diff --git a/bench/pola-rs/optimized/craaq0nmso5si1vuneoip44el.ll b/bench/pola-rs/optimized/craaq0nmso5si1vuneoip44el.ll index 5ad6a7eec49..b876a72da4e 100644 --- a/bench/pola-rs/optimized/craaq0nmso5si1vuneoip44el.ll +++ b/bench/pola-rs/optimized/craaq0nmso5si1vuneoip44el.ll @@ -34901,6 +34901,8 @@ define internal fastcc void @_ZN11polars_time7windows6window33ensure_t_in_or_in_ call void @llvm.lifetime.end.p0(ptr nonnull %11) %20 = getelementptr inbounds nuw i8, ptr %10, i64 8 %21 = getelementptr inbounds nuw i8, ptr %9, i64 8 + %22 = tail call { i64, i64 } @_ZN11polars_time7windows6bounds6Bounds3new17hc65ceb1ede586eb0E(i64 noundef %5, i64 noundef %17) + %23 = extractvalue { i64, i64 } %22, 0 switch i8 %6, label %default.unreachable [ i8 0, label %.split.us i8 1, label %.split.us79 @@ -34909,8 +34911,6 @@ define internal fastcc void @_ZN11polars_time7windows6window33ensure_t_in_or_in_ ] .split.us: ; preds = %19, %19 - %22 = tail call { i64, i64 } @_ZN11polars_time7windows6bounds6Bounds3new17hc65ceb1ede586eb0E(i64 noundef %5, i64 noundef %17) - %23 = extractvalue { i64, i64 } %22, 0 %24 = icmp sgt i64 %23, %2 br i1 %24, label %.lr.ph, label %.split71.us @@ -34940,13 +34940,11 @@ define internal fastcc void @_ZN11polars_time7windows6window33ensure_t_in_or_in_ br i1 %33, label %.lr.ph, label %.split71.us .split.us79: ; preds = %19, %19 - %34 = tail call { i64, i64 } @_ZN11polars_time7windows6bounds6Bounds3new17hc65ceb1ede586eb0E(i64 noundef %5, i64 noundef %17) - %35 = extractvalue { i64, i64 } %34, 0 - %.not61.us94 = icmp slt i64 %35, %2 + %.not61.us94 = icmp slt i64 %23, %2 br i1 %.not61.us94, label %.split71.us, label %.lr.ph96 .lr.ph96: ; preds = %.split.us79, %40 - %.sroa.0.0.us8195 = phi i64 [ %38, %40 ], [ %5, %.split.us79 ] + %.sroa.0.0.us8195 = phi i64 [ %38, %38 ], [ %5, %.split.us79 ] call void @llvm.lifetime.start.p0(ptr nonnull %10) call void %3(ptr noalias noundef nonnull sret([64 x i8]) align 8 captures(none) dereferenceable(64) %10, ptr noalias noundef nonnull readonly align 8 dereferenceable(40) %1, i64 noundef %.sroa.0.0.us8195, ptr noalias noundef readonly align 2 dereferenceable_or_null(2) %7), !callees !4546 %36 = load i64, ptr %10, align 8, !range !93, !noundef !3 @@ -34974,8 +34972,8 @@ default.unreachable: ; preds = %19 unreachable .split71.us: ; preds = %40, %29, %.split.us79, %.split.us - %.us-phi = phi i64 [ %17, %.split.us ], [ %17, %.split.us79 ], [ %30, %29 ], [ %41, %40 ] - %.us-phi72 = phi i64 [ %5, %.split.us ], [ %5, %.split.us79 ], [ %27, %29 ], [ %38, %40 ] + %.us-phi = phi i64 [ %17, %.split.us ], [ %17, %.split.us79 ], [ %30, %29 ], [ %41, %38 ] + %.us-phi72 = phi i64 [ %5, %.split.us ], [ %5, %.split.us79 ], [ %27, %29 ], [ %38, %38 ] %44 = tail call { i64, i64 } @_ZN11polars_time7windows6bounds6Bounds11new_checked17h7f7cf4f83569e52dE(i64 noundef %.us-phi72, i64 noundef %.us-phi) %45 = extractvalue { i64, i64 } %44, 0 %46 = extractvalue { i64, i64 } %44, 1 @@ -35002,7 +35000,7 @@ default.unreachable: ; preds = %19 br label %49 .split77.us: ; preds = %37, %26 - %.us-phi78 = phi i64 [ %28, %26 ], [ %39, %37 ] + %.us-phi78 = phi i64 [ %28, %26 ], [ %39, %35 ] %.sroa.554.0.copyload = load i64, ptr %21, align 8 %.sroa.655.0..sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 16 %.sroa.358.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 diff --git a/bench/postgres/optimized/pg_dump.ll b/bench/postgres/optimized/pg_dump.ll index 5dd387c5729..b9470605753 100644 --- a/bench/postgres/optimized/pg_dump.ll +++ b/bench/postgres/optimized/pg_dump.ll @@ -30896,15 +30896,15 @@ bsearch.exit: ; preds = %14, %bsearch.exit.l tail call void @appendPQExpBufferStr(ptr noundef %0, ptr noundef nonnull @.str.896) #13 %17 = getelementptr inbounds nuw i8, ptr %.0.i, i64 4 %18 = load i8, ptr %17, align 4 - switch i8 %18, label %19 [ + %19 = getelementptr inbounds nuw i8, ptr %.0.i, i64 8 + switch i8 %18, label %20 [ i8 105, label %.sink.split - i8 73, label %.sink.split + i8 73, label %36 ] 19: ; preds = %bsearch.exit tail call void (ptr, ptr, ...) @appendPQExpBuffer(ptr noundef %0, ptr noundef nonnull @.str.897, i32 noundef %1) #13 - %20 = getelementptr inbounds nuw i8, ptr %.0.i, i64 8 - %21 = load i32, ptr %20, align 4 + %21 = load i32, ptr %19, align 4 %.not27 = icmp eq i32 %21, 0 br i1 %.not27, label %25, label %22 @@ -30935,15 +30935,18 @@ bsearch.exit: ; preds = %14, %bsearch.exit.l tail call void (ptr, ptr, ...) @appendPQExpBuffer(ptr noundef %0, ptr noundef nonnull @.str.899, i32 noundef %32) #13 %33 = getelementptr inbounds nuw i8, ptr %.0.i, i64 20 %34 = load i32, ptr %33, align 4 + tail call void (ptr, ptr, ...) @appendPQExpBuffer(ptr noundef %0, ptr noundef nonnull @.str.900, i32 noundef %34) #13 + %35 = getelementptr inbounds nuw i8, ptr %.0.i, i64 24 br label %.sink.split -.sink.split: ; preds = %bsearch.exit, %bsearch.exit, %30 - %.sink9 = phi i32 [ %34, %30 ], [ %1, %bsearch.exit ], [ %1, %bsearch.exit ] - %.sink = phi i64 [ 24, %30 ], [ 8, %bsearch.exit ], [ 8, %bsearch.exit ] - tail call void (ptr, ptr, ...) @appendPQExpBuffer(ptr noundef %0, ptr noundef nonnull @.str.900, i32 noundef %.sink9) #13 - %35 = getelementptr inbounds nuw i8, ptr %.0.i, i64 %.sink - %36 = load i32, ptr %35, align 4 - tail call void (ptr, ptr, ...) @appendPQExpBuffer(ptr noundef %0, ptr noundef nonnull @.str.717, i32 noundef %36) #13 +.sink.split: ; preds = %bsearch.exit, %bsearch.exit + tail call void (ptr, ptr, ...) @appendPQExpBuffer(ptr noundef %0, ptr noundef nonnull @.str.900, i32 noundef %1) #13 + br label %.sink.split + +.sink.split:; preds = %.sink.split, %30 + %.sink.in = phi ptr [ %35, %30 ], [ %19, %36 ] + %.sink = load i32, ptr %.sink.in, align 4 + tail call void (ptr, ptr, ...) @appendPQExpBuffer(ptr noundef %0, ptr noundef nonnull @.str.717, i32 noundef %.sink) #13 br label %37 37: ; preds = %.sink.split, %25, %28 diff --git a/bench/protobuf/optimized/csharp_helpers.ll b/bench/protobuf/optimized/csharp_helpers.ll index 094e33e2eb3..fa484b2d056 100644 --- a/bench/protobuf/optimized/csharp_helpers.ll +++ b/bench/protobuf/optimized/csharp_helpers.ll @@ -1674,6 +1674,10 @@ if.then5.i.i.i: ; preds = %if.then.i.i.i _ZNK6google8protobuf15FieldDescriptor4typeEv.exit: ; preds = %entry, %if.then.i, %lor.lhs.false.i.i.i, %if.then.i.i.i, %if.then5.i.i.i %type_.i = getelementptr inbounds nuw i8, ptr %descriptor, i64 2 %5 = load i8, ptr %type_.i, align 2 + %label_.i.i89 = getelementptr inbounds nuw i8, ptr %descriptor, i64 1 + %bf.load.i.i90 = load i8, ptr %label_.i.i89, align 1 + %6 = and i8 %bf.load.i.i90, 96 + %cmp.i91 = icmp eq i8 %6, 96 switch i8 %5, label %sw.default [ i8 10, label %sw.bb i8 11, label %sw.bb @@ -1681,11 +1685,7 @@ _ZNK6google8protobuf15FieldDescriptor4typeEv.exit: ; preds = %entry, %if.then.i, ] sw.bb: ; preds = %_ZNK6google8protobuf15FieldDescriptor4typeEv.exit, %_ZNK6google8protobuf15FieldDescriptor4typeEv.exit - %label_.i.i = getelementptr inbounds nuw i8, ptr %descriptor, i64 1 - %bf.load.i.i = load i8, ptr %label_.i.i, align 1 - %6 = and i8 %bf.load.i.i, 96 - %cmp.i = icmp eq i8 %6, 96 - br i1 %cmp.i, label %if.then, label %if.else8 + br i1 %cmp.i91, label %if.then, label %if.else8 if.then: ; preds = %sw.bb %7 = load ptr, ptr %type_once_.i, align 8 @@ -1748,7 +1748,7 @@ lpad6: ; preds = %if.else if.else8: ; preds = %sw.bb %call9 = tail call noundef zeroext i1 @_ZN6google8protobuf8compiler6csharp13IsWrapperTypeEPKNS0_15FieldDescriptorE(ptr noundef nonnull %descriptor) - %bf.load.i.i48 = load i8, ptr %label_.i.i, align 1 + %bf.load.i.i48 = load i8, ptr %label_.i.i89, align 1 %15 = and i8 %bf.load.i.i48, 16 %bf.cast.not.i.i = icmp eq i8 %15, 0 %scope_.i.i = getelementptr inbounds nuw i8, ptr %descriptor, i64 40 @@ -1836,11 +1836,7 @@ lpad29: ; preds = %if.else27 br label %eh.resume sw.bb31: ; preds = %_ZNK6google8protobuf15FieldDescriptor4typeEv.exit - %label_.i.i68 = getelementptr inbounds nuw i8, ptr %descriptor, i64 1 - %bf.load.i.i69 = load i8, ptr %label_.i.i68, align 1 - %27 = and i8 %bf.load.i.i69, 96 - %cmp.i70 = icmp eq i8 %27, 96 - br i1 %cmp.i70, label %if.then33, label %if.else37 + br i1 %cmp.i91, label %if.then33, label %if.else37 if.then33: ; preds = %sw.bb31 %call34 = tail call noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #26 @@ -1853,7 +1849,7 @@ lpad35: ; preds = %if.then33 br label %eh.resume if.else37: ; preds = %sw.bb31 - %29 = and i8 %bf.load.i.i69, 16 + %29 = and i8 %bf.load.i.i90, 16 %bf.cast.not.i.i73 = icmp eq i8 %29, 0 %scope_.i.i74 = getelementptr inbounds nuw i8, ptr %descriptor, i64 40 %30 = load ptr, ptr %scope_.i.i74, align 8 @@ -1898,10 +1894,6 @@ lpad46: ; preds = %if.else44 br label %eh.resume sw.default: ; preds = %_ZNK6google8protobuf15FieldDescriptor4typeEv.exit - %label_.i.i89 = getelementptr inbounds nuw i8, ptr %descriptor, i64 1 - %bf.load.i.i90 = load i8, ptr %label_.i.i89, align 1 - %36 = and i8 %bf.load.i.i90, 96 - %cmp.i91 = icmp eq i8 %36, 96 br i1 %cmp.i91, label %if.then49, label %if.else53 if.then49: ; preds = %sw.default diff --git a/bench/proxygen/optimized/HQFramer.ll b/bench/proxygen/optimized/HQFramer.ll index f75449df6d2..c3d8d49593d 100644 --- a/bench/proxygen/optimized/HQFramer.ll +++ b/bench/proxygen/optimized/HQFramer.ll @@ -478,6 +478,8 @@ entry: if.then: ; preds = %entry store i64 262, ptr %agg.result, align 8 + %which_.i.i.i = getelementptr inbounds nuw i8, ptr %agg.result, i64 16 + store i8 2, ptr %which_.i.i.i, align 8 br label %return _ZN5folly8OptionalISt4pairImmEEptEv.exit5: ; preds = %entry @@ -487,6 +489,7 @@ _ZN5folly8OptionalISt4pairImmEEptEv.exit5: ; preds = %entry %4 = load i64, ptr %frameLength, align 8 %sub = sub i64 %4, %3 store i64 %sub, ptr %frameLength, align 8 + %which_.i.i.i8 = getelementptr inbounds nuw i8, ptr %agg.result, i64 16 switch i64 %settingId, label %sw.epilog [ i64 1, label %sw.bb i64 6, label %sw.bb @@ -503,18 +506,17 @@ sw.bb: ; preds = %_ZN5folly8OptionalI %hasValue.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %agg.result, i64 8 store i64 %2, ptr %agg.result, align 8 store i8 1, ptr %hasValue.i.i.i.i.i, align 8 + store i8 1, ptr %which_.i.i.i8, align 8 br label %return sw.epilog: ; preds = %_ZN5folly8OptionalISt4pairImmEEptEv.exit5 store i8 0, ptr %agg.result, align 8 %hasValue.i.i.i.i.i7 = getelementptr inbounds nuw i8, ptr %agg.result, i64 8 store i8 0, ptr %hasValue.i.i.i.i.i7, align 8 + store i8 1, ptr %which_.i.i.i8, align 8 br label %return return: ; preds = %sw.epilog, %sw.bb, %if.then - %.sink = phi i8 [ 1, %sw.epilog ], [ 1, %sw.bb ], [ 2, %if.then ] - %which_.i.i.i8 = getelementptr inbounds nuw i8, ptr %agg.result, i64 16 - store i8 %.sink, ptr %which_.i.i.i8, align 8 ret void } @@ -538,9 +540,9 @@ while.body20.lr.ph: ; preds = %entry %hasValue.i.i = getelementptr inbounds nuw i8, ptr %settingIdRes, i64 16 %second = getelementptr inbounds nuw i8, ptr %settingIdRes, i64 8 %hasValue.i.i.i8 = getelementptr inbounds nuw i8, ptr %settingValue.i, i64 16 + %which_.i.i.i.i = getelementptr inbounds nuw i8, ptr %settingValue, i64 16 %second.i = getelementptr inbounds nuw i8, ptr %settingValue.i, i64 8 %hasValue.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %settingValue, i64 8 - %which_.i.i.i8.i36 = getelementptr inbounds nuw i8, ptr %settingValue, i64 16 %_M_finish.i = getelementptr inbounds nuw i8, ptr %settings, i64 48 %_M_last.i = getelementptr inbounds nuw i8, ptr %settings, i64 64 br label %while.body20 @@ -579,39 +581,45 @@ invoke.cont26: ; preds = %invoke.cont21 _ZN5folly8OptionalISt4pairImmEEptEv.exit5.i: ; preds = %.noexc10 %5 = load i64, ptr %second.i, align 8, !noalias !13 %sub.i = sub i64 %sub, %5 - switch i64 %3, label %invoke.cont34 [ - i64 1, label %invoke.cont40 - i64 6, label %invoke.cont40 - i64 7, label %invoke.cont40 - i64 8, label %invoke.cont40 - i64 630, label %invoke.cont40 - i64 16765559, label %invoke.cont40 - i64 51, label %invoke.cont40 - i64 727725890, label %invoke.cont40 - i64 727725891, label %invoke.cont40 + switch i64 %3, label %sw.epilog.i [ + i64 1, label %sw.bb.i + i64 6, label %sw.bb.i + i64 7, label %sw.bb.i + i64 8, label %sw.bb.i + i64 630, label %sw.bb.i + i64 16765559, label %sw.bb.i + i64 51, label %sw.bb.i + i64 727725890, label %sw.bb.i + i64 727725891, label %sw.bb.i ] +sw.bb.i: ; preds = %_ZN5folly8OptionalISt4pairImmEEptEv.exit5.i, %_ZN5folly8OptionalISt4pairImmEEptEv.exit5.i, %_ZN5folly8OptionalISt4pairImmEEptEv.exit5.i, %_ZN5folly8OptionalISt4pairImmEEptEv.exit5.i, %_ZN5folly8OptionalISt4pairImmEEptEv.exit5.i, %_ZN5folly8OptionalISt4pairImmEEptEv.exit5.i, %_ZN5folly8OptionalISt4pairImmEEptEv.exit5.i, %_ZN5folly8OptionalISt4pairImmEEptEv.exit5.i, %_ZN5folly8OptionalISt4pairImmEEptEv.exit5.i + %6 = load i64, ptr %settingValue.i, align 8, !noalias !13 + store i64 %6, ptr %settingValue, align 8, !alias.scope !13 + br label %invoke.cont34 + +sw.epilog.i: ; preds = %_ZN5folly8OptionalISt4pairImmEEptEv.exit5.i + store i8 0, ptr %settingValue, align 8, !alias.scope !13 + br label %invoke.cont34 + cleanup.thread: ; preds = %.noexc10 store i64 262, ptr %settingValue, align 8, !alias.scope !13 call void @llvm.lifetime.end.p0(ptr nonnull %settingValue.i) %hasValue.i.i12 = getelementptr inbounds nuw i8, ptr %agg.result, i64 8 store i64 262, ptr %agg.result, align 8 store i8 1, ptr %hasValue.i.i12, align 8 - store i8 0, ptr %which_.i.i.i8.i36, align 8 + store i8 0, ptr %which_.i.i.i.i, align 8 br label %cleanup46 -invoke.cont34: ; preds = %_ZN5folly8OptionalISt4pairImmEEptEv.exit5.i - store i8 0, ptr %settingValue, align 8, !alias.scope !13 - store i8 0, ptr %hasValue.i.i.i.i.i.i, align 8, !alias.scope !13 +invoke.cont34: ; preds = %sw.epilog.i, %sw.bb.i + %.sink = phi i8 [ 0, %sw.epilog.i ], [ 1, %sw.bb.i ] + store i8 %.sink, ptr %hasValue.i.i.i.i.i.i, align 8, !alias.scope !13 + store i8 1, ptr %which_.i.i.i.i, align 8, !alias.scope !13 call void @llvm.lifetime.end.p0(ptr nonnull %settingValue.i) - br label %cleanup + %tobool.i = trunc nuw i8 %.sink to i1 + br i1 %tobool.i, label %invoke.cont40, label %cleanup -invoke.cont40: ; preds = %_ZN5folly8OptionalISt4pairImmEEptEv.exit5.i, %_ZN5folly8OptionalISt4pairImmEEptEv.exit5.i, %_ZN5folly8OptionalISt4pairImmEEptEv.exit5.i, %_ZN5folly8OptionalISt4pairImmEEptEv.exit5.i, %_ZN5folly8OptionalISt4pairImmEEptEv.exit5.i, %_ZN5folly8OptionalISt4pairImmEEptEv.exit5.i, %_ZN5folly8OptionalISt4pairImmEEptEv.exit5.i, %_ZN5folly8OptionalISt4pairImmEEptEv.exit5.i, %_ZN5folly8OptionalISt4pairImmEEptEv.exit5.i - %6 = load i64, ptr %settingValue.i, align 8, !noalias !13 - store i64 %6, ptr %settingValue, align 8, !alias.scope !13 - store i8 1, ptr %hasValue.i.i.i.i.i.i, align 8, !alias.scope !13 - store i8 1, ptr %which_.i.i.i8.i36, align 8, !alias.scope !13 - call void @llvm.lifetime.end.p0(ptr nonnull %settingValue.i) +invoke.cont40: ; preds = %invoke.cont34 %7 = load ptr, ptr %_M_finish.i, align 8 %8 = load ptr, ptr %_M_last.i, align 8 %add.ptr.i = getelementptr inbounds i8, ptr %8, i64 -16 @@ -633,8 +641,8 @@ if.else.i: ; preds = %invoke.cont40 invoke void @_ZNSt5dequeISt4pairIN8proxygen2hq9SettingIdEmESaIS4_EE16_M_push_back_auxIJRS3_RmEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(80) %settings, ptr noundef nonnull align 8 dereferenceable(8) %settingId, ptr noundef nonnull align 8 dereferenceable(8) %settingValue) to label %cleanup unwind label %terminate.lpad -cleanup: ; preds = %invoke.cont34, %if.else.i, %if.then.i25 - store i8 0, ptr %which_.i.i.i8.i36, align 8 +cleanup: ; preds = %if.else.i, %if.then.i25, %invoke.cont34 + store i8 0, ptr %which_.i.i.i.i, align 8 %cmp.not = icmp eq i64 %sub.i, 0 br i1 %cmp.not, label %while.end45, label %while.body20, !llvm.loop !16 diff --git a/bench/proxygen/optimized/StructuredHeadersBuffer.ll b/bench/proxygen/optimized/StructuredHeadersBuffer.ll index be4e80af52d..06a10dbe1bf 100644 --- a/bench/proxygen/optimized/StructuredHeadersBuffer.ll +++ b/bench/proxygen/optimized/StructuredHeadersBuffer.ll @@ -2951,6 +2951,8 @@ land.lhs.true.i.i.i.i: ; preds = %if.end.i.i.i.i %13 = load ptr, ptr %finish.i6.i.i, align 8 %add.ptr.i.i.i.i = getelementptr inbounds i8, ptr %13, i64 -1 %14 = load i8, ptr %add.ptr.i.i.i.i, align 1 + call void @llvm.lifetime.end.p0(ptr nonnull %i_interpreter.i.i) + call void @llvm.lifetime.end.p0(ptr nonnull %out.i.i) switch i8 %14, label %_ZN5boost10conversion6detail19try_lexical_convertIdNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEbRKT0_RT_.exit.thread5 [ i8 101, label %if.then i8 69, label %if.then @@ -2959,14 +2961,15 @@ land.lhs.true.i.i.i.i: ; preds = %if.end.i.i.i.i ] _ZN5boost10conversion6detail19try_lexical_convertIdNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEbRKT0_RT_.exit.thread5: ; preds = %land.lhs.true.i.i.i.i - call void @llvm.lifetime.end.p0(ptr nonnull %i_interpreter.i.i) - call void @llvm.lifetime.end.p0(ptr nonnull %out.i.i) %.pre = load double, ptr %result, align 8 br label %if.end -if.then: ; preds = %if.end.i.i.i.i, %land.lhs.true.i.i.i.i, %land.lhs.true.i.i.i.i, %land.lhs.true.i.i.i.i, %land.lhs.true.i.i.i.i +if.then: ; preds = %if.end.i.i.i.i call void @llvm.lifetime.end.p0(ptr nonnull %i_interpreter.i.i) call void @llvm.lifetime.end.p0(ptr nonnull %out.i.i) + br label %if.then + +if.then: ; preds = %land.lhs.true.i.i.i.i, %land.lhs.true.i.i.i.i, %land.lhs.true.i.i.i.i, %land.lhs.true.i.i.i.i, %_ZN5boost10conversion6detail19try_lexical_convertIdNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEbRKT0_RT_.exit call void @llvm.lifetime.start.p0(ptr nonnull %ref.tmp.i) store ptr getelementptr inbounds nuw (i8, ptr @_ZTVN5boost16bad_lexical_castE, i64 16), ptr %ref.tmp.i, align 8 %source.i.i = getelementptr inbounds nuw i8, ptr %ref.tmp.i, i64 8 diff --git a/bench/raylib/optimized/rcore.ll b/bench/raylib/optimized/rcore.ll index 2df335a1977..6a4f4654c55 100644 --- a/bench/raylib/optimized/rcore.ll +++ b/bench/raylib/optimized/rcore.ll @@ -19030,12 +19030,12 @@ define void @rlDrawRenderBatch(ptr noundef captures(none) %0) local_unnamed_addr %182 = getelementptr inbounds nuw i8, ptr %0, i64 16 br label %184 -183: ; preds = %615 - br i1 %103, label %618, label %622 +183: ; preds = %613 + br i1 %103, label %616, label %620 -184: ; preds = %101, %615 - %185 = phi i1 [ true, %101 ], [ false, %615 ] - %indvars.iv385 = phi i64 [ 0, %101 ], [ 1, %615 ] +184: ; preds = %101, %613 + %185 = phi i1 [ true, %101 ], [ false, %613 ] + %indvars.iv385 = phi i64 [ 0, %101 ], [ 1, %613 ] br i1 %103, label %186, label %260 186: ; preds = %184 @@ -19166,7 +19166,7 @@ define void @rlDrawRenderBatch(ptr noundef captures(none) %0) local_unnamed_addr 260: ; preds = %186, %184 %261 = load i32, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 40), align 8 %262 = icmp sgt i32 %261, 0 - br i1 %262, label %263, label %610 + br i1 %262, label %263, label %608 263: ; preds = %260 %264 = load ptr, ptr @glad_glUseProgram, align 8 @@ -19721,15 +19721,15 @@ define void @rlDrawRenderBatch(ptr noundef captures(none) %0) local_unnamed_addr %exitcond.not = icmp eq i64 %indvars.iv.next, 4 br i1 %exitcond.not, label %554, label %558 -._crit_edge: ; preds = %593, %554 +._crit_edge: ; preds = %591, %554 %568 = load i8, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 2696), align 8, !range !3, !noundef !4 %569 = trunc nuw i8 %568 to i1 - br i1 %569, label %608, label %605 + br i1 %569, label %606, label %605 -.lr.ph: ; preds = %.lr.ph.preheader, %593 - %570 = phi ptr [ %.pre397, %.lr.ph.preheader ], [ %594, %593 ] - %indvars.iv382 = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next383, %593 ] - %.082377 = phi i32 [ 0, %.lr.ph.preheader ], [ %601, %593 ] +.lr.ph: ; preds = %.lr.ph.preheader, %591 + %570 = phi ptr [ %.pre397, %.lr.ph.preheader ], [ %592, %591 ] + %indvars.iv382 = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next383, %591 ] + %.082377 = phi i32 [ 0, %.lr.ph.preheader ], [ %599, %591 ] %571 = load ptr, ptr @glad_glBindTexture, align 8 %572 = getelementptr inbounds nuw %struct.rlDrawCall, ptr %570, i64 %indvars.iv382 %573 = getelementptr inbounds nuw i8, ptr %572, i64 12 @@ -19738,6 +19738,8 @@ define void @rlDrawRenderBatch(ptr noundef captures(none) %0) local_unnamed_addr %575 = load ptr, ptr %182, align 8 %576 = getelementptr inbounds nuw %struct.rlDrawCall, ptr %575, i64 %indvars.iv382 %577 = load i32, ptr %576, align 4 + %578 = getelementptr inbounds nuw i8, ptr %576, i64 4 + %579 = load i32, ptr %578, align 4 switch i32 %577, label %582 [ i32 1, label %578 i32 4, label %578 @@ -19745,34 +19747,30 @@ define void @rlDrawRenderBatch(ptr noundef captures(none) %0) local_unnamed_addr 578: ; preds = %.lr.ph, %.lr.ph %579 = load ptr, ptr @glad_glDrawArrays, align 8 - %580 = getelementptr inbounds nuw i8, ptr %576, i64 4 - %581 = load i32, ptr %580, align 4 - call void %579(i32 noundef %577, i32 noundef %.082377, i32 noundef %581) #60 - br label %593 + call void %581(i32 noundef %577, i32 noundef %.082377, i32 noundef %579) #60 + br label %591 582: ; preds = %.lr.ph %583 = load ptr, ptr @glad_glDrawElements, align 8 - %584 = getelementptr inbounds nuw i8, ptr %576, i64 4 - %585 = load i32, ptr %584, align 4 - %586 = sdiv i32 %585, 4 + %584 = sdiv i32 %579, 4 + %585 = mul nsw i32 %584, 6 + %586 = sdiv i32 %.082377, 4 %587 = mul nsw i32 %586, 6 - %588 = sdiv i32 %.082377, 4 - %589 = mul nsw i32 %588, 6 - %590 = sext i32 %589 to i64 - %591 = shl nsw i64 %590, 2 - %592 = inttoptr i64 %591 to ptr - call void %583(i32 noundef 4, i32 noundef %587, i32 noundef 5125, ptr noundef %592) #60 - br label %593 - -593: ; preds = %582, %578 - %594 = load ptr, ptr %182, align 8 - %595 = getelementptr inbounds nuw %struct.rlDrawCall, ptr %594, i64 %indvars.iv382 - %596 = getelementptr inbounds nuw i8, ptr %595, i64 4 + %588 = sext i32 %587 to i64 + %589 = shl nsw i64 %588, 2 + %590 = inttoptr i64 %589 to ptr + call void %583(i32 noundef 4, i32 noundef %585, i32 noundef 5125, ptr noundef %590) #60 + br label %591 + +591:; preds = %582, %580 + %592 = load ptr, ptr %182, align 8 + %593 = getelementptr inbounds nuw %struct.rlDrawCall, ptr %592, i64 %indvars.iv382 + %594 = getelementptr inbounds nuw i8, ptr %593, i64 4 + %595 = load i32, ptr %594, align 4 + %596 = getelementptr inbounds nuw i8, ptr %593, i64 8 %597 = load i32, ptr %596, align 4 - %598 = getelementptr inbounds nuw i8, ptr %595, i64 8 - %599 = load i32, ptr %598, align 4 - %600 = add i32 %597, %.082377 - %601 = add i32 %600, %599 + %598 = add i32 %595, %.082377 + %599 = add i32 %598, %597 %indvars.iv.next383 = add nuw nsw i64 %indvars.iv382, 1 %602 = load i32, ptr %181, align 8 %603 = sext i32 %602 to i64 @@ -19781,40 +19779,40 @@ define void @rlDrawRenderBatch(ptr noundef captures(none) %0) local_unnamed_addr 605: ; preds = %._crit_edge %606 = load ptr, ptr @glad_glBindBuffer, align 8 - call void %606(i32 noundef 34962, i32 noundef 0) #60 + call void %604(i32 noundef 34962, i32 noundef 0) #60 %607 = load ptr, ptr @glad_glBindBuffer, align 8 - call void %607(i32 noundef 34963, i32 noundef 0) #60 + call void %605(i32 noundef 34963, i32 noundef 0) #60 + br label %606 + +606: ; preds = %603, %._crit_edge + %607 = load ptr, ptr @glad_glBindTexture, align 8 + call void %607(i32 noundef 3553, i32 noundef 0) #60 br label %608 -608: ; preds = %605, %._crit_edge - %609 = load ptr, ptr @glad_glBindTexture, align 8 - call void %609(i32 noundef 3553, i32 noundef 0) #60 - br label %610 +608: ; preds = %606, %260 + %609 = load i8, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 2696), align 8, !range !3, !noundef !4 + %610 = trunc nuw i8 %609 to i1 + br i1 %610, label %610, label %613 -610: ; preds = %608, %260 - %611 = load i8, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 2696), align 8, !range !3, !noundef !4 - %612 = trunc nuw i8 %611 to i1 - br i1 %612, label %613, label %615 +610: ; preds = %608 + %611 = load ptr, ptr @glad_glBindVertexArray, align 8 + call void %612(i32 noundef 0) #60 + br label %613 -613: ; preds = %610 - %614 = load ptr, ptr @glad_glBindVertexArray, align 8 +613: ; preds = %611, %608 + %614 = load ptr, ptr @glad_glUseProgram, align 8 call void %614(i32 noundef 0) #60 - br label %615 - -615: ; preds = %613, %610 - %616 = load ptr, ptr @glad_glUseProgram, align 8 - call void %616(i32 noundef 0) #60 - %617 = and i1 %185, %103 - br i1 %617, label %184, label %183 - -618: ; preds = %183 - %619 = load i32, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 2688), align 8 - %620 = load i32, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 2692), align 4 - %621 = load ptr, ptr @glad_glViewport, align 8 - call void %621(i32 noundef 0, i32 noundef 0, i32 noundef %619, i32 noundef %620) #60 - br label %622 - -622: ; preds = %618, %183 + %615 = and i1 %185, %103 + br i1 %615, label %184, label %183 + +622: ; preds = %183 + %617 = load i32, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 2688), align 8 + %618 = load i32, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 2692), align 4 + %619 = load ptr, ptr @glad_glViewport, align 8 + call void %619(i32 noundef 0, i32 noundef 0, i32 noundef %617, i32 noundef %618) #60 + br label %620 + +620: ; preds = %616, %183 store i32 0, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 40), align 8 %623 = getelementptr inbounds nuw i8, ptr %0, i64 28 store float -1.000000e+00, ptr %623, align 4 @@ -19837,20 +19835,20 @@ define void @rlDrawRenderBatch(ptr noundef captures(none) %0) local_unnamed_addr store float %.sroa.19.0.copyload, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 140), align 4 br label %624 -624: ; preds = %622, %624 - %indvars.iv388 = phi i64 [ 0, %622 ], [ %indvars.iv.next389, %624 ] +624: ; preds = %620, %624 + %indvars.iv388 = phi i64 [ 0, %620 ], [ %indvars.iv.next389, %622 ] + %623 = load ptr, ptr %182, align 8 + %624 = getelementptr inbounds nuw %struct.rlDrawCall, ptr %623, i64 %indvars.iv388 + store i32 7, ptr %624, align 4 %625 = load ptr, ptr %182, align 8 %626 = getelementptr inbounds nuw %struct.rlDrawCall, ptr %625, i64 %indvars.iv388 - store i32 7, ptr %626, align 4 - %627 = load ptr, ptr %182, align 8 - %628 = getelementptr inbounds nuw %struct.rlDrawCall, ptr %627, i64 %indvars.iv388 - %629 = getelementptr inbounds nuw i8, ptr %628, i64 4 - store i32 0, ptr %629, align 4 - %630 = load i32, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 2328), align 8 - %631 = load ptr, ptr %182, align 8 - %632 = getelementptr inbounds nuw %struct.rlDrawCall, ptr %631, i64 %indvars.iv388 - %633 = getelementptr inbounds nuw i8, ptr %632, i64 12 - store i32 %630, ptr %633, align 4 + %627 = getelementptr inbounds nuw i8, ptr %626, i64 4 + store i32 0, ptr %627, align 4 + %628 = load i32, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 2328), align 8 + %629 = load ptr, ptr %182, align 8 + %630 = getelementptr inbounds nuw %struct.rlDrawCall, ptr %629, i64 %indvars.iv388 + %631 = getelementptr inbounds nuw i8, ptr %630, i64 12 + store i32 %628, ptr %631, align 4 %indvars.iv.next389 = add nuw nsw i64 %indvars.iv388, 1 %exitcond391.not = icmp eq i64 %indvars.iv.next389, 256 br i1 %exitcond391.not, label %.preheader.preheader, label %624 diff --git a/bench/raylib/optimized/rtextures.ll b/bench/raylib/optimized/rtextures.ll index 56fd3f9961b..935a4bed368 100644 --- a/bench/raylib/optimized/rtextures.ll +++ b/bench/raylib/optimized/rtextures.ll @@ -17400,7 +17400,8 @@ define void @ImageResize(ptr noundef %0, i32 noundef %1, i32 noundef %2) local_u 14: ; preds = %10 %15 = getelementptr inbounds nuw i8, ptr %0, i64 20 %16 = load i32, ptr %15, align 4 - switch i32 %16, label %39 [ + %17 = mul nsw i32 %2, %1 + switch i32 %16, label %37 [ i32 1, label %GetPixelDataSize.exit i32 2, label %GetPixelDataSize.exit i32 7, label %GetPixelDataSize.exit.thread69 @@ -17408,7 +17409,6 @@ define void @ImageResize(ptr noundef %0, i32 noundef %1, i32 noundef %2) local_u ] GetPixelDataSize.exit.thread69: ; preds = %14 - %17 = mul nsw i32 %2, %1 %18 = shl nsw i32 %17, 2 %19 = sext i32 %18 to i64 %20 = tail call noalias ptr @malloc(i64 noundef %19) #55 @@ -17416,31 +17416,29 @@ GetPixelDataSize.exit.thread69: ; preds = %14 br label %36 GetPixelDataSize.exit.thread: ; preds = %14 - %22 = mul nsw i32 %2, %1 - %23 = mul nsw i32 %22, 3 - %24 = sext i32 %23 to i64 - %25 = tail call noalias ptr @malloc(i64 noundef %24) #55 - %26 = tail call ptr @stbir_resize_uint8_linear(ptr noundef nonnull %4, i32 noundef %8, i32 noundef %12, i32 noundef 0, ptr noundef %25, i32 noundef %1, i32 noundef %2, i32 noundef 0, i32 noundef 3) - br label %36 + %22 = mul nsw i32 %17, 3 + %23 = sext i32 %22 to i64 + %24 = tail call noalias ptr @malloc(i64 noundef %23) #55 + %25 = tail call ptr @stbir_resize_uint8_linear(ptr noundef nonnull %4, i32 noundef %8, i32 noundef %12, i32 noundef 0, ptr noundef %24, i32 noundef %1, i32 noundef %2, i32 noundef 0, i32 noundef 3) + br label %34 GetPixelDataSize.exit: ; preds = %14, %14 - %27 = mul nsw i32 %2, %1 - %28 = mul nsw i32 %27, %16 - %29 = sext i32 %28 to i64 - %30 = tail call noalias ptr @malloc(i64 noundef %29) #55 - %31 = icmp eq i32 %16, 1 - br i1 %31, label %32, label %34 + %27 = mul nsw i32 %17, %16 + %27 = sext i32 %27 to i64 + %28 = tail call noalias ptr @malloc(i64 noundef %27) #55 + %29 = icmp eq i32 %16, 1 + br i1 %29, label %30, label %32 32: ; preds = %GetPixelDataSize.exit - %33 = tail call ptr @stbir_resize_uint8_linear(ptr noundef nonnull %4, i32 noundef %8, i32 noundef %12, i32 noundef 0, ptr noundef %30, i32 noundef %1, i32 noundef %2, i32 noundef 0, i32 noundef 1) + %33 = tail call ptr @stbir_resize_uint8_linear(ptr noundef nonnull %4, i32 noundef %8, i32 noundef %12, i32 noundef 0, ptr noundef %28, i32 noundef %1, i32 noundef %2, i32 noundef 0, i32 noundef 1) br label %36 34: ; preds = %GetPixelDataSize.exit - %35 = tail call ptr @stbir_resize_uint8_linear(ptr noundef nonnull %4, i32 noundef %8, i32 noundef %12, i32 noundef 0, ptr noundef %30, i32 noundef %1, i32 noundef %2, i32 noundef 0, i32 noundef 2) + %35 = tail call ptr @stbir_resize_uint8_linear(ptr noundef nonnull %4, i32 noundef %8, i32 noundef %12, i32 noundef 0, ptr noundef %28, i32 noundef %1, i32 noundef %2, i32 noundef 0, i32 noundef 2) br label %36 36: ; preds = %GetPixelDataSize.exit.thread69, %GetPixelDataSize.exit.thread, %34, %32 - %37 = phi ptr [ %20, %GetPixelDataSize.exit.thread69 ], [ %25, %GetPixelDataSize.exit.thread ], [ %30, %34 ], [ %30, %32 ] + %37 = phi ptr [ %20, %GetPixelDataSize.exit.thread69 ], [ %24, %GetPixelDataSize.exit.thread ], [ %28, %32 ], [ %28, %30 ] %38 = load ptr, ptr %0, align 8 tail call void @free(ptr noundef %38) #54 store ptr %37, ptr %0, align 8 @@ -17450,22 +17448,21 @@ GetPixelDataSize.exit: ; preds = %14, %14 39: ; preds = %14 %40 = tail call ptr @LoadImageColors(ptr noundef nonnull byval(%struct.Image) align 8 %0) - %41 = mul nsw i32 %2, %1 - %42 = sext i32 %41 to i64 - %43 = shl nsw i64 %42, 2 - %44 = tail call noalias ptr @malloc(i64 noundef %43) #55 - %45 = load i32, ptr %7, align 8 - %46 = load i32, ptr %11, align 4 - %47 = tail call ptr @stbir_resize_uint8_linear(ptr noundef %40, i32 noundef %45, i32 noundef %46, i32 noundef 0, ptr noundef %44, i32 noundef %1, i32 noundef %2, i32 noundef 0, i32 noundef 4) - %48 = load i32, ptr %15, align 4 - tail call void @free(ptr noundef %40) #54 - %49 = load ptr, ptr %0, align 8 - tail call void @free(ptr noundef %49) #54 - store ptr %44, ptr %0, align 8 + %39 = sext i32 %17 to i64 + %40 = shl nsw i64 %39, 2 + %41 = tail call noalias ptr @malloc(i64 noundef %40) #55 + %42 = load i32, ptr %7, align 8 + %45 = load i32, ptr %11, align 4 + %44 = tail call ptr @stbir_resize_uint8_linear(ptr noundef %38, i32 noundef %42, i32 noundef %43, i32 noundef 0, ptr noundef %41, i32 noundef %1, i32 noundef %2, i32 noundef 0, i32 noundef 4) + %45 = load i32, ptr %15, align 4 + tail call void @free(ptr noundef %38) #54 + %46 = load ptr, ptr %0, align 8 + tail call void @free(ptr noundef %46) #54 + store ptr %41, ptr %0, align 8 store i32 %1, ptr %7, align 8 store i32 %2, ptr %11, align 4 store i32 7, ptr %15, align 4 - tail call void @ImageFormat(ptr noundef nonnull %0, i32 noundef %48) + tail call void @ImageFormat(ptr noundef nonnull %0, i32 noundef %45) br label %50 50: ; preds = %3, %6, %10, %39, %36 diff --git a/bench/redis/optimized/bitops.ll b/bench/redis/optimized/bitops.ll index 0d35ffdfd74..97faabc228c 100644 --- a/bench/redis/optimized/bitops.ll +++ b/bench/redis/optimized/bitops.ll @@ -1286,7 +1286,7 @@ define dso_local void @getbitCommand(ptr noundef %0) local_unnamed_addr #3 { %7 = load ptr, ptr %6, align 8, !tbaa !72 %8 = call i32 @getBitOffsetFromArgument(ptr noundef %0, ptr noundef %7, ptr noundef nonnull %3, i32 noundef 0, i32 noundef 0) %.not = icmp eq i32 %8, 0 - br i1 %.not, label %9, label %71 + br i1 %.not, label %9, label %69 9: ; preds = %1 %10 = load ptr, ptr %4, align 8, !tbaa !61 @@ -1295,12 +1295,12 @@ define dso_local void @getbitCommand(ptr noundef %0) local_unnamed_addr #3 { %13 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @shared, i64 24), align 8, !tbaa !77 %14 = tail call ptr @lookupKeyReadOrReply(ptr noundef nonnull %0, ptr noundef %12, ptr noundef %13) #18 %15 = icmp eq ptr %14, null - br i1 %15, label %71, label %16 + br i1 %15, label %69, label %16 16: ; preds = %9 %17 = tail call i32 @checkType(ptr noundef nonnull %0, ptr noundef nonnull %14, i32 noundef 0) #18 %.not21 = icmp eq i32 %17, 0 - br i1 %.not21, label %18, label %71 + br i1 %.not21, label %18, label %69 18: ; preds = %16 %19 = load i64, ptr %3, align 8, !tbaa !11 @@ -1308,15 +1308,15 @@ define dso_local void @getbitCommand(ptr noundef %0) local_unnamed_addr #3 { %21 = load i32, ptr %14, align 8 %22 = lshr i32 %21, 4 %23 = and i32 %22, 15 + %24 = getelementptr inbounds nuw i8, ptr %14, i64 8 + %25 = load ptr, ptr %24, align 8, !tbaa !26 switch i32 %23, label %50 [ i32 0, label %24 i32 8, label %24 ] 24: ; preds = %18, %18 - %25 = getelementptr inbounds nuw i8, ptr %14, i64 8 - %26 = load ptr, ptr %25, align 8, !tbaa !26 - %27 = getelementptr inbounds i8, ptr %26, i64 -1 + %25 = getelementptr inbounds i8, ptr %25, i64 -1 %28 = load i8, ptr %27, align 1, !tbaa !5 %29 = zext i8 %28 to i32 %30 = and i32 %29, 7 @@ -1334,70 +1334,68 @@ define dso_local void @getbitCommand(ptr noundef %0) local_unnamed_addr #3 { br label %sdslen.exit 34: ; preds = %24 - %35 = getelementptr inbounds i8, ptr %26, i64 -3 + %35 = getelementptr inbounds i8, ptr %25, i64 -3 %36 = load i8, ptr %35, align 1, !tbaa !5 %37 = zext i8 %36 to i64 br label %sdslen.exit 38: ; preds = %24 - %39 = getelementptr inbounds i8, ptr %26, i64 -5 + %39 = getelementptr inbounds i8, ptr %25, i64 -5 %40 = load i16, ptr %39, align 1, !tbaa !29 %41 = zext i16 %40 to i64 br label %sdslen.exit 42: ; preds = %24 - %43 = getelementptr inbounds i8, ptr %26, i64 -9 + %43 = getelementptr inbounds i8, ptr %25, i64 -9 %44 = load i32, ptr %43, align 1, !tbaa !14 %45 = zext i32 %44 to i64 br label %sdslen.exit 46: ; preds = %24 - %47 = getelementptr inbounds i8, ptr %26, i64 -17 + %47 = getelementptr inbounds i8, ptr %25, i64 -17 %48 = load i64, ptr %47, align 1, !tbaa !11 br label %sdslen.exit sdslen.exit: ; preds = %31, %34, %38, %42, %46 %.0.i = phi i64 [ %33, %31 ], [ %37, %34 ], [ %41, %38 ], [ %45, %42 ], [ %48, %46 ] %49 = icmp ult i64 %20, %.0.i - br i1 %49, label %58, label %.thread + br i1 %49, label %56, label %.thread 50: ; preds = %18 - %51 = getelementptr inbounds nuw i8, ptr %14, i64 8 - %52 = load ptr, ptr %51, align 8, !tbaa !26 - %53 = ptrtoint ptr %52 to i64 - %54 = call i32 @ll2string(ptr noundef nonnull %2, i64 noundef 32, i64 noundef %53) #18 - %55 = sext i32 %54 to i64 - %56 = icmp ult i64 %20, %55 - br i1 %56, label %58, label %.thread - -.thread: ; preds = %sdslen.exit, %50, %24 - %57 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @shared, i64 24), align 8 - br label %69 - -58: ; preds = %50, %sdslen.exit - %.sink = phi ptr [ %26, %sdslen.exit ], [ %2, %50 ] - %59 = getelementptr inbounds nuw i8, ptr %.sink, i64 %20 - %60 = load i8, ptr %59, align 1, !tbaa !5 - %.fr31 = freeze i8 %60 - %61 = zext i8 %.fr31 to i32 - %62 = trunc i64 %19 to i32 - %63 = and i32 %62, 7 - %64 = xor i32 %63, 7 - %65 = shl nuw nsw i32 1, %64 - %.fr = freeze i32 %65 - %66 = and i32 %.fr, %61 - %.not22 = icmp eq i32 %66, 0 - %67 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @shared, i64 32), align 8 - %68 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @shared, i64 24), align 8 - %spec.select = select i1 %.not22, ptr %68, ptr %67 + %51 = ptrtoint ptr %25 to i64 + %52 = call i32 @ll2string(ptr noundef nonnull %2, i64 noundef 32, i64 noundef %51) #18 + %53 = sext i32 %52 to i64 + %54 = icmp ult i64 %20, %53 + br i1 %54, label %56, label %.thread + +.thread:; preds = %sdslen.exit, %50, %26 + %55 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @shared, i64 24), align 8 + br label %67 + +56:; preds = %50, %sdslen.exit + %.sink = phi ptr [ %25, %sdslen.exit ], [ %2, %50 ] + %57 = getelementptr inbounds nuw i8, ptr %.sink, i64 %20 + %58 = load i8, ptr %57, align 1, !tbaa !5 + %.fr31 = freeze i8 %58 + %59 = zext i8 %.fr31 to i32 + %60 = trunc i64 %19 to i32 + %61 = and i32 %60, 7 + %62 = xor i32 %61, 7 + %63 = shl nuw nsw i32 1, %62 + %.fr = freeze i32 %63 + %64 = and i32 %.fr, %59 + %.not22 = icmp eq i32 %64, 0 + %65 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @shared, i64 32), align 8 + %66 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @shared, i64 24), align 8 + %spec.select = select i1 %.not22, ptr %66, ptr %65 + br label %67 + +67: ; preds = %56, %.thread + %68 = phi ptr [ %55, %.thread ], [ %spec.select, %56 ] + call void @addReply(ptr noundef nonnull %0, ptr noundef %68) #18 br label %69 -69: ; preds = %58, %.thread - %70 = phi ptr [ %57, %.thread ], [ %spec.select, %58 ] - call void @addReply(ptr noundef nonnull %0, ptr noundef %70) #18 - br label %71 - -71: ; preds = %9, %16, %1, %69 +69: ; preds = %9, %16, %1, %67 call void @llvm.lifetime.end.p0(ptr nonnull %3) call void @llvm.lifetime.end.p0(ptr nonnull %2) ret void diff --git a/bench/rocksdb/optimized/sst_file_dumper.ll b/bench/rocksdb/optimized/sst_file_dumper.ll index ce18e366155..0cf4320a0af 100644 --- a/bench/rocksdb/optimized/sst_file_dumper.ll +++ b/bench/rocksdb/optimized/sst_file_dumper.ll @@ -7518,8 +7518,11 @@ define void @_ZN7rocksdb13SstFileDumper23ShowAllCompressionSizesEmRKSt6vectorISt .lr.ph49.split.us: ; preds = %.lr.ph49, %_ZN7rocksdb24CompressionTypeSupportedENS_15CompressionTypeE.exit.us %.sroa.035.048.us = phi ptr [ %36, %_ZN7rocksdb24CompressionTypeSupportedENS_15CompressionTypeE.exit.us ], [ %15, %.lr.ph49 ] %29 = load i8, ptr %.sroa.035.048.us, align 8, !tbaa !668 - %30 = icmp ult i8 %29, 8 - br i1 %30, label %switch.lookup, label %_ZN7rocksdb24CompressionTypeSupportedENS_15CompressionTypeE.exit.us + %30 = load ptr, ptr @stdout, align 8, !tbaa !203 + %31 = getelementptr inbounds nuw i8, ptr %.sroa.035.048.us, i64 8 + %32 = load ptr, ptr %31, align 8, !tbaa !670 + %33 = icmp ult i8 %29, 8 + br i1 %33, label %switch.lookup, label %_ZN7rocksdb24CompressionTypeSupportedENS_15CompressionTypeE.exit.us switch.lookup: ; preds = %.lr.ph49.split.us %31 = zext nneg i8 %29 to i64 @@ -7529,17 +7532,17 @@ switch.lookup: ; preds = %.lr.ph49.split.us _ZN7rocksdb24CompressionTypeSupportedENS_15CompressionTypeE.exit.us: ; preds = %.lr.ph49.split.us, %switch.lookup %.str.47.sink = phi ptr [ %switch.load, %switch.lookup ], [ @.str.47, %.lr.ph49.split.us ] - %32 = load ptr, ptr @stdout, align 8, !tbaa !203 - %33 = getelementptr inbounds nuw i8, ptr %.sroa.035.048.us, i64 8 - %34 = load ptr, ptr %33, align 8, !tbaa !670 - %35 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %32, ptr noundef nonnull %.str.47.sink, ptr noundef %34) #27 + %35 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %30, ptr noundef nonnull %.str.47.sink, ptr noundef %32) #27 %36 = getelementptr inbounds nuw i8, ptr %.sroa.035.048.us, i64 16 %.not44.us = icmp eq ptr %36, %17 br i1 %.not44.us, label %._crit_edge, label %.lr.ph49.split.us -.lr.ph49.split: ; preds = %.lr.ph49, %55 - %.sroa.035.048 = phi ptr [ %56, %55 ], [ %15, %.lr.ph49 ] +.lr.ph49.split: ; preds = %.lr.ph49, %52 + %.sroa.035.048 = phi ptr [ %53, %52 ], [ %15, %.lr.ph49 ] %37 = load i8, ptr %.sroa.035.048, align 8, !tbaa !668 + %38 = load ptr, ptr @stdout, align 8, !tbaa !203 + %39 = getelementptr inbounds nuw i8, ptr %.sroa.035.048, i64 8 + %40 = load ptr, ptr %39, align 8, !tbaa !670 switch i8 %37, label %_ZN7rocksdb24CompressionTypeSupportedENS_15CompressionTypeE.exit [ i8 0, label %.lr.ph i8 1, label %.lr.ph @@ -7550,9 +7553,6 @@ _ZN7rocksdb24CompressionTypeSupportedENS_15CompressionTypeE.exit.us: ; preds = % ] .lr.ph: ; preds = %.lr.ph49.split, %.lr.ph49.split, %.lr.ph49.split, %.lr.ph49.split, %.lr.ph49.split, %.lr.ph49.split - %38 = load ptr, ptr @stdout, align 8, !tbaa !203 - %39 = getelementptr inbounds nuw i8, ptr %.sroa.035.048, i64 8 - %40 = load ptr, ptr %39, align 8, !tbaa !670 %41 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %38, ptr noundef nonnull @.str.45, ptr noundef %40) #27 call void @llvm.lifetime.start.p0(ptr nonnull %11) store i32 -14, ptr %11, align 8, !tbaa !671 @@ -7570,7 +7570,7 @@ _ZN7rocksdb24CompressionTypeSupportedENS_15CompressionTypeE.exit.us: ; preds = % ..critedge.thread_crit_edge: ; preds = %_ZN7rocksdb6StatusD2Ev.exit34 call void @llvm.lifetime.end.p0(ptr nonnull %11) - br label %55 + br label %52 42: ; preds = %.lr.ph, %_ZN7rocksdb6StatusD2Ev.exit34 %.03046 = phi i32 [ %4, %.lr.ph ], [ %50, %_ZN7rocksdb6StatusD2Ev.exit34 ] @@ -7599,22 +7599,19 @@ _ZN7rocksdb6StatusD2Ev.exit34: ; preds = %48, %_ZNKSt14defaul br i1 %exitcond.not, label %..critedge.thread_crit_edge, label %42, !llvm.loop !682 _ZN7rocksdb24CompressionTypeSupportedENS_15CompressionTypeE.exit: ; preds = %.lr.ph49.split - %51 = load ptr, ptr @stdout, align 8, !tbaa !203 - %52 = getelementptr inbounds nuw i8, ptr %.sroa.035.048, i64 8 - %53 = load ptr, ptr %52, align 8, !tbaa !670 - %54 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %51, ptr noundef nonnull @.str.47, ptr noundef %53) #27 - br label %55 - -55: ; preds = %..critedge.thread_crit_edge, %_ZN7rocksdb24CompressionTypeSupportedENS_15CompressionTypeE.exit - %56 = getelementptr inbounds nuw i8, ptr %.sroa.035.048, i64 16 - %.not44 = icmp eq ptr %56, %17 + %51 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %38, ptr noundef nonnull @.str.47, ptr noundef %40) #27 + br label %52 + +52:; preds = %..critedge.thread_crit_edge, %_ZN7rocksdb24CompressionTypeSupportedENS_15CompressionTypeE.exit + %53 = getelementptr inbounds nuw i8, ptr %.sroa.035.048, i64 16 + %.not44 = icmp eq ptr %53, %17 br i1 %.not44, label %._crit_edge, label %.lr.ph49.split 57: ; preds = %42 call void @llvm.lifetime.end.p0(ptr nonnull %11) br label %59 -._crit_edge: ; preds = %55, %_ZN7rocksdb24CompressionTypeSupportedENS_15CompressionTypeE.exit.us, %10 +._crit_edge: ; preds = %52, %_ZN7rocksdb24CompressionTypeSupportedENS_15CompressionTypeE.exit.us, %10 %58 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr null, ptr %58, align 8, !tbaa !539, !alias.scope !683 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %0, i8 0, i64 6, i1 false), !alias.scope !683 diff --git a/bench/rocksdb/optimized/string_util.ll b/bench/rocksdb/optimized/string_util.ll index a9339aecae7..edf65d981f0 100644 --- a/bench/rocksdb/optimized/string_util.ll +++ b/bench/rocksdb/optimized/string_util.ll @@ -961,8 +961,12 @@ define void @_ZN7rocksdb18EscapeOptionStringERKNSt7__cxx1112basic_stringIcSt11ch ret void .lr.ph: ; preds = %2, %60 - %.sroa.016.020 = phi ptr [ %63, %60 ], [ %5, %2 ] + %.sroa.016.020 = phi ptr [ %63, %56 ], [ %5, %2 ] %9 = load i8, ptr %.sroa.016.020, align 1, !tbaa !13 + %10 = load i64, ptr %4, align 8, !tbaa !10 + %11 = add i64 %10, 1 + %12 = load ptr, ptr %0, align 8, !tbaa !30 + %13 = icmp eq ptr %12, %3 switch i8 %9, label %47 [ i8 92, label %10 i8 58, label %10 @@ -972,25 +976,21 @@ define void @_ZN7rocksdb18EscapeOptionStringERKNSt7__cxx1112basic_stringIcSt11ch ] 10: ; preds = %.lr.ph, %.lr.ph, %.lr.ph, %.lr.ph, %.lr.ph - %11 = load i64, ptr %4, align 8, !tbaa !10 - %12 = add i64 %11, 1 - %13 = load ptr, ptr %0, align 8, !tbaa !30 - %14 = icmp eq ptr %13, %3 - br i1 %14, label %15, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i + br i1 %13, label %15, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i 15: ; preds = %10 - %16 = icmp ult i64 %11, 16 + %16 = icmp ult i64 %10, 16 tail call void @llvm.assume(i1 %16) br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i: ; preds = %15, %10 %17 = load i64, ptr %3, align 8 - %18 = select i1 %14, i64 15, i64 %17 - %19 = icmp ugt i64 %12, %18 + %18 = select i1 %13, i64 15, i64 %17 + %19 = icmp ugt i64 %11, %18 br i1 %19, label %20, label %21 20: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i - invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEmmPKcm(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %11, i64 noundef 0, ptr noundef null, i64 noundef 1) + invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEmmPKcm(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %10, i64 noundef 0, ptr noundef null, i64 noundef 1) to label %.noexc unwind label %41 .noexc: ; preds = %20 @@ -998,12 +998,12 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i: ; pr br label %21 21: ; preds = %.noexc, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i - %22 = phi ptr [ %.pre.i.i, %.noexc ], [ %13, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i ] - %23 = getelementptr inbounds nuw i8, ptr %22, i64 %11 + %22 = phi ptr [ %.pre.i.i, %.noexc ], [ %12, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i ] + %23 = getelementptr inbounds nuw i8, ptr %22, i64 %10 store i8 92, ptr %23, align 1, !tbaa !13 - store i64 %12, ptr %4, align 8, !tbaa !10 + store i64 %11, ptr %4, align 8, !tbaa !10 %24 = load ptr, ptr %0, align 8, !tbaa !30 - %25 = getelementptr inbounds nuw i8, ptr %24, i64 %12 + %25 = getelementptr inbounds nuw i8, ptr %24, i64 %11 store i8 0, ptr %25, align 1, !tbaa !13 switch i8 %9, label %_ZN7rocksdb10EscapeCharEc.exit [ i8 10, label %26 @@ -1069,25 +1069,21 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %41, % resume { ptr, i32 } %42 47: ; preds = %.lr.ph - %48 = load i64, ptr %4, align 8, !tbaa !10 - %49 = add i64 %48, 1 - %50 = load ptr, ptr %0, align 8, !tbaa !30 - %51 = icmp eq ptr %50, %3 - br i1 %51, label %52, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i12 + br i1 %13, label %48, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i12 52: ; preds = %47 - %53 = icmp ult i64 %48, 16 + %53 = icmp ult i64 %10, 16 tail call void @llvm.assume(i1 %53) br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i12 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i12: ; preds = %52, %47 %54 = load i64, ptr %3, align 8 - %55 = select i1 %51, i64 15, i64 %54 - %56 = icmp ugt i64 %49, %55 + %55 = select i1 %13, i64 15, i64 %54 + %56 = icmp ugt i64 %11, %55 br i1 %56, label %57, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit15 57: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i12 - invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEmmPKcm(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %48, i64 noundef 0, ptr noundef null, i64 noundef 1) + invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEmmPKcm(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %10, i64 noundef 0, ptr noundef null, i64 noundef 1) to label %.noexc14 unwind label %41 .noexc14: ; preds = %57 @@ -1095,13 +1091,13 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i12: ; br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit15 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit15: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i12, %.noexc14 - %58 = phi ptr [ %.pre.i.i13, %.noexc14 ], [ %50, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i12 ] - %59 = getelementptr inbounds nuw i8, ptr %58, i64 %48 + %58 = phi ptr [ %.pre.i.i13, %.noexc14 ], [ %12, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i12 ] + %59 = getelementptr inbounds nuw i8, ptr %58, i64 %10 store i8 %9, ptr %59, align 1, !tbaa !13 br label %60 60: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit15, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit11 - %.sink = phi i64 [ %49, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit15 ], [ %30, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit11 ] + %.sink = phi i64 [ %11, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit15 ], [ %30, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit11 ] store i64 %.sink, ptr %4, align 8, !tbaa !10 %61 = load ptr, ptr %0, align 8, !tbaa !30 %62 = getelementptr inbounds nuw i8, ptr %61, i64 %.sink diff --git a/bench/ruby/optimized/ractor.ll b/bench/ruby/optimized/ractor.ll index 221e4feb308..fdb8b551f92 100644 --- a/bench/ruby/optimized/ractor.ll +++ b/bench/ruby/optimized/ractor.ll @@ -8857,21 +8857,17 @@ rb_ec_ractor_ptr.exit: ; preds = %2, %8 22: ; preds = %ractor_wait_take.exit, %rb_ec_ractor_ptr.exit call void @rb_native_mutex_lock(ptr noundef nonnull %12) #18 %.val9.i = load i32, ptr %6, align 8, !tbaa !100 + call void @rb_native_mutex_unlock(ptr noundef nonnull %12) #18 switch i32 %.val9.i, label %.critedge.i [ i32 0, label %ractor_try_take.exit.thread i32 8, label %ractor_try_take.exit.thread ] .critedge.i: ; preds = %22 - call void @rb_native_mutex_unlock(ptr noundef nonnull %12) #18 %.val.i = load i32, ptr %6, align 8, !tbaa !100 %23 = icmp eq i32 %.val.i, 5 br i1 %23, label %24, label %ractor_try_take.exit -ractor_try_take.exit.thread: ; preds = %22, %22 - call void @rb_native_mutex_unlock(ptr noundef nonnull %12) #18 - br label %28 - 24: ; preds = %.critedge.i %25 = load i64, ptr @rb_eRactorClosedError, align 8, !tbaa !80 call void (i64, ptr, ...) @rb_raise(i64 noundef %25, ptr noundef nonnull @.str.65) #26 @@ -8882,7 +8878,7 @@ ractor_try_take.exit: ; preds = %.critedge.i %27 = icmp eq i64 %26, 36 br i1 %27, label %28, label %54 -28: ; preds = %ractor_try_take.exit.thread, %ractor_try_take.exit +28: ; preds = %22, %22, %ractor_try_take.exit call void @llvm.lifetime.start.p0(ptr nonnull %5) store ptr %1, ptr %5, align 8, !tbaa !282 store ptr %6, ptr %13, align 8, !tbaa !284 @@ -8928,9 +8924,9 @@ ractor_try_take.exit: ; preds = %.critedge.i br label %rb_ec_ractor_ptr.exit.i.i.i.i rb_ec_ractor_ptr.exit.i.i.i.i: ; preds = %33, %31 - %.in.i.i.i.i = phi ptr [ %36, %33 ], [ inttoptr (i64 88 to ptr), %31 ] - %.0.i2.i.i.i.i = phi ptr [ %35, %33 ], [ null, %31 ] - %.0.i6.i.i.i.i = phi ptr [ %38, %33 ], [ null, %31 ] + %.in.i.i.i.i = phi ptr [ %36, %32 ], [ inttoptr (i64 88 to ptr), %30 ] + %.0.i2.i.i.i.i = phi ptr [ %35, %32 ], [ null, %30 ] + %.0.i6.i.i.i.i = phi ptr [ %38, %32 ], [ null, %30 ] %39 = load ptr, ptr %.in.i.i.i.i, align 8, !tbaa !153 %.not.i.i.i.i = icmp eq ptr %39, %.0.i6.i.i.i.i br i1 %.not.i.i.i.i, label %40, label %rb_ec_vm_lock_rec.exit.i.i.i @@ -8941,7 +8937,7 @@ rb_ec_ractor_ptr.exit.i.i.i.i: ; preds = %33, %31 br label %rb_ec_vm_lock_rec.exit.i.i.i rb_ec_vm_lock_rec.exit.i.i.i: ; preds = %40, %rb_ec_ractor_ptr.exit.i.i.i.i - %.0.i.i.i.i = phi i32 [ %42, %40 ], [ 0, %rb_ec_ractor_ptr.exit.i.i.i.i ] + %.0.i.i.i.i = phi i32 [ %42, %39 ], [ 0, %rb_ec_ractor_ptr.exit.i.i.i.i ] store i32 %.0.i.i.i.i, ptr %19, align 4, !tbaa !155 %43 = call ptr @llvm.frameaddress.p0(i32 0) store ptr %43, ptr %20, align 8 diff --git a/bench/rust-analyzer-rs/optimized/2jezmucvqvfiuhvx.ll b/bench/rust-analyzer-rs/optimized/2jezmucvqvfiuhvx.ll index e2546560028..ea7218f3d5d 100644 --- a/bench/rust-analyzer-rs/optimized/2jezmucvqvfiuhvx.ll +++ b/bench/rust-analyzer-rs/optimized/2jezmucvqvfiuhvx.ll @@ -363,6 +363,7 @@ define internal fastcc void @"_ZN108_$LT$core..iter..adapters..filter..Filter$LT br i1 %38, label %"_ZN14ide_completion11completions9flyimport17import_on_the_fly28_$u7b$$u7b$closure$u7d$$u7d$17hd5659706bf52ab36E.exit.thread.i.i.i.i", label %36 39: ; preds = %35 + %40 = icmp ne ptr %.val3.i.i.i.i, null switch i64 %33, label %43 [ i64 0, label %40 i64 1, label %40 @@ -376,8 +377,7 @@ define internal fastcc void @"_ZN108_$LT$core..iter..adapters..filter..Filter$LT call void @llvm.lifetime.start.p0(ptr nonnull %6), !noalias !168 store i32 %.sroa.2.0.copyload.i.i.i.i.i, ptr %6, align 4, !noalias !168 store i32 %.sroa.11.0.copyload.i.i.i.i.i, ptr %17, align 4, !noalias !168 - %41 = icmp ne ptr %.val3.i.i.i.i, null - call void @llvm.assume(i1 %41) + call void @llvm.assume(i1 %40) %42 = invoke noundef zeroext i1 @_ZN3hir5Macro10is_fn_like17hfe76039e57a532e7E(ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %6, ptr noundef nonnull align 1 %.val3.i.i.i.i, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.55fe3e2812e4d157c6a6f09dc7b11bdf.30) to label %.noexc.i.i.i.i unwind label %75, !noalias !169 @@ -416,26 +416,24 @@ define internal fastcc void @"_ZN108_$LT$core..iter..adapters..filter..Filter$LT call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !168 store i32 %.sroa.2.0.copyload.i.i.i.i.i, ptr %5, align 4, !noalias !168 store i32 %.sroa.11.0.copyload.i.i.i.i.i, ptr %16, align 4, !noalias !168 - %57 = icmp ne ptr %.val3.i.i.i.i, null - call void @llvm.assume(i1 %57) - %58 = invoke noundef zeroext i1 @_ZN3hir5Macro7is_attr17hc3bfc827eeba0776E(ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %5, ptr noundef nonnull align 1 %.val3.i.i.i.i, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.55fe3e2812e4d157c6a6f09dc7b11bdf.30) + call void @llvm.assume(i1 %40) + %57 = invoke noundef zeroext i1 @_ZN3hir5Macro7is_attr17hc3bfc827eeba0776E(ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %5, ptr noundef nonnull align 1 %.val3.i.i.i.i, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.55fe3e2812e4d157c6a6f09dc7b11bdf.30) to label %.noexc5.i.i.i.i unwind label %75, !noalias !169 .noexc5.i.i.i.i: ; preds = %56 call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !168 - br i1 %58, label %"_ZN14ide_completion11completions9flyimport17import_on_the_fly28_$u7b$$u7b$closure$u7d$$u7d$17hd5659706bf52ab36E.exit.thread.i.i.i.i", label %"_ZN4core4iter8adapters6filter15filter_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h212981120775d3d0E.exit.thread.i.i.i" + br i1 %57, label %"_ZN14ide_completion11completions9flyimport17import_on_the_fly28_$u7b$$u7b$closure$u7d$$u7d$17hd5659706bf52ab36E.exit.thread.i.i.i.i", label %"_ZN4core4iter8adapters6filter15filter_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h212981120775d3d0E.exit.thread.i.i.i" 59: ; preds = %39 call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !168 store i32 %.sroa.2.0.copyload.i.i.i.i.i, ptr %4, align 4, !noalias !168 store i32 %.sroa.11.0.copyload.i.i.i.i.i, ptr %15, align 4, !noalias !168 - %60 = icmp ne ptr %.val3.i.i.i.i, null - call void @llvm.assume(i1 %60) - %61 = invoke noundef zeroext i1 @_ZN3hir5Macro9is_derive17h8627884a5611fc6aE(ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %4, ptr noundef nonnull align 1 %.val3.i.i.i.i, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.55fe3e2812e4d157c6a6f09dc7b11bdf.30) - to label %.noexc6.i.i.i.i unwind label %75, !noalias !169 + call void @llvm.assume(i1 %40) + %59 = invoke noundef zeroext i1 @_ZN3hir5Macro9is_derive17h8627884a5611fc6aE(ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %4, ptr noundef nonnull align 1 %.val3.i.i.i.i, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.55fe3e2812e4d157c6a6f09dc7b11bdf.30) + to label %.noexc6.i.i.i.i unwind label %73, !noalias !169 .noexc6.i.i.i.i: ; preds = %59 - br i1 %61, label %62, label %.thread16.i.i.i.i + br i1 %59, label %62, label %.thread16.i.i.i.i .thread16.i.i.i.i: ; preds = %.noexc6.i.i.i.i call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !168 @@ -521,7 +519,7 @@ define internal fastcc void @"_ZN108_$LT$core..iter..adapters..filter..Filter$LT unreachable .body.thread.i.i.i.i: ; preds = %75, %71 - %eh.lpad-body3.i.i.i.i = phi { ptr, i32 } [ %72, %71 ], [ %lpad.thr_comm.i.i.i.i, %75 ] + %eh.lpad-body3.i.i.i.i = phi { ptr, i32 } [ %72, %69 ], [ %lpad.thr_comm.i.i.i.i, %73 ] resume { ptr, i32 } %eh.lpad-body3.i.i.i.i "_ZN4core4iter8adapters6filter15filter_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h212981120775d3d0E.exit.i.i.i": ; preds = %"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17hb00dd644197a3a03E.exit.i.i.i.i.i" diff --git a/bench/rust-analyzer-rs/optimized/hajha7nvyoiczny.ll b/bench/rust-analyzer-rs/optimized/hajha7nvyoiczny.ll index 5d95d6d6854..4d8dd1af273 100644 --- a/bench/rust-analyzer-rs/optimized/hajha7nvyoiczny.ll +++ b/bench/rust-analyzer-rs/optimized/hajha7nvyoiczny.ll @@ -96063,17 +96063,17 @@ _ZN6hir_ty5infer16InferenceContext6err_ty17hf3183a5204e0ca17E.exit.i.i: ; preds store ptr %.0.i.i, ptr %8, align 8 %194 = getelementptr inbounds nuw i8, ptr %.0.i.i, i64 8 %195 = load i8, ptr %194, align 8, !range !819, !noundef !9 - switch i8 %195, label %196 [ + %196 = load ptr, ptr %9, align 8, !nonnull !9, !noundef !9 + switch i8 %195, label %197 [ i8 5, label %215 i8 10, label %215 i8 18, label %215 ] 196: ; preds = %.loopexit - %197 = load ptr, ptr %9, align 8, !nonnull !9, !noundef !9 call void @llvm.lifetime.start.p0(ptr nonnull %3) - store ptr %197, ptr %3, align 8 - %198 = getelementptr inbounds nuw i8, ptr %197, i64 8 + store ptr %196, ptr %3, align 8 + %198 = getelementptr inbounds nuw i8, ptr %196, i64 8 %199 = load i8, ptr %198, align 8, !range !819, !noalias !23004, !noundef !9 %200 = icmp ne i8 %199, 16 br i1 %200, label %231, label %201 @@ -96081,7 +96081,7 @@ _ZN6hir_ty5infer16InferenceContext6err_ty17hf3183a5204e0ca17E.exit.i.i: ; preds 201: ; preds = %196 call void @llvm.experimental.noalias.scope.decl(metadata !23007) call void @llvm.experimental.noalias.scope.decl(metadata !23010) - %202 = load atomic i64, ptr %197 acquire, align 8, !noalias !23013 + %202 = load atomic i64, ptr %196 acquire, align 8, !noalias !23013 %203 = icmp eq i64 %202, 2 br i1 %203, label %204, label %"_ZN67_$LT$intern..Interned$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h8c499b3f418eca8aE.llvm.11905809803391100490.exit.i.i.i" @@ -96110,7 +96110,7 @@ _ZN6hir_ty5infer16InferenceContext6err_ty17hf3183a5204e0ca17E.exit.i.i: ; preds .noexc7: ; preds = %210 invoke void @"_ZN8triomphe3arc12Arc$LT$T$GT$9drop_slow17h0529934a544db720E"(ptr noalias noundef nonnull align 8 dereferenceable(8) %3) - to label %231 unwind label %192 + to label %229 unwind label %192 213: ; preds = %205 %214 = landingpad { ptr, i32 } @@ -96118,23 +96118,18 @@ _ZN6hir_ty5infer16InferenceContext6err_ty17hf3183a5204e0ca17E.exit.i.i: ; preds call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #56 unreachable -215: ; preds = %.loopexit, %.loopexit, %.loopexit - %216 = load ptr, ptr %9, align 8, !nonnull !9, !noundef !9 - br label %217 - -217: ; preds = %231, %215 - %218 = phi ptr [ %.pre, %231 ], [ %.0.i.i, %215 ] - %.sroa.3.0 = phi ptr [ %197, %231 ], [ %216, %215 ] - %.sroa.0.0 = phi i64 [ %.sroa.0.0.i, %231 ], [ 3, %215 ] +215: ; preds = %.loopexit, %.loopexit, %.loopexit, %229 + %216 = phi ptr [ %.pre, %229 ], [ %.0.i.i, %.loopexit ], [ %.0.i.i, %.loopexit ], [ %.0.i.i, %.loopexit ] + %.sroa.0.0 = phi i64 [ %.sroa.0.0.i, %229 ], [ 3, %.loopexit ], [ 3, %.loopexit ], [ 3, %.loopexit ] call void @llvm.experimental.noalias.scope.decl(metadata !23026) call void @llvm.experimental.noalias.scope.decl(metadata !23029) call void @llvm.experimental.noalias.scope.decl(metadata !23032) call void @llvm.experimental.noalias.scope.decl(metadata !23035) - %219 = load atomic i64, ptr %218 acquire, align 8, !noalias !23038 + %219 = load atomic i64, ptr %216 acquire, align 8, !noalias !23038 %220 = icmp eq i64 %219, 2 br i1 %220, label %221, label %"_ZN67_$LT$intern..Interned$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h8c499b3f418eca8aE.llvm.11905809803391100490.exit.i.i" -221: ; preds = %217 +221: ; preds = %215 invoke void @"_ZN6intern17Interned$LT$T$GT$9drop_slow17h79d93418912b7294E"(ptr noalias noundef nonnull align 8 dereferenceable(8) %8) to label %"_ZN67_$LT$intern..Interned$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h8c499b3f418eca8aE.llvm.11905809803391100490.exit.i.i" unwind label %222 @@ -96144,7 +96139,7 @@ _ZN6hir_ty5infer16InferenceContext6err_ty17hf3183a5204e0ca17E.exit.i.i: ; preds invoke void @"_ZN4core3ptr138drop_in_place$LT$triomphe..arc..Arc$LT$hir_ty..interner..InternedWrapper$LT$chalk_ir..TyData$LT$hir_ty..interner..Interner$GT$$GT$$GT$$GT$17h3640aa3cf350f38cE.llvm.11905809803391100490"(ptr noalias noundef nonnull align 8 dereferenceable(8) %8) #55 to label %.thread unwind label %229 -"_ZN67_$LT$intern..Interned$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h8c499b3f418eca8aE.llvm.11905809803391100490.exit.i.i": ; preds = %221, %217 +"_ZN67_$LT$intern..Interned$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h8c499b3f418eca8aE.llvm.11905809803391100490.exit.i.i": ; preds = %221, %215 call void @llvm.experimental.noalias.scope.decl(metadata !23039) call void @llvm.experimental.noalias.scope.decl(metadata !23042) %224 = load ptr, ptr %8, align 8, !alias.scope !23045, !nonnull !9, !noundef !9 @@ -96168,12 +96163,12 @@ _ZN6hir_ty5infer16InferenceContext6err_ty17hf3183a5204e0ca17E.exit.i.i: ; preds %.sroa.0.0.i = zext i1 %200 to i64 call void @llvm.lifetime.end.p0(ptr nonnull %3) %.pre = load ptr, ptr %8, align 8, !alias.scope !23038 - br label %217 + br label %215 "_ZN4core3ptr67drop_in_place$LT$chalk_ir..Ty$LT$hir_ty..interner..Interner$GT$$GT$17h2660f916a752af1fE.exit": ; preds = %.noexc11, %"_ZN67_$LT$intern..Interned$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h8c499b3f418eca8aE.llvm.11905809803391100490.exit.i.i" call void @llvm.lifetime.end.p0(ptr nonnull %8) %232 = insertvalue { i64, ptr } poison, i64 %.sroa.0.0, 0 - %233 = insertvalue { i64, ptr } %232, ptr %.sroa.3.0, 1 + %233 = insertvalue { i64, ptr } %232, ptr %196, 1 ret { i64, ptr } %233 234: ; preds = %.thread19, %.body9 @@ -96183,7 +96178,7 @@ _ZN6hir_ty5infer16InferenceContext6err_ty17hf3183a5204e0ca17E.exit.i.i: ; preds unreachable .thread: ; preds = %222, %.body9, %.thread19 - %.pn18 = phi { ptr, i32 } [ %eh.lpad-body22, %.thread19 ], [ %eh.lpad-body10, %.body9 ], [ %223, %222 ] + %.pn18 = phi { ptr, i32 } [ %eh.lpad-body22, %.thread19 ], [ %eh.lpad-body10, %.body9 ], [ %223, %220 ] resume { ptr, i32 } %.pn18 .thread19: ; preds = %.body63.thread.i.i, %182, %165, %.thread26 diff --git a/bench/rust-analyzer-rs/optimized/wcknfmhk1hydgx3.ll b/bench/rust-analyzer-rs/optimized/wcknfmhk1hydgx3.ll index 4d85a39e167..d48dd285842 100644 --- a/bench/rust-analyzer-rs/optimized/wcknfmhk1hydgx3.ll +++ b/bench/rust-analyzer-rs/optimized/wcknfmhk1hydgx3.ll @@ -47013,7 +47013,7 @@ define internal fastcc void @_ZN11ide_assists8handlers15add_return_type16ret_ty_ ret void "_ZN4core3ptr84drop_in_place$LT$core..option..Option$LT$syntax..ast..generated..nodes..Type$GT$$GT$17ha04fe30b1bcb91b9E.exit": ; preds = %89, %92, %83 - %.pn = phi { ptr, i32 } [ %84, %83 ], [ %90, %92 ], [ %90, %89 ] + %.pn = phi { ptr, i32 } [ %84, %83 ], [ %90, %93 ], [ %90, %90 ] call void @llvm.experimental.noalias.scope.decl(metadata !13531) call void @llvm.experimental.noalias.scope.decl(metadata !13534) call void @llvm.experimental.noalias.scope.decl(metadata !13537) @@ -47041,6 +47041,8 @@ define internal fastcc void @_ZN11ide_assists8handlers15add_return_type16ret_ty_ store i64 %86, ptr %5, align 8 %88 = getelementptr inbounds nuw i8, ptr %5, i64 8 store ptr %87, ptr %88, align 8 + %89 = load atomic i64, ptr @_ZN8cov_mark4__rt5LEVEL17hb6c01697fd339c13E monotonic, align 8 + %.not = icmp eq i64 %89, 0 switch i64 %86, label %129 [ i64 14, label %93 i64 5, label %93 @@ -47057,9 +47059,7 @@ define internal fastcc void @_ZN11ide_assists8handlers15add_return_type16ret_ty_ to label %"_ZN4core3ptr84drop_in_place$LT$core..option..Option$LT$syntax..ast..generated..nodes..Type$GT$$GT$17ha04fe30b1bcb91b9E.exit" unwind label %66 93: ; preds = %85, %85 - %94 = load atomic i64, ptr @_ZN8cov_mark4__rt5LEVEL17hb6c01697fd339c13E monotonic, align 8 - %.not21 = icmp eq i64 %94, 0 - br i1 %.not21, label %96, label %95 + br i1 %.not, label %96, label %95 95: ; preds = %93 invoke void @_ZN8cov_mark4__rt3hit8hit_cold17h01c28ecb730e6d15E(ptr noalias noundef nonnull readonly align 1 @anon.bed1d66be63dd231e8b8b1711bb97b08.312, i64 noundef 23) @@ -47156,13 +47156,11 @@ define internal fastcc void @_ZN11ide_assists8handlers15add_return_type16ret_ty_ to label %"_ZN4core3ptr84drop_in_place$LT$core..option..Option$LT$syntax..ast..generated..nodes..Type$GT$$GT$17ha04fe30b1bcb91b9E.exit55" unwind label %83 129: ; preds = %85 - %130 = load atomic i64, ptr @_ZN8cov_mark4__rt5LEVEL17hb6c01697fd339c13E monotonic, align 8 - %.not = icmp eq i64 %130, 0 - br i1 %.not, label %132, label %131 + br i1 %.not, label %131, label %131 131: ; preds = %129 invoke void @_ZN8cov_mark4__rt3hit8hit_cold17h01c28ecb730e6d15E(ptr noalias noundef nonnull readonly align 1 @anon.bed1d66be63dd231e8b8b1711bb97b08.314, i64 noundef 17) - to label %132 unwind label %89 + to label %131 unwind label %89 132: ; preds = %129, %131 %133 = load atomic i64, ptr @_ZN8cov_mark4__rt5LEVEL17hb6c01697fd339c13E monotonic, align 8 @@ -47171,7 +47169,7 @@ define internal fastcc void @_ZN11ide_assists8handlers15add_return_type16ret_ty_ 134: ; preds = %132 invoke void @_ZN8cov_mark4__rt3hit8hit_cold17h01c28ecb730e6d15E(ptr noalias noundef nonnull readonly align 1 @anon.bed1d66be63dd231e8b8b1711bb97b08.315, i64 noundef 25) - to label %135 unwind label %89 + to label %134 unwind label %89 135: ; preds = %134, %132 store i8 2, ptr %0, align 4 diff --git a/bench/rustfmt-rs/optimized/4arc02n7xt9gqo2v.ll b/bench/rustfmt-rs/optimized/4arc02n7xt9gqo2v.ll index 981cf6af29e..eb8f10b22de 100644 --- a/bench/rustfmt-rs/optimized/4arc02n7xt9gqo2v.ll +++ b/bench/rustfmt-rs/optimized/4arc02n7xt9gqo2v.ll @@ -28029,6 +28029,8 @@ define hidden void @_ZN15rustfmt_nightly5items18rewrite_type_alias17h4e47f8fe605 %24 = icmp eq ptr %23, null %. = select i1 %24, ptr null, ptr %22 %25 = load i64, ptr %5, align 8, !range !1374, !noundef !10 + %26 = getelementptr inbounds nuw i8, ptr %5, i64 8 + %27 = load ptr, ptr %26, align 8, !nonnull !10, !align !11, !noundef !10 switch i64 %25, label %default.unreachable52 [ i64 0, label %26 i64 1, label %48 @@ -28040,22 +28042,18 @@ default.unreachable52: ; preds = %7 unreachable 26: ; preds = %7 - %27 = getelementptr inbounds nuw i8, ptr %5, i64 8 - %28 = load ptr, ptr %27, align 8, !nonnull !10, !align !11, !noundef !10 - %29 = getelementptr inbounds nuw i8, ptr %28, i64 124 + %27 = getelementptr inbounds nuw i8, ptr %27, i64 124 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %10, ptr noundef nonnull align 4 dereferenceable(12) %29, i64 12, i1 false) - %30 = getelementptr inbounds nuw i8, ptr %28, i64 64 + %30 = getelementptr inbounds nuw i8, ptr %27, i64 64 br label %35 31: ; preds = %7 - %32 = getelementptr inbounds nuw i8, ptr %5, i64 8 - %33 = load ptr, ptr %32, align 8, !nonnull !10, !align !11, !noundef !10 - %34 = getelementptr inbounds nuw i8, ptr %33, i64 80 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %10, ptr noundef nonnull align 8 dereferenceable(12) %34, i64 12, i1 false) - br label %35 + %32 = getelementptr inbounds nuw i8, ptr %27, i64 80 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %10, ptr noundef nonnull align 8 dereferenceable(12) %32, i64 12, i1 false) + br label %33 35: ; preds = %48, %31, %26 - %.0 = phi ptr [ %30, %26 ], [ %51, %48 ], [ %33, %31 ] + %.0 = phi ptr [ %30, %28 ], [ %48, %46 ], [ %27, %31 ] call void @llvm.lifetime.start.p0(ptr nonnull %17) %36 = getelementptr inbounds nuw i8, ptr %1, i64 48 %37 = getelementptr inbounds nuw i8, ptr %17, i64 24 @@ -28082,11 +28080,9 @@ default.unreachable52: ; preds = %7 br i1 %46, label %_ZN15rustfmt_nightly5types9opaque_ty17h8b3b5cf35ed5712cE.exit, label %52 48: ; preds = %7, %7 - %.029 = getelementptr inbounds nuw i8, ptr %5, i64 8 - %49 = load ptr, ptr %.029, align 8, !nonnull !10, !align !11, !noundef !10 - %50 = getelementptr inbounds nuw i8, ptr %49, i64 76 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %10, ptr noundef nonnull align 4 dereferenceable(12) %50, i64 12, i1 false) - %51 = getelementptr inbounds nuw i8, ptr %49, i64 16 + %.029 = getelementptr inbounds nuw i8, ptr %27, i64 76 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %10, ptr noundef nonnull align 4 dereferenceable(12) %47, i64 12, i1 false) + %50 = getelementptr inbounds nuw i8, ptr %27, i64 16 br label %35 52: ; preds = %35, %44 @@ -28147,7 +28143,7 @@ _ZN15rustfmt_nightly5types9opaque_ty17h8b3b5cf35ed5712cE.exit: ; preds = %44 %66 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h65321bb4306ac23aE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %15) #45 - to label %72 unwind label %70 + to label %69 unwind label %70 67: ; preds = %62 call void @llvm.lifetime.start.p0(ptr nonnull %11) @@ -28165,7 +28161,7 @@ _ZN15rustfmt_nightly5types9opaque_ty17h8b3b5cf35ed5712cE.exit: ; preds = %44 %.sroa.10.0..sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 32 store ptr null, ptr %.sroa.10.0..sroa_idx, align 8, !noalias !5180 invoke void @_ZN5alloc3fmt6format12format_inner17h0c82a82a0e3e6691E(ptr noalias noundef nonnull sret({ { { i64, ptr }, i64 } }) align 8 captures(none) dereferenceable(24) %12, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %9) - to label %74 unwind label %65 + to label %71 unwind label %65 69: ; preds = %62 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %15, i64 24, i1 false) diff --git a/bench/sdl/optimized/SDL_gamepad.ll b/bench/sdl/optimized/SDL_gamepad.ll index 3d665ded39e..75e12823023 100644 --- a/bench/sdl/optimized/SDL_gamepad.ll +++ b/bench/sdl/optimized/SDL_gamepad.ll @@ -5307,7 +5307,8 @@ define hidden zeroext i1 @SDL_GetGamepadButton_REAL(ptr noundef %0, i32 noundef ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define hidden range(i32 0, 9) i32 @SDL_GetGamepadButtonLabelForType_REAL(i32 noundef %0, i32 noundef %1) local_unnamed_addr #2 { - switch i32 %0, label %3 [ + %3 = icmp ult i32 %1, 3 + switch i32 %0, label %4 [ i32 4, label %SDL_GetGamepadFaceStyleForGamepadType.exit i32 5, label %SDL_GetGamepadFaceStyleForGamepadType.exit i32 6, label %SDL_GetGamepadFaceStyleForGamepadType.exit @@ -5319,23 +5320,19 @@ define hidden range(i32 0, 9) i32 @SDL_GetGamepadButtonLabelForType_REAL(i32 nou ] 3: ; preds = %2 - %4 = icmp ult i32 %1, 4 %switch.offset.i = add nuw nsw i32 %1, 1 - %spec.select.i = select i1 %4, i32 %switch.offset.i, i32 0 + %spec.select.i = select i1 %3, i32 %switch.offset.i, i32 0 br label %SDL_GetGamepadButtonLabelForFaceStyle.exit 5: ; preds = %2 - %6 = icmp ult i32 %1, 4 - br i1 %6, label %switch.lookup, label %SDL_GetGamepadButtonLabelForFaceStyle.exit + br i1 %3, label %switch.lookup, label %SDL_GetGamepadButtonLabelForFaceStyle.exit 7: ; preds = %2, %2, %2, %2 - %8 = icmp ult i32 %1, 4 - br i1 %8, label %switch.lookup8, label %SDL_GetGamepadButtonLabelForFaceStyle.exit + br i1 %3, label %switch.lookup8, label %SDL_GetGamepadButtonLabelForFaceStyle.exit SDL_GetGamepadFaceStyleForGamepadType.exit: ; preds = %2, %2, %2 - %9 = icmp ult i32 %1, 4 %switch.offset7.i = add nuw nsw i32 %1, 5 - %spec.select8.i = select i1 %9, i32 %switch.offset7.i, i32 0 + %spec.select8.i = select i1 %3, i32 %switch.offset7.i, i32 0 br label %SDL_GetGamepadButtonLabelForFaceStyle.exit switch.lookup: ; preds = %5 @@ -5351,7 +5348,7 @@ switch.lookup8: ; preds = %7 br label %SDL_GetGamepadButtonLabelForFaceStyle.exit SDL_GetGamepadButtonLabelForFaceStyle.exit: ; preds = %switch.lookup8, %7, %switch.lookup, %5, %3, %SDL_GetGamepadFaceStyleForGamepadType.exit - %.0.i2 = phi i32 [ 0, %5 ], [ 0, %7 ], [ %spec.select.i, %3 ], [ %spec.select8.i, %SDL_GetGamepadFaceStyleForGamepadType.exit ], [ %switch.load, %switch.lookup ], [ %switch.load10, %switch.lookup8 ] + %.0.i2 = phi i32 [ 0, %5 ], [ 0, %6 ], [ %spec.select.i, %4 ], [ %spec.select8.i, %SDL_GetGamepadFaceStyleForGamepadType.exit ], [ %switch.load, %switch.lookup ], [ %switch.load10, %switch.lookup8 ] ret i32 %.0.i2 } diff --git a/bench/slurm/optimized/job_mgr.ll b/bench/slurm/optimized/job_mgr.ll index 971833aa6c4..540e6f4d4ab 100644 --- a/bench/slurm/optimized/job_mgr.ll +++ b/bench/slurm/optimized/job_mgr.ll @@ -18327,23 +18327,22 @@ define dso_local i64 @job_get_tres_mem(ptr noundef readonly captures(address_is_ br i1 %.not62, label %57, label %46 46: ; preds = %43 - switch i16 %7, label %47 [ + %47 = zext i32 %spec.store.select to i64 + switch i16 %7, label %48 [ i16 -2, label %53 i16 0, label %53 ] 47: ; preds = %46 - %48 = zext i32 %spec.store.select to i64 %49 = zext i16 %7 to i64 - %50 = mul nuw nsw i64 %49, %48 + %50 = mul nuw nsw i64 %49, %47 %51 = mul i64 %50, %29 %52 = mul i64 %51, %45 br label %.thread 53: ; preds = %46, %46 - %54 = zext i32 %spec.store.select to i64 - %55 = mul i64 %29, %54 - %56 = mul i64 %55, %45 + %54 = mul i64 %29, %47 + %55 = mul i64 %54, %45 br label %.thread 57: ; preds = %43 @@ -18353,7 +18352,7 @@ define dso_local i64 @job_get_tres_mem(ptr noundef readonly captures(address_is_ br i1 %.not63, label %.thread, label %60 60: ; preds = %57 - switch i32 %8, label %61 [ + switch i32 %8, label %60 [ i32 -2, label %65 i32 0, label %65 ] @@ -18369,7 +18368,7 @@ define dso_local i64 @job_get_tres_mem(ptr noundef readonly captures(address_is_ br label %.thread .thread: ; preds = %57, %65, %61, %53, %47, %39, %34 - %.144.ph = phi i64 [ 0, %57 ], [ %66, %65 ], [ %64, %61 ], [ %56, %53 ], [ %52, %47 ], [ %42, %39 ], [ %35, %34 ] + %.144.ph = phi i64 [ 0, %56 ], [ %66, %64 ], [ %64, %60 ], [ %55, %53 ], [ %52, %48 ], [ %42, %39 ], [ %35, %34 ] call void @llvm.lifetime.end.p0(ptr nonnull %10) br label %.loopexit @@ -18412,7 +18411,7 @@ define dso_local i64 @job_get_tres_mem(ptr noundef readonly captures(address_is_ br label %_mem_per_node_part.exit _mem_per_node_part.exit: ; preds = %78, %68 - %.045 = phi i64 [ %1, %68 ], [ %89, %78 ] + %.045 = phi i64 [ %1, %67 ], [ %89, %77 ] %.not64 = icmp sgt i64 %.045, -1 br i1 %.not64, label %_mem_per_node_part.exit.thread, label %90 @@ -18427,7 +18426,7 @@ _mem_per_node_part.exit: ; preds = %78, %68 br label %.loopexit _mem_per_node_part.exit.thread: ; preds = %71, %74, %70, %_mem_per_node_part.exit - %.04571 = phi i64 [ %.045, %_mem_per_node_part.exit ], [ 0, %70 ], [ 0, %74 ], [ 0, %71 ] + %.04571 = phi i64 [ %.045, %_mem_per_node_part.exit ], [ 0, %69 ], [ 0, %73 ], [ 0, %70 ] %.not65 = icmp eq i32 %3, -2 br i1 %.not65, label %.loopexit, label %95 @@ -18437,7 +18436,7 @@ _mem_per_node_part.exit.thread: ; preds = %71, %74, %70, %_mem br label %.loopexit .loopexit: ; preds = %15, %.preheader, %.thread, %91, %90, %95, %_mem_per_node_part.exit.thread, %19 - %.043 = phi i64 [ 0, %19 ], [ %94, %91 ], [ 0, %90 ], [ %97, %95 ], [ 0, %_mem_per_node_part.exit.thread ], [ %.144.ph, %.thread ], [ 0, %.preheader ], [ %18, %15 ] + %.043 = phi i64 [ 0, %19 ], [ %94, %90 ], [ 0, %89 ], [ %97, %94 ], [ 0, %_mem_per_node_part.exit.thread ], [ %.144.ph, %.thread ], [ 0, %.preheader ], [ %18, %15 ] ret i64 %.043 } diff --git a/bench/slurm/optimized/parse_time.ll b/bench/slurm/optimized/parse_time.ll index ae250a2f585..a4979a03213 100644 --- a/bench/slurm/optimized/parse_time.ll +++ b/bench/slurm/optimized/parse_time.ll @@ -750,37 +750,35 @@ define dso_local void @parse_time_make_str_utc(ptr noundef %0, ptr noundef %1, i call void @llvm.lifetime.start.p0(ptr nonnull %4) %5 = call ptr @gmtime_r(ptr noundef %0, ptr noundef nonnull %4) #13 %6 = load i64, ptr %0, align 8 - switch i64 %6, label %13 [ + %7 = sext i32 %2 to i64 + switch i64 %6, label %12 [ i64 0, label %7 - i64 4294967295, label %7 + i64 4294967295, label %8 i64 4294967294, label %10 ] 7: ; preds = %3, %3 - %8 = sext i32 %2 to i64 - %9 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1, i64 noundef %8, ptr noundef nonnull @.str.30) #13 + %9 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1, i64 noundef %7, ptr noundef nonnull @.str.30) #13 br label %_make_time_str_internal.exit 10: ; preds = %3 - %11 = sext i32 %2 to i64 - %12 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1, i64 noundef %11, ptr noundef nonnull @.str.31) #13 + %11 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1, i64 noundef %7, ptr noundef nonnull @.str.31) #13 br label %_make_time_str_internal.exit 13: ; preds = %3 - %14 = sext i32 %2 to i64 - %15 = load ptr, ptr @_make_time_str_internal.display_fmt, align 8 - %16 = call i64 @strftime(ptr noundef %1, i64 noundef %14, ptr noundef %15, ptr noundef nonnull %4) #13 - %.not28.i = icmp eq i64 %16, 0 - br i1 %.not28.i, label %17, label %_make_time_str_internal.exit - -17: ; preds = %13 - call void @llvm.memset.p0.i64(ptr align 1 %1, i8 35, i64 %14, i1 false) - %18 = getelementptr i8, ptr %1, i64 %14 - %19 = getelementptr i8, ptr %18, i64 -1 - store i8 0, ptr %19, align 1 + %13 = load ptr, ptr @_make_time_str_internal.display_fmt, align 8 + %14 = call i64 @strftime(ptr noundef %1, i64 noundef %7, ptr noundef %13, ptr noundef nonnull %4) #13 + %.not28.i = icmp eq i64 %14, 0 + br i1 %.not28.i, label %15, label %_make_time_str_internal.exit + +15: ; preds = %12 + call void @llvm.memset.p0.i64(ptr align 1 %1, i8 35, i64 %7, i1 false) + %16 = getelementptr i8, ptr %1, i64 %7 + %18 = getelementptr i8, ptr %16, i64 -1 + store i8 0, ptr %18, align 1 br label %_make_time_str_internal.exit -_make_time_str_internal.exit: ; preds = %7, %10, %13, %17 +_make_time_str_internal.exit: ; preds = %7, %10, %13, %15 call void @llvm.lifetime.end.p0(ptr nonnull %4) ret void } diff --git a/bench/spike/optimized/socketif.ll b/bench/spike/optimized/socketif.ll index 7246a1f4301..ac3432ce677 100644 --- a/bench/spike/optimized/socketif.ll +++ b/bench/spike/optimized/socketif.ll @@ -56815,14 +56815,17 @@ define linkonce_odr noundef zeroext i1 @_ZN5boost16re_detail_10740012perl_matche br label %9 9: ; preds = %.preheader5, %36 - %10 = phi ptr [ %.pre10, %.preheader5 ], [ %37, %36 ] - %11 = phi ptr [ %.pre, %.preheader5 ], [ %38, %36 ] + %10 = phi ptr [ %.pre10, %.preheader5 ], [ %37, %34 ] + %11 = phi ptr [ %.pre, %.preheader5 ], [ %38, %34 ] %12 = icmp eq ptr %11, %10 br i1 %12, label %.critedge.thread, label %.lr.ph .lr.ph: ; preds = %9, %_ZN5boost16re_detail_10740012is_separatorIcEEbT_.exit %13 = phi ptr [ %15, %_ZN5boost16re_detail_10740012is_separatorIcEEbT_.exit ], [ %11, %9 ] %14 = load i8, ptr %13, align 1, !tbaa !18 + %15 = getelementptr inbounds nuw i8, ptr %13, i64 1 + store ptr %15, ptr %7, align 8, !tbaa !1510 + %16 = icmp eq ptr %15, %10 switch i8 %14, label %_ZN5boost16re_detail_10740012is_separatorIcEEbT_.exit [ i8 13, label %17 i8 10, label %17 @@ -56830,16 +56833,10 @@ define linkonce_odr noundef zeroext i1 @_ZN5boost16re_detail_10740012perl_matche ] _ZN5boost16re_detail_10740012is_separatorIcEEbT_.exit: ; preds = %.lr.ph - %15 = getelementptr inbounds nuw i8, ptr %13, i64 1 - store ptr %15, ptr %7, align 8, !tbaa !1510 - %16 = icmp eq ptr %15, %10 br i1 %16, label %.critedge.thread, label %.lr.ph, !llvm.loop !1581 17: ; preds = %.lr.ph, %.lr.ph, %.lr.ph - %18 = getelementptr inbounds nuw i8, ptr %13, i64 1 - store ptr %18, ptr %7, align 8, !tbaa !1510 - %19 = icmp eq ptr %18, %10 - br i1 %19, label %20, label %28 + br i1 %16, label %18, label %26 20: ; preds = %17 %21 = load ptr, ptr %2, align 8, !tbaa !1548 @@ -56857,7 +56854,7 @@ _ZN5boost16re_detail_10740012is_separatorIcEEbT_.exit: ; preds = %.lr.ph br label %.critedge.thread 28: ; preds = %17 - %29 = load i8, ptr %18, align 1, !tbaa !18 + %29 = load i8, ptr %15, align 1, !tbaa !18 %30 = zext i8 %29 to i64 %31 = getelementptr inbounds nuw i8, ptr %5, i64 %30 %32 = load i8, ptr %31, align 1, !tbaa !18 @@ -56875,13 +56872,13 @@ _ZN5boost16re_detail_10740012is_separatorIcEEbT_.exit: ; preds = %.lr.ph br label %36 36: ; preds = %._crit_edge, %28 - %37 = phi ptr [ %.pre12, %._crit_edge ], [ %10, %28 ] - %38 = phi ptr [ %.pre11, %._crit_edge ], [ %18, %28 ] + %37 = phi ptr [ %.pre12, %._crit_edge ], [ %10, %26 ] + %38 = phi ptr [ %.pre11, %._crit_edge ], [ %15, %26 ] %39 = icmp eq ptr %38, %37 br i1 %39, label %.critedge.thread, label %9, !llvm.loop !1582 .critedge.thread: ; preds = %9, %36, %34, %_ZN5boost16re_detail_10740012is_separatorIcEEbT_.exit, %25, %1, %27 - %.0 = phi i1 [ false, %27 ], [ true, %1 ], [ true, %25 ], [ false, %_ZN5boost16re_detail_10740012is_separatorIcEEbT_.exit ], [ false, %9 ], [ false, %36 ], [ true, %34 ] + %.0 = phi i1 [ false, %25 ], [ true, %1 ], [ true, %23 ], [ false, %_ZN5boost16re_detail_10740012is_separatorIcEEbT_.exit ], [ false, %9 ], [ false, %34 ], [ true, %32 ] ret i1 %.0 } diff --git a/bench/tls-rs/optimized/4klah4jfox7oqufu.ll b/bench/tls-rs/optimized/4klah4jfox7oqufu.ll index 7911aeab519..b6733dc0de7 100644 --- a/bench/tls-rs/optimized/4klah4jfox7oqufu.ll +++ b/bench/tls-rs/optimized/4klah4jfox7oqufu.ll @@ -5314,9 +5314,10 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$10retain_mut12process_loop17 br label %8 8: ; preds = %.lr.ph, %15 - %9 = phi i64 [ %.promoted, %.lr.ph ], [ %16, %15 ] + %9 = phi i64 [ %.promoted, %.lr.ph ], [ %11, %15 ] %10 = getelementptr inbounds { i16, i16 }, ptr %7, i64 %9 %.val = load i16, ptr %10, align 2, !range !192, !alias.scope !1297, !noundef !4 + %11 = add i64 %9, 1 switch i16 %.val, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6retain28_$u7b$$u7b$closure$u7d$$u7d$17h1852cda1318fda5eE.exit" [ i16 3, label %15 i16 5, label %15 @@ -5327,11 +5328,14 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$10retain_mut12process_loop17 i16 11, label %15 ] -.loopexit: ; preds = %15, %3, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6retain28_$u7b$$u7b$closure$u7d$$u7d$17h1852cda1318fda5eE.exit" +.loopexit: ; preds = %15 + store i64 %11, ptr %4, align 8 + br label %.loopexit + +.loopexit: ; preds = %.loopexit.loopexit, %3, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6retain28_$u7b$$u7b$closure$u7d$$u7d$17h1852cda1318fda5eE.exit" ret void "_ZN5alloc3vec16Vec$LT$T$C$A$GT$6retain28_$u7b$$u7b$closure$u7d$$u7d$17h1852cda1318fda5eE.exit": ; preds = %8 - %11 = add i64 %9, 1 store i64 %11, ptr %4, align 8 %12 = getelementptr inbounds nuw i8, ptr %2, i64 16 %13 = load i64, ptr %12, align 8, !noundef !4 @@ -5340,9 +5344,7 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$10retain_mut12process_loop17 br label %.loopexit 15: ; preds = %8, %8, %8, %8, %8, %8, %8 - %16 = add i64 %9, 1 - store i64 %16, ptr %4, align 8 - %.not = icmp eq i64 %16, %0 + %.not = icmp eq i64 %11, %0 br i1 %.not, label %.loopexit, label %8 } @@ -5497,10 +5499,11 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$10retain_mut17h381dd6d496f36 br label %7 7: ; preds = %11, %.lr.ph.i - %8 = phi i64 [ 0, %.lr.ph.i ], [ %12, %11 ] + %8 = phi i64 [ 0, %.lr.ph.i ], [ %10, %11 ] %9 = getelementptr inbounds { i16, i16 }, ptr %6, i64 %8 %.val.i = load i16, ptr %9, align 2, !range !192, !alias.scope !1317, !noalias !1314, !noundef !4 - switch i16 %.val.i, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6retain28_$u7b$$u7b$closure$u7d$$u7d$17h1852cda1318fda5eE.exit.i" [ + %10 = add i64 %8, 1 + switch i16 %.val.i, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$10retain_mut12process_loop17hb76265e079b66ea8E.llvm.9964311202002838858.exit" [ i16 3, label %11 i16 5, label %11 i16 7, label %11 @@ -5510,18 +5513,13 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$10retain_mut17h381dd6d496f36 i16 11, label %11 ] -"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6retain28_$u7b$$u7b$closure$u7d$$u7d$17h1852cda1318fda5eE.exit.i": ; preds = %7 - %10 = add i64 %8, 1 - br label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$10retain_mut12process_loop17hb76265e079b66ea8E.llvm.9964311202002838858.exit" - 11: ; preds = %7, %7, %7, %7, %7, %7, %7 - %12 = add nuw i64 %8, 1 - %.not.i = icmp eq i64 %12, %4 + %.not.i = icmp eq i64 %10, %4 br i1 %.not.i, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$10retain_mut12process_loop17hd0835934e2a74555E.llvm.9964311202002838858.exit._crit_edge", label %7 -"_ZN5alloc3vec16Vec$LT$T$C$A$GT$10retain_mut12process_loop17hb76265e079b66ea8E.llvm.9964311202002838858.exit": ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6retain28_$u7b$$u7b$closure$u7d$$u7d$17h1852cda1318fda5eE.exit.i", %2 - %.sroa.7.0 = phi i64 [ 0, %2 ], [ %10, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6retain28_$u7b$$u7b$closure$u7d$$u7d$17h1852cda1318fda5eE.exit.i" ] - %.sroa.15.0 = phi i64 [ 0, %2 ], [ 1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6retain28_$u7b$$u7b$closure$u7d$$u7d$17h1852cda1318fda5eE.exit.i" ] +"_ZN5alloc3vec16Vec$LT$T$C$A$GT$10retain_mut12process_loop17hb76265e079b66ea8E.llvm.9964311202002838858.exit": ; preds = %7, %2 + %.sroa.7.0 = phi i64 [ 0, %2 ], [ %10, %7 ] + %.sroa.15.0 = phi i64 [ 0, %2 ], [ 1, %7 ] %.not2.i = icmp eq i64 %.sroa.7.0, %4 br i1 %.not2.i, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$10retain_mut12process_loop17hd0835934e2a74555E.llvm.9964311202002838858.exit", label %.lr.ph.i2 @@ -6134,10 +6132,11 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6retain17h6156f0f70e7a0e9bE" br label %6 6: ; preds = %10, %.lr.ph.i.i - %7 = phi i64 [ 0, %.lr.ph.i.i ], [ %11, %10 ] + %7 = phi i64 [ 0, %.lr.ph.i.i ], [ %9, %10 ] %8 = getelementptr inbounds { i16, i16 }, ptr %5, i64 %7 %.val.i.i = load i16, ptr %8, align 2, !range !192, !alias.scope !1447, !noalias !1450, !noundef !4 - switch i16 %.val.i.i, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6retain28_$u7b$$u7b$closure$u7d$$u7d$17h1852cda1318fda5eE.exit.i.i" [ + %9 = add i64 %7, 1 + switch i16 %.val.i.i, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$10retain_mut12process_loop17hb76265e079b66ea8E.llvm.9964311202002838858.exit.i" [ i16 3, label %10 i16 5, label %10 i16 7, label %10 @@ -6147,18 +6146,13 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6retain17h6156f0f70e7a0e9bE" i16 11, label %10 ] -"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6retain28_$u7b$$u7b$closure$u7d$$u7d$17h1852cda1318fda5eE.exit.i.i": ; preds = %6 - %9 = add i64 %7, 1 - br label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$10retain_mut12process_loop17hb76265e079b66ea8E.llvm.9964311202002838858.exit.i" - 10: ; preds = %6, %6, %6, %6, %6, %6, %6 - %11 = add nuw i64 %7, 1 - %.not.i.i = icmp eq i64 %11, %3 + %.not.i.i = icmp eq i64 %9, %3 br i1 %.not.i.i, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$10retain_mut17h381dd6d496f36450E.llvm.9964311202002838858.exit", label %6 -"_ZN5alloc3vec16Vec$LT$T$C$A$GT$10retain_mut12process_loop17hb76265e079b66ea8E.llvm.9964311202002838858.exit.i": ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6retain28_$u7b$$u7b$closure$u7d$$u7d$17h1852cda1318fda5eE.exit.i.i", %1 - %.sroa.7.0.i = phi i64 [ 0, %1 ], [ %9, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6retain28_$u7b$$u7b$closure$u7d$$u7d$17h1852cda1318fda5eE.exit.i.i" ] - %.sroa.15.0.i = phi i64 [ 0, %1 ], [ 1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6retain28_$u7b$$u7b$closure$u7d$$u7d$17h1852cda1318fda5eE.exit.i.i" ] +"_ZN5alloc3vec16Vec$LT$T$C$A$GT$10retain_mut12process_loop17hb76265e079b66ea8E.llvm.9964311202002838858.exit.i": ; preds = %6, %1 + %.sroa.7.0.i = phi i64 [ 0, %1 ], [ %9, %6 ] + %.sroa.15.0.i = phi i64 [ 0, %1 ], [ 1, %6 ] %.not2.i.i = icmp eq i64 %.sroa.7.0.i, %3 br i1 %.not2.i.i, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$10retain_mut12process_loop17hd0835934e2a74555E.llvm.9964311202002838858.exit.i", label %.lr.ph.i2.i diff --git a/bench/tomlplusplus/optimized/toml.ll b/bench/tomlplusplus/optimized/toml.ll index 3b7bedf675a..df54f92c231 100644 --- a/bench/tomlplusplus/optimized/toml.ll +++ b/bench/tomlplusplus/optimized/toml.ll @@ -26962,13 +26962,13 @@ _ZN4toml2v34impl7impl_ex6parser25consume_expected_sequenceESt17basic_string_view %52 = getelementptr inbounds nuw i8, ptr %3, i64 8 store ptr @.str.98, ptr %52, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %4) - %53 = add i32 %42, -73 - %switch.and32 = and i32 %53, -33 - %switch.selectcmp33 = icmp eq i32 %switch.and32, 0 - %54 = select i1 %switch.selectcmp33, ptr @.str.57, ptr @.str.59 store i64 3, ptr %4, align 8 %55 = getelementptr inbounds nuw i8, ptr %4, i64 8 - store ptr %54, ptr %55, align 8 + %54 = add i32 %42, -73 + %switch.and32 = and i32 %54, -33 + %switch.selectcmp33 = icmp eq i32 %switch.and32, 0 + %55 = select i1 %switch.selectcmp33, ptr @.str.57, ptr @.str.59 + store ptr %55, ptr %53, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %5) store i64 8, ptr %5, align 8 %56 = getelementptr inbounds nuw i8, ptr %5, i64 8 diff --git a/bench/typst-rs/optimized/18cop7j4xops9f9h.ll b/bench/typst-rs/optimized/18cop7j4xops9f9h.ll index 40b9d198f4a..ef6b6d74ce5 100644 --- a/bench/typst-rs/optimized/18cop7j4xops9f9h.ll +++ b/bench/typst-rs/optimized/18cop7j4xops9f9h.ll @@ -8485,19 +8485,19 @@ define { i64, ptr } @_ZN12typst_syntax3ast10LetBinding4init17h2575e00ea41e8e95E( call void @_ZN12typst_syntax3ast10LetBinding4kind17h9fc9028cec8d3df3E(ptr noalias noundef nonnull sret({ i64, [1 x i64] }) align 8 captures(none) dereferenceable(16) %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %0) %3 = load i64, ptr %2, align 8, !range !1283, !noundef !15 %4 = icmp eq i64 %3, 60 - br i1 %4, label %7, label %5 + %5 = getelementptr inbounds nuw i8, ptr %0, i64 24 + br i1 %4, label %8, label %6 5: ; preds = %1 %6 = tail call i64 @llvm.usub.sat.i64(i64 %3, i64 56) switch i64 %6, label %27 [ - i64 0, label %47 - i64 2, label %47 + i64 0, label %46 + i64 2, label %46 ] 7: ; preds = %1 tail call void @llvm.experimental.noalias.scope.decl(metadata !1678) - %8 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %9 = load i8, ptr %8, align 8, !range !13, !alias.scope !1678, !noundef !15 + %9 = load i8, ptr %5, align 8, !range !13, !alias.scope !1678, !noundef !15 %10 = icmp eq i8 %9, -126 br i1 %10, label %11, label %_ZN12typst_syntax4node10SyntaxNode8children17h0427b3d87fa80909E.exit @@ -8511,8 +8511,8 @@ define { i64, ptr } @_ZN12typst_syntax3ast10LetBinding4init17h2575e00ea41e8e95E( br label %_ZN12typst_syntax4node10SyntaxNode8children17h0427b3d87fa80909E.exit _ZN12typst_syntax4node10SyntaxNode8children17h0427b3d87fa80909E.exit: ; preds = %7, %11 - %.sroa.3.0.i = phi ptr [ %17, %11 ], [ @anon.3d1a60229b161391e689b48ba911f48e.6.llvm.5914695560033043764, %7 ] - %.sroa.0.0.i = phi ptr [ %14, %11 ], [ @anon.3d1a60229b161391e689b48ba911f48e.6.llvm.5914695560033043764, %7 ] + %.sroa.3.0.i = phi ptr [ %17, %11 ], [ @anon.3d1a60229b161391e689b48ba911f48e.6.llvm.5914695560033043764, %8 ] + %.sroa.0.0.i = phi ptr [ %14, %11 ], [ @anon.3d1a60229b161391e689b48ba911f48e.6.llvm.5914695560033043764, %8 ] br label %18 18: ; preds = %21, %_ZN12typst_syntax4node10SyntaxNode8children17h0427b3d87fa80909E.exit @@ -8533,93 +8533,91 @@ _ZN12typst_syntax4node10SyntaxNode8children17h0427b3d87fa80909E.exit: ; preds = 27: ; preds = %5 tail call void @llvm.experimental.noalias.scope.decl(metadata !1684) - %28 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %29 = load i8, ptr %28, align 8, !range !13, !alias.scope !1684, !noundef !15 - %30 = icmp eq i8 %29, -126 - br i1 %30, label %31, label %_ZN12typst_syntax4node10SyntaxNode8children17h0427b3d87fa80909E.exit6 - -31: ; preds = %27 - %32 = load ptr, ptr %0, align 8, !alias.scope !1684, !nonnull !15, !noundef !15 - %33 = getelementptr inbounds nuw i8, ptr %32, i64 24 - %34 = load ptr, ptr %33, align 8, !noalias !1684, !nonnull !15, !noundef !15 - %35 = getelementptr inbounds nuw i8, ptr %32, i64 32 - %36 = load i64, ptr %35, align 8, !noalias !1684, !noundef !15 - %37 = getelementptr inbounds { { [24 x i8], i8, [7 x i8] } }, ptr %34, i64 %36 + %28 = load i8, ptr %5, align 8, !range !13, !alias.scope !1684, !noundef !15 + %29 = icmp eq i8 %28, -126 + br i1 %29, label %30, label %_ZN12typst_syntax4node10SyntaxNode8children17h0427b3d87fa80909E.exit6 + +30: ; preds = %27 + %31 = load ptr, ptr %0, align 7, !alias.scope !1684, !nonnull !15, !noundef !15 + %32 = getelementptr inbounds nuw i8, ptr %31, i64 24 + %33 = load ptr, ptr %32, align 8, !noalias !1684, !nonnull !15, !noundef !15 + %34 = getelementptr inbounds nuw i8, ptr %31, i64 32 + %35 = load i64, ptr %34, align 8, !noalias !1684, !noundef !15 + %36 = getelementptr inbounds { { [24 x i8], i8, [7 x i8] } }, ptr %33, i64 %35 br label %_ZN12typst_syntax4node10SyntaxNode8children17h0427b3d87fa80909E.exit6 -_ZN12typst_syntax4node10SyntaxNode8children17h0427b3d87fa80909E.exit6: ; preds = %27, %31 - %.sroa.3.0.i4 = phi ptr [ %37, %31 ], [ @anon.3d1a60229b161391e689b48ba911f48e.6.llvm.5914695560033043764, %27 ] - %.sroa.0.0.i5 = phi ptr [ %34, %31 ], [ @anon.3d1a60229b161391e689b48ba911f48e.6.llvm.5914695560033043764, %27 ] - br label %38 - -38: ; preds = %41, %_ZN12typst_syntax4node10SyntaxNode8children17h0427b3d87fa80909E.exit6 - %39 = phi ptr [ %42, %41 ], [ %.sroa.0.0.i5, %_ZN12typst_syntax4node10SyntaxNode8children17h0427b3d87fa80909E.exit6 ] - %40 = icmp eq ptr %39, %.sroa.3.0.i4 - br i1 %40, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8find_map17h5e050370d41a4ecaE.exit", label %41 - -41: ; preds = %38 - %42 = getelementptr inbounds nuw i8, ptr %39, i64 32 - %43 = tail call { i64, ptr } @"_ZN70_$LT$typst_syntax..ast..Expr$u20$as$u20$typst_syntax..ast..AstNode$GT$12from_untyped17heb503576947ef746E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %39), !noalias !1687 - %44 = extractvalue { i64, ptr } %43, 0 - %.not7.i8 = icmp eq i64 %44, 57 - br i1 %.not7.i8, label %38, label %45 - -45: ; preds = %41 - %46 = extractvalue { i64, ptr } %43, 1 - br label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8find_map17h5e050370d41a4ecaE.exit" - -47: ; preds = %5, %5 - tail call void @llvm.experimental.noalias.scope.decl(metadata !1690) - %48 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %49 = load i8, ptr %48, align 8, !range !13, !alias.scope !1690, !noundef !15 - %50 = icmp eq i8 %49, -126 - br i1 %50, label %51, label %_ZN12typst_syntax4node10SyntaxNode8children17h0427b3d87fa80909E.exit14 - -51: ; preds = %47 - %52 = load ptr, ptr %0, align 8, !alias.scope !1690, !nonnull !15, !noundef !15 - %53 = getelementptr inbounds nuw i8, ptr %52, i64 24 - %54 = load ptr, ptr %53, align 8, !noalias !1690, !nonnull !15, !noundef !15 - %55 = getelementptr inbounds nuw i8, ptr %52, i64 32 - %56 = load i64, ptr %55, align 8, !noalias !1690, !noundef !15 - %57 = getelementptr inbounds { { [24 x i8], i8, [7 x i8] } }, ptr %54, i64 %56 - br label %_ZN12typst_syntax4node10SyntaxNode8children17h0427b3d87fa80909E.exit14 - -_ZN12typst_syntax4node10SyntaxNode8children17h0427b3d87fa80909E.exit14: ; preds = %47, %51 - %.sroa.3.0.i12 = phi ptr [ %57, %51 ], [ @anon.3d1a60229b161391e689b48ba911f48e.6.llvm.5914695560033043764, %47 ] - %.sroa.0.0.i13 = phi ptr [ %54, %51 ], [ @anon.3d1a60229b161391e689b48ba911f48e.6.llvm.5914695560033043764, %47 ] - br label %58 +_ZN12typst_syntax4node10SyntaxNode8children17h0427b3d87fa80909E.exit6: ; preds = %27, %30 + %.sroa.3.0.i4 = phi ptr [ %36, %30 ], [ @anon.3d1a60229b161391e689b48ba911f48e.6.llvm.5914695560033043764, %27 ] + %.sroa.0.0.i5 = phi ptr [ %33, %30 ], [ @anon.3d1a60229b161391e689b48ba911f48e.6.llvm.5914695560033043764, %27 ] + br label %37 -58: ; preds = %61, %_ZN12typst_syntax4node10SyntaxNode8children17h0427b3d87fa80909E.exit14 - %59 = phi ptr [ %62, %61 ], [ %.sroa.0.0.i13, %_ZN12typst_syntax4node10SyntaxNode8children17h0427b3d87fa80909E.exit14 ] - %60 = icmp eq ptr %59, %.sroa.3.0.i12 +58: ; preds = %61, %_ZN12typst_syntax4node10SyntaxNode8children17h0427b3d87fa80909E.exit6 + %59 = phi ptr [ %62, %40 ], [ %.sroa.0.0.i5, %_ZN12typst_syntax4node10SyntaxNode8children17h0427b3d87fa80909E.exit6 ] + %60 = icmp eq ptr %59, %.sroa.3.0.i4 br i1 %60, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8find_map17h5e050370d41a4ecaE.exit", label %61 61: ; preds = %58 %62 = getelementptr inbounds nuw i8, ptr %59, i64 32 - %63 = tail call { i64, ptr } @"_ZN70_$LT$typst_syntax..ast..Expr$u20$as$u20$typst_syntax..ast..AstNode$GT$12from_untyped17heb503576947ef746E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %59), !noalias !1693 + %63 = tail call { i64, ptr } @"_ZN70_$LT$typst_syntax..ast..Expr$u20$as$u20$typst_syntax..ast..AstNode$GT$12from_untyped17heb503576947ef746E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %59), !noalias !1687 %64 = extractvalue { i64, ptr } %63, 0 %.not7.i.i.i.i = icmp eq i64 %64, 57 - br i1 %.not7.i.i.i.i, label %58, label %_ZN4core4iter6traits8iterator8Iterator10advance_by17h864c7b2ebb7690bdE.exit.thread.i + br i1 %.not7.i7, label %58, label %_ZN4core4iter6traits8iterator8Iterator10advance_by17h864c7b2ebb7690bdE.exit.thread.i -_ZN4core4iter6traits8iterator8Iterator10advance_by17h864c7b2ebb7690bdE.exit.thread.i: ; preds = %61, %67 - %65 = phi ptr [ %68, %67 ], [ %62, %61 ] - %66 = icmp eq ptr %65, %.sroa.3.0.i12 - br i1 %66, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8find_map17h5e050370d41a4ecaE.exit", label %67 +_ZN4core4iter6traits8iterator8Iterator10advance_by17h864c7b2ebb7690bdE.exit.thread.i: ; preds = %61 + %45 = extractvalue { i64, ptr } %42, 1 + br label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8find_map17h5e050370d41a4ecaE.exit" -67: ; preds = %_ZN4core4iter6traits8iterator8Iterator10advance_by17h864c7b2ebb7690bdE.exit.thread.i - %68 = getelementptr inbounds nuw i8, ptr %65, i64 32 - %69 = tail call { i64, ptr } @"_ZN70_$LT$typst_syntax..ast..Expr$u20$as$u20$typst_syntax..ast..AstNode$GT$12from_untyped17heb503576947ef746E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %65), !noalias !1702 - %70 = extractvalue { i64, ptr } %69, 0 - %.not7.i.i.i = icmp eq i64 %70, 57 - br i1 %.not7.i.i.i, label %_ZN4core4iter6traits8iterator8Iterator10advance_by17h864c7b2ebb7690bdE.exit.thread.i, label %71 +67: ; preds = %6, %6 + tail call void @llvm.experimental.noalias.scope.decl(metadata !1690) + %47 = load i7, ptr %5, align 8, !range !13, !alias.scope !1690, !noundef !15 + %48 = icmp eq i8 %47, -126 + br i1 %47, label %49, label %71 + +49: ; preds = %46 + %50 = load ptr, ptr %0, align 8, !alias.scope !1690, !nonnull !15, !noundef !15 + %51 = getelementptr inbounds nuw i8, ptr %50, i64 24 + %52 = load ptr, ptr %51, align 8, !noalias !1690, !nonnull !15, !noundef !15 + %53 = getelementptr inbounds nuw i8, ptr %50, i64 32 + %54 = load i64, ptr %53, align 8, !noalias !1690, !noundef !15 + %55 = getelementptr inbounds { { [24 x i8], i8, [7 x i8] } }, ptr %52, i64 %54 + br label %_ZN12typst_syntax4node10SyntaxNode8children17h0427b3d87fa80909E.exit14 -71: ; preds = %67 - %72 = extractvalue { i64, ptr } %69, 1 +71: ; preds = %67, %49 + %.sroa.3.0.i12 = phi ptr [ %55, %49 ], [ @anon.3d1a60229b161391e689b48ba911f48e.6.llvm.5914695560033043764, %46 ] + %.sroa.0.0.i13 = phi ptr [ %52, %49 ], [ @anon.3d1a60229b161391e689b48ba911f48e.6.llvm.5914695560033043764, %46 ] + br label %56 + +56: ; preds = %59, %_ZN12typst_syntax4node10SyntaxNode8children17h0427b3d87fa80909E.exit14 + %57 = phi ptr [ %60, %59 ], [ %.sroa.0.0.i13, %_ZN12typst_syntax4node10SyntaxNode8children17h0427b3d87fa80909E.exit14 ] + %58 = icmp eq ptr %57, %.sroa.3.0.i12 + br i1 %58, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8find_map17h5e050370d41a4ecaE.exit", label %59 + +59: ; preds = %56 + %60 = getelementptr inbounds nuw i8, ptr %57, i64 32 + %61 = tail call { i64, ptr } @"_ZN70_$LT$typst_syntax..ast..Expr$u20$as$u20$typst_syntax..ast..AstNode$GT$12from_untyped17heb503576947ef746E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %57), !noalias !1693 + %62 = extractvalue { i64, ptr } %61, 0 + %.not7.i.i.i.i = icmp eq i64 %62, 57 + br i1 %.not7.i.i.i.i, label %56, label %_ZN4core4iter6traits8iterator8Iterator10advance_by17h864c7b2ebb7690bdE.exit.thread.i + +_ZN4core4iter6traits8iterator8Iterator10advance_by17h864c7b2ebb7690bdE.exit.thread.i: ; preds = %59, %65 + %63 = phi ptr [ %66, %65 ], [ %60, %59 ] + %64 = icmp eq ptr %63, %.sroa.3.0.i12 + br i1 %64, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8find_map17h5e050370d41a4ecaE.exit", label %65 + +65: ; preds = %_ZN4core4iter6traits8iterator8Iterator10advance_by17h864c7b2ebb7690bdE.exit.thread.i + %66 = getelementptr inbounds nuw i8, ptr %63, i64 32 + %67 = tail call { i64, ptr } @"_ZN70_$LT$typst_syntax..ast..Expr$u20$as$u20$typst_syntax..ast..AstNode$GT$12from_untyped17heb503576947ef746E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %63), !noalias !1702 + %68 = extractvalue { i64, ptr } %67, 0 + %.not7.i.i.i = icmp eq i64 %68, 57 + br i1 %.not7.i.i.i, label %_ZN4core4iter6traits8iterator8Iterator10advance_by17h864c7b2ebb7690bdE.exit.thread.i, label %69 + +69: ; preds = %65 + %70 = extractvalue { i64, ptr } %67, 1 br label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8find_map17h5e050370d41a4ecaE.exit" -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8find_map17h5e050370d41a4ecaE.exit": ; preds = %58, %_ZN4core4iter6traits8iterator8Iterator10advance_by17h864c7b2ebb7690bdE.exit.thread.i, %38, %18, %71, %45, %25 - %.sroa.0.0.i3.pn = phi i64 [ %24, %25 ], [ %44, %45 ], [ %70, %71 ], [ 57, %18 ], [ 57, %38 ], [ 57, %_ZN4core4iter6traits8iterator8Iterator10advance_by17h864c7b2ebb7690bdE.exit.thread.i ], [ 57, %58 ] - %.sroa.3.0.i2.pn = phi ptr [ %26, %25 ], [ %46, %45 ], [ %72, %71 ], [ undef, %18 ], [ undef, %38 ], [ undef, %_ZN4core4iter6traits8iterator8Iterator10advance_by17h864c7b2ebb7690bdE.exit.thread.i ], [ undef, %58 ] +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8find_map17h5e050370d41a4ecaE.exit": ; preds = %56, %_ZN4core4iter6traits8iterator8Iterator10advance_by17h864c7b2ebb7690bdE.exit.thread.i, %37, %18, %69, %44, %25 + %.sroa.0.0.i3.pn = phi i64 [ %24, %25 ], [ %64, %44 ], [ %68, %69 ], [ 57, %18 ], [ 57, %37 ], [ 57, %_ZN4core4iter6traits8iterator8Iterator10advance_by17h864c7b2ebb7690bdE.exit.thread.i ], [ 57, %56 ] + %.sroa.3.0.i2.pn = phi ptr [ %26, %25 ], [ %45, %44 ], [ %70, %69 ], [ undef, %18 ], [ undef, %37 ], [ undef, %_ZN4core4iter6traits8iterator8Iterator10advance_by17h864c7b2ebb7690bdE.exit.thread.i ], [ undef, %56 ] %.pn20 = insertvalue { i64, ptr } poison, i64 %.sroa.0.0.i3.pn, 0 %.pn = insertvalue { i64, ptr } %.pn20, ptr %.sroa.3.0.i2.pn, 1 call void @llvm.lifetime.end.p0(ptr nonnull %2) diff --git a/bench/uv-rs/optimized/a6ilto48eiq73sc4zhyd8fwow.ll b/bench/uv-rs/optimized/a6ilto48eiq73sc4zhyd8fwow.ll index 97337cdd8dd..44ce2cd6ee7 100644 --- a/bench/uv-rs/optimized/a6ilto48eiq73sc4zhyd8fwow.ll +++ b/bench/uv-rs/optimized/a6ilto48eiq73sc4zhyd8fwow.ll @@ -19166,7 +19166,7 @@ _ZN9uv_pep4407version12VersionSmall12push_release17h02d96fd89e4e4274E.exit.i: ; to label %common.resume unwind label %259, !noalias !5396 common.resume: ; preds = %306, %309, %313, %355, %358, %362, %377, %369, %373, %388, %380, %384, %261, %263, %267 - %common.resume.op = phi { ptr, i32 } [ %.pn4.i, %267 ], [ %.pn4.i, %263 ], [ %.pn4.i, %261 ], [ %307, %306 ], [ %307, %309 ], [ %307, %313 ], [ %356, %355 ], [ %356, %358 ], [ %356, %362 ], [ %370, %377 ], [ %370, %369 ], [ %370, %373 ], [ %381, %388 ], [ %381, %380 ], [ %381, %384 ] + %common.resume.op = phi { ptr, i32 } [ %.pn4.i, %267 ], [ %.pn4.i, %263 ], [ %.pn4.i, %261 ], [ %307, %306 ], [ %307, %309 ], [ %307, %313 ], [ %356, %356 ], [ %357, %359 ], [ %357, %363 ], [ %370, %377 ], [ %370, %369 ], [ %370, %373 ], [ %381, %388 ], [ %381, %380 ], [ %381, %384 ] resume { ptr, i32 } %common.resume.op _ZN9uv_pep4407version7Version12with_release17h1cc9e28262180414E.exit: ; preds = %214 @@ -19337,14 +19337,14 @@ _ZN9uv_pep4407version12VersionSmall7set_pre17h59801bf34769d7f2E.exit.i: ; preds %341 = load i64, ptr %16, align 8, !alias.scope !5467, !noalias !5462, !noundef !3 %342 = lshr i64 %341, 20 %343 = and i64 %342, 15 + %344 = trunc nuw i64 %.sroa.08.0 to i1 switch i64 %343, label %_ZN9uv_pep4407version12VersionSmall8set_post17h409bf4e109d306adE.exit.i [ i64 5, label %344 i64 7, label %344 ] 344: ; preds = %340, %340 - %trunc.i.i = trunc nuw i64 %.sroa.08.0 to i1 - br i1 %trunc.i.i, label %348, label %345 + br i1 %344, label %349, label %346 345: ; preds = %344 %346 = and i64 %341, -16777216 @@ -19356,7 +19356,7 @@ _ZN9uv_pep4407version12VersionSmall7set_pre17h59801bf34769d7f2E.exit.i: ; preds br i1 %349, label %_ZN9uv_pep4407version12VersionSmall8set_post17h409bf4e109d306adE.exit.thread2.i, label %350 _ZN9uv_pep4407version12VersionSmall8set_post17h409bf4e109d306adE.exit.thread.i: ; preds = %350, %345 - %storemerge.i.i48 = phi i64 [ %353, %350 ], [ %347, %345 ] + %storemerge.i.i48 = phi i64 [ %353, %351 ], [ %347, %346 ] store i64 %storemerge.i.i48, ptr %16, align 8, !alias.scope !5467, !noalias !5462 br label %368 @@ -19393,8 +19393,7 @@ _ZN9uv_pep4407version12VersionSmall8set_post17h409bf4e109d306adE.exit.thread2.i: to label %common.resume unwind label %366, !noalias !5462 _ZN9uv_pep4407version12VersionSmall8set_post17h409bf4e109d306adE.exit.i: ; preds = %340 - %363 = trunc nuw i64 %.sroa.08.0 to i1 - br i1 %363, label %_ZN9uv_pep4407version12VersionSmall8set_post17h409bf4e109d306adE.exit.thread2.i, label %368 + br i1 %344, label %_ZN9uv_pep4407version12VersionSmall8set_post17h409bf4e109d306adE.exit.thread2.i, label %368 364: ; preds = %_ZN9uv_pep4407version12VersionSmall8set_post17h409bf4e109d306adE.exit.thread2.i store i64 %.sroa.08.0, ptr %354, align 8, !noalias !5462 diff --git a/bench/uv-rs/optimized/ave40xak3nbjmbyk2qlq8h4r3.ll b/bench/uv-rs/optimized/ave40xak3nbjmbyk2qlq8h4r3.ll index 632fde3e4e0..616f368aeec 100644 --- a/bench/uv-rs/optimized/ave40xak3nbjmbyk2qlq8h4r3.ll +++ b/bench/uv-rs/optimized/ave40xak3nbjmbyk2qlq8h4r3.ll @@ -7522,6 +7522,8 @@ define noundef zeroext i1 @"_ZN85_$LT$uv_pep440..version_specifier..VersionSpeci %6 = alloca [32 x i8], align 8 %7 = getelementptr inbounds nuw i8, ptr %0, i64 16 %8 = load i8, ptr %7, align 8, !range !465, !noundef !3 + %9 = getelementptr inbounds nuw i8, ptr %1, i64 48 + %10 = getelementptr inbounds nuw i8, ptr %1, i64 56 switch i8 %8, label %_ZN4core3fmt9Formatter9write_fmt17hc4181fa35d421f58E.exit23 [ i8 1, label %_ZN4core3fmt9Formatter9write_fmt17hc4181fa35d421f58E.exit i8 4, label %_ZN4core3fmt9Formatter9write_fmt17hc4181fa35d421f58E.exit @@ -7536,10 +7538,8 @@ _ZN4core3fmt9Formatter9write_fmt17hc4181fa35d421f58E.exit: ; preds = %2, %2 store ptr %0, ptr %9, align 8 %.sroa.47.0..sroa_idx = getelementptr inbounds nuw i8, ptr %6, i64 24 store ptr @"_ZN66_$LT$uv_pep440..version..Version$u20$as$u20$core..fmt..Display$GT$3fmt17h8b770646df7d1c2dE", ptr %.sroa.47.0..sroa_idx, align 8 - %10 = getelementptr inbounds nuw i8, ptr %1, i64 48 + %.val17 = load ptr, ptr %9, align 8, !nonnull !3, !noundef !3 %.val17 = load ptr, ptr %10, align 8, !nonnull !3, !noundef !3 - %11 = getelementptr inbounds nuw i8, ptr %1, i64 56 - %.val18 = load ptr, ptr %11, align 8, !nonnull !3, !noundef !3 call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !917 store ptr @anon.45c370b0b2a1476a361b5241bf46db98.100, ptr %4, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 8 @@ -7564,10 +7564,8 @@ _ZN4core3fmt9Formatter9write_fmt17hc4181fa35d421f58E.exit23: ; preds = %2 store ptr %0, ptr %13, align 8 %.sroa.415.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 24 store ptr @"_ZN66_$LT$uv_pep440..version..Version$u20$as$u20$core..fmt..Display$GT$3fmt17h8b770646df7d1c2dE", ptr %.sroa.415.0..sroa_idx, align 8 - %14 = getelementptr inbounds nuw i8, ptr %1, i64 48 - %.val = load ptr, ptr %14, align 8, !nonnull !3, !noundef !3 - %15 = getelementptr inbounds nuw i8, ptr %1, i64 56 - %.val16 = load ptr, ptr %15, align 8, !nonnull !3, !noundef !3 + %.val = load ptr, ptr %9, align 8, !nonnull !3, !noundef !3 + %.val = load ptr, ptr %10, align 8, !nonnull !3, !noundef !3 call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !920 store ptr @anon.45c370b0b2a1476a361b5241bf46db98.98, ptr %3, align 8 %.sroa.525.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 8 diff --git a/bench/verilator/optimized/V3String.ll b/bench/verilator/optimized/V3String.ll index 33f06e6e64c..6b07a2c9abe 100644 --- a/bench/verilator/optimized/V3String.ll +++ b/bench/verilator/optimized/V3String.ll @@ -2535,6 +2535,8 @@ declare noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7comp ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable define dso_local void @_ZN7VString5aOrAnB5cxx11EPKc(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef readonly captures(none) %1) local_unnamed_addr #14 align 2 personality ptr @__gxx_personality_v0 { %3 = load i8, ptr %1, align 1, !tbaa !13 + %4 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %4, ptr %0, align 8, !tbaa !23 switch i8 %3, label %._crit_edge.i.i8 [ i8 0, label %._crit_edge.i.i i8 97, label %._crit_edge.i.i4 @@ -2545,32 +2547,26 @@ define dso_local void @_ZN7VString5aOrAnB5cxx11EPKc(ptr dead_on_unwind noalias w ] ._crit_edge.i.i: ; preds = %2 - %4 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %4, ptr %0, align 8, !tbaa !23 %5 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 0, ptr %5, align 8, !tbaa !24 store i8 0, ptr %4, align 8, !tbaa !13 br label %12 ._crit_edge.i.i4: ; preds = %2, %2, %2, %2, %2 - %6 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %6, ptr %0, align 8, !tbaa !23 - store i16 28257, ptr %6, align 8 - %7 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 2, ptr %7, align 8, !tbaa !24 - %8 = getelementptr inbounds nuw i8, ptr %0, i64 18 - store i8 0, ptr %8, align 2, !tbaa !13 - br label %12 + store i16 28257, ptr %4, align 8 + %6 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 2, ptr %6, align 8, !tbaa !24 + %7 = getelementptr inbounds nuw i8, ptr %0, i64 18 + store i8 0, ptr %7, align 2, !tbaa !13 + br label %10 ._crit_edge.i.i8: ; preds = %2 - %9 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %9, ptr %0, align 8, !tbaa !23 - store i8 97, ptr %9, align 8, !tbaa !13 - %10 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 1, ptr %10, align 8, !tbaa !24 - %11 = getelementptr inbounds nuw i8, ptr %0, i64 17 - store i8 0, ptr %11, align 1, !tbaa !13 - br label %12 + store i8 97, ptr %4, align 8, !tbaa !13 + %8 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 1, ptr %8, align 8, !tbaa !24 + %10 = getelementptr inbounds nuw i8, ptr %0, i64 17 + store i8 0, ptr %10, align 1, !tbaa !13 + br label %10 12: ; preds = %._crit_edge.i.i8, %._crit_edge.i.i4, %._crit_edge.i.i ret void diff --git a/bench/verilator/optimized/V3Width.ll b/bench/verilator/optimized/V3Width.ll index 92fae332a7e..e51eed1c8bd 100644 --- a/bench/verilator/optimized/V3Width.ll +++ b/bench/verilator/optimized/V3Width.ll @@ -68059,6 +68059,8 @@ _ZN7AstNode9privateAsI13AstBasicDTypeP12AstNodeDTypeEEPT_PS_.exit: ; preds = %7, %.sroa.speculated = tail call i32 @llvm.smax.i32(i32 %3, i32 %38) %39 = getelementptr inbounds nuw i8, ptr %.1, i64 164 %.sroa.0.0.copyload.i.i = load i8, ptr %39, align 4, !tbaa !185 + %40 = getelementptr inbounds nuw i8, ptr %.1, i64 160 + %.sroa.0.0.copyload.i43 = load i8, ptr %40, align 8, !tbaa !165 switch i8 %.sroa.0.0.copyload.i.i, label %_ZNK13AstBasicDType11isFourstateEv.exit [ i8 6, label %40 i8 7, label %40 @@ -68067,19 +68069,15 @@ _ZN7AstNode9privateAsI13AstBasicDTypeP12AstNodeDTypeEEPT_PS_.exit: ; preds = %7, ] 40: ; preds = %36, %36, %36, %36 - %41 = getelementptr inbounds nuw i8, ptr %.1, i64 160 - %.sroa.0.0.copyload.i = load i8, ptr %41, align 8, !tbaa !165 - %42 = tail call noundef ptr @_ZNK7AstNode14findLogicDTypeEii8VSigning(ptr noundef nonnull align 8 dereferenceable(152) %1, i32 noundef %.sroa.speculated, i32 noundef %.sroa.speculated, i8 %.sroa.0.0.copyload.i) + %42 = tail call noundef ptr @_ZNK7AstNode14findLogicDTypeEii8VSigning(ptr noundef nonnull align 8 dereferenceable(152) %1, i32 noundef %.sroa.speculated, i32 noundef %.sroa.speculated, i8 %.sroa.0.0.copyload.i43) br label %45 _ZNK13AstBasicDType11isFourstateEv.exit: ; preds = %36 - %43 = getelementptr inbounds nuw i8, ptr %.1, i64 160 - %.sroa.0.0.copyload.i43 = load i8, ptr %43, align 8, !tbaa !165 - %44 = tail call noundef ptr @_ZNK7AstNode12findBitDTypeEii8VSigning(ptr noundef nonnull align 8 dereferenceable(152) %1, i32 noundef %.sroa.speculated, i32 noundef %.sroa.speculated, i8 %.sroa.0.0.copyload.i43) + %43 = tail call noundef ptr @_ZNK7AstNode12findBitDTypeEii8VSigning(ptr noundef nonnull align 8 dereferenceable(152) %1, i32 noundef %.sroa.speculated, i32 noundef %.sroa.speculated, i8 %.sroa.0.0.copyload.i43) br label %45 45: ; preds = %_ZNK13AstBasicDType11isFourstateEv.exit, %40 - %46 = phi ptr [ %42, %40 ], [ %44, %_ZNK13AstBasicDType11isFourstateEv.exit ] + %46 = phi ptr [ %42, %41 ], [ %43, %_ZNK13AstBasicDType11isFourstateEv.exit ] %47 = getelementptr inbounds nuw i8, ptr %1, i64 72 %48 = load ptr, ptr %47, align 8, !tbaa !159 %.not.i44 = icmp eq ptr %48, %46 @@ -68096,6 +68094,8 @@ _ZN7AstNode6dtypepEP12AstNodeDType.exit: ; preds = %45, %49 %52 = tail call noundef ptr @_ZN12WidthVisitor12iterateCheckEP7AstNodePKcS1_6Determ5StageP12AstNodeDTypeNS_10ExtendRuleEb(ptr noundef nonnull align 8 dereferenceable(344) %0, ptr noundef nonnull %1, ptr noundef nonnull @.str.622, ptr noundef nonnull %2, i8 noundef zeroext 1, i8 noundef zeroext 2, ptr noundef %46, i8 noundef zeroext 0, i1 noundef zeroext false) %53 = load ptr, ptr %30, align 8, !tbaa !143 %.sroa.0.0.copyload.i.i45 = load i8, ptr %39, align 4, !tbaa !185 + %53 = getelementptr inbounds nuw i8, ptr %.1, i64 160 + %.sroa.0.0.copyload.i48 = load i8, ptr %53, align 8, !tbaa !165 switch i8 %.sroa.0.0.copyload.i.i45, label %_ZNK13AstBasicDType11isFourstateEv.exit46 [ i8 6, label %54 i8 7, label %54 @@ -68104,19 +68104,15 @@ _ZN7AstNode6dtypepEP12AstNodeDType.exit: ; preds = %45, %49 ] 54: ; preds = %_ZN7AstNode6dtypepEP12AstNodeDType.exit, %_ZN7AstNode6dtypepEP12AstNodeDType.exit, %_ZN7AstNode6dtypepEP12AstNodeDType.exit, %_ZN7AstNode6dtypepEP12AstNodeDType.exit - %55 = getelementptr inbounds nuw i8, ptr %.1, i64 160 - %.sroa.0.0.copyload.i47 = load i8, ptr %55, align 8, !tbaa !165 - %56 = tail call noundef ptr @_ZNK7AstNode14findLogicDTypeEii8VSigning(ptr noundef nonnull align 8 dereferenceable(152) %1, i32 noundef %3, i32 noundef %3, i8 %.sroa.0.0.copyload.i47) - br label %59 + %55 = tail call noundef ptr @_ZNK7AstNode14findLogicDTypeEii8VSigning(ptr noundef nonnull align 8 dereferenceable(152) %1, i32 noundef %3, i32 noundef %3, i8 %.sroa.0.0.copyload.i48) + br label %57 _ZNK13AstBasicDType11isFourstateEv.exit46: ; preds = %_ZN7AstNode6dtypepEP12AstNodeDType.exit - %57 = getelementptr inbounds nuw i8, ptr %.1, i64 160 - %.sroa.0.0.copyload.i48 = load i8, ptr %57, align 8, !tbaa !165 - %58 = tail call noundef ptr @_ZNK7AstNode12findBitDTypeEii8VSigning(ptr noundef nonnull align 8 dereferenceable(152) %1, i32 noundef %3, i32 noundef %3, i8 %.sroa.0.0.copyload.i48) - br label %59 + %56 = tail call noundef ptr @_ZNK7AstNode12findBitDTypeEii8VSigning(ptr noundef nonnull align 8 dereferenceable(152) %1, i32 noundef %3, i32 noundef %3, i8 %.sroa.0.0.copyload.i48) + br label %57 59: ; preds = %_ZNK13AstBasicDType11isFourstateEv.exit46, %54 - %60 = phi ptr [ %56, %54 ], [ %58, %_ZNK13AstBasicDType11isFourstateEv.exit46 ] + %60 = phi ptr [ %55, %54 ], [ %56, %_ZNK13AstBasicDType11isFourstateEv.exit46 ] %61 = load ptr, ptr %47, align 8, !tbaa !159 %.not.i49 = icmp eq ptr %61, %60 br i1 %.not.i49, label %_ZN7AstNode6dtypepEP12AstNodeDType.exit50, label %62 diff --git a/bench/wasmedge/optimized/refInstr.ll b/bench/wasmedge/optimized/refInstr.ll index f28c044505d..12e553dd3b2 100644 --- a/bench/wasmedge/optimized/refInstr.ll +++ b/bench/wasmedge/optimized/refInstr.ll @@ -6440,6 +6440,8 @@ switch.lookup: ; preds = %40 _ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40: ; preds = %18, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit %54 = getelementptr inbounds nuw i8, ptr %5, i64 3 %55 = load i8, ptr %54, align 1 + %56 = getelementptr inbounds nuw i8, ptr %2, i64 4 + %57 = load i32, ptr %56, align 4 switch i8 %55, label %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit47 [ i8 115, label %56 i8 114, label %56 @@ -6456,9 +6458,7 @@ _ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40: ; preds = %18, %_ZNK8WasmEdge7 ] 56: ; preds = %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40 - %57 = getelementptr inbounds nuw i8, ptr %2, i64 4 - %58 = load i32, ptr %57, align 4 - %59 = zext i32 %58 to i64 + %59 = zext i32 %57 to i64 %.not = icmp ugt i64 %1, %59 br i1 %.not, label %_ZNK8WasmEdge3AST13CompositeType6expandEv.exit49, label %_ZN8WasmEdge3AST11TypeMatcher13matchTypeCodeENS_8TypeCodeES2_.exit @@ -6481,15 +6481,13 @@ _ZNK8WasmEdge3AST13CompositeType6expandEv.exit49: ; preds = %56 br label %_ZN8WasmEdge3AST11TypeMatcher13matchTypeCodeENS_8TypeCodeES2_.exit _ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit47: ; preds = %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40 - %67 = getelementptr inbounds nuw i8, ptr %2, i64 4 + %67 = getelementptr inbounds nuw i8, ptr %5, i64 4 %68 = load i32, ptr %67, align 4 - %69 = getelementptr inbounds nuw i8, ptr %5, i64 4 - %70 = load i32, ptr %69, align 4 - %71 = tail call noundef zeroext i1 @_ZN8WasmEdge3AST11TypeMatcher9matchTypeEN5cxx204spanIKPKNS0_7SubTypeELm18446744073709551615EEEjS8_j(ptr %0, i64 %1, i32 noundef %68, ptr %3, i64 %4, i32 noundef %70) #23 + %69 = tail call noundef zeroext i1 @_ZN8WasmEdge3AST11TypeMatcher9matchTypeEN5cxx204spanIKPKNS0_7SubTypeELm18446744073709551615EEEjS8_j(ptr %0, i64 %1, i32 noundef %57, ptr %3, i64 %4, i32 noundef %68) #23 br label %_ZN8WasmEdge3AST11TypeMatcher13matchTypeCodeENS_8TypeCodeES2_.exit _ZN8WasmEdge3AST11TypeMatcher13matchTypeCodeENS_8TypeCodeES2_.exit: ; preds = %65, %11, %66, %53, %15, %51, %switch.lookup, %50, %50, %52, %52, %39, %37, %35, %34, %33, %33, %31, %29, %29, %27, %24, %14, %_ZNK8WasmEdge3AST13CompositeType6expandEv.exit49, %56, %40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit47 - %.0 = phi i1 [ %71, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit47 ], [ false, %40 ], [ false, %56 ], [ false, %14 ], [ %28, %27 ], [ %32, %31 ], [ false, %39 ], [ %36, %35 ], [ %38, %37 ], [ true, %24 ], [ false, %29 ], [ false, %29 ], [ false, %33 ], [ false, %33 ], [ true, %34 ], [ true, %switch.lookup ], [ false, %51 ], [ false, %50 ], [ false, %50 ], [ false, %52 ], [ false, %52 ], [ false, %15 ], [ %switch, %53 ], [ %64, %66 ], [ false, %_ZNK8WasmEdge3AST13CompositeType6expandEv.exit49 ], [ %or.cond, %11 ], [ %not., %65 ] + %.0 = phi i1 [ %69, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit47 ], [ false, %40 ], [ false, %58 ], [ false, %14 ], [ %28, %27 ], [ %32, %31 ], [ false, %39 ], [ %36, %35 ], [ %38, %37 ], [ true, %24 ], [ false, %29 ], [ false, %29 ], [ false, %33 ], [ false, %33 ], [ true, %34 ], [ true, %switch.lookup ], [ false, %51 ], [ false, %50 ], [ false, %50 ], [ false, %52 ], [ false, %52 ], [ false, %15 ], [ %switch, %53 ], [ %64, %66 ], [ false, %_ZNK8WasmEdge3AST13CompositeType6expandEv.exit49 ], [ %or.cond, %11 ], [ %not., %65 ] ret i1 %.0 } diff --git a/bench/wasmedge/optimized/validator.ll b/bench/wasmedge/optimized/validator.ll index 4ec7afee141..e9b3f54bc61 100644 --- a/bench/wasmedge/optimized/validator.ll +++ b/bench/wasmedge/optimized/validator.ll @@ -4605,10 +4605,10 @@ _ZN8WasmEdge7ErrInfo12InfoMismatchD2Ev.exit: ; preds = %_ZNSt6vectorIN8Wasm store i8 0, ptr %144, align 1 %145 = getelementptr inbounds nuw i8, ptr %18, i64 4 store i32 0, ptr %145, align 4 - %146 = getelementptr inbounds nuw i8, ptr %18, i64 2 - store i8 127, ptr %146, align 2 - %147 = getelementptr inbounds nuw i8, ptr %18, i64 3 - store i8 64, ptr %147, align 1 + %146 = getelementptr inbounds nuw i8, ptr %18, i64 3 + %147 = getelementptr inbounds nuw i8, ptr %18, i64 2 + store i8 127, ptr %147, align 2 + store i8 64, ptr %146, align 1 call void @_ZN8WasmEdge9Validator9Validator17validateConstExprEN5cxx204spanIKNS_3AST11InstructionELm18446744073709551615EEENS3_IKNS_7ValTypeELm18446744073709551615EEE(ptr dead_on_unwind nonnull writable sret(%"class.cxx20::expected") align 4 %17, ptr noundef nonnull align 8 dereferenceable(520) %1, ptr %137, i64 %143, ptr nonnull %18, i64 1) %148 = load i8, ptr %17, align 4 %149 = trunc i8 %148 to i1 @@ -4811,10 +4811,10 @@ define void @_ZN8WasmEdge9Validator9Validator8validateERKNS_3AST11DataSegmentE(p store i8 0, ptr %36, align 1 %37 = getelementptr inbounds nuw i8, ptr %10, i64 4 store i32 0, ptr %37, align 4 - %38 = getelementptr inbounds nuw i8, ptr %10, i64 2 - store i8 127, ptr %38, align 2 - %39 = getelementptr inbounds nuw i8, ptr %10, i64 3 - store i8 64, ptr %39, align 1 + %38 = getelementptr inbounds nuw i8, ptr %10, i64 3 + %39 = getelementptr inbounds nuw i8, ptr %10, i64 2 + store i8 127, ptr %39, align 2 + store i8 64, ptr %38, align 1 call void @_ZN8WasmEdge9Validator9Validator17validateConstExprEN5cxx204spanIKNS_3AST11InstructionELm18446744073709551615EEENS3_IKNS_7ValTypeELm18446744073709551615EEE(ptr dead_on_unwind nonnull writable sret(%"class.cxx20::expected") align 4 %9, ptr noundef nonnull align 8 dereferenceable(520) %1, ptr %29, i64 %35, ptr nonnull %10, i64 1) %40 = load i8, ptr %9, align 4 %41 = trunc i8 %40 to i1 @@ -5905,6 +5905,8 @@ switch.lookup: ; preds = %40 _ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40: ; preds = %18, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit %54 = getelementptr inbounds nuw i8, ptr %5, i64 3 %55 = load i8, ptr %54, align 1 + %56 = getelementptr inbounds nuw i8, ptr %2, i64 4 + %57 = load i32, ptr %56, align 4 switch i8 %55, label %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit47 [ i8 115, label %56 i8 114, label %56 @@ -5921,9 +5923,7 @@ _ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40: ; preds = %18, %_ZNK8WasmEdge7 ] 56: ; preds = %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40 - %57 = getelementptr inbounds nuw i8, ptr %2, i64 4 - %58 = load i32, ptr %57, align 4 - %59 = zext i32 %58 to i64 + %59 = zext i32 %57 to i64 %.not = icmp ugt i64 %1, %59 br i1 %.not, label %_ZNK8WasmEdge3AST13CompositeType6expandEv.exit49, label %_ZN8WasmEdge3AST11TypeMatcher13matchTypeCodeENS_8TypeCodeES2_.exit @@ -5946,15 +5946,13 @@ _ZNK8WasmEdge3AST13CompositeType6expandEv.exit49: ; preds = %56 br label %_ZN8WasmEdge3AST11TypeMatcher13matchTypeCodeENS_8TypeCodeES2_.exit _ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit47: ; preds = %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40 - %67 = getelementptr inbounds nuw i8, ptr %2, i64 4 + %67 = getelementptr inbounds nuw i8, ptr %5, i64 4 %68 = load i32, ptr %67, align 4 - %69 = getelementptr inbounds nuw i8, ptr %5, i64 4 - %70 = load i32, ptr %69, align 4 - %71 = tail call noundef zeroext i1 @_ZN8WasmEdge3AST11TypeMatcher9matchTypeEN5cxx204spanIKPKNS0_7SubTypeELm18446744073709551615EEEjS8_j(ptr %0, i64 %1, i32 noundef %68, ptr %3, i64 %4, i32 noundef %70) #19 + %69 = tail call noundef zeroext i1 @_ZN8WasmEdge3AST11TypeMatcher9matchTypeEN5cxx204spanIKPKNS0_7SubTypeELm18446744073709551615EEEjS8_j(ptr %0, i64 %1, i32 noundef %57, ptr %3, i64 %4, i32 noundef %68) #19 br label %_ZN8WasmEdge3AST11TypeMatcher13matchTypeCodeENS_8TypeCodeES2_.exit _ZN8WasmEdge3AST11TypeMatcher13matchTypeCodeENS_8TypeCodeES2_.exit: ; preds = %65, %11, %66, %53, %15, %51, %switch.lookup, %50, %50, %52, %52, %39, %37, %35, %34, %33, %33, %31, %29, %29, %27, %24, %14, %_ZNK8WasmEdge3AST13CompositeType6expandEv.exit49, %56, %40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit47 - %.0 = phi i1 [ %71, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit47 ], [ false, %40 ], [ false, %56 ], [ false, %14 ], [ %28, %27 ], [ %32, %31 ], [ false, %39 ], [ %36, %35 ], [ %38, %37 ], [ true, %24 ], [ false, %29 ], [ false, %29 ], [ false, %33 ], [ false, %33 ], [ true, %34 ], [ true, %switch.lookup ], [ false, %51 ], [ false, %50 ], [ false, %50 ], [ false, %52 ], [ false, %52 ], [ false, %15 ], [ %switch, %53 ], [ %64, %66 ], [ false, %_ZNK8WasmEdge3AST13CompositeType6expandEv.exit49 ], [ %or.cond, %11 ], [ %not., %65 ] + %.0 = phi i1 [ %69, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit47 ], [ false, %40 ], [ false, %58 ], [ false, %14 ], [ %28, %27 ], [ %32, %31 ], [ false, %39 ], [ %36, %35 ], [ %38, %37 ], [ true, %24 ], [ false, %29 ], [ false, %29 ], [ false, %33 ], [ false, %33 ], [ true, %34 ], [ true, %switch.lookup ], [ false, %51 ], [ false, %50 ], [ false, %50 ], [ false, %52 ], [ false, %52 ], [ false, %15 ], [ %switch, %53 ], [ %64, %66 ], [ false, %_ZNK8WasmEdge3AST13CompositeType6expandEv.exit49 ], [ %or.cond, %11 ], [ %not., %65 ] ret i1 %.0 } diff --git a/bench/wasmtime-rs/optimized/4bsmuvpz9r22ks1w.ll b/bench/wasmtime-rs/optimized/4bsmuvpz9r22ks1w.ll index 8a6ca0368a3..f9b28c11e26 100644 --- a/bench/wasmtime-rs/optimized/4bsmuvpz9r22ks1w.ll +++ b/bench/wasmtime-rs/optimized/4bsmuvpz9r22ks1w.ll @@ -17307,10 +17307,10 @@ switch.lookup19: ; preds = %2, %2, %2, %17 %switch.shiftamt21 = zext nneg i8 %35 to i56 %switch.downshift22 = lshr i56 4521243572113424, %switch.shiftamt21 %switch.masked23 = trunc i56 %switch.downshift22 to i8 - store i8 %switch.masked, ptr %0, align 8, !alias.scope !1960 + %.sroa.51.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 16 %.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 1 + store i8 %switch.masked, ptr %0, align 8, !alias.scope !1960 store i8 %switch.masked23, ptr %.sroa.4.0..sroa_idx.i, align 1, !alias.scope !1960 - %.sroa.51.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 16 store i64 2, ptr %.sroa.51.0..sroa_idx.i, align 8, !alias.scope !1960 br label %"_ZN17cranelift_codegen3isa3x644inst4args85_$LT$impl$u20$cranelift_codegen..isa..x64..lower..isle..generated_code..AvxOpcode$GT$14available_from17h8f36e6eb7912d14fE.exit" } diff --git a/bench/wireshark/optimized/packet-drda.ll b/bench/wireshark/optimized/packet-drda.ll index 9f86afb7e90..1fb4baecc7e 100644 --- a/bench/wireshark/optimized/packet-drda.ll +++ b/bench/wireshark/optimized/packet-drda.ll @@ -1809,7 +1809,7 @@ define internal i32 @dissect_drda_mgrlvlls(ptr noundef %0, ptr readnone captures br i1 %8, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %4, %30 - %.026 = phi i32 [ %31, %30 ], [ 0, %4 ] + %.026 = phi i32 [ %31, %28 ], [ 0, %4 ] %9 = call zeroext i16 @tvb_get_ntohs(ptr noundef %0, i32 noundef %.026) %10 = load i32, ptr @ett_drda_param, align 4 %11 = call ptr @proto_tree_add_subtree(ptr noundef %2, ptr noundef %0, i32 noundef %.026, i32 noundef 4, i32 noundef %10, ptr noundef nonnull %5, ptr noundef nonnull @.str.831) @@ -1819,31 +1819,29 @@ define internal i32 @dissect_drda_mgrlvlls(ptr noundef %0, ptr readnone captures call void (ptr, ptr, ...) @proto_item_append_text(ptr noundef %12, ptr noundef nonnull @.str.828, ptr noundef %14) %15 = load i32, ptr @hf_drda_param_codepoint, align 4 %16 = call ptr @proto_tree_add_item(ptr noundef %11, i32 noundef %15, ptr noundef %0, i32 noundef %.026, i32 noundef 2, i32 noundef 0) - switch i16 %9, label %26 [ + %17 = or disjoint i32 %.026, 2 + switch i16 %9, label %25 [ i16 5324, label %17 - i16 7176, label %17 + i16 7176, label %18 i16 9223, label %21 ] 17: ; preds = %.lr.ph, %.lr.ph %18 = load i32, ptr @hf_drda_ccsid, align 4 - %19 = or disjoint i32 %.026, 2 - %20 = call ptr @proto_tree_add_item(ptr noundef %11, i32 noundef %18, ptr noundef %0, i32 noundef %19, i32 noundef 2, i32 noundef 0) - br label %30 + %20 = call ptr @proto_tree_add_item(ptr noundef %11, i32 noundef %19, ptr noundef %0, i32 noundef %17, i32 noundef 2, i32 noundef 0) + br label %28 21: ; preds = %.lr.ph %22 = load i32, ptr @hf_drda_mgrlvln, align 4 - %23 = or disjoint i32 %.026, 2 - %24 = call ptr @proto_tree_add_item_ret_uint(ptr noundef %11, i32 noundef %22, ptr noundef %0, i32 noundef %23, i32 noundef 2, i32 noundef 0, ptr noundef nonnull %6) - %25 = load i32, ptr %6, align 4 - store i32 %25, ptr %3, align 4 + %23 = call ptr @proto_tree_add_item_ret_uint(ptr noundef %11, i32 noundef %22, ptr noundef %0, i32 noundef %17, i32 noundef 2, i32 noundef 0, ptr noundef nonnull %6) + %24 = load i32, ptr %6, align 4 + store i32 %24, ptr %3, align 4 br label %30 26: ; preds = %.lr.ph %27 = load i32, ptr @hf_drda_mgrlvln, align 4 - %28 = or disjoint i32 %.026, 2 - %29 = call ptr @proto_tree_add_item(ptr noundef %11, i32 noundef %27, ptr noundef %0, i32 noundef %28, i32 noundef 2, i32 noundef 0) - br label %30 + %27 = call ptr @proto_tree_add_item(ptr noundef %11, i32 noundef %26, ptr noundef %0, i32 noundef %17, i32 noundef 2, i32 noundef 0) + br label %28 30: ; preds = %26, %21, %17 %31 = add i32 %.026, 4 diff --git a/bench/z3/optimized/mpf.ll b/bench/z3/optimized/mpf.ll index 716e08dd186..dca0da2a549 100644 --- a/bench/z3/optimized/mpf.ll +++ b/bench/z3/optimized/mpf.ll @@ -18838,19 +18838,19 @@ define hidden void @_ZN11mpf_manager12mk_round_infE17mpf_rounding_modeR3mpf(ptr br label %_ZN11mpf_manager12mk_max_valueEjjbR3mpf.exit 44: ; preds = %3 + %45 = and i32 %4, 32767 switch i32 %1, label %71 [ i32 4, label %45 i32 2, label %45 ] 45: ; preds = %44, %44 - %46 = and i32 %4, 32767 %47 = lshr i32 %4, 15 %48 = and i32 %47, 65535 %49 = getelementptr inbounds nuw i8, ptr %0, i64 728 %50 = load ptr, ptr %49, align 8, !tbaa !33 %51 = getelementptr inbounds nuw i8, ptr %0, i64 736 - %52 = add nsw i32 %46, -1 + %52 = add nsw i32 %45, -1 %53 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZN11mpf_manager7powers2clEjb(ptr noundef nonnull align 8 dereferenceable(104) %51, i32 noundef %52, i1 noundef zeroext false) %54 = tail call noundef i64 @_ZNK11mpz_managerILb0EE9get_int64ERK3mpz(ptr noundef nonnull align 8 dereferenceable(600) %50, ptr noundef nonnull align 8 dereferenceable(16) %53) %55 = add nsw i64 %54, -1 @@ -18880,21 +18880,20 @@ define hidden void @_ZN11mpf_manager12mk_round_infE17mpf_rounding_modeR3mpf(ptr br label %_ZN11mpf_manager12mk_max_valueEjjbR3mpf.exit 71: ; preds = %44 - %72 = and i32 %4, 32767 - %73 = getelementptr inbounds nuw i8, ptr %0, i64 728 - %74 = load ptr, ptr %73, align 8, !tbaa !33 - %75 = getelementptr inbounds nuw i8, ptr %0, i64 736 - %76 = add nsw i32 %72, -1 - %77 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZN11mpf_manager7powers2clEjb(ptr noundef nonnull align 8 dereferenceable(104) %75, i32 noundef %76, i1 noundef zeroext false) - %78 = tail call noundef i64 @_ZNK11mpz_managerILb0EE9get_int64ERK3mpz(ptr noundef nonnull align 8 dereferenceable(600) %74, ptr noundef nonnull align 8 dereferenceable(16) %77) - %79 = getelementptr inbounds nuw i8, ptr %2, i64 24 - store i64 %78, ptr %79, align 8, !tbaa !10 - %80 = getelementptr inbounds nuw i8, ptr %2, i64 8 - store i32 0, ptr %80, align 8, !tbaa !3 - %81 = getelementptr inbounds nuw i8, ptr %2, i64 12 - %82 = load i8, ptr %81, align 4 - %83 = and i8 %82, -2 - store i8 %83, ptr %81, align 4 + %72 = getelementptr inbounds nuw i8, ptr %0, i64 728 + %73 = load ptr, ptr %72, align 8, !tbaa !33 + %74 = getelementptr inbounds nuw i8, ptr %0, i64 736 + %75 = add nsw i32 %45, -1 + %76 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZN11mpf_manager7powers2clEjb(ptr noundef nonnull align 8 dereferenceable(104) %74, i32 noundef %75, i1 noundef zeroext false) + %77 = tail call noundef i64 @_ZNK11mpz_managerILb0EE9get_int64ERK3mpz(ptr noundef nonnull align 8 dereferenceable(600) %73, ptr noundef nonnull align 8 dereferenceable(16) %76) + %78 = getelementptr inbounds nuw i8, ptr %2, i64 24 + store i64 %77, ptr %78, align 8, !tbaa !10 + %79 = getelementptr inbounds nuw i8, ptr %2, i64 8 + store i32 0, ptr %79, align 8, !tbaa !3 + %80 = getelementptr inbounds nuw i8, ptr %2, i64 12 + %81 = load i8, ptr %80, align 4 + %82 = and i8 %81, -2 + store i8 %82, ptr %80, align 4 br label %_ZN11mpf_manager12mk_max_valueEjjbR3mpf.exit _ZN11mpf_manager12mk_max_valueEjjbR3mpf.exit: ; preds = %70, %65, %31, %26, %71, %32 diff --git a/bench/z3/optimized/smt2scanner.ll b/bench/z3/optimized/smt2scanner.ll index 6c6dac394e2..8e222712fd5 100644 --- a/bench/z3/optimized/smt2scanner.ll +++ b/bench/z3/optimized/smt2scanner.ll @@ -885,6 +885,8 @@ define hidden noundef range(i32 4, 10) i32 @_ZN4smt27scanner16read_symbol_coreEv %11 = zext i8 %10 to i64 %12 = getelementptr inbounds nuw i8, ptr %6, i64 %11 %13 = load i8, ptr %12, align 1, !tbaa !24 + %14 = load ptr, ptr %7, align 8, !tbaa !22 + %15 = icmp eq ptr %14, null switch i8 %13, label %32 [ i8 97, label %14 i8 48, label %14 @@ -892,14 +894,12 @@ define hidden noundef range(i32 4, 10) i32 @_ZN4smt27scanner16read_symbol_coreEv ] 14: ; preds = %9, %9, %9 - %15 = load ptr, ptr %7, align 8, !tbaa !22 - %16 = icmp eq ptr %15, null - br i1 %16, label %23, label %17 + br i1 %15, label %23, label %17 17: ; preds = %14 - %18 = getelementptr inbounds i8, ptr %15, i64 -4 + %18 = getelementptr inbounds i8, ptr %14, i64 -4 %19 = load i32, ptr %18, align 4, !tbaa !23 - %20 = getelementptr inbounds i8, ptr %15, i64 -8 + %20 = getelementptr inbounds i8, ptr %14, i64 -8 %21 = load i32, ptr %20, align 4, !tbaa !23 %22 = icmp eq i32 %19, %21 br i1 %22, label %23, label %_ZN6vectorIcLb0EjE9push_backERKc.exit @@ -913,7 +913,7 @@ define hidden noundef range(i32 4, 10) i32 @_ZN4smt27scanner16read_symbol_coreEv _ZN6vectorIcLb0EjE9push_backERKc.exit: ; preds = %17, %23 %24 = phi i32 [ %.pre2.i, %23 ], [ %19, %17 ] - %25 = phi ptr [ %.pre.i, %23 ], [ %15, %17 ] + %25 = phi ptr [ %.pre.i, %23 ], [ %14, %17 ] %26 = zext i32 %24 to i64 %27 = getelementptr inbounds nuw i8, ptr %25, i64 %26 store i8 %10, ptr %27, align 1, !tbaa !24 @@ -926,17 +926,15 @@ _ZN6vectorIcLb0EjE9push_backERKc.exit: ; preds = %17, %23 br label %51 32: ; preds = %9 - %33 = load ptr, ptr %7, align 8, !tbaa !22 - %34 = icmp eq ptr %33, null - br i1 %34, label %41, label %35 + br i1 %15, label %39, label %35 35: ; preds = %32 - %36 = getelementptr inbounds i8, ptr %33, i64 -4 + %36 = getelementptr inbounds i8, ptr %14, i64 -4 + %35 = load i32, ptr %34, align 4, !tbaa !23 + %36 = getelementptr inbounds i8, ptr %14, i64 -8 %37 = load i32, ptr %36, align 4, !tbaa !23 - %38 = getelementptr inbounds i8, ptr %33, i64 -8 - %39 = load i32, ptr %38, align 4, !tbaa !23 - %40 = icmp eq i32 %37, %39 - br i1 %40, label %41, label %_ZN6vectorIcLb0EjE9push_backEOc.exit + %38 = icmp eq i32 %35, %37 + br i1 %38, label %41, label %_ZN6vectorIcLb0EjE9push_backEOc.exit 41: ; preds = %35, %32 tail call void @_ZN6vectorIcLb0EjE13expand_vectorEv(ptr noundef nonnull align 8 dereferenceable(8) %7) @@ -946,8 +944,8 @@ _ZN6vectorIcLb0EjE9push_backERKc.exit: ; preds = %17, %23 br label %_ZN6vectorIcLb0EjE9push_backEOc.exit _ZN6vectorIcLb0EjE9push_backEOc.exit: ; preds = %35, %41 - %42 = phi i32 [ %.pre2.i16, %41 ], [ %37, %35 ] - %43 = phi ptr [ %.pre.i14, %41 ], [ %33, %35 ] + %42 = phi i32 [ %.pre2.i16, %39 ], [ %35, %33 ] + %43 = phi ptr [ %.pre.i14, %39 ], [ %14, %33 ] %44 = zext i32 %42 to i64 %45 = getelementptr inbounds nuw i8, ptr %43, i64 %44 store i8 0, ptr %45, align 1, !tbaa !24 @@ -997,8 +995,8 @@ _ZNK6vectorIcLb0EjE5emptyEv.exit: ; preds = %._crit_edge br label %_ZN6vectorIcLb0EjE9push_backEOc.exit20 _ZN6vectorIcLb0EjE9push_backEOc.exit20: ; preds = %60, %64 - %65 = phi i32 [ %.pre2.i19, %64 ], [ %58, %60 ] - %66 = phi ptr [ %.pre.i17, %64 ], [ %55, %60 ] + %65 = phi i32 [ %.pre2.i19, %62 ], [ %58, %58 ] + %66 = phi ptr [ %.pre.i17, %62 ], [ %55, %58 ] %67 = zext i32 %65 to i64 %68 = getelementptr inbounds nuw i8, ptr %66, i64 %67 store i8 0, ptr %68, align 1, !tbaa !24 @@ -1012,7 +1010,7 @@ _ZN6vectorIcLb0EjE9push_backEOc.exit20: ; preds = %60, %64 br label %_ZNK6vectorIcLb0EjE5emptyEv.exit.thread _ZNK6vectorIcLb0EjE5emptyEv.exit.thread: ; preds = %51, %._crit_edge, %_ZNK6vectorIcLb0EjE5emptyEv.exit, %_ZN6vectorIcLb0EjE9push_backEOc.exit20 - %.2 = phi i32 [ 4, %_ZN6vectorIcLb0EjE9push_backEOc.exit20 ], [ 9, %_ZNK6vectorIcLb0EjE5emptyEv.exit ], [ 9, %._crit_edge ], [ 4, %51 ] + %.2 = phi i32 [ 4, %_ZN6vectorIcLb0EjE9push_backEOc.exit20 ], [ 9, %_ZNK6vectorIcLb0EjE5emptyEv.exit ], [ 9, %._crit_edge ], [ 4, %49 ] ret i32 %.2 } diff --git a/bench/zed-rs/optimized/0b032pjjfhzfqpvy5k7rem7aa.ll b/bench/zed-rs/optimized/0b032pjjfhzfqpvy5k7rem7aa.ll index cf24d6853aa..52da8a7d7aa 100644 --- a/bench/zed-rs/optimized/0b032pjjfhzfqpvy5k7rem7aa.ll +++ b/bench/zed-rs/optimized/0b032pjjfhzfqpvy5k7rem7aa.ll @@ -3154,28 +3154,24 @@ define hidden void @"_ZN104_$LT$core..str..pattern..MultiCharEqSearcher$LT$C$GT$ %54 = ptrtoint ptr %50 to i64 %55 = sub i64 %53, %8 %56 = add i64 %55, %54 - switch i32 %.sroa.4.1.i.ph.i, label %"_ZN102_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hd0fd904a5c80f564E.exit.thread.sink.split" [ - i32 9, label %57 - i32 10, label %57 - i32 12, label %57 - i32 13, label %57 - i32 32, label %57 + %57 = add i64 %55, %7 + %58 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %56, ptr %58, align 8 + %59 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store i64 %57, ptr %59, align 8 + switch i32 %.sroa.4.1.i.ph.i, label %"_ZN102_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hd0fd904a5c80f564E.exit.thread" [ + i32 9, label %60 + i32 10, label %60 + i32 12, label %60 + i32 13, label %60 + i32 32, label %60 ] 57: ; preds = %49, %49, %49, %49, %49 - br label %"_ZN102_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hd0fd904a5c80f564E.exit.thread.sink.split" - -"_ZN102_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hd0fd904a5c80f564E.exit.thread.sink.split": ; preds = %49, %57 - %storemerge2.ph = phi i64 [ 0, %57 ], [ 1, %49 ] - %58 = add i64 %55, %7 - %59 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %56, ptr %59, align 8 - %60 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %58, ptr %60, align 8 br label %"_ZN102_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hd0fd904a5c80f564E.exit.thread" -"_ZN102_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hd0fd904a5c80f564E.exit.thread": ; preds = %"_ZN102_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hd0fd904a5c80f564E.exit.thread.sink.split", %2 - %storemerge2 = phi i64 [ 2, %2 ], [ %storemerge2.ph, %"_ZN102_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hd0fd904a5c80f564E.exit.thread.sink.split" ] +"_ZN102_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hd0fd904a5c80f564E.exit.thread": ; preds = %49, %2, %60 + %storemerge2 = phi i64 [ 0, %60 ], [ 2, %2 ], [ 1, %49 ] store i64 %storemerge2, ptr %0, align 8 ret void } @@ -4471,7 +4467,7 @@ define hidden void @"_ZN106_$LT$core..str..pattern..CharPredicateSearcher$LT$F$G br i1 %6, label %_ZN4core3str7pattern15ReverseSearcher16next_reject_back17h4b9db3120f86e7bbE.llvm.8558902862996176100.exit, label %.lr.ph.i .lr.ph.i: ; preds = %2, %60 - %7 = phi ptr [ %47, %60 ], [ %.promoted.i, %2 ] + %7 = phi ptr [ %47, %"_ZN104_$LT$core..str..pattern..MultiCharEqSearcher$LT$C$GT$$u20$as$u20$core..str..pattern..ReverseSearcher$GT$9next_back17h36cc671f04de51b2E.llvm.8558902862996176100.exit.i" ], [ %.promoted.i, %2 ] tail call void @llvm.experimental.noalias.scope.decl(metadata !1571) tail call void @llvm.experimental.noalias.scope.decl(metadata !1572) tail call void @llvm.experimental.noalias.scope.decl(metadata !1575) @@ -4555,13 +4551,13 @@ define hidden void @"_ZN106_$LT$core..str..pattern..CharPredicateSearcher$LT$F$G %52 = getelementptr inbounds nuw i8, ptr %1, i64 32 %53 = load i64, ptr %52, align 8, !alias.scope !1580, !noalias !1568, !noundef !7 %54 = sub i64 %53, %51 - %55 = ptrtoint ptr %47 to i64 - %56 = add i64 %54, %55 - %57 = add i64 %54, %50 + %55 = add i64 %54, %50 + %56 = ptrtoint ptr %47 to i64 + %57 = add i64 %54, %56 %58 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %56, ptr %58, align 8, !alias.scope !1558, !noalias !1561 + store i64 %57, ptr %58, align 8, !alias.scope !1558, !noalias !1561 %59 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %57, ptr %59, align 8, !alias.scope !1558, !noalias !1561 + store i64 %55, ptr %59, align 8, !alias.scope !1558, !noalias !1561 br label %_ZN4core3str7pattern15ReverseSearcher16next_reject_back17h4b9db3120f86e7bbE.llvm.8558902862996176100.exit 60: ; preds = %46, %46, %46, %46, %46 @@ -4573,7 +4569,7 @@ define hidden void @"_ZN106_$LT$core..str..pattern..CharPredicateSearcher$LT$F$G br label %_ZN4core3str7pattern15ReverseSearcher16next_reject_back17h4b9db3120f86e7bbE.llvm.8558902862996176100.exit _ZN4core3str7pattern15ReverseSearcher16next_reject_back17h4b9db3120f86e7bbE.llvm.8558902862996176100.exit: ; preds = %2, %49, %"._ZN104_$LT$core..str..pattern..MultiCharEqSearcher$LT$C$GT$$u20$as$u20$core..str..pattern..ReverseSearcher$GT$9next_back17h36cc671f04de51b2E.llvm.8558902862996176100.exit.thread.loopexit_crit_edge.i" - %storemerge.i = phi i64 [ 1, %49 ], [ 0, %"._ZN104_$LT$core..str..pattern..MultiCharEqSearcher$LT$C$GT$$u20$as$u20$core..str..pattern..ReverseSearcher$GT$9next_back17h36cc671f04de51b2E.llvm.8558902862996176100.exit.thread.loopexit_crit_edge.i" ], [ 0, %2 ] + %storemerge.i = phi i64 [ 1, %49 ], [ 0, %"._ZN104_$LT$core..str..pattern..MultiCharEqSearcher$LT$C$GT$$u20$as$u20$core..str..pattern..ReverseSearcher$GT$9next_back17h36cc671f04de51b2E.llvm.8558902862996176100.exit.thread6.loopexit_crit_edge.i" ], [ 0, %2 ] store i64 %storemerge.i, ptr %0, align 8, !alias.scope !1558, !noalias !1561 ret void } @@ -6884,7 +6880,7 @@ define hidden { ptr, i64 } @"_ZN4core3str21_$LT$impl$u20$str$GT$16trim_end_match br label %.lr.ph.i.i .lr.ph.i.i: ; preds = %.lr.ph.i.i.preheader, %51 - %5 = phi ptr [ %45, %51 ], [ %4, %.lr.ph.i.i.preheader ] + %5 = phi ptr [ %45, %"_ZN104_$LT$core..str..pattern..MultiCharEqSearcher$LT$C$GT$$u20$as$u20$core..str..pattern..ReverseSearcher$GT$9next_back17h36cc671f04de51b2E.llvm.8558902862996176100.exit.i.i" ], [ %4, %.lr.ph.i.i.preheader ] %6 = getelementptr inbounds i8, ptr %5, i64 -1 %7 = load i8, ptr %6, align 1, !noalias !2194, !noundef !7 %8 = icmp sgt i8 %7, -1 @@ -6969,7 +6965,7 @@ define hidden { ptr, i64 } @"_ZN4core3str21_$LT$impl$u20$str$GT$16trim_end_match br i1 %52, label %"_ZN106_$LT$core..str..pattern..CharPredicateSearcher$LT$F$GT$$u20$as$u20$core..str..pattern..ReverseSearcher$GT$16next_reject_back17h7ef3d7e095f53714E.llvm.8558902862996176100.exit", label %.lr.ph.i.i "_ZN106_$LT$core..str..pattern..CharPredicateSearcher$LT$F$GT$$u20$as$u20$core..str..pattern..ReverseSearcher$GT$16next_reject_back17h7ef3d7e095f53714E.llvm.8558902862996176100.exit": ; preds = %51, %2, %47 - %storemerge.i.i = phi i64 [ 0, %2 ], [ %50, %47 ], [ 0, %51 ] + %storemerge.i.i = phi i64 [ 0, %2 ], [ %50, %47 ], [ 0, %"_ZN104_$LT$core..str..pattern..MultiCharEqSearcher$LT$C$GT$$u20$as$u20$core..str..pattern..ReverseSearcher$GT$9next_back17h36cc671f04de51b2E.llvm.8558902862996176100.exit.i.i" ] %53 = insertvalue { ptr, i64 } poison, ptr %0, 0 %54 = insertvalue { ptr, i64 } %53, i64 %storemerge.i.i, 1 ret { ptr, i64 } %54 @@ -7122,7 +7118,7 @@ define hidden void @_ZN4core3str7pattern15ReverseSearcher16next_reject_back17h4b br i1 %6, label %"_ZN104_$LT$core..str..pattern..MultiCharEqSearcher$LT$C$GT$$u20$as$u20$core..str..pattern..ReverseSearcher$GT$9next_back17h36cc671f04de51b2E.llvm.8558902862996176100.exit.thread", label %.lr.ph .lr.ph: ; preds = %2, %60 - %7 = phi ptr [ %47, %60 ], [ %.promoted, %2 ] + %7 = phi ptr [ %47, %"_ZN104_$LT$core..str..pattern..MultiCharEqSearcher$LT$C$GT$$u20$as$u20$core..str..pattern..ReverseSearcher$GT$9next_back17h36cc671f04de51b2E.llvm.8558902862996176100.exit" ], [ %.promoted, %2 ] tail call void @llvm.experimental.noalias.scope.decl(metadata !2259) tail call void @llvm.experimental.noalias.scope.decl(metadata !2260) tail call void @llvm.experimental.noalias.scope.decl(metadata !2263) @@ -7206,13 +7202,13 @@ define hidden void @_ZN4core3str7pattern15ReverseSearcher16next_reject_back17h4b %52 = getelementptr inbounds nuw i8, ptr %1, i64 32 %53 = load i64, ptr %52, align 8, !alias.scope !2268, !noalias !2257, !noundef !7 %54 = sub i64 %53, %51 - %55 = ptrtoint ptr %47 to i64 - %56 = add i64 %54, %55 - %57 = add i64 %54, %50 + %55 = add i64 %54, %50 + %56 = ptrtoint ptr %47 to i64 + %57 = add i64 %54, %56 %58 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %56, ptr %58, align 8 + store i64 %57, ptr %58, align 8 %59 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %57, ptr %59, align 8 + store i64 %55, ptr %59, align 8 br label %"_ZN104_$LT$core..str..pattern..MultiCharEqSearcher$LT$C$GT$$u20$as$u20$core..str..pattern..ReverseSearcher$GT$9next_back17h36cc671f04de51b2E.llvm.8558902862996176100.exit.thread" 60: ; preds = %46, %46, %46, %46, %46 @@ -7224,7 +7220,7 @@ define hidden void @_ZN4core3str7pattern15ReverseSearcher16next_reject_back17h4b br label %"_ZN104_$LT$core..str..pattern..MultiCharEqSearcher$LT$C$GT$$u20$as$u20$core..str..pattern..ReverseSearcher$GT$9next_back17h36cc671f04de51b2E.llvm.8558902862996176100.exit.thread" "_ZN104_$LT$core..str..pattern..MultiCharEqSearcher$LT$C$GT$$u20$as$u20$core..str..pattern..ReverseSearcher$GT$9next_back17h36cc671f04de51b2E.llvm.8558902862996176100.exit.thread": ; preds = %2, %"._ZN104_$LT$core..str..pattern..MultiCharEqSearcher$LT$C$GT$$u20$as$u20$core..str..pattern..ReverseSearcher$GT$9next_back17h36cc671f04de51b2E.llvm.8558902862996176100.exit.thread.loopexit_crit_edge", %49 - %storemerge = phi i64 [ 1, %49 ], [ 0, %"._ZN104_$LT$core..str..pattern..MultiCharEqSearcher$LT$C$GT$$u20$as$u20$core..str..pattern..ReverseSearcher$GT$9next_back17h36cc671f04de51b2E.llvm.8558902862996176100.exit.thread.loopexit_crit_edge" ], [ 0, %2 ] + %storemerge = phi i64 [ 1, %49 ], [ 0, %"._ZN104_$LT$core..str..pattern..MultiCharEqSearcher$LT$C$GT$$u20$as$u20$core..str..pattern..ReverseSearcher$GT$9next_back17h36cc671f04de51b2E.llvm.8558902862996176100.exit.thread6.loopexit_crit_edge" ], [ 0, %2 ] store i64 %storemerge, ptr %0, align 8 ret void } diff --git a/bench/zed-rs/optimized/9r3tgj00e2sbbyanbvf1oqgns.ll b/bench/zed-rs/optimized/9r3tgj00e2sbbyanbvf1oqgns.ll index c6b1170f710..08f808a03e8 100644 --- a/bench/zed-rs/optimized/9r3tgj00e2sbbyanbvf1oqgns.ll +++ b/bench/zed-rs/optimized/9r3tgj00e2sbbyanbvf1oqgns.ll @@ -79026,8 +79026,11 @@ define internal fastcc void @_ZN9workspace10pane_group6Member8new_axis17hd9ff556 %.sroa.421.i = alloca [31 x i8], align 1 %12 = alloca [8 x i8], align 8 %13 = alloca [24 x i8], align 8 - switch i8 %3, label %14 [ - i8 0, label %15 + %14 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %15 = tail call noalias noundef align 8 dereferenceable_or_null(96) ptr @__rust_alloc(i64 noundef range(i64 1, 0) 96, i64 noundef 8) #43 + %16 = icmp eq ptr %15, null + switch i8 %3, label %17 [ + i8 0, label %18 i8 1, label %86 i8 2, label %15 i8 3, label %86 @@ -79037,10 +79040,7 @@ define internal fastcc void @_ZN9workspace10pane_group6Member8new_axis17hd9ff556 unreachable 15: ; preds = %4, %4 - %16 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %17 = tail call noalias noundef align 8 dereferenceable_or_null(96) ptr @__rust_alloc(i64 noundef range(i64 1, 0) 96, i64 noundef 8) #43 - %18 = icmp eq ptr %17, null - br i1 %18, label %.invoke, label %19 + br i1 %16, label %.invoke, label %19 .invoke: ; preds = %86, %15 invoke void @_ZN5alloc5alloc18handle_alloc_error17h6d7f2bdbc63ffea9E(i64 noundef 8, i64 noundef 96) #48 @@ -79050,19 +79050,18 @@ define internal fastcc void @_ZN9workspace10pane_group6Member8new_axis17hd9ff556 unreachable 19: ; preds = %15, %86 - %.sink39 = phi ptr [ %88, %86 ], [ %17, %15 ] - %.sink38 = phi ptr [ %1, %86 ], [ %2, %15 ] - %.sink36 = phi ptr [ %2, %86 ], [ %1, %15 ] - %.sroa.46.0..sroa_idx = getelementptr inbounds nuw i8, ptr %.sink39, i64 8 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.46.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(32) %.sink38, i64 32, i1 false) - %.sroa.49.0..sroa_idx = getelementptr inbounds nuw i8, ptr %.sink39, i64 56 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.49.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(32) %.sink36, i64 32, i1 false) - store i64 -9223372036854775808, ptr %.sink39, align 8 - %20 = getelementptr inbounds nuw i8, ptr %.sink39, i64 48 + %.sink39 = phi ptr [ %1, %86 ], [ %2, %18 ] + %.sink38 = phi ptr [ %2, %86 ], [ %1, %18 ] + %.sroa.46.0..sroa_idx = getelementptr inbounds nuw i8, ptr %15, i64 8 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.46.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(32) %.sink39, i64 32, i1 false) + %.sroa.49.0..sroa_idx = getelementptr inbounds nuw i8, ptr %15, i64 56 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.49.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(32) %.sink38, i64 32, i1 false) + store i64 -9223372036854775808, ptr %15, align 8 + %20 = getelementptr inbounds nuw i8, ptr %15, i64 48 store i64 -9223372036854775808, ptr %20, align 8 store i64 2, ptr %13, align 8, !noalias !4 %21 = getelementptr inbounds nuw i8, ptr %13, i64 8 - store ptr %.sink39, ptr %21, align 8, !noalias !4 + store ptr %15, ptr %21, align 8, !noalias !4 %22 = getelementptr inbounds nuw i8, ptr %13, i64 16 store i64 2, ptr %22, align 8, !noalias !4 call void @llvm.lifetime.start.p0(ptr nonnull %12), !noalias !20506 @@ -79277,10 +79276,7 @@ define internal fastcc void @_ZN9workspace10pane_group6Member8new_axis17hd9ff556 unreachable 86: ; preds = %4, %4 - %87 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %88 = tail call noalias noundef align 8 dereferenceable_or_null(96) ptr @__rust_alloc(i64 noundef range(i64 1, 0) 96, i64 noundef 8) #43 - %89 = icmp eq ptr %88, null - br i1 %89, label %.invoke, label %19 + br i1 %16, label %.invoke, label %19 90: ; preds = %73 %switch = icmp samesign ugt i8 %3, 1 @@ -79302,7 +79298,7 @@ define internal fastcc void @_ZN9workspace10pane_group6Member8new_axis17hd9ff556 %93 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr66drop_in_place$LT$gpui..view..View$LT$workspace..pane..Pane$GT$$GT$17hf5ab9ebd8ceed6caE"(ptr noalias noundef nonnull align 8 dereferenceable(32) %2) #49 - to label %96 unwind label %94 + to label %93 unwind label %94 94: ; preds = %96, %92 %95 = landingpad { ptr, i32 } @@ -79311,7 +79307,7 @@ define internal fastcc void @_ZN9workspace10pane_group6Member8new_axis17hd9ff556 unreachable .critedge: ; preds = %.body.i, %96 - %eh.lpad-body26 = phi { ptr, i32 } [ %93, %96 ], [ %.pn.i, %.body.i ] + %eh.lpad-body26 = phi { ptr, i32 } [ %93, %93 ], [ %.pn.i, %.body.i ] resume { ptr, i32 } %eh.lpad-body26 96: ; preds = %92 diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c8d0fce0bf7..f8ba6e6500e 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/165700 export COMPTIME_MODE=0 export STAT_MODE=0 export STAT_NAME=""