diff --git a/bench/abc/optimized/absOldSim.c.ll b/bench/abc/optimized/absOldSim.c.ll index 046eedbe164..b5fd7860871 100644 --- a/bench/abc/optimized/absOldSim.c.ll +++ b/bench/abc/optimized/absOldSim.c.ll @@ -1193,11 +1193,7 @@ tailrecurse: ; preds = %Saig_ObjIsLi.exit, %16 = and i32 %15, 30 %17 = lshr i32 %14, %16 %18 = and i32 %17, 3 - %switch.selectcmp.i = icmp eq i32 %18, 1 - %switch.select.i = select i1 %switch.selectcmp.i, i32 3, i32 0 - %switch.selectcmp4.i = icmp eq i32 %18, 0 - %switch.select5.i = select i1 %switch.selectcmp4.i, i32 2, i32 %switch.select.i - %19 = xor i32 %switch.select5.i, %18 + %19 = tail call i32 @llvm.umax.i32(i32 %18, i32 2) %20 = shl nuw i32 %19, %16 %21 = xor i32 %20, %14 store i32 %21, ptr %13, align 4 @@ -1649,18 +1645,18 @@ define noalias noundef ptr @Saig_ManProcessCex(ptr noundef %0, i32 noundef %1, p %43 = load ptr, ptr %42, align 8 %44 = load i32, ptr %22, align 4 tail call void @Saig_ManExplorePaths_rec(ptr noundef nonnull %0, ptr noundef %43, i32 noundef %44, i32 noundef %44, ptr noundef %3) - %45 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #14 + %45 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #15 %46 = getelementptr inbounds i8, ptr %45, i64 4 store i32 0, ptr %46, align 4 store i32 1000, ptr %45, align 8 - %47 = tail call noalias dereferenceable_or_null(4000) ptr @malloc(i64 noundef 4000) #14 + %47 = tail call noalias dereferenceable_or_null(4000) ptr @malloc(i64 noundef 4000) #15 %48 = getelementptr inbounds i8, ptr %45, i64 8 store ptr %47, ptr %48, align 8 - %49 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #14 + %49 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #15 %50 = getelementptr inbounds i8, ptr %49, i64 4 store i32 0, ptr %50, align 4 store i32 1000, ptr %49, align 8 - %51 = tail call noalias dereferenceable_or_null(4000) ptr @malloc(i64 noundef 4000) #14 + %51 = tail call noalias dereferenceable_or_null(4000) ptr @malloc(i64 noundef 4000) #15 %52 = getelementptr inbounds i8, ptr %49, i64 8 store ptr %51, ptr %52, align 8 %53 = getelementptr i8, ptr %0, i64 108 @@ -1732,11 +1728,11 @@ define noalias noundef ptr @Saig_ManProcessCex(ptr noundef %0, i32 noundef %1, p br i1 %.not9.i.i, label %90, label %88 88: ; preds = %86 - %89 = tail call dereferenceable_or_null(64) ptr @realloc(ptr noundef nonnull %87, i64 noundef 64) #15 + %89 = tail call dereferenceable_or_null(64) ptr @realloc(ptr noundef nonnull %87, i64 noundef 64) #16 br label %Vec_IntGrow.exit.i 90: ; preds = %86 - %91 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #14 + %91 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #15 br label %Vec_IntGrow.exit.i Vec_IntGrow.exit.i: ; preds = %90, %88 @@ -1754,11 +1750,11 @@ Vec_IntGrow.exit.i: ; preds = %90, %88 br i1 %.not9.i9.i, label %100, label %98 98: ; preds = %93 - %99 = tail call ptr @realloc(ptr noundef nonnull %95, i64 noundef %97) #15 + %99 = tail call ptr @realloc(ptr noundef nonnull %95, i64 noundef %97) #16 br label %102 100: ; preds = %93 - %101 = tail call noalias ptr @malloc(i64 noundef %97) #14 + %101 = tail call noalias ptr @malloc(i64 noundef %97) #15 br label %102 102: ; preds = %100, %98 @@ -1787,11 +1783,11 @@ Vec_IntGrow.exit.i: ; preds = %90, %88 br i1 %.not9.i.i75, label %113, label %111 111: ; preds = %109 - %112 = tail call dereferenceable_or_null(64) ptr @realloc(ptr noundef nonnull %110, i64 noundef 64) #15 + %112 = tail call dereferenceable_or_null(64) ptr @realloc(ptr noundef nonnull %110, i64 noundef 64) #16 br label %Vec_IntGrow.exit.i76 113: ; preds = %109 - %114 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #14 + %114 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #15 br label %Vec_IntGrow.exit.i76 Vec_IntGrow.exit.i76: ; preds = %113, %111 @@ -1809,11 +1805,11 @@ Vec_IntGrow.exit.i76: ; preds = %113, %111 br i1 %.not9.i9.i74, label %123, label %121 121: ; preds = %116 - %122 = tail call ptr @realloc(ptr noundef nonnull %118, i64 noundef %120) #15 + %122 = tail call ptr @realloc(ptr noundef nonnull %118, i64 noundef %120) #16 br label %125 123: ; preds = %116 - %124 = tail call noalias ptr @malloc(i64 noundef %120) #14 + %124 = tail call noalias ptr @malloc(i64 noundef %120) #15 br label %125 125: ; preds = %123, %121 @@ -1845,11 +1841,11 @@ Vec_IntPush.exit: ; preds = %125, %Vec_IntGrow.e br i1 %.not.i, label %Vec_IntFree.exit, label %135 135: ; preds = %._crit_edge - tail call void @free(ptr noundef nonnull %134) #16 + tail call void @free(ptr noundef nonnull %134) #17 br label %Vec_IntFree.exit Vec_IntFree.exit: ; preds = %._crit_edge, %135 - tail call void @free(ptr noundef nonnull %49) #16 + tail call void @free(ptr noundef nonnull %49) #17 ret ptr %45 } @@ -1871,7 +1867,7 @@ define noalias noundef ptr @Saig_ManExtendCounterExampleTest2(ptr noundef %0, i3 br label %71 13: ; preds = %4 - tail call void @Aig_ManFanoutStart(ptr noundef nonnull %0) #16 + tail call void @Aig_ManFanoutStart(ptr noundef nonnull %0) #17 %14 = getelementptr i8, ptr %0, i64 32 %.val26 = load ptr, ptr %14, align 8 %15 = getelementptr i8, ptr %.val26, i64 4 @@ -1890,7 +1886,7 @@ define noalias noundef ptr @Saig_ManExtendCounterExampleTest2(ptr noundef %0, i3 %27 = add nsw i64 %26, 8 %28 = sext i32 %.val26.val to i64 %29 = mul nsw i64 %27, %28 - %30 = tail call noalias ptr @malloc(i64 noundef %29) #14 + %30 = tail call noalias ptr @malloc(i64 noundef %29) #15 %31 = getelementptr inbounds ptr, ptr %30, i64 %28 %32 = icmp sgt i32 %.val26.val, 0 br i1 %32, label %.lr.ph.preheader.i, label %Vec_PtrAllocSimInfo.exit @@ -1910,7 +1906,7 @@ define noalias noundef ptr @Saig_ManExtendCounterExampleTest2(ptr noundef %0, i3 br i1 %exitcond.not.i, label %Vec_PtrAllocSimInfo.exit, label %.lr.ph.i, !llvm.loop !26 Vec_PtrAllocSimInfo.exit: ; preds = %.lr.ph.i, %13 - %36 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #14 + %36 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #15 %37 = getelementptr inbounds i8, ptr %36, i64 4 store i32 %.val26.val, ptr %37, align 4 store i32 %.val26.val, ptr %36, align 8 @@ -1934,7 +1930,7 @@ Vec_PtrAllocSimInfo.exit: ; preds = %.lr.ph.i, %13 Vec_PtrCleanSimInfo.exit: ; preds = %41, %Vec_PtrAllocSimInfo.exit call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) - %45 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %6) #16 + %45 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %6) #17 %46 = icmp slt i32 %45, 0 br i1 %46, label %Abc_Clock.exit, label %47 @@ -1962,7 +1958,7 @@ Abc_Clock.exit: ; preds = %Vec_PtrCleanSimInfo %55 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1, i32 noundef %53, i32 noundef %.val24) call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) - %56 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %5) #16 + %56 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %5) #17 %57 = icmp slt i32 %56, 0 br i1 %57, label %Abc_Clock.exit31, label %58 @@ -1990,12 +1986,12 @@ Abc_Clock.exit31: ; preds = %52, %58 br i1 %.not.i, label %Vec_PtrFree.exit, label %70 70: ; preds = %68 - call void @free(ptr noundef nonnull %69) #16 + call void @free(ptr noundef nonnull %69) #17 br label %Vec_PtrFree.exit Vec_PtrFree.exit: ; preds = %68, %70 - call void @free(ptr noundef nonnull %36) #16 - call void @Aig_ManFanoutStop(ptr noundef %0) #16 + call void @free(ptr noundef nonnull %36) #17 + call void @Aig_ManFanoutStop(ptr noundef %0) #17 br label %71 71: ; preds = %Vec_PtrFree.exit, %10 @@ -2016,23 +2012,23 @@ define internal void @Abc_Print(i32 %0, ptr noundef %1, ...) unnamed_addr #3 { br i1 %.not, label %17, label %5 5: ; preds = %2 - %6 = tail call i32 (...) @Abc_FrameIsBridgeMode() #16 + %6 = tail call i32 (...) @Abc_FrameIsBridgeMode() #17 call void @llvm.va_start.p0(ptr nonnull %3) - %7 = call i32 (...) @Abc_FrameIsBridgeMode() #16 + %7 = call i32 (...) @Abc_FrameIsBridgeMode() #17 %.not9 = icmp eq i32 %7, 0 br i1 %.not9, label %14, label %8 8: ; preds = %5 - %9 = call ptr @vnsprintf(ptr noundef %1, ptr noundef nonnull %3) #16 + %9 = call ptr @vnsprintf(ptr noundef %1, ptr noundef nonnull %3) #17 %10 = load ptr, ptr @stdout, align 8 - %11 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %9) #17 + %11 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %9) #18 %12 = trunc i64 %11 to i32 - %13 = call i32 @Gia_ManToBridgeText(ptr noundef %10, i32 noundef %12, ptr noundef %9) #16 - call void @free(ptr noundef %9) #16 + %13 = call i32 @Gia_ManToBridgeText(ptr noundef %10, i32 noundef %12, ptr noundef %9) #17 + call void @free(ptr noundef %9) #17 br label %16 14: ; preds = %5 - %15 = call i32 @vprintf(ptr noundef %1, ptr noundef nonnull %3) #16 + %15 = call i32 @vprintf(ptr noundef %1, ptr noundef nonnull %3) #17 br label %16 16: ; preds = %14, %8 @@ -2078,11 +2074,14 @@ declare void @llvm.va_start.p0(ptr) #12 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn declare void @llvm.va_end.p0(ptr) #12 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.umax.i32(i32, i32) #13 + ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #13 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #14 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #13 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #14 attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } @@ -2097,11 +2096,12 @@ attributes #9 = { mustprogress nocallback nofree nounwind willreturn memory(argm attributes #10 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #11 = { mustprogress nofree nounwind willreturn memory(argmem: read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #12 = { mustprogress nocallback nofree nosync nounwind willreturn } -attributes #13 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #14 = { nounwind allocsize(0) } -attributes #15 = { nounwind allocsize(1) } -attributes #16 = { nounwind } -attributes #17 = { nounwind willreturn memory(read) } +attributes #13 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #14 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #15 = { nounwind allocsize(0) } +attributes #16 = { nounwind allocsize(1) } +attributes #17 = { nounwind } +attributes #18 = { nounwind willreturn memory(read) } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/cmake/optimized/json_reader.cpp.ll b/bench/cmake/optimized/json_reader.cpp.ll index cfc372c5a22..e7907c94059 100644 --- a/bench/cmake/optimized/json_reader.cpp.ll +++ b/bench/cmake/optimized/json_reader.cpp.ll @@ -4221,100 +4221,103 @@ define dso_local noundef zeroext i1 @_ZN4Json6Reader12decodeNumberERNS0_5TokenER %spec.select = select i1 %11, i64 -9223372036854775808, i64 -1 %spec.select47.idx = zext i1 %11 to i64 %spec.select47 = getelementptr inbounds i8, ptr %9, i64 %spec.select47.idx - %12 = udiv i64 %spec.select, 10 - %13 = urem i64 %spec.select, 10 - %14 = getelementptr inbounds i8, ptr %1, i64 16 - %15 = load ptr, ptr %14, align 8 - %16 = icmp ult ptr %spec.select47, %15 - br i1 %16, label %.lr.ph, label %.thread - -.lr.ph: ; preds = %3, %31 - %.158 = phi ptr [ %17, %31 ], [ %spec.select47, %3 ] - %.04257 = phi i64 [ %33, %31 ], [ 0, %3 ] - %17 = getelementptr inbounds i8, ptr %.158, i64 1 - %18 = load i8, ptr %.158, align 1 - %19 = add i8 %18, -58 - %or.cond = icmp ult i8 %19, -10 - br i1 %or.cond, label %20, label %22 - -20: ; preds = %.lr.ph - %21 = tail call noundef zeroext i1 @_ZN4Json6Reader12decodeDoubleERNS0_5TokenERNS_5ValueE(ptr noundef nonnull align 8 dereferenceable(269) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(40) %2) - br label %47 - -22: ; preds = %.lr.ph - %23 = zext nneg i8 %18 to i32 - %24 = add nsw i32 %23, -48 + %12 = select i1 %11, i64 922337203685477580, i64 1844674407370955161 + %13 = getelementptr inbounds i8, ptr %1, i64 16 + %14 = load ptr, ptr %13, align 8 + %15 = icmp ult ptr %spec.select47, %14 + br i1 %15, label %.lr.ph, label %.thread + +.lr.ph: ; preds = %3 + %16 = select i1 %11, i64 8, i64 5 + br label %17 + +17: ; preds = %.lr.ph, %32 + %.158 = phi ptr [ %spec.select47, %.lr.ph ], [ %18, %32 ] + %.04257 = phi i64 [ 0, %.lr.ph ], [ %34, %32 ] + %18 = getelementptr inbounds i8, ptr %.158, i64 1 + %19 = load i8, ptr %.158, align 1 + %20 = add i8 %19, -58 + %or.cond = icmp ult i8 %20, -10 + br i1 %or.cond, label %21, label %23 + +21: ; preds = %17 + %22 = tail call noundef zeroext i1 @_ZN4Json6Reader12decodeDoubleERNS0_5TokenERNS_5ValueE(ptr noundef nonnull align 8 dereferenceable(269) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(40) %2) + br label %48 + +23: ; preds = %17 + %24 = zext nneg i8 %19 to i32 + %25 = add nsw i32 %24, -48 %.not = icmp ult i64 %.04257, %12 - br i1 %.not, label %._crit_edge59, label %25 + br i1 %.not, label %._crit_edge59, label %26 -._crit_edge59: ; preds = %22 - %.pre = zext nneg i32 %24 to i64 - br label %31 +._crit_edge59: ; preds = %23 + %.pre = zext nneg i32 %25 to i64 + br label %32 -25: ; preds = %22 - %26 = icmp ugt i64 %.04257, %12 - %.not46 = icmp ne ptr %17, %15 - %or.cond48.not54 = select i1 %26, i1 true, i1 %.not46 - %27 = zext nneg i32 %24 to i64 - %28 = icmp ult i64 %13, %27 - %or.cond51 = select i1 %or.cond48.not54, i1 true, i1 %28 - br i1 %or.cond51, label %29, label %31 +26: ; preds = %23 + %27 = icmp ugt i64 %.04257, %12 + %.not46 = icmp ne ptr %18, %14 + %or.cond48.not54 = select i1 %27, i1 true, i1 %.not46 + %28 = zext nneg i32 %25 to i64 + %29 = icmp ult i64 %16, %28 + %or.cond51 = select i1 %or.cond48.not54, i1 true, i1 %29 + br i1 %or.cond51, label %30, label %32 -29: ; preds = %25 - %30 = tail call noundef zeroext i1 @_ZN4Json6Reader12decodeDoubleERNS0_5TokenERNS_5ValueE(ptr noundef nonnull align 8 dereferenceable(269) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(40) %2) - br label %47 - -31: ; preds = %._crit_edge59, %25 - %.pre-phi = phi i64 [ %.pre, %._crit_edge59 ], [ %27, %25 ] - %32 = mul i64 %.04257, 10 - %33 = add i64 %32, %.pre-phi - %34 = icmp ult ptr %17, %15 - br i1 %34, label %.lr.ph, label %._crit_edge, !llvm.loop !123 - -._crit_edge: ; preds = %31 - %35 = icmp eq i64 %33, %spec.select - %or.cond52 = select i1 %11, i1 %35, i1 false - br i1 %or.cond52, label %36, label %38 - -36: ; preds = %._crit_edge +30: ; preds = %26 + %31 = tail call noundef zeroext i1 @_ZN4Json6Reader12decodeDoubleERNS0_5TokenERNS_5ValueE(ptr noundef nonnull align 8 dereferenceable(269) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(40) %2) + br label %48 + +32: ; preds = %._crit_edge59, %26 + %.pre-phi = phi i64 [ %.pre, %._crit_edge59 ], [ %28, %26 ] + %33 = mul i64 %.04257, 10 + %34 = add i64 %33, %.pre-phi + %35 = icmp ult ptr %18, %14 + br i1 %35, label %17, label %._crit_edge, !llvm.loop !123 + +._crit_edge: ; preds = %32 + %36 = icmp eq i64 %34, %spec.select + %or.cond52 = select i1 %11, i1 %36, i1 false + br i1 %or.cond52, label %37, label %39 + +37: ; preds = %._crit_edge call void @_ZN4Json5ValueC1El(ptr noundef nonnull align 8 dereferenceable(40) %4, i64 noundef -9223372036854775808) - %37 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN4Json5ValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull align 8 dereferenceable(40) %4) #24 + %38 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN4Json5ValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull align 8 dereferenceable(40) %4) #24 call void @_ZN4Json5ValueD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %4) #24 - br label %47 + br label %48 -38: ; preds = %._crit_edge - br i1 %11, label %39, label %42 +39: ; preds = %._crit_edge + br i1 %11, label %40, label %43 .thread: ; preds = %3 - br i1 %11, label %39, label %.thread66 + br i1 %11, label %40, label %.thread66 -39: ; preds = %.thread, %38 - %.042.lcssa6265 = phi i64 [ 0, %.thread ], [ %33, %38 ] - %40 = sub nsw i64 0, %.042.lcssa6265 - call void @_ZN4Json5ValueC1El(ptr noundef nonnull align 8 dereferenceable(40) %5, i64 noundef %40) - %41 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN4Json5ValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull align 8 dereferenceable(40) %5) #24 +40: ; preds = %.thread, %39 + %.042.lcssa6265 = phi i64 [ 0, %.thread ], [ %34, %39 ] + %41 = sub nsw i64 0, %.042.lcssa6265 + call void @_ZN4Json5ValueC1El(ptr noundef nonnull align 8 dereferenceable(40) %5, i64 noundef %41) + %42 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN4Json5ValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull align 8 dereferenceable(40) %5) #24 call void @_ZN4Json5ValueD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %5) #24 - br label %47 + br label %48 -42: ; preds = %38 - %43 = icmp ult i64 %33, 2147483648 - br i1 %43, label %.thread66, label %45 +43: ; preds = %39 + %44 = icmp ult i64 %34, 2147483648 + br i1 %44, label %.thread66, label %46 -.thread66: ; preds = %.thread, %42 - %.042.lcssa626468 = phi i64 [ %33, %42 ], [ 0, %.thread ] +.thread66: ; preds = %.thread, %43 + %.042.lcssa626468 = phi i64 [ %34, %43 ], [ 0, %.thread ] call void @_ZN4Json5ValueC1El(ptr noundef nonnull align 8 dereferenceable(40) %6, i64 noundef %.042.lcssa626468) - %44 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN4Json5ValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull align 8 dereferenceable(40) %6) #24 + %45 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN4Json5ValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull align 8 dereferenceable(40) %6) #24 call void @_ZN4Json5ValueD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %6) #24 - br label %47 + br label %48 -45: ; preds = %42 - call void @_ZN4Json5ValueC1Em(ptr noundef nonnull align 8 dereferenceable(40) %7, i64 noundef %33) - %46 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN4Json5ValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull align 8 dereferenceable(40) %7) #24 +46: ; preds = %43 + call void @_ZN4Json5ValueC1Em(ptr noundef nonnull align 8 dereferenceable(40) %7, i64 noundef %34) + %47 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN4Json5ValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull align 8 dereferenceable(40) %7) #24 call void @_ZN4Json5ValueD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %7) #24 - br label %47 + br label %48 -47: ; preds = %36, %.thread66, %45, %39, %29, %20 - %.0 = phi i1 [ %21, %20 ], [ %30, %29 ], [ true, %39 ], [ true, %45 ], [ true, %.thread66 ], [ true, %36 ] +48: ; preds = %37, %.thread66, %46, %40, %30, %21 + %.0 = phi i1 [ %22, %21 ], [ %31, %30 ], [ true, %40 ], [ true, %46 ], [ true, %.thread66 ], [ true, %37 ] ret i1 %.0 } diff --git a/bench/fmt/optimized/enforce-checks-test.cc.ll b/bench/fmt/optimized/enforce-checks-test.cc.ll index 6b4881081ac..ef141fd6f6f 100644 --- a/bench/fmt/optimized/enforce-checks-test.cc.ll +++ b/bench/fmt/optimized/enforce-checks-test.cc.ll @@ -5498,14 +5498,14 @@ land.lhs.true: ; preds = %invoke.cont53 if.then63: ; preds = %land.lhs.true %cmp.not.i104 = icmp eq i32 %prefix, 0 - %cond.i105 = select i1 %cmp.not.i104, i32 48, i32 12288 - %or.i106 = or i32 %cond.i105, %prefix - %add4.i107 = add i32 %or.i106, 16777216 + %40 = or i32 %prefix, 12288 + %41 = add i32 %40, 16777216 + %add4.i107 = select i1 %cmp.not.i104, i32 16777264, i32 %41 store i32 %add4.i107, ptr %prefix.addr, align 4 br label %invoke.cont67 invoke.cont67: ; preds = %invoke.cont53, %land.lhs.true, %if.then63 - %40 = phi i32 [ %prefix, %invoke.cont53 ], [ %prefix, %land.lhs.true ], [ %add4.i107, %if.then63 ] + %42 = phi i32 [ %prefix, %invoke.cont53 ], [ %prefix, %land.lhs.true ], [ %add4.i107, %if.then63 ] call void @llvm.lifetime.start.p0(i64 22, ptr nonnull %buffer.i108) call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(22) %buffer.i108, i8 0, i64 22, i1 false) %idx.ext.i7.i109 = zext nneg i32 %inc.i.i101 to i64 @@ -5515,8 +5515,8 @@ invoke.cont67: ; preds = %invoke.cont53, %lan do.body.i9.i111: ; preds = %do.body.i9.i111, %invoke.cont67 %value.addr.0.i10.i112 = phi i64 [ %value, %invoke.cont67 ], [ %shr.i15.i117, %do.body.i9.i111 ] %buffer.addr.0.i11.i113 = phi ptr [ %add.ptr.i8.i110, %invoke.cont67 ], [ %incdec.ptr.i14.i116, %do.body.i9.i111 ] - %41 = trunc i64 %value.addr.0.i10.i112 to i8 - %conv.i12.i114 = and i8 %41, 7 + %43 = trunc i64 %value.addr.0.i10.i112 to i8 + %conv.i12.i114 = and i8 %43, 7 %add.i13.i115 = or disjoint i8 %conv.i12.i114, 48 %incdec.ptr.i14.i116 = getelementptr inbounds i8, ptr %buffer.addr.0.i11.i113, i64 -1 store i8 %add.i13.i115, ptr %incdec.ptr.i14.i116, align 1 @@ -5531,19 +5531,19 @@ _ZN3fmt3v106detail11format_uintILj3EcmEEPT0_S4_T1_ib.exit.i: ; preds = %do.body. br label %while.body.i.i.i.i126 while.body.i.i.i.i126: ; preds = %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i139, %_ZN3fmt3v106detail11format_uintILj3EcmEEPT0_S4_T1_ib.exit.i - %42 = phi i64 [ %.pre.i.i.i.i125, %_ZN3fmt3v106detail11format_uintILj3EcmEEPT0_S4_T1_ib.exit.i ], [ %add7.i.i.i.i140, %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i139 ] + %44 = phi i64 [ %.pre.i.i.i.i125, %_ZN3fmt3v106detail11format_uintILj3EcmEEPT0_S4_T1_ib.exit.i ], [ %add7.i.i.i.i140, %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i139 ] %begin.addr.011.i.i.i.i127 = phi ptr [ %buffer.i108, %_ZN3fmt3v106detail11format_uintILj3EcmEEPT0_S4_T1_ib.exit.i ], [ %add.ptr8.i.i.i.i141, %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i139 ] %sub.ptr.rhs.cast.i.i.i.i128 = ptrtoint ptr %begin.addr.011.i.i.i.i127 to i64 %sub.ptr.sub.i.i.i.i129 = sub i64 %sub.ptr.lhs.cast.i.i.i.i121, %sub.ptr.rhs.cast.i.i.i.i128 - %add.i.i.i.i130 = add i64 %sub.ptr.sub.i.i.i.i129, %42 - %43 = load i64, ptr %capacity_.i.i, align 8 - %cmp.i.i.i.i.i131 = icmp ult i64 %43, %add.i.i.i.i130 + %add.i.i.i.i130 = add i64 %sub.ptr.sub.i.i.i.i129, %44 + %45 = load i64, ptr %capacity_.i.i, align 8 + %cmp.i.i.i.i.i131 = icmp ult i64 %45, %add.i.i.i.i130 br i1 %cmp.i.i.i.i.i131, label %if.then.i.i.i.i.i143, label %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i132 if.then.i.i.i.i.i143: ; preds = %while.body.i.i.i.i126 %vtable.i.i.i.i.i144 = load ptr, ptr %buffer, align 8 - %44 = load ptr, ptr %vtable.i.i.i.i.i144, align 8 - invoke void %44(ptr noundef nonnull align 8 dereferenceable(32) %buffer, i64 noundef %add.i.i.i.i130) + %46 = load ptr, ptr %vtable.i.i.i.i.i144, align 8 + invoke void %46(ptr noundef nonnull align 8 dereferenceable(32) %buffer, i64 noundef %add.i.i.i.i130) to label %.noexc147 unwind label %lpad1.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit .noexc147: ; preds = %if.then.i.i.i.i.i143 @@ -5552,23 +5552,23 @@ if.then.i.i.i.i.i143: ; preds = %while.body.i.i.i.i1 br label %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i132 _ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i132: ; preds = %.noexc147, %while.body.i.i.i.i126 - %45 = phi i64 [ %42, %while.body.i.i.i.i126 ], [ %.pre13.i.i.i.i146, %.noexc147 ] - %46 = phi i64 [ %43, %while.body.i.i.i.i126 ], [ %.pre12.i.i.i.i145, %.noexc147 ] - %sub.i.i.i.i133 = sub i64 %46, %45 + %47 = phi i64 [ %44, %while.body.i.i.i.i126 ], [ %.pre13.i.i.i.i146, %.noexc147 ] + %48 = phi i64 [ %45, %while.body.i.i.i.i126 ], [ %.pre12.i.i.i.i145, %.noexc147 ] + %sub.i.i.i.i133 = sub i64 %48, %47 %spec.select.i.i.i.i134 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i133, i64 %sub.ptr.sub.i.i.i.i129) %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i135 = icmp eq i64 %spec.select.i.i.i.i134, 0 br i1 %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i135, label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i139, label %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i136 if.then.i.i.i.i.i.i.i.i.i.i.i.i.i136: ; preds = %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i132 - %47 = load ptr, ptr %ptr_.i.i, align 8 - %add.ptr.i.i.i.i137 = getelementptr inbounds i8, ptr %47, i64 %45 + %49 = load ptr, ptr %ptr_.i.i, align 8 + %add.ptr.i.i.i.i137 = getelementptr inbounds i8, ptr %49, i64 %47 call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr.i.i.i.i137, ptr align 1 %begin.addr.011.i.i.i.i127, i64 %spec.select.i.i.i.i134, i1 false) %.pre14.i.i.i.i138 = load i64, ptr %size_.i.i.i.i122, align 8 br label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i139 _ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i139: ; preds = %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i136, %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i132 - %48 = phi i64 [ %45, %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i132 ], [ %.pre14.i.i.i.i138, %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i136 ] - %add7.i.i.i.i140 = add i64 %48, %spec.select.i.i.i.i134 + %50 = phi i64 [ %47, %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i132 ], [ %.pre14.i.i.i.i138, %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i136 ] + %add7.i.i.i.i140 = add i64 %50, %spec.select.i.i.i.i134 store i64 %add7.i.i.i.i140, ptr %size_.i.i.i.i122, align 8 %add.ptr8.i.i.i.i141 = getelementptr inbounds i8, ptr %begin.addr.011.i.i.i.i127, i64 %spec.select.i.i.i.i134 %cmp.not.i.i.i.i142 = icmp eq ptr %add.ptr8.i.i.i.i141, %add.ptr.i8.i110 @@ -5582,8 +5582,8 @@ sw.bb75: ; preds = %entry %conv77 = trunc i64 %value to i32 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %ref.tmp.i) store i8 0, ptr %ref.tmp.i, align 4 - %49 = getelementptr inbounds i8, ptr %ref.tmp.i, i64 4 - store i32 %conv77, ptr %49, align 4 + %51 = getelementptr inbounds i8, ptr %ref.tmp.i, i64 4 + store i32 %conv77, ptr %51, align 4 %call.i.i148 = invoke ptr @_ZN3fmt3v106detail12write_paddedILNS0_5align4typeE1ESt20back_insert_iteratorINS1_6bufferIwEEEwRZNS1_10write_charIwS8_EET0_SA_T_RKNS0_12format_specsISB_EEEUlS8_E_EESA_SA_RKNSC_IT1_EEmmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(32) %specs, i64 noundef 1, i64 noundef 1, ptr noundef nonnull align 4 dereferenceable(8) %ref.tmp.i) to label %_ZN3fmt3v106detail10write_charIwSt20back_insert_iteratorINS1_6bufferIwEEEEET0_S7_T_RKNS0_12format_specsIS8_EE.exit unwind label %lpad1.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp @@ -5599,7 +5599,7 @@ invoke.cont82: ; preds = %sw.default unreachable sw.epilog: ; preds = %_ZN3fmt3v106detail11format_uintILj3EwNS0_8appenderEmEET1_S4_T2_ib.exit, %_ZN3fmt3v106detail11format_uintILj1EwNS0_8appenderEmEET1_S4_T2_ib.exit, %_ZN3fmt3v106detail11format_uintILj4EwNS0_8appenderEmEET1_S4_T2_ib.exit, %_ZN3fmt3v106detail14format_decimalIwmNS0_8appenderETnNSt9enable_ifIXntsr3std10is_pointerINSt9remove_cvINSt16remove_referenceIT1_E4typeEE4typeEEE5valueEiE4typeELi0EEENS1_21format_decimal_resultIS7_EES7_T0_i.exit - %50 = phi i32 [ %.pre, %_ZN3fmt3v106detail14format_decimalIwmNS0_8appenderETnNSt9enable_ifIXntsr3std10is_pointerINSt9remove_cvINSt16remove_referenceIT1_E4typeEE4typeEEE5valueEiE4typeELi0EEENS1_21format_decimal_resultIS7_EES7_T0_i.exit ], [ %19, %_ZN3fmt3v106detail11format_uintILj4EwNS0_8appenderEmEET1_S4_T2_ib.exit ], [ %29, %_ZN3fmt3v106detail11format_uintILj1EwNS0_8appenderEmEET1_S4_T2_ib.exit ], [ %40, %_ZN3fmt3v106detail11format_uintILj3EwNS0_8appenderEmEET1_S4_T2_ib.exit ] + %52 = phi i32 [ %.pre, %_ZN3fmt3v106detail14format_decimalIwmNS0_8appenderETnNSt9enable_ifIXntsr3std10is_pointerINSt9remove_cvINSt16remove_referenceIT1_E4typeEE4typeEEE5valueEiE4typeELi0EEENS1_21format_decimal_resultIS7_EES7_T0_i.exit ], [ %19, %_ZN3fmt3v106detail11format_uintILj4EwNS0_8appenderEmEET1_S4_T2_ib.exit ], [ %29, %_ZN3fmt3v106detail11format_uintILj1EwNS0_8appenderEmEET1_S4_T2_ib.exit ], [ %42, %_ZN3fmt3v106detail11format_uintILj3EwNS0_8appenderEmEET1_S4_T2_ib.exit ] %num_digits.0 = phi i32 [ %sub.i.i, %_ZN3fmt3v106detail14format_decimalIwmNS0_8appenderETnNSt9enable_ifIXntsr3std10is_pointerINSt9remove_cvINSt16remove_referenceIT1_E4typeEE4typeEEE5valueEiE4typeELi0EEENS1_21format_decimal_resultIS7_EES7_T0_i.exit ], [ %inc.i.i, %_ZN3fmt3v106detail11format_uintILj4EwNS0_8appenderEmEET1_S4_T2_ib.exit ], [ %inc.i.i63, %_ZN3fmt3v106detail11format_uintILj1EwNS0_8appenderEmEET1_S4_T2_ib.exit ], [ %inc.i.i101, %_ZN3fmt3v106detail11format_uintILj3EwNS0_8appenderEmEET1_S4_T2_ib.exit ] %call.i.i = call ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %grouping) #22 %thousands_sep_.i.i = getelementptr inbounds i8, ptr %grouping, i64 32 @@ -5620,9 +5620,9 @@ if.then5.i.i: ; preds = %if.end.i.i149 br label %_ZNK3fmt3v106detail14digit_groupingIwE4nextERNS3_10next_stateE.exit.i if.end8.i.i: ; preds = %if.end.i.i149 - %51 = load i8, ptr %state.sroa.0.09.i, align 1 - %52 = add i8 %51, -127 - %or.cond.i.i = icmp ult i8 %52, -126 + %53 = load i8, ptr %state.sroa.0.09.i, align 1 + %54 = add i8 %53, -127 + %or.cond.i.i = icmp ult i8 %54, -126 br i1 %or.cond.i.i, label %invoke.cont87, label %if.end20.i.i if.end20.i.i: ; preds = %if.end8.i.i @@ -5630,9 +5630,9 @@ if.end20.i.i: ; preds = %if.end8.i.i br label %_ZNK3fmt3v106detail14digit_groupingIwE4nextERNS3_10next_stateE.exit.i _ZNK3fmt3v106detail14digit_groupingIwE4nextERNS3_10next_stateE.exit.i: ; preds = %if.end20.i.i, %if.then5.i.i - %53 = phi i8 [ %.pre.i, %if.then5.i.i ], [ %51, %if.end20.i.i ] + %55 = phi i8 [ %.pre.i, %if.then5.i.i ], [ %53, %if.end20.i.i ] %state.sroa.0.1.i = phi ptr [ %state.sroa.0.09.i, %if.then5.i.i ], [ %incdec.ptr.i.i.i150, %if.end20.i.i ] - %conv26.i.i = sext i8 %53 to i32 + %conv26.i.i = sext i8 %55 to i32 %add28.i.i = add nsw i32 %state.sroa.3.08.i, %conv26.i.i %cmp.i151 = icmp slt i32 %add28.i.i, %num_digits.0 br i1 %cmp.i151, label %while.body.i, label %invoke.cont87 @@ -5644,26 +5644,26 @@ while.body.i: ; preds = %_ZNK3fmt3v106detail invoke.cont87: ; preds = %while.body.i, %_ZNK3fmt3v106detail14digit_groupingIwE4nextERNS3_10next_stateE.exit.i, %if.end8.i.i, %sw.epilog %count.0.lcssa.i = phi i32 [ 0, %sw.epilog ], [ %count.010.i, %_ZNK3fmt3v106detail14digit_groupingIwE4nextERNS3_10next_stateE.exit.i ], [ %inc.i, %while.body.i ], [ %count.010.i, %if.end8.i.i ] - %shr = lshr i32 %50, 24 + %shr = lshr i32 %52, 24 %add = add i32 %shr, %num_digits.0 %add91 = add i32 %add, %count.0.lcssa.i %conv93 = zext i32 %add91 to i64 store ptr %prefix.addr, ptr %ref.tmp95, align 8 - %54 = getelementptr inbounds i8, ptr %ref.tmp95, i64 8 - store ptr %grouping, ptr %54, align 8 - %55 = getelementptr inbounds i8, ptr %ref.tmp95, i64 16 - store ptr %buffer, ptr %55, align 8 + %56 = getelementptr inbounds i8, ptr %ref.tmp95, i64 8 + store ptr %grouping, ptr %56, align 8 + %57 = getelementptr inbounds i8, ptr %ref.tmp95, i64 16 + store ptr %buffer, ptr %57, align 8 %call98 = invoke ptr @_ZN3fmt3v106detail12write_paddedILNS0_5align4typeE2ESt20back_insert_iteratorINS1_6bufferIwEEEwZNS1_9write_intIS8_mwEET_SA_T0_jRKNS0_12format_specsIT1_EERKNS1_14digit_groupingISD_EEEUlS8_E_EESB_SB_SG_mmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(32) %specs, i64 noundef %conv93, i64 noundef %conv93, ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp95) to label %cleanup unwind label %lpad1.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp cleanup: ; preds = %_ZN3fmt3v106detail10write_charIwSt20back_insert_iteratorINS1_6bufferIwEEEEET0_S7_T_RKNS0_12format_specsIS8_EE.exit, %invoke.cont87 %retval.sroa.0.0 = phi ptr [ %call.i.i148, %_ZN3fmt3v106detail10write_charIwSt20back_insert_iteratorINS1_6bufferIwEEEEET0_S7_T_RKNS0_12format_specsIS8_EE.exit ], [ %call98, %invoke.cont87 ] - %56 = load ptr, ptr %ptr_.i.i, align 8 - %cmp.not.i.i152 = icmp eq ptr %56, %store_.i + %58 = load ptr, ptr %ptr_.i.i, align 8 + %cmp.not.i.i152 = icmp eq ptr %58, %store_.i br i1 %cmp.not.i.i152, label %_ZN3fmt3v1019basic_memory_bufferIcLm500ESaIcEED2Ev.exit, label %if.then.i.i153 if.then.i.i153: ; preds = %cleanup - call void @_ZdlPv(ptr noundef %56) #24 + call void @_ZdlPv(ptr noundef %58) #24 br label %_ZN3fmt3v1019basic_memory_bufferIcLm500ESaIcEED2Ev.exit _ZN3fmt3v1019basic_memory_bufferIcLm500ESaIcEED2Ev.exit: ; preds = %cleanup, %if.then.i.i153 @@ -7690,14 +7690,14 @@ land.lhs.true: ; preds = %invoke.cont59 if.then69: ; preds = %land.lhs.true %cmp.not.i115 = icmp eq i32 %prefix, 0 - %cond.i116 = select i1 %cmp.not.i115, i32 48, i32 12288 - %or.i117 = or i32 %cond.i116, %prefix - %add4.i118 = add i32 %or.i117, 16777216 + %38 = or i32 %prefix, 12288 + %39 = add i32 %38, 16777216 + %add4.i118 = select i1 %cmp.not.i115, i32 16777264, i32 %39 store i32 %add4.i118, ptr %prefix.addr, align 4 br label %invoke.cont72 invoke.cont72: ; preds = %invoke.cont59, %land.lhs.true, %if.then69 - %38 = phi i32 [ %prefix, %invoke.cont59 ], [ %prefix, %land.lhs.true ], [ %add4.i118, %if.then69 ] + %40 = phi i32 [ %prefix, %invoke.cont59 ], [ %prefix, %land.lhs.true ], [ %add4.i118, %if.then69 ] call void @llvm.lifetime.start.p0(i64 43, ptr nonnull %buffer.i119) call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(43) %buffer.i119, i8 0, i64 43, i1 false) %idx.ext.i11.i124 = zext nneg i32 %inc.i.i112 to i64 @@ -7707,8 +7707,8 @@ invoke.cont72: ; preds = %invoke.cont59, %lan do.body.i13.i126: ; preds = %do.body.i13.i126, %invoke.cont72 %value.addr.0.i14.i127 = phi i128 [ %value.sroa.0.0.insert.insert, %invoke.cont72 ], [ %shr.i19.i132, %do.body.i13.i126 ] %buffer.addr.0.i15.i128 = phi ptr [ %add.ptr.i12.i125, %invoke.cont72 ], [ %incdec.ptr.i18.i131, %do.body.i13.i126 ] - %39 = trunc i128 %value.addr.0.i14.i127 to i8 - %conv.i16.i129 = and i8 %39, 7 + %41 = trunc i128 %value.addr.0.i14.i127 to i8 + %conv.i16.i129 = and i8 %41, 7 %add.i17.i130 = or disjoint i8 %conv.i16.i129, 48 %incdec.ptr.i18.i131 = getelementptr inbounds i8, ptr %buffer.addr.0.i15.i128, i64 -1 store i8 %add.i17.i130, ptr %incdec.ptr.i18.i131, align 1 @@ -7723,19 +7723,19 @@ _ZN3fmt3v106detail11format_uintILj3EcoEEPT0_S4_T1_ib.exit.i: ; preds = %do.body. br label %while.body.i.i.i.i139 while.body.i.i.i.i139: ; preds = %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i152, %_ZN3fmt3v106detail11format_uintILj3EcoEEPT0_S4_T1_ib.exit.i - %40 = phi i64 [ %.pre.i.i.i.i138, %_ZN3fmt3v106detail11format_uintILj3EcoEEPT0_S4_T1_ib.exit.i ], [ %add7.i.i.i.i153, %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i152 ] + %42 = phi i64 [ %.pre.i.i.i.i138, %_ZN3fmt3v106detail11format_uintILj3EcoEEPT0_S4_T1_ib.exit.i ], [ %add7.i.i.i.i153, %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i152 ] %begin.addr.011.i.i.i.i140 = phi ptr [ %buffer.i119, %_ZN3fmt3v106detail11format_uintILj3EcoEEPT0_S4_T1_ib.exit.i ], [ %add.ptr8.i.i.i.i154, %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i152 ] %sub.ptr.rhs.cast.i.i.i.i141 = ptrtoint ptr %begin.addr.011.i.i.i.i140 to i64 %sub.ptr.sub.i.i.i.i142 = sub i64 %sub.ptr.lhs.cast.i.i.i.i134, %sub.ptr.rhs.cast.i.i.i.i141 - %add.i.i.i.i143 = add i64 %sub.ptr.sub.i.i.i.i142, %40 - %41 = load i64, ptr %capacity_.i.i, align 8 - %cmp.i.i.i.i.i144 = icmp ult i64 %41, %add.i.i.i.i143 + %add.i.i.i.i143 = add i64 %sub.ptr.sub.i.i.i.i142, %42 + %43 = load i64, ptr %capacity_.i.i, align 8 + %cmp.i.i.i.i.i144 = icmp ult i64 %43, %add.i.i.i.i143 br i1 %cmp.i.i.i.i.i144, label %if.then.i.i.i.i.i156, label %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i145 if.then.i.i.i.i.i156: ; preds = %while.body.i.i.i.i139 %vtable.i.i.i.i.i157 = load ptr, ptr %buffer, align 8 - %42 = load ptr, ptr %vtable.i.i.i.i.i157, align 8 - invoke void %42(ptr noundef nonnull align 8 dereferenceable(32) %buffer, i64 noundef %add.i.i.i.i143) + %44 = load ptr, ptr %vtable.i.i.i.i.i157, align 8 + invoke void %44(ptr noundef nonnull align 8 dereferenceable(32) %buffer, i64 noundef %add.i.i.i.i143) to label %.noexc160 unwind label %lpad2.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit .noexc160: ; preds = %if.then.i.i.i.i.i156 @@ -7744,23 +7744,23 @@ if.then.i.i.i.i.i156: ; preds = %while.body.i.i.i.i1 br label %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i145 _ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i145: ; preds = %.noexc160, %while.body.i.i.i.i139 - %43 = phi i64 [ %40, %while.body.i.i.i.i139 ], [ %.pre13.i.i.i.i159, %.noexc160 ] - %44 = phi i64 [ %41, %while.body.i.i.i.i139 ], [ %.pre12.i.i.i.i158, %.noexc160 ] - %sub.i.i.i.i146 = sub i64 %44, %43 + %45 = phi i64 [ %42, %while.body.i.i.i.i139 ], [ %.pre13.i.i.i.i159, %.noexc160 ] + %46 = phi i64 [ %43, %while.body.i.i.i.i139 ], [ %.pre12.i.i.i.i158, %.noexc160 ] + %sub.i.i.i.i146 = sub i64 %46, %45 %spec.select.i.i.i.i147 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i146, i64 %sub.ptr.sub.i.i.i.i142) %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i148 = icmp eq i64 %spec.select.i.i.i.i147, 0 br i1 %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i148, label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i152, label %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i149 if.then.i.i.i.i.i.i.i.i.i.i.i.i.i149: ; preds = %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i145 - %45 = load ptr, ptr %ptr_.i.i, align 8 - %add.ptr.i.i.i.i150 = getelementptr inbounds i8, ptr %45, i64 %43 + %47 = load ptr, ptr %ptr_.i.i, align 8 + %add.ptr.i.i.i.i150 = getelementptr inbounds i8, ptr %47, i64 %45 call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr.i.i.i.i150, ptr align 1 %begin.addr.011.i.i.i.i140, i64 %spec.select.i.i.i.i147, i1 false) %.pre14.i.i.i.i151 = load i64, ptr %size_.i.i.i.i135, align 8 br label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i152 _ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i152: ; preds = %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i149, %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i145 - %46 = phi i64 [ %43, %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i145 ], [ %.pre14.i.i.i.i151, %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i149 ] - %add7.i.i.i.i153 = add i64 %46, %spec.select.i.i.i.i147 + %48 = phi i64 [ %45, %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i145 ], [ %.pre14.i.i.i.i151, %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i149 ] + %add7.i.i.i.i153 = add i64 %48, %spec.select.i.i.i.i147 store i64 %add7.i.i.i.i153, ptr %size_.i.i.i.i135, align 8 %add.ptr8.i.i.i.i154 = getelementptr inbounds i8, ptr %begin.addr.011.i.i.i.i140, i64 %spec.select.i.i.i.i147 %cmp.not.i.i.i.i155 = icmp eq ptr %add.ptr8.i.i.i.i154, %add.ptr.i12.i125 @@ -7774,8 +7774,8 @@ sw.bb81: ; preds = %entry %conv83 = trunc i64 %value.coerce0 to i32 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %ref.tmp.i) store i8 0, ptr %ref.tmp.i, align 4 - %47 = getelementptr inbounds i8, ptr %ref.tmp.i, i64 4 - store i32 %conv83, ptr %47, align 4 + %49 = getelementptr inbounds i8, ptr %ref.tmp.i, i64 4 + store i32 %conv83, ptr %49, align 4 %call.i.i161 = invoke ptr @_ZN3fmt3v106detail12write_paddedILNS0_5align4typeE1ESt20back_insert_iteratorINS1_6bufferIwEEEwRZNS1_10write_charIwS8_EET0_SA_T_RKNS0_12format_specsISB_EEEUlS8_E_EESA_SA_RKNSC_IT1_EEmmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(32) %specs, i64 noundef 1, i64 noundef 1, ptr noundef nonnull align 4 dereferenceable(8) %ref.tmp.i) to label %_ZN3fmt3v106detail10write_charIwSt20back_insert_iteratorINS1_6bufferIwEEEEET0_S7_T_RKNS0_12format_specsIS8_EE.exit unwind label %lpad2.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp @@ -7791,7 +7791,7 @@ invoke.cont88: ; preds = %sw.default unreachable sw.epilog: ; preds = %_ZN3fmt3v106detail11format_uintILj3EwNS0_8appenderEoEET1_S4_T2_ib.exit, %_ZN3fmt3v106detail11format_uintILj1EwNS0_8appenderEoEET1_S4_T2_ib.exit, %_ZN3fmt3v106detail11format_uintILj4EwNS0_8appenderEoEET1_S4_T2_ib.exit, %_ZN3fmt3v106detail14format_decimalIwoNS0_8appenderETnNSt9enable_ifIXntsr3std10is_pointerINSt9remove_cvINSt16remove_referenceIT1_E4typeEE4typeEEE5valueEiE4typeELi0EEENS1_21format_decimal_resultIS7_EES7_T0_i.exit - %48 = phi i32 [ %.pre, %_ZN3fmt3v106detail14format_decimalIwoNS0_8appenderETnNSt9enable_ifIXntsr3std10is_pointerINSt9remove_cvINSt16remove_referenceIT1_E4typeEE4typeEEE5valueEiE4typeELi0EEENS1_21format_decimal_resultIS7_EES7_T0_i.exit ], [ %16, %_ZN3fmt3v106detail11format_uintILj4EwNS0_8appenderEoEET1_S4_T2_ib.exit ], [ %27, %_ZN3fmt3v106detail11format_uintILj1EwNS0_8appenderEoEET1_S4_T2_ib.exit ], [ %38, %_ZN3fmt3v106detail11format_uintILj3EwNS0_8appenderEoEET1_S4_T2_ib.exit ] + %50 = phi i32 [ %.pre, %_ZN3fmt3v106detail14format_decimalIwoNS0_8appenderETnNSt9enable_ifIXntsr3std10is_pointerINSt9remove_cvINSt16remove_referenceIT1_E4typeEE4typeEEE5valueEiE4typeELi0EEENS1_21format_decimal_resultIS7_EES7_T0_i.exit ], [ %16, %_ZN3fmt3v106detail11format_uintILj4EwNS0_8appenderEoEET1_S4_T2_ib.exit ], [ %27, %_ZN3fmt3v106detail11format_uintILj1EwNS0_8appenderEoEET1_S4_T2_ib.exit ], [ %40, %_ZN3fmt3v106detail11format_uintILj3EwNS0_8appenderEoEET1_S4_T2_ib.exit ] %num_digits.0 = phi i32 [ %retval.0.i.i173182, %_ZN3fmt3v106detail14format_decimalIwoNS0_8appenderETnNSt9enable_ifIXntsr3std10is_pointerINSt9remove_cvINSt16remove_referenceIT1_E4typeEE4typeEEE5valueEiE4typeELi0EEENS1_21format_decimal_resultIS7_EES7_T0_i.exit ], [ %inc.i.i, %_ZN3fmt3v106detail11format_uintILj4EwNS0_8appenderEoEET1_S4_T2_ib.exit ], [ %inc.i.i68, %_ZN3fmt3v106detail11format_uintILj1EwNS0_8appenderEoEET1_S4_T2_ib.exit ], [ %inc.i.i112, %_ZN3fmt3v106detail11format_uintILj3EwNS0_8appenderEoEET1_S4_T2_ib.exit ] %call.i.i = call ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %grouping) #22 %thousands_sep_.i.i = getelementptr inbounds i8, ptr %grouping, i64 32 @@ -7812,9 +7812,9 @@ if.then5.i.i: ; preds = %if.end.i.i162 br label %_ZNK3fmt3v106detail14digit_groupingIwE4nextERNS3_10next_stateE.exit.i if.end8.i.i163: ; preds = %if.end.i.i162 - %49 = load i8, ptr %state.sroa.0.09.i, align 1 - %50 = add i8 %49, -127 - %or.cond.i.i = icmp ult i8 %50, -126 + %51 = load i8, ptr %state.sroa.0.09.i, align 1 + %52 = add i8 %51, -127 + %or.cond.i.i = icmp ult i8 %52, -126 br i1 %or.cond.i.i, label %invoke.cont92, label %if.end20.i.i if.end20.i.i: ; preds = %if.end8.i.i163 @@ -7822,9 +7822,9 @@ if.end20.i.i: ; preds = %if.end8.i.i163 br label %_ZNK3fmt3v106detail14digit_groupingIwE4nextERNS3_10next_stateE.exit.i _ZNK3fmt3v106detail14digit_groupingIwE4nextERNS3_10next_stateE.exit.i: ; preds = %if.end20.i.i, %if.then5.i.i - %51 = phi i8 [ %.pre.i, %if.then5.i.i ], [ %49, %if.end20.i.i ] + %53 = phi i8 [ %.pre.i, %if.then5.i.i ], [ %51, %if.end20.i.i ] %state.sroa.0.1.i = phi ptr [ %state.sroa.0.09.i, %if.then5.i.i ], [ %incdec.ptr.i.i.i164, %if.end20.i.i ] - %conv26.i.i = sext i8 %51 to i32 + %conv26.i.i = sext i8 %53 to i32 %add28.i.i = add nsw i32 %state.sroa.3.08.i, %conv26.i.i %cmp.i165 = icmp slt i32 %add28.i.i, %num_digits.0 br i1 %cmp.i165, label %while.body.i, label %invoke.cont92 @@ -7836,26 +7836,26 @@ while.body.i: ; preds = %_ZNK3fmt3v106detail invoke.cont92: ; preds = %while.body.i, %_ZNK3fmt3v106detail14digit_groupingIwE4nextERNS3_10next_stateE.exit.i, %if.end8.i.i163, %sw.epilog %count.0.lcssa.i = phi i32 [ 0, %sw.epilog ], [ %count.010.i, %_ZNK3fmt3v106detail14digit_groupingIwE4nextERNS3_10next_stateE.exit.i ], [ %inc.i, %while.body.i ], [ %count.010.i, %if.end8.i.i163 ] - %shr = lshr i32 %48, 24 + %shr = lshr i32 %50, 24 %add = add i32 %shr, %num_digits.0 %add95 = add i32 %add, %count.0.lcssa.i %conv97 = zext i32 %add95 to i64 store ptr %prefix.addr, ptr %ref.tmp99, align 8 - %52 = getelementptr inbounds i8, ptr %ref.tmp99, i64 8 - store ptr %grouping, ptr %52, align 8 - %53 = getelementptr inbounds i8, ptr %ref.tmp99, i64 16 - store ptr %buffer, ptr %53, align 8 + %54 = getelementptr inbounds i8, ptr %ref.tmp99, i64 8 + store ptr %grouping, ptr %54, align 8 + %55 = getelementptr inbounds i8, ptr %ref.tmp99, i64 16 + store ptr %buffer, ptr %55, align 8 %call102 = invoke ptr @_ZN3fmt3v106detail12write_paddedILNS0_5align4typeE2ESt20back_insert_iteratorINS1_6bufferIwEEEwZNS1_9write_intIS8_owEET_SA_T0_jRKNS0_12format_specsIT1_EERKNS1_14digit_groupingISD_EEEUlS8_E_EESB_SB_SG_mmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(32) %specs, i64 noundef %conv97, i64 noundef %conv97, ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp99) to label %cleanup unwind label %lpad2.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp cleanup: ; preds = %_ZN3fmt3v106detail10write_charIwSt20back_insert_iteratorINS1_6bufferIwEEEEET0_S7_T_RKNS0_12format_specsIS8_EE.exit, %invoke.cont92 %retval.sroa.0.0 = phi ptr [ %call.i.i161, %_ZN3fmt3v106detail10write_charIwSt20back_insert_iteratorINS1_6bufferIwEEEEET0_S7_T_RKNS0_12format_specsIS8_EE.exit ], [ %call102, %invoke.cont92 ] - %54 = load ptr, ptr %ptr_.i.i, align 8 - %cmp.not.i.i166 = icmp eq ptr %54, %store_.i + %56 = load ptr, ptr %ptr_.i.i, align 8 + %cmp.not.i.i166 = icmp eq ptr %56, %store_.i br i1 %cmp.not.i.i166, label %_ZN3fmt3v1019basic_memory_bufferIcLm500ESaIcEED2Ev.exit, label %if.then.i.i167 if.then.i.i167: ; preds = %cleanup - call void @_ZdlPv(ptr noundef %54) #24 + call void @_ZdlPv(ptr noundef %56) #24 br label %_ZN3fmt3v1019basic_memory_bufferIcLm500ESaIcEED2Ev.exit _ZN3fmt3v1019basic_memory_bufferIcLm500ESaIcEED2Ev.exit: ; preds = %cleanup, %if.then.i.i167 @@ -26549,16 +26549,16 @@ land.lhs.true.i: ; preds = %_ZN3fmt3v106detail1 if.then54.i: ; preds = %land.lhs.true.i %cmp.not.i236 = icmp eq i32 %arg.coerce1, 0 - %cond.i237 = select i1 %cmp.not.i236, i32 48, i32 12288 - %or.i238 = or i32 %cond.i237, %arg.coerce1 - %add4.i239 = add i32 %or.i238, 16777216 + %71 = or i32 %arg.coerce1, 12288 + %72 = add i32 %71, 16777216 + %add4.i239 = select i1 %cmp.not.i236, i32 16777264, i32 %72 br label %if.end55.i if.end55.i: ; preds = %_ZN3fmt3v106detail12count_digitsILi3EmEEiT0_.exit, %if.then54.i, %land.lhs.true.i %prefix.i.2 = phi i32 [ %add4.i239, %if.then54.i ], [ %arg.coerce1, %land.lhs.true.i ], [ %arg.coerce1, %_ZN3fmt3v106detail12count_digitsILi3EmEEiT0_.exit ] - %71 = load i32, ptr %specs, align 4 + %73 = load i32, ptr %specs, align 4 %add.i124 = add nsw i32 %.pre, 1 - %or.i125 = or i32 %add.i124, %71 + %or.i125 = or i32 %add.i124, %73 %cmp.i126 = icmp eq i32 %or.i125, 0 br i1 %cmp.i126, label %if.then.i129, label %if.end22.i127 @@ -26580,26 +26580,26 @@ for.body.i144.lr.ph: ; preds = %if.then4.i139 for.body.i144: ; preds = %for.body.i144.lr.ph, %_ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIwEEEaSEOw.exit252 %p.i114.0337 = phi i32 [ %and.i140, %for.body.i144.lr.ph ], [ %shr12.i149, %_ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIwEEEaSEOw.exit252 ] %and6.i145 = and i32 %p.i114.0337, 255 - %72 = load i64, ptr %size_.i.i241, align 8 - %add.i.i242 = add i64 %72, 1 - %73 = load i64, ptr %capacity_.i.i.i243, align 8 - %cmp.i.i.i244 = icmp ult i64 %73, %add.i.i242 + %74 = load i64, ptr %size_.i.i241, align 8 + %add.i.i242 = add i64 %74, 1 + %75 = load i64, ptr %capacity_.i.i.i243, align 8 + %cmp.i.i.i244 = icmp ult i64 %75, %add.i.i242 br i1 %cmp.i.i.i244, label %if.then.i.i.i248, label %_ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIwEEEaSEOw.exit252 if.then.i.i.i248: ; preds = %for.body.i144 %vtable.i.i.i249 = load ptr, ptr %out.coerce, align 8 - %74 = load ptr, ptr %vtable.i.i.i249, align 8 - tail call void %74(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i242) + %76 = load ptr, ptr %vtable.i.i.i249, align 8 + tail call void %76(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i242) %.pre.i.i250 = load i64, ptr %size_.i.i241, align 8 %.pre1.i.i251 = add i64 %.pre.i.i250, 1 br label %_ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIwEEEaSEOw.exit252 _ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIwEEEaSEOw.exit252: ; preds = %for.body.i144, %if.then.i.i.i248 %inc.pre-phi.i.i245 = phi i64 [ %add.i.i242, %for.body.i144 ], [ %.pre1.i.i251, %if.then.i.i.i248 ] - %75 = phi i64 [ %72, %for.body.i144 ], [ %.pre.i.i250, %if.then.i.i.i248 ] - %76 = load ptr, ptr %ptr_.i.i246, align 8 + %77 = phi i64 [ %74, %for.body.i144 ], [ %.pre.i.i250, %if.then.i.i.i248 ] + %78 = load ptr, ptr %ptr_.i.i246, align 8 store i64 %inc.pre-phi.i.i245, ptr %size_.i.i241, align 8 - %arrayidx.i.i247 = getelementptr inbounds i32, ptr %76, i64 %75 + %arrayidx.i.i247 = getelementptr inbounds i32, ptr %78, i64 %77 store i32 %and6.i145, ptr %arrayidx.i.i247, align 4 %shr12.i149 = lshr i32 %p.i114.0337, 8 %cmp5.i142.not = icmp ult i32 %p.i114.0337, 256 @@ -26609,30 +26609,30 @@ if.end.i136: ; preds = %_ZNSt20back_insert_ call void @llvm.lifetime.start.p0(i64 22, ptr nonnull %buffer.i.i253) %conv.i.i254 = zext nneg i32 %inc.i.i233 to i64 %size_.i.i.i.i255 = getelementptr inbounds i8, ptr %out.coerce, i64 16 - %77 = load i64, ptr %size_.i.i.i.i255, align 8 + %79 = load i64, ptr %size_.i.i.i.i255, align 8 %capacity_.i.i.i.i256 = getelementptr inbounds i8, ptr %out.coerce, i64 24 - %78 = load i64, ptr %capacity_.i.i.i.i256, align 8 - %add.i.i.i257 = add i64 %77, %conv.i.i254 - %cmp.i.i.i258 = icmp ult i64 %78, %add.i.i.i257 + %80 = load i64, ptr %capacity_.i.i.i.i256, align 8 + %add.i.i.i257 = add i64 %79, %conv.i.i254 + %cmp.i.i.i258 = icmp ult i64 %80, %add.i.i.i257 br i1 %cmp.i.i.i258, label %if.end.i.i274, label %_ZN3fmt3v106detail10to_pointerIwEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i259 _ZN3fmt3v106detail10to_pointerIwEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i259: ; preds = %if.end.i136 store i64 %add.i.i.i257, ptr %size_.i.i.i.i255, align 8 %ptr_.i.i.i.i260 = getelementptr inbounds i8, ptr %out.coerce, i64 8 - %79 = load ptr, ptr %ptr_.i.i.i.i260, align 8 - %tobool.not.i.i261 = icmp eq ptr %79, null + %81 = load ptr, ptr %ptr_.i.i.i.i260, align 8 + %tobool.not.i.i261 = icmp eq ptr %81, null br i1 %tobool.not.i.i261, label %if.end.i.i274, label %if.then.i.i262 if.then.i.i262: ; preds = %_ZN3fmt3v106detail10to_pointerIwEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i259 - %add.ptr.i.i.i263 = getelementptr inbounds i32, ptr %79, i64 %77 + %add.ptr.i.i.i263 = getelementptr inbounds i32, ptr %81, i64 %79 %add.ptr.i7.i.i265 = getelementptr inbounds i32, ptr %add.ptr.i.i.i263, i64 %conv.i.i254 br label %do.body.i.i.i266 do.body.i.i.i266: ; preds = %do.body.i.i.i266, %if.then.i.i262 %value.addr.0.i.i.i267 = phi i64 [ %arg.coerce0, %if.then.i.i262 ], [ %shr.i.i.i272, %do.body.i.i.i266 ] %buffer.addr.0.i.i.i268 = phi ptr [ %add.ptr.i7.i.i265, %if.then.i.i262 ], [ %incdec.ptr.i.i.i271, %do.body.i.i.i266 ] - %80 = trunc i64 %value.addr.0.i.i.i267 to i32 - %conv.i.i.i269 = and i32 %80, 7 + %82 = trunc i64 %value.addr.0.i.i.i267 to i32 + %conv.i.i.i269 = and i32 %82, 7 %add.i8.i.i270 = or disjoint i32 %conv.i.i.i269, 48 %incdec.ptr.i.i.i271 = getelementptr inbounds i8, ptr %buffer.addr.0.i.i.i268, i64 -4 store i32 %add.i8.i.i270, ptr %incdec.ptr.i.i.i271, align 4 @@ -26648,8 +26648,8 @@ if.end.i.i274: ; preds = %_ZN3fmt3v106detail1 do.body.i11.i.i277: ; preds = %do.body.i11.i.i277, %if.end.i.i274 %value.addr.0.i12.i.i278 = phi i64 [ %arg.coerce0, %if.end.i.i274 ], [ %shr.i17.i.i283, %do.body.i11.i.i277 ] %buffer.addr.0.i13.i.i279 = phi ptr [ %add.ptr.i10.i.i276, %if.end.i.i274 ], [ %incdec.ptr.i16.i.i282, %do.body.i11.i.i277 ] - %81 = trunc i64 %value.addr.0.i12.i.i278 to i8 - %conv.i14.i.i280 = and i8 %81, 7 + %83 = trunc i64 %value.addr.0.i12.i.i278 to i8 + %conv.i14.i.i280 = and i8 %83, 7 %add.i15.i.i281 = or disjoint i8 %conv.i14.i.i280, 48 %incdec.ptr.i16.i.i282 = getelementptr inbounds i8, ptr %buffer.addr.0.i13.i.i279, i64 -1 store i8 %add.i15.i.i281, ptr %incdec.ptr.i16.i.i282, align 1 @@ -26664,28 +26664,28 @@ while.body.lr.ph.i.i.i.i286: ; preds = %do.body.i11.i.i277 while.body.i.i.i.i288: ; preds = %_ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIwEEEaSEOw.exit.i.i.i.i294, %while.body.lr.ph.i.i.i.i286 %begin.addr.03.i.i.i.i289 = phi ptr [ %buffer.i.i253, %while.body.lr.ph.i.i.i.i286 ], [ %incdec.ptr.i.i.i.i290, %_ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIwEEEaSEOw.exit.i.i.i.i294 ] %incdec.ptr.i.i.i.i290 = getelementptr inbounds i8, ptr %begin.addr.03.i.i.i.i289, i64 1 - %82 = load i8, ptr %begin.addr.03.i.i.i.i289, align 1 - %conv.i.i.i.i291 = sext i8 %82 to i32 - %83 = load i64, ptr %size_.i.i.i.i255, align 8 - %add.i.i.i.i.i.i292 = add i64 %83, 1 - %84 = load i64, ptr %capacity_.i.i.i.i256, align 8 - %cmp.i.i.i.i.i.i.i293 = icmp ult i64 %84, %add.i.i.i.i.i.i292 + %84 = load i8, ptr %begin.addr.03.i.i.i.i289, align 1 + %conv.i.i.i.i291 = sext i8 %84 to i32 + %85 = load i64, ptr %size_.i.i.i.i255, align 8 + %add.i.i.i.i.i.i292 = add i64 %85, 1 + %86 = load i64, ptr %capacity_.i.i.i.i256, align 8 + %cmp.i.i.i.i.i.i.i293 = icmp ult i64 %86, %add.i.i.i.i.i.i292 br i1 %cmp.i.i.i.i.i.i.i293, label %if.then.i.i.i.i.i.i.i298, label %_ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIwEEEaSEOw.exit.i.i.i.i294 if.then.i.i.i.i.i.i.i298: ; preds = %while.body.i.i.i.i288 %vtable.i.i.i.i.i.i.i299 = load ptr, ptr %out.coerce, align 8 - %85 = load ptr, ptr %vtable.i.i.i.i.i.i.i299, align 8 - call void %85(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i.i.i.i.i292) + %87 = load ptr, ptr %vtable.i.i.i.i.i.i.i299, align 8 + call void %87(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i.i.i.i.i292) %.pre.i.i.i.i.i.i300 = load i64, ptr %size_.i.i.i.i255, align 8 %.pre1.i.i.i.i.i.i301 = add i64 %.pre.i.i.i.i.i.i300, 1 br label %_ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIwEEEaSEOw.exit.i.i.i.i294 _ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIwEEEaSEOw.exit.i.i.i.i294: ; preds = %if.then.i.i.i.i.i.i.i298, %while.body.i.i.i.i288 %inc.pre-phi.i.i.i.i.i.i295 = phi i64 [ %add.i.i.i.i.i.i292, %while.body.i.i.i.i288 ], [ %.pre1.i.i.i.i.i.i301, %if.then.i.i.i.i.i.i.i298 ] - %86 = phi i64 [ %83, %while.body.i.i.i.i288 ], [ %.pre.i.i.i.i.i.i300, %if.then.i.i.i.i.i.i.i298 ] - %87 = load ptr, ptr %ptr_.i.i.i.i.i.i287, align 8 + %88 = phi i64 [ %85, %while.body.i.i.i.i288 ], [ %.pre.i.i.i.i.i.i300, %if.then.i.i.i.i.i.i.i298 ] + %89 = load ptr, ptr %ptr_.i.i.i.i.i.i287, align 8 store i64 %inc.pre-phi.i.i.i.i.i.i295, ptr %size_.i.i.i.i255, align 8 - %arrayidx.i.i.i.i.i.i296 = getelementptr inbounds i32, ptr %87, i64 %86 + %arrayidx.i.i.i.i.i.i296 = getelementptr inbounds i32, ptr %89, i64 %88 store i32 %conv.i.i.i.i291, ptr %arrayidx.i.i.i.i.i.i296, align 4 %cmp.not.i.i.i.i297 = icmp eq ptr %incdec.ptr.i.i.i.i290, %add.ptr.i10.i.i276 br i1 %cmp.not.i.i.i.i297, label %_ZZN3fmt3v106detail9write_intIwSt20back_insert_iteratorINS1_6bufferIwEEEmEET0_S7_NS1_13write_int_argIT1_EERKNS0_12format_specsIT_EENS1_10locale_refEENKUlS6_E2_clES6_.exit, label %while.body.i.i.i.i288, !llvm.loop !72 @@ -26698,16 +26698,16 @@ if.end22.i127: ; preds = %if.end55.i %shr.i302 = lshr i32 %prefix.i.2, 24 %add.i303 = add nuw i32 %shr.i302, %inc.i.i233 %conv.i304 = zext i32 %add.i303 to i64 - %88 = and i16 %bf.load47.i, 15 - %cmp.i308 = icmp eq i16 %88, 4 + %90 = and i16 %bf.load47.i, 15 + %cmp.i308 = icmp eq i16 %90, 4 br i1 %cmp.i308, label %if.then.i317, label %if.else.i309 if.then.i317: ; preds = %if.end22.i127 - %cmp7.i318 = icmp ult i32 %add.i303, %71 + %cmp7.i318 = icmp ult i32 %add.i303, %73 br i1 %cmp7.i318, label %if.then8.i319, label %_ZN3fmt3v106detail14write_int_dataIwEC2EijRKNS0_12format_specsIwEE.exit322 if.then8.i319: ; preds = %if.then.i317 - %conv5.i320 = zext i32 %71 to i64 + %conv5.i320 = zext i32 %73 to i64 %sub.i321 = sub nsw i64 %conv5.i320, %conv.i304 br label %_ZN3fmt3v106detail14write_int_dataIwEC2EijRKNS0_12format_specsIwEE.exit322 @@ -26726,12 +26726,12 @@ _ZN3fmt3v106detail14write_int_dataIwEC2EijRKNS0_12format_specsIwEE.exit322: ; pr %data.i120.sroa.0.0 = phi i64 [ %conv5.i320, %if.then8.i319 ], [ %conv.i304, %if.then.i317 ], [ %conv20.i314, %if.then15.i312 ], [ %conv.i304, %if.else.i309 ] %data.i120.sroa.5.0 = phi i64 [ %sub.i321, %if.then8.i319 ], [ 0, %if.then.i317 ], [ %conv25.i316, %if.then15.i312 ], [ 0, %if.else.i309 ] store i32 %prefix.i.2, ptr %ref.tmp24.i122, align 8 - %89 = getelementptr inbounds i8, ptr %ref.tmp24.i122, i64 8 - store i64 %data.i120.sroa.0.0, ptr %89, align 8 + %91 = getelementptr inbounds i8, ptr %ref.tmp24.i122, i64 8 + store i64 %data.i120.sroa.0.0, ptr %91, align 8 %data.i120.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %ref.tmp24.i122, i64 16 store i64 %data.i120.sroa.5.0, ptr %data.i120.sroa.5.0..sroa_idx, align 8 - %90 = getelementptr inbounds i8, ptr %ref.tmp24.i122, i64 24 - store i64 %arg.coerce0, ptr %90, align 8 + %92 = getelementptr inbounds i8, ptr %ref.tmp24.i122, i64 24 + store i64 %arg.coerce0, ptr %92, align 8 %write_digits.i109.sroa.3.0..sroa_idx = getelementptr inbounds i8, ptr %ref.tmp24.i122, i64 32 store i32 %inc.i.i233, ptr %write_digits.i109.sroa.3.0..sroa_idx, align 8 %call.i323 = call ptr @_ZN3fmt3v106detail12write_paddedILNS0_5align4typeE2ESt20back_insert_iteratorINS1_6bufferIwEEEwRZNS1_9write_intIS8_wZNS1_9write_intIwS8_mEET0_SB_NS1_13write_int_argIT1_EERKNS0_12format_specsIT_EENS1_10locale_refEEUlS8_E2_EESG_SG_ijRKNSF_ISB_EESD_EUlS8_E_EESB_SB_RKNSF_ISD_EEmmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(32) %specs, i64 noundef %data.i120.sroa.0.0, i64 noundef %data.i120.sroa.0.0, ptr noundef nonnull align 8 dereferenceable(40) %ref.tmp24.i122) @@ -26741,8 +26741,8 @@ sw.bb61.i: ; preds = %entry %conv63.i = trunc i64 %arg.coerce0 to i32 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %ref.tmp.i324) store i8 0, ptr %ref.tmp.i324, align 4 - %91 = getelementptr inbounds i8, ptr %ref.tmp.i324, i64 4 - store i32 %conv63.i, ptr %91, align 4 + %93 = getelementptr inbounds i8, ptr %ref.tmp.i324, i64 4 + store i32 %conv63.i, ptr %93, align 4 %call.i.i = call ptr @_ZN3fmt3v106detail12write_paddedILNS0_5align4typeE1ESt20back_insert_iteratorINS1_6bufferIwEEEwRZNS1_10write_charIwS8_EET0_SA_T_RKNS0_12format_specsISB_EEEUlS8_E_EESA_SA_RKNSC_IT1_EEmmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(32) %specs, i64 noundef 1, i64 noundef 1, ptr noundef nonnull align 4 dereferenceable(8) %ref.tmp.i324) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ref.tmp.i324) br label %_ZN3fmt3v106detail9write_intIwSt20back_insert_iteratorINS1_6bufferIwEEEmEET0_S7_NS1_13write_int_argIT1_EERKNS0_12format_specsIT_EENS1_10locale_refE.exit @@ -28996,16 +28996,16 @@ land.lhs.true.i: ; preds = %_ZN3fmt3v106detail1 if.then57.i: ; preds = %land.lhs.true.i %cmp.not.i245 = icmp eq i32 %agg.tmp2.sroa.2.0.copyload, 0 - %cond.i246 = select i1 %cmp.not.i245, i32 48, i32 12288 - %or.i247 = or i32 %cond.i246, %agg.tmp2.sroa.2.0.copyload - %add4.i248 = add i32 %or.i247, 16777216 + %71 = or i32 %agg.tmp2.sroa.2.0.copyload, 12288 + %72 = add i32 %71, 16777216 + %add4.i248 = select i1 %cmp.not.i245, i32 16777264, i32 %72 br label %if.end58.i if.end58.i: ; preds = %_ZN3fmt3v106detail12count_digitsILi3EoEEiT0_.exit, %if.then57.i, %land.lhs.true.i %prefix.i.2 = phi i32 [ %add4.i248, %if.then57.i ], [ %agg.tmp2.sroa.2.0.copyload, %land.lhs.true.i ], [ %agg.tmp2.sroa.2.0.copyload, %_ZN3fmt3v106detail12count_digitsILi3EoEEiT0_.exit ] - %71 = load i32, ptr %specs, align 4 + %73 = load i32, ptr %specs, align 4 %add.i126 = add nsw i32 %.pre, 1 - %or.i127 = or i32 %add.i126, %71 + %or.i127 = or i32 %add.i126, %73 %cmp.i128 = icmp eq i32 %or.i127, 0 br i1 %cmp.i128, label %if.then.i131, label %if.end22.i129 @@ -29027,26 +29027,26 @@ for.body.i146.lr.ph: ; preds = %if.then4.i141 for.body.i146: ; preds = %for.body.i146.lr.ph, %_ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIwEEEaSEOw.exit261 %p.i116.0350 = phi i32 [ %and.i142, %for.body.i146.lr.ph ], [ %shr12.i151, %_ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIwEEEaSEOw.exit261 ] %and6.i147 = and i32 %p.i116.0350, 255 - %72 = load i64, ptr %size_.i.i250, align 8 - %add.i.i251 = add i64 %72, 1 - %73 = load i64, ptr %capacity_.i.i.i252, align 8 - %cmp.i.i.i253 = icmp ult i64 %73, %add.i.i251 + %74 = load i64, ptr %size_.i.i250, align 8 + %add.i.i251 = add i64 %74, 1 + %75 = load i64, ptr %capacity_.i.i.i252, align 8 + %cmp.i.i.i253 = icmp ult i64 %75, %add.i.i251 br i1 %cmp.i.i.i253, label %if.then.i.i.i257, label %_ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIwEEEaSEOw.exit261 if.then.i.i.i257: ; preds = %for.body.i146 %vtable.i.i.i258 = load ptr, ptr %out.coerce, align 8 - %74 = load ptr, ptr %vtable.i.i.i258, align 8 - tail call void %74(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i251) + %76 = load ptr, ptr %vtable.i.i.i258, align 8 + tail call void %76(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i251) %.pre.i.i259 = load i64, ptr %size_.i.i250, align 8 %.pre1.i.i260 = add i64 %.pre.i.i259, 1 br label %_ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIwEEEaSEOw.exit261 _ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIwEEEaSEOw.exit261: ; preds = %for.body.i146, %if.then.i.i.i257 %inc.pre-phi.i.i254 = phi i64 [ %add.i.i251, %for.body.i146 ], [ %.pre1.i.i260, %if.then.i.i.i257 ] - %75 = phi i64 [ %72, %for.body.i146 ], [ %.pre.i.i259, %if.then.i.i.i257 ] - %76 = load ptr, ptr %ptr_.i.i255, align 8 + %77 = phi i64 [ %74, %for.body.i146 ], [ %.pre.i.i259, %if.then.i.i.i257 ] + %78 = load ptr, ptr %ptr_.i.i255, align 8 store i64 %inc.pre-phi.i.i254, ptr %size_.i.i250, align 8 - %arrayidx.i.i256 = getelementptr inbounds i32, ptr %76, i64 %75 + %arrayidx.i.i256 = getelementptr inbounds i32, ptr %78, i64 %77 store i32 %and6.i147, ptr %arrayidx.i.i256, align 4 %shr12.i151 = lshr i32 %p.i116.0350, 8 %cmp5.i144.not = icmp ult i32 %p.i116.0350, 256 @@ -29056,30 +29056,30 @@ if.end.i138: ; preds = %_ZNSt20back_insert_ call void @llvm.lifetime.start.p0(i64 43, ptr nonnull %buffer.i.i262) %conv.i.i263 = zext nneg i32 %inc.i.i242 to i64 %size_.i.i.i.i264 = getelementptr inbounds i8, ptr %out.coerce, i64 16 - %77 = load i64, ptr %size_.i.i.i.i264, align 8 + %79 = load i64, ptr %size_.i.i.i.i264, align 8 %capacity_.i.i.i.i265 = getelementptr inbounds i8, ptr %out.coerce, i64 24 - %78 = load i64, ptr %capacity_.i.i.i.i265, align 8 - %add.i.i.i266 = add i64 %77, %conv.i.i263 - %cmp.i.i.i267 = icmp ult i64 %78, %add.i.i.i266 + %80 = load i64, ptr %capacity_.i.i.i.i265, align 8 + %add.i.i.i266 = add i64 %79, %conv.i.i263 + %cmp.i.i.i267 = icmp ult i64 %80, %add.i.i.i266 br i1 %cmp.i.i.i267, label %if.end.i.i283, label %_ZN3fmt3v106detail10to_pointerIwEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i268 _ZN3fmt3v106detail10to_pointerIwEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i268: ; preds = %if.end.i138 store i64 %add.i.i.i266, ptr %size_.i.i.i.i264, align 8 %ptr_.i.i.i.i269 = getelementptr inbounds i8, ptr %out.coerce, i64 8 - %79 = load ptr, ptr %ptr_.i.i.i.i269, align 8 - %tobool.not.i.i270 = icmp eq ptr %79, null + %81 = load ptr, ptr %ptr_.i.i.i.i269, align 8 + %tobool.not.i.i270 = icmp eq ptr %81, null br i1 %tobool.not.i.i270, label %if.end.i.i283, label %if.then.i.i271 if.then.i.i271: ; preds = %_ZN3fmt3v106detail10to_pointerIwEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i268 - %add.ptr.i.i.i272 = getelementptr inbounds i32, ptr %79, i64 %77 + %add.ptr.i.i.i272 = getelementptr inbounds i32, ptr %81, i64 %79 %add.ptr.i7.i.i274 = getelementptr inbounds i32, ptr %add.ptr.i.i.i272, i64 %conv.i.i263 br label %do.body.i.i.i275 do.body.i.i.i275: ; preds = %do.body.i.i.i275, %if.then.i.i271 %value.addr.0.i.i.i276 = phi i128 [ %agg.tmp2.sroa.0.0.copyload, %if.then.i.i271 ], [ %shr.i.i.i281, %do.body.i.i.i275 ] %buffer.addr.0.i.i.i277 = phi ptr [ %add.ptr.i7.i.i274, %if.then.i.i271 ], [ %incdec.ptr.i.i.i280, %do.body.i.i.i275 ] - %80 = trunc i128 %value.addr.0.i.i.i276 to i32 - %conv.i.i.i278 = and i32 %80, 7 + %82 = trunc i128 %value.addr.0.i.i.i276 to i32 + %conv.i.i.i278 = and i32 %82, 7 %add.i8.i.i279 = or disjoint i32 %conv.i.i.i278, 48 %incdec.ptr.i.i.i280 = getelementptr inbounds i8, ptr %buffer.addr.0.i.i.i277, i64 -4 store i32 %add.i8.i.i279, ptr %incdec.ptr.i.i.i280, align 4 @@ -29095,8 +29095,8 @@ if.end.i.i283: ; preds = %_ZN3fmt3v106detail1 do.body.i15.i.i286: ; preds = %do.body.i15.i.i286, %if.end.i.i283 %value.addr.0.i16.i.i287 = phi i128 [ %agg.tmp2.sroa.0.0.copyload, %if.end.i.i283 ], [ %shr.i21.i.i292, %do.body.i15.i.i286 ] %buffer.addr.0.i17.i.i288 = phi ptr [ %add.ptr.i14.i.i285, %if.end.i.i283 ], [ %incdec.ptr.i20.i.i291, %do.body.i15.i.i286 ] - %81 = trunc i128 %value.addr.0.i16.i.i287 to i8 - %conv.i18.i.i289 = and i8 %81, 7 + %83 = trunc i128 %value.addr.0.i16.i.i287 to i8 + %conv.i18.i.i289 = and i8 %83, 7 %add.i19.i.i290 = or disjoint i8 %conv.i18.i.i289, 48 %incdec.ptr.i20.i.i291 = getelementptr inbounds i8, ptr %buffer.addr.0.i17.i.i288, i64 -1 store i8 %add.i19.i.i290, ptr %incdec.ptr.i20.i.i291, align 1 @@ -29111,28 +29111,28 @@ while.body.lr.ph.i.i.i.i295: ; preds = %do.body.i15.i.i286 while.body.i.i.i.i297: ; preds = %_ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIwEEEaSEOw.exit.i.i.i.i303, %while.body.lr.ph.i.i.i.i295 %begin.addr.03.i.i.i.i298 = phi ptr [ %buffer.i.i262, %while.body.lr.ph.i.i.i.i295 ], [ %incdec.ptr.i.i.i.i299, %_ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIwEEEaSEOw.exit.i.i.i.i303 ] %incdec.ptr.i.i.i.i299 = getelementptr inbounds i8, ptr %begin.addr.03.i.i.i.i298, i64 1 - %82 = load i8, ptr %begin.addr.03.i.i.i.i298, align 1 - %conv.i.i.i.i300 = sext i8 %82 to i32 - %83 = load i64, ptr %size_.i.i.i.i264, align 8 - %add.i.i.i.i.i.i301 = add i64 %83, 1 - %84 = load i64, ptr %capacity_.i.i.i.i265, align 8 - %cmp.i.i.i.i.i.i.i302 = icmp ult i64 %84, %add.i.i.i.i.i.i301 + %84 = load i8, ptr %begin.addr.03.i.i.i.i298, align 1 + %conv.i.i.i.i300 = sext i8 %84 to i32 + %85 = load i64, ptr %size_.i.i.i.i264, align 8 + %add.i.i.i.i.i.i301 = add i64 %85, 1 + %86 = load i64, ptr %capacity_.i.i.i.i265, align 8 + %cmp.i.i.i.i.i.i.i302 = icmp ult i64 %86, %add.i.i.i.i.i.i301 br i1 %cmp.i.i.i.i.i.i.i302, label %if.then.i.i.i.i.i.i.i307, label %_ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIwEEEaSEOw.exit.i.i.i.i303 if.then.i.i.i.i.i.i.i307: ; preds = %while.body.i.i.i.i297 %vtable.i.i.i.i.i.i.i308 = load ptr, ptr %out.coerce, align 8 - %85 = load ptr, ptr %vtable.i.i.i.i.i.i.i308, align 8 - call void %85(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i.i.i.i.i301) + %87 = load ptr, ptr %vtable.i.i.i.i.i.i.i308, align 8 + call void %87(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i.i.i.i.i301) %.pre.i.i.i.i.i.i309 = load i64, ptr %size_.i.i.i.i264, align 8 %.pre1.i.i.i.i.i.i310 = add i64 %.pre.i.i.i.i.i.i309, 1 br label %_ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIwEEEaSEOw.exit.i.i.i.i303 _ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIwEEEaSEOw.exit.i.i.i.i303: ; preds = %if.then.i.i.i.i.i.i.i307, %while.body.i.i.i.i297 %inc.pre-phi.i.i.i.i.i.i304 = phi i64 [ %add.i.i.i.i.i.i301, %while.body.i.i.i.i297 ], [ %.pre1.i.i.i.i.i.i310, %if.then.i.i.i.i.i.i.i307 ] - %86 = phi i64 [ %83, %while.body.i.i.i.i297 ], [ %.pre.i.i.i.i.i.i309, %if.then.i.i.i.i.i.i.i307 ] - %87 = load ptr, ptr %ptr_.i.i.i.i.i.i296, align 8 + %88 = phi i64 [ %85, %while.body.i.i.i.i297 ], [ %.pre.i.i.i.i.i.i309, %if.then.i.i.i.i.i.i.i307 ] + %89 = load ptr, ptr %ptr_.i.i.i.i.i.i296, align 8 store i64 %inc.pre-phi.i.i.i.i.i.i304, ptr %size_.i.i.i.i264, align 8 - %arrayidx.i.i.i.i.i.i305 = getelementptr inbounds i32, ptr %87, i64 %86 + %arrayidx.i.i.i.i.i.i305 = getelementptr inbounds i32, ptr %89, i64 %88 store i32 %conv.i.i.i.i300, ptr %arrayidx.i.i.i.i.i.i305, align 4 %cmp.not.i.i.i.i306 = icmp eq ptr %incdec.ptr.i.i.i.i299, %add.ptr.i14.i.i285 br i1 %cmp.not.i.i.i.i306, label %_ZZN3fmt3v106detail9write_intIwSt20back_insert_iteratorINS1_6bufferIwEEEoEET0_S7_NS1_13write_int_argIT1_EERKNS0_12format_specsIT_EENS1_10locale_refEENKUlS6_E2_clES6_.exit, label %while.body.i.i.i.i297, !llvm.loop !72 @@ -29145,16 +29145,16 @@ if.end22.i129: ; preds = %if.end58.i %shr.i311 = lshr i32 %prefix.i.2, 24 %add.i312 = add nuw i32 %shr.i311, %inc.i.i242 %conv.i313 = zext i32 %add.i312 to i64 - %88 = and i16 %bf.load50.i, 15 - %cmp.i317 = icmp eq i16 %88, 4 + %90 = and i16 %bf.load50.i, 15 + %cmp.i317 = icmp eq i16 %90, 4 br i1 %cmp.i317, label %if.then.i326, label %if.else.i318 if.then.i326: ; preds = %if.end22.i129 - %cmp7.i327 = icmp ult i32 %add.i312, %71 + %cmp7.i327 = icmp ult i32 %add.i312, %73 br i1 %cmp7.i327, label %if.then8.i328, label %_ZN3fmt3v106detail14write_int_dataIwEC2EijRKNS0_12format_specsIwEE.exit331 if.then8.i328: ; preds = %if.then.i326 - %conv5.i329 = zext i32 %71 to i64 + %conv5.i329 = zext i32 %73 to i64 %sub.i330 = sub nsw i64 %conv5.i329, %conv.i313 br label %_ZN3fmt3v106detail14write_int_dataIwEC2EijRKNS0_12format_specsIwEE.exit331 @@ -29173,12 +29173,12 @@ _ZN3fmt3v106detail14write_int_dataIwEC2EijRKNS0_12format_specsIwEE.exit331: ; pr %data.i122.sroa.0.0 = phi i64 [ %conv5.i329, %if.then8.i328 ], [ %conv.i313, %if.then.i326 ], [ %conv20.i323, %if.then15.i321 ], [ %conv.i313, %if.else.i318 ] %data.i122.sroa.5.0 = phi i64 [ %sub.i330, %if.then8.i328 ], [ 0, %if.then.i326 ], [ %conv25.i325, %if.then15.i321 ], [ 0, %if.else.i318 ] store i32 %prefix.i.2, ptr %ref.tmp24.i124, align 16 - %89 = getelementptr inbounds i8, ptr %ref.tmp24.i124, i64 8 - store i64 %data.i122.sroa.0.0, ptr %89, align 8 + %91 = getelementptr inbounds i8, ptr %ref.tmp24.i124, i64 8 + store i64 %data.i122.sroa.0.0, ptr %91, align 8 %data.i122.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %ref.tmp24.i124, i64 16 store i64 %data.i122.sroa.5.0, ptr %data.i122.sroa.5.0..sroa_idx, align 16 - %90 = getelementptr inbounds i8, ptr %ref.tmp24.i124, i64 32 - store i128 %agg.tmp2.sroa.0.0.copyload, ptr %90, align 16 + %92 = getelementptr inbounds i8, ptr %ref.tmp24.i124, i64 32 + store i128 %agg.tmp2.sroa.0.0.copyload, ptr %92, align 16 %agg.tmp60.i109.sroa.3.0..sroa_idx = getelementptr inbounds i8, ptr %ref.tmp24.i124, i64 48 store i32 %inc.i.i242, ptr %agg.tmp60.i109.sroa.3.0..sroa_idx, align 16 %call.i332 = call ptr @_ZN3fmt3v106detail12write_paddedILNS0_5align4typeE2ESt20back_insert_iteratorINS1_6bufferIwEEEwRZNS1_9write_intIS8_wZNS1_9write_intIwS8_oEET0_SB_NS1_13write_int_argIT1_EERKNS0_12format_specsIT_EENS1_10locale_refEEUlS8_E2_EESG_SG_ijRKNSF_ISB_EESD_EUlS8_E_EESB_SB_RKNSF_ISD_EEmmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(32) %specs, i64 noundef %data.i122.sroa.0.0, i64 noundef %data.i122.sroa.0.0, ptr noundef nonnull align 16 dereferenceable(64) %ref.tmp24.i124) @@ -29188,8 +29188,8 @@ sw.bb64.i: ; preds = %entry %conv66.i = trunc i128 %agg.tmp2.sroa.0.0.copyload to i32 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %ref.tmp.i333) store i8 0, ptr %ref.tmp.i333, align 4 - %91 = getelementptr inbounds i8, ptr %ref.tmp.i333, i64 4 - store i32 %conv66.i, ptr %91, align 4 + %93 = getelementptr inbounds i8, ptr %ref.tmp.i333, i64 4 + store i32 %conv66.i, ptr %93, align 4 %call.i.i = call ptr @_ZN3fmt3v106detail12write_paddedILNS0_5align4typeE1ESt20back_insert_iteratorINS1_6bufferIwEEEwRZNS1_10write_charIwS8_EET0_SA_T_RKNS0_12format_specsISB_EEEUlS8_E_EESA_SA_RKNSC_IT1_EEmmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(32) %specs, i64 noundef 1, i64 noundef 1, ptr noundef nonnull align 4 dereferenceable(8) %ref.tmp.i333) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ref.tmp.i333) br label %_ZN3fmt3v106detail9write_intIwSt20back_insert_iteratorINS1_6bufferIwEEEoEET0_S7_NS1_13write_int_argIT1_EERKNS0_12format_specsIT_EENS1_10locale_refE.exit diff --git a/bench/fmt/optimized/format-impl-test.cc.ll b/bench/fmt/optimized/format-impl-test.cc.ll index c20089559f6..1475c8663ab 100644 --- a/bench/fmt/optimized/format-impl-test.cc.ll +++ b/bench/fmt/optimized/format-impl-test.cc.ll @@ -22689,7 +22689,7 @@ lpad2: ; preds = %invoke.cont.i.i56.i br label %lpad2.body lpad2.body: ; preds = %lpad2, %lpad.i.i55, %lpad.i.i - %eh.lpad-body = phi { ptr, i32 } [ %11, %lpad.i.i ], [ %5, %lpad2 ], [ %16, %lpad.i.i55 ] + %eh.lpad-body = phi { ptr, i32 } [ %13, %lpad.i.i ], [ %5, %lpad2 ], [ %18, %lpad.i.i55 ] call void @_ZN3fmt3v1019basic_memory_bufferIcLm500ESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(536) %buffer) #26 resume { ptr, i32 } %eh.lpad-body @@ -22784,9 +22784,9 @@ land.lhs.true: ; preds = %invoke.cont54 if.then64: ; preds = %land.lhs.true %cmp.not.i45 = icmp eq i32 %prefix, 0 - %cond.i46 = select i1 %cmp.not.i45, i32 48, i32 12288 - %or.i47 = or i32 %cond.i46, %prefix - %add4.i48 = add i32 %or.i47, 16777216 + %10 = or i32 %prefix, 12288 + %11 = add i32 %10, 16777216 + %add4.i48 = select i1 %cmp.not.i45, i32 16777264, i32 %11 store i32 %add4.i48, ptr %prefix.addr, align 4 br label %invoke.cont68 @@ -22798,8 +22798,8 @@ sw.bb76: ; preds = %entry %conv78 = trunc i64 %value to i8 call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %ref.tmp.i) store i8 0, ptr %ref.tmp.i, align 1 - %10 = getelementptr inbounds i8, ptr %ref.tmp.i, i64 1 - store i8 %conv78, ptr %10, align 1 + %12 = getelementptr inbounds i8, ptr %ref.tmp.i, i64 1 + store i8 %conv78, ptr %12, align 1 %call.i.i49 = invoke ptr @_ZN3fmt3v106detail12write_paddedILNS0_5align4typeE1ENS0_8appenderEcRZNS1_10write_charIcS5_EET0_S7_T_RKNS0_12format_specsIS8_EEEUlS5_E_EES7_S7_RKNS9_IT1_EEmmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(16) %specs, i64 noundef 1, i64 noundef 1, ptr noundef nonnull align 1 dereferenceable(2) %ref.tmp.i) to label %_ZN3fmt3v106detail10write_charIcNS0_8appenderEEET0_S4_T_RKNS0_12format_specsIS5_EE.exit unwind label %lpad2 @@ -22825,14 +22825,14 @@ if.then.i: ; preds = %sw.epilog to label %invoke.cont.i.i56.invoke unwind label %lpad.i.i lpad.i.i: ; preds = %if.then.i - %11 = landingpad { ptr, i32 } + %13 = landingpad { ptr, i32 } cleanup call void @__cxa_free_exception(ptr %exception.i.i) #26 br label %lpad2.body invoke.cont88: ; preds = %sw.epilog - %12 = load i32, ptr %prefix.addr, align 4 - %shr = lshr i32 %12, 24 + %14 = load i32, ptr %prefix.addr, align 4 + %shr = lshr i32 %14, 24 %add = add nuw i32 %shr, %num_digits.0 %call.i.i = call ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %grouping) #26 %thousands_sep_.i.i = getelementptr inbounds i8, ptr %grouping, i64 32 @@ -22853,9 +22853,9 @@ if.then5.i.i: ; preds = %if.end.i.i br label %_ZNK3fmt3v106detail14digit_groupingIcE4nextERNS3_10next_stateE.exit.i if.end8.i.i: ; preds = %if.end.i.i - %13 = load i8, ptr %state.sroa.0.09.i, align 1 - %14 = add i8 %13, -127 - %or.cond.i.i = icmp ult i8 %14, -126 + %15 = load i8, ptr %state.sroa.0.09.i, align 1 + %16 = add i8 %15, -127 + %or.cond.i.i = icmp ult i8 %16, -126 br i1 %or.cond.i.i, label %invoke.cont90, label %if.end20.i.i if.end20.i.i: ; preds = %if.end8.i.i @@ -22863,9 +22863,9 @@ if.end20.i.i: ; preds = %if.end8.i.i br label %_ZNK3fmt3v106detail14digit_groupingIcE4nextERNS3_10next_stateE.exit.i _ZNK3fmt3v106detail14digit_groupingIcE4nextERNS3_10next_stateE.exit.i: ; preds = %if.end20.i.i, %if.then5.i.i - %15 = phi i8 [ %.pre.i, %if.then5.i.i ], [ %13, %if.end20.i.i ] + %17 = phi i8 [ %.pre.i, %if.then5.i.i ], [ %15, %if.end20.i.i ] %state.sroa.0.1.i = phi ptr [ %state.sroa.0.09.i, %if.then5.i.i ], [ %incdec.ptr.i.i.i, %if.end20.i.i ] - %conv26.i.i = sext i8 %15 to i32 + %conv26.i.i = sext i8 %17 to i32 %add28.i.i = add nsw i32 %state.sroa.3.08.i, %conv26.i.i %cmp.i51 = icmp slt i32 %add28.i.i, %num_digits.0 br i1 %cmp.i51, label %while.body.i, label %invoke.cont90 @@ -22895,7 +22895,7 @@ invoke.cont.i.i56.cont: ; preds = %invoke.cont.i.i56.i unreachable lpad.i.i55: ; preds = %if.then.i53 - %16 = landingpad { ptr, i32 } + %18 = landingpad { ptr, i32 } cleanup call void @__cxa_free_exception(ptr %exception.i.i54) #26 br label %lpad2.body @@ -22905,21 +22905,21 @@ invoke.cont92: ; preds = %invoke.cont88, %inv %add94 = add i32 %add, %count.0.lcssa.i68 %conv96 = zext i32 %add94 to i64 store ptr %prefix.addr, ptr %ref.tmp98, align 8 - %17 = getelementptr inbounds i8, ptr %ref.tmp98, i64 8 - store ptr %grouping, ptr %17, align 8 - %18 = getelementptr inbounds i8, ptr %ref.tmp98, i64 16 - store ptr %buffer, ptr %18, align 8 + %19 = getelementptr inbounds i8, ptr %ref.tmp98, i64 8 + store ptr %grouping, ptr %19, align 8 + %20 = getelementptr inbounds i8, ptr %ref.tmp98, i64 16 + store ptr %buffer, ptr %20, align 8 %call102 = invoke ptr @_ZN3fmt3v106detail12write_paddedILNS0_5align4typeE2ENS0_8appenderEcZNS1_9write_intIS5_mcEET_S7_T0_jRKNS0_12format_specsIT1_EERKNS1_14digit_groupingISA_EEEUlS5_E_EES8_S8_SD_mmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(16) %specs, i64 noundef %conv96, i64 noundef %conv96, ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp98) to label %cleanup unwind label %lpad2 cleanup: ; preds = %_ZN3fmt3v106detail10write_charIcNS0_8appenderEEET0_S4_T_RKNS0_12format_specsIS5_EE.exit, %invoke.cont92 %retval.sroa.0.0 = phi ptr [ %call.i.i49, %_ZN3fmt3v106detail10write_charIcNS0_8appenderEEET0_S4_T_RKNS0_12format_specsIS5_EE.exit ], [ %call102, %invoke.cont92 ] - %19 = load ptr, ptr %ptr_.i.i, align 8 - %cmp.not.i.i61 = icmp eq ptr %19, %store_.i + %21 = load ptr, ptr %ptr_.i.i, align 8 + %cmp.not.i.i61 = icmp eq ptr %21, %store_.i br i1 %cmp.not.i.i61, label %_ZN3fmt3v1019basic_memory_bufferIcLm500ESaIcEED2Ev.exit, label %if.then.i.i if.then.i.i: ; preds = %cleanup - call void @_ZdlPv(ptr noundef %19) #27 + call void @_ZdlPv(ptr noundef %21) #27 br label %_ZN3fmt3v1019basic_memory_bufferIcLm500ESaIcEED2Ev.exit _ZN3fmt3v1019basic_memory_bufferIcLm500ESaIcEED2Ev.exit: ; preds = %cleanup, %if.then.i.i @@ -24714,7 +24714,7 @@ lpad3: ; preds = %invoke.cont.i.i66.i br label %lpad3.body lpad3.body: ; preds = %lpad3, %lpad.i.i65, %lpad.i.i - %eh.lpad-body = phi { ptr, i32 } [ %8, %lpad.i.i ], [ %2, %lpad3 ], [ %13, %lpad.i.i65 ] + %eh.lpad-body = phi { ptr, i32 } [ %10, %lpad.i.i ], [ %2, %lpad3 ], [ %15, %lpad.i.i65 ] call void @_ZN3fmt3v1019basic_memory_bufferIcLm500ESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(536) %buffer) #26 resume { ptr, i32 } %eh.lpad-body @@ -24809,9 +24809,9 @@ land.lhs.true: ; preds = %invoke.cont60 if.then70: ; preds = %land.lhs.true %cmp.not.i53 = icmp eq i32 %prefix, 0 - %cond.i54 = select i1 %cmp.not.i53, i32 48, i32 12288 - %or.i55 = or i32 %cond.i54, %prefix - %add4.i56 = add i32 %or.i55, 16777216 + %7 = or i32 %prefix, 12288 + %8 = add i32 %7, 16777216 + %add4.i56 = select i1 %cmp.not.i53, i32 16777264, i32 %8 store i32 %add4.i56, ptr %prefix.addr, align 4 br label %invoke.cont73 @@ -24823,8 +24823,8 @@ sw.bb82: ; preds = %entry %conv84 = trunc i64 %value.coerce0 to i8 call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %ref.tmp.i) store i8 0, ptr %ref.tmp.i, align 1 - %7 = getelementptr inbounds i8, ptr %ref.tmp.i, i64 1 - store i8 %conv84, ptr %7, align 1 + %9 = getelementptr inbounds i8, ptr %ref.tmp.i, i64 1 + store i8 %conv84, ptr %9, align 1 %call.i.i57 = invoke ptr @_ZN3fmt3v106detail12write_paddedILNS0_5align4typeE1ENS0_8appenderEcRZNS1_10write_charIcS5_EET0_S7_T_RKNS0_12format_specsIS8_EEEUlS5_E_EES7_S7_RKNS9_IT1_EEmmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(16) %specs, i64 noundef 1, i64 noundef 1, ptr noundef nonnull align 1 dereferenceable(2) %ref.tmp.i) to label %_ZN3fmt3v106detail10write_charIcNS0_8appenderEEET0_S4_T_RKNS0_12format_specsIS5_EE.exit unwind label %lpad3 @@ -24850,14 +24850,14 @@ if.then.i: ; preds = %sw.epilog to label %invoke.cont.i.i66.invoke unwind label %lpad.i.i lpad.i.i: ; preds = %if.then.i - %8 = landingpad { ptr, i32 } + %10 = landingpad { ptr, i32 } cleanup call void @__cxa_free_exception(ptr %exception.i.i) #26 br label %lpad3.body invoke.cont94: ; preds = %sw.epilog - %9 = load i32, ptr %prefix.addr, align 4 - %shr = lshr i32 %9, 24 + %11 = load i32, ptr %prefix.addr, align 4 + %shr = lshr i32 %11, 24 %add = add nuw i32 %shr, %num_digits.0 %call.i.i = call ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %grouping) #26 %thousands_sep_.i.i = getelementptr inbounds i8, ptr %grouping, i64 32 @@ -24878,9 +24878,9 @@ if.then5.i.i: ; preds = %if.end.i.i59 br label %_ZNK3fmt3v106detail14digit_groupingIcE4nextERNS3_10next_stateE.exit.i if.end8.i.i60: ; preds = %if.end.i.i59 - %10 = load i8, ptr %state.sroa.0.09.i, align 1 - %11 = add i8 %10, -127 - %or.cond.i.i = icmp ult i8 %11, -126 + %12 = load i8, ptr %state.sroa.0.09.i, align 1 + %13 = add i8 %12, -127 + %or.cond.i.i = icmp ult i8 %13, -126 br i1 %or.cond.i.i, label %invoke.cont96, label %if.end20.i.i if.end20.i.i: ; preds = %if.end8.i.i60 @@ -24888,9 +24888,9 @@ if.end20.i.i: ; preds = %if.end8.i.i60 br label %_ZNK3fmt3v106detail14digit_groupingIcE4nextERNS3_10next_stateE.exit.i _ZNK3fmt3v106detail14digit_groupingIcE4nextERNS3_10next_stateE.exit.i: ; preds = %if.end20.i.i, %if.then5.i.i - %12 = phi i8 [ %.pre.i, %if.then5.i.i ], [ %10, %if.end20.i.i ] + %14 = phi i8 [ %.pre.i, %if.then5.i.i ], [ %12, %if.end20.i.i ] %state.sroa.0.1.i = phi ptr [ %state.sroa.0.09.i, %if.then5.i.i ], [ %incdec.ptr.i.i.i, %if.end20.i.i ] - %conv26.i.i = sext i8 %12 to i32 + %conv26.i.i = sext i8 %14 to i32 %add28.i.i = add nsw i32 %state.sroa.3.08.i, %conv26.i.i %cmp.i61 = icmp slt i32 %add28.i.i, %num_digits.0 br i1 %cmp.i61, label %while.body.i, label %invoke.cont96 @@ -24920,7 +24920,7 @@ invoke.cont.i.i66.cont: ; preds = %invoke.cont.i.i66.i unreachable lpad.i.i65: ; preds = %if.then.i63 - %13 = landingpad { ptr, i32 } + %15 = landingpad { ptr, i32 } cleanup call void @__cxa_free_exception(ptr %exception.i.i64) #26 br label %lpad3.body @@ -24930,21 +24930,21 @@ invoke.cont98: ; preds = %invoke.cont94, %inv %add100 = add i32 %add, %count.0.lcssa.i78 %conv102 = zext i32 %add100 to i64 store ptr %prefix.addr, ptr %ref.tmp104, align 8 - %14 = getelementptr inbounds i8, ptr %ref.tmp104, i64 8 - store ptr %grouping, ptr %14, align 8 - %15 = getelementptr inbounds i8, ptr %ref.tmp104, i64 16 - store ptr %buffer, ptr %15, align 8 + %16 = getelementptr inbounds i8, ptr %ref.tmp104, i64 8 + store ptr %grouping, ptr %16, align 8 + %17 = getelementptr inbounds i8, ptr %ref.tmp104, i64 16 + store ptr %buffer, ptr %17, align 8 %call108 = invoke ptr @_ZN3fmt3v106detail12write_paddedILNS0_5align4typeE2ENS0_8appenderEcZNS1_9write_intIS5_ocEET_S7_T0_jRKNS0_12format_specsIT1_EERKNS1_14digit_groupingISA_EEEUlS5_E_EES8_S8_SD_mmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(16) %specs, i64 noundef %conv102, i64 noundef %conv102, ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp104) to label %cleanup unwind label %lpad3 cleanup: ; preds = %_ZN3fmt3v106detail10write_charIcNS0_8appenderEEET0_S4_T_RKNS0_12format_specsIS5_EE.exit, %invoke.cont98 %retval.sroa.0.0 = phi ptr [ %call.i.i57, %_ZN3fmt3v106detail10write_charIcNS0_8appenderEEET0_S4_T_RKNS0_12format_specsIS5_EE.exit ], [ %call108, %invoke.cont98 ] - %16 = load ptr, ptr %ptr_.i.i, align 8 - %cmp.not.i.i71 = icmp eq ptr %16, %store_.i + %18 = load ptr, ptr %ptr_.i.i, align 8 + %cmp.not.i.i71 = icmp eq ptr %18, %store_.i br i1 %cmp.not.i.i71, label %_ZN3fmt3v1019basic_memory_bufferIcLm500ESaIcEED2Ev.exit, label %if.then.i.i if.then.i.i: ; preds = %cleanup - call void @_ZdlPv(ptr noundef %16) #27 + call void @_ZdlPv(ptr noundef %18) #27 br label %_ZN3fmt3v1019basic_memory_bufferIcLm500ESaIcEED2Ev.exit _ZN3fmt3v1019basic_memory_bufferIcLm500ESaIcEED2Ev.exit: ; preds = %cleanup, %if.then.i.i @@ -40815,16 +40815,16 @@ land.lhs.true.i: ; preds = %_ZN3fmt3v106detail1 if.then61.i: ; preds = %land.lhs.true.i %cmp.not.i138 = icmp eq i32 %arg.coerce1, 0 - %cond.i139 = select i1 %cmp.not.i138, i32 48, i32 12288 - %or.i140 = or i32 %cond.i139, %arg.coerce1 - %add4.i141 = add i32 %or.i140, 16777216 + %39 = or i32 %arg.coerce1, 12288 + %40 = add i32 %39, 16777216 + %add4.i141 = select i1 %cmp.not.i138, i32 16777264, i32 %40 br label %if.end62.i if.end62.i: ; preds = %_ZN3fmt3v106detail12count_digitsILi3EmEEiT0_.exit, %if.then61.i, %land.lhs.true.i %prefix.i.2 = phi i32 [ %add4.i141, %if.then61.i ], [ %arg.coerce1, %land.lhs.true.i ], [ %arg.coerce1, %_ZN3fmt3v106detail12count_digitsILi3EmEEiT0_.exit ] - %39 = load i32, ptr %specs, align 4 + %41 = load i32, ptr %specs, align 4 %add.i130 = add nsw i32 %.pre, 1 - %or.i131 = or i32 %add.i130, %39 + %or.i131 = or i32 %add.i130, %41 %cmp.i132 = icmp eq i32 %or.i131, 0 br i1 %cmp.i132, label %_ZN3fmt3v106detail11to_unsignedIiEENSt13make_unsignedIT_E4typeES4_.exit148, label %if.end30.i133 @@ -40846,26 +40846,26 @@ for.body.i150.lr.ph: ; preds = %if.then5.i145 for.body.i150: ; preds = %for.body.i150.lr.ph, %_ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIcEEEaSEOc.exit161 %p.i120.0175 = phi i32 [ %and.i146, %for.body.i150.lr.ph ], [ %shr15.i156, %_ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIcEEEaSEOc.exit161 ] %conv8.i152 = trunc i32 %p.i120.0175 to i8 - %40 = load i64, ptr %size_.i.i150, align 8 - %add.i.i151 = add i64 %40, 1 - %41 = load i64, ptr %capacity_.i.i.i152, align 8 - %cmp.i.i.i153 = icmp ult i64 %41, %add.i.i151 + %42 = load i64, ptr %size_.i.i150, align 8 + %add.i.i151 = add i64 %42, 1 + %43 = load i64, ptr %capacity_.i.i.i152, align 8 + %cmp.i.i.i153 = icmp ult i64 %43, %add.i.i151 br i1 %cmp.i.i.i153, label %if.then.i.i.i157, label %_ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIcEEEaSEOc.exit161 if.then.i.i.i157: ; preds = %for.body.i150 %vtable.i.i.i158 = load ptr, ptr %out.coerce, align 8 - %42 = load ptr, ptr %vtable.i.i.i158, align 8 - tail call void %42(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i151) + %44 = load ptr, ptr %vtable.i.i.i158, align 8 + tail call void %44(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i151) %.pre.i.i159 = load i64, ptr %size_.i.i150, align 8 %.pre1.i.i160 = add i64 %.pre.i.i159, 1 br label %_ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIcEEEaSEOc.exit161 _ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIcEEEaSEOc.exit161: ; preds = %for.body.i150, %if.then.i.i.i157 %inc.pre-phi.i.i154 = phi i64 [ %add.i.i151, %for.body.i150 ], [ %.pre1.i.i160, %if.then.i.i.i157 ] - %43 = phi i64 [ %40, %for.body.i150 ], [ %.pre.i.i159, %if.then.i.i.i157 ] - %44 = load ptr, ptr %ptr_.i.i155, align 8 + %45 = phi i64 [ %42, %for.body.i150 ], [ %.pre.i.i159, %if.then.i.i.i157 ] + %46 = load ptr, ptr %ptr_.i.i155, align 8 store i64 %inc.pre-phi.i.i154, ptr %size_.i.i150, align 8 - %arrayidx.i.i156 = getelementptr inbounds i8, ptr %44, i64 %43 + %arrayidx.i.i156 = getelementptr inbounds i8, ptr %46, i64 %45 store i8 %conv8.i152, ptr %arrayidx.i.i156, align 1 %shr15.i156 = lshr i32 %p.i120.0175, 8 %cmp6.i148.not = icmp ult i32 %p.i120.0175, 256 @@ -40877,23 +40877,23 @@ if.end.i142: ; preds = %_ZNSt20back_insert_ if.end30.i133: ; preds = %if.end62.i call void @_ZN3fmt3v106detail14write_int_dataIcEC2EijRKNS0_12format_specsIcEE(ptr noundef nonnull align 8 dereferenceable(16) %data.i126, i32 noundef %inc.i.i135, i32 noundef %prefix.i.2, ptr noundef nonnull align 4 dereferenceable(16) %specs) - %45 = load i64, ptr %data.i126, align 8 + %47 = load i64, ptr %data.i126, align 8 store i32 %prefix.i.2, ptr %ref.tmp32.i128, align 8 - %46 = getelementptr inbounds i8, ptr %ref.tmp32.i128, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %46, ptr noundef nonnull align 8 dereferenceable(16) %data.i126, i64 16, i1 false) - %47 = getelementptr inbounds i8, ptr %ref.tmp32.i128, i64 24 - store i64 %arg.coerce0, ptr %47, align 8 + %48 = getelementptr inbounds i8, ptr %ref.tmp32.i128, i64 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %48, ptr noundef nonnull align 8 dereferenceable(16) %data.i126, i64 16, i1 false) + %49 = getelementptr inbounds i8, ptr %ref.tmp32.i128, i64 24 + store i64 %arg.coerce0, ptr %49, align 8 %write_digits.i115.sroa.3.0..sroa_idx = getelementptr inbounds i8, ptr %ref.tmp32.i128, i64 32 store i32 %inc.i.i135, ptr %write_digits.i115.sroa.3.0..sroa_idx, align 8 - %call.i163 = call ptr @_ZN3fmt3v106detail12write_paddedILNS0_5align4typeE2ENS0_8appenderEcRZNS1_9write_intIS5_cZNS1_9write_intIcS5_mEET0_S8_NS1_13write_int_argIT1_EERKNS0_12format_specsIT_EENS1_10locale_refEEUlS5_E2_EESD_SD_ijRKNSC_IS8_EESA_EUlS5_E_EES8_S8_RKNSC_ISA_EEmmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(16) %specs, i64 noundef %45, i64 noundef %45, ptr noundef nonnull align 8 dereferenceable(40) %ref.tmp32.i128) + %call.i163 = call ptr @_ZN3fmt3v106detail12write_paddedILNS0_5align4typeE2ENS0_8appenderEcRZNS1_9write_intIS5_cZNS1_9write_intIcS5_mEET0_S8_NS1_13write_int_argIT1_EERKNS0_12format_specsIT_EENS1_10locale_refEEUlS5_E2_EESD_SD_ijRKNSC_IS8_EESA_EUlS5_E_EES8_S8_RKNSC_ISA_EEmmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(16) %specs, i64 noundef %47, i64 noundef %47, ptr noundef nonnull align 8 dereferenceable(40) %ref.tmp32.i128) br label %_ZN3fmt3v106detail9write_intIcNS0_8appenderEmEET0_S4_NS1_13write_int_argIT1_EERKNS0_12format_specsIT_EENS1_10locale_refE.exit sw.bb70.i: ; preds = %entry %conv72.i = trunc i64 %arg.coerce0 to i8 call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %ref.tmp.i164) store i8 0, ptr %ref.tmp.i164, align 1 - %48 = getelementptr inbounds i8, ptr %ref.tmp.i164, i64 1 - store i8 %conv72.i, ptr %48, align 1 + %50 = getelementptr inbounds i8, ptr %ref.tmp.i164, i64 1 + store i8 %conv72.i, ptr %50, align 1 %call.i.i167 = call ptr @_ZN3fmt3v106detail12write_paddedILNS0_5align4typeE1ENS0_8appenderEcRZNS1_10write_charIcS5_EET0_S7_T_RKNS0_12format_specsIS8_EEEUlS5_E_EES7_S7_RKNS9_IT1_EEmmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(16) %specs, i64 noundef 1, i64 noundef 1, ptr noundef nonnull align 1 dereferenceable(2) %ref.tmp.i164) call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %ref.tmp.i164) br label %_ZN3fmt3v106detail9write_intIcNS0_8appenderEmEET0_S4_NS1_13write_int_argIT1_EERKNS0_12format_specsIT_EENS1_10locale_refE.exit @@ -42268,16 +42268,16 @@ land.lhs.true.i: ; preds = %_ZN3fmt3v106detail1 if.then64.i: ; preds = %land.lhs.true.i %cmp.not.i152 = icmp eq i32 %agg.tmp3.sroa.2.0.copyload, 0 - %cond.i153 = select i1 %cmp.not.i152, i32 48, i32 12288 - %or.i154 = or i32 %cond.i153, %agg.tmp3.sroa.2.0.copyload - %add4.i155 = add i32 %or.i154, 16777216 + %38 = or i32 %agg.tmp3.sroa.2.0.copyload, 12288 + %39 = add i32 %38, 16777216 + %add4.i155 = select i1 %cmp.not.i152, i32 16777264, i32 %39 br label %if.end65.i if.end65.i: ; preds = %_ZN3fmt3v106detail12count_digitsILi3EoEEiT0_.exit, %if.then64.i, %land.lhs.true.i %prefix.i.2 = phi i32 [ %add4.i155, %if.then64.i ], [ %agg.tmp3.sroa.2.0.copyload, %land.lhs.true.i ], [ %agg.tmp3.sroa.2.0.copyload, %_ZN3fmt3v106detail12count_digitsILi3EoEEiT0_.exit ] - %38 = load i32, ptr %specs, align 4 + %40 = load i32, ptr %specs, align 4 %add.i132 = add nsw i32 %.pre, 1 - %or.i133 = or i32 %add.i132, %38 + %or.i133 = or i32 %add.i132, %40 %cmp.i134 = icmp eq i32 %or.i133, 0 br i1 %cmp.i134, label %_ZN3fmt3v106detail11to_unsignedIiEENSt13make_unsignedIT_E4typeES4_.exit162, label %if.end30.i135 @@ -42299,26 +42299,26 @@ for.body.i152.lr.ph: ; preds = %if.then5.i147 for.body.i152: ; preds = %for.body.i152.lr.ph, %_ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIcEEEaSEOc.exit175 %p.i122.0206 = phi i32 [ %and.i148, %for.body.i152.lr.ph ], [ %shr15.i158, %_ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIcEEEaSEOc.exit175 ] %conv8.i154 = trunc i32 %p.i122.0206 to i8 - %39 = load i64, ptr %size_.i.i164, align 8 - %add.i.i165 = add i64 %39, 1 - %40 = load i64, ptr %capacity_.i.i.i166, align 8 - %cmp.i.i.i167 = icmp ult i64 %40, %add.i.i165 + %41 = load i64, ptr %size_.i.i164, align 8 + %add.i.i165 = add i64 %41, 1 + %42 = load i64, ptr %capacity_.i.i.i166, align 8 + %cmp.i.i.i167 = icmp ult i64 %42, %add.i.i165 br i1 %cmp.i.i.i167, label %if.then.i.i.i171, label %_ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIcEEEaSEOc.exit175 if.then.i.i.i171: ; preds = %for.body.i152 %vtable.i.i.i172 = load ptr, ptr %out.coerce, align 8 - %41 = load ptr, ptr %vtable.i.i.i172, align 8 - tail call void %41(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i165) + %43 = load ptr, ptr %vtable.i.i.i172, align 8 + tail call void %43(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i165) %.pre.i.i173 = load i64, ptr %size_.i.i164, align 8 %.pre1.i.i174 = add i64 %.pre.i.i173, 1 br label %_ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIcEEEaSEOc.exit175 _ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIcEEEaSEOc.exit175: ; preds = %for.body.i152, %if.then.i.i.i171 %inc.pre-phi.i.i168 = phi i64 [ %add.i.i165, %for.body.i152 ], [ %.pre1.i.i174, %if.then.i.i.i171 ] - %42 = phi i64 [ %39, %for.body.i152 ], [ %.pre.i.i173, %if.then.i.i.i171 ] - %43 = load ptr, ptr %ptr_.i.i169, align 8 + %44 = phi i64 [ %41, %for.body.i152 ], [ %.pre.i.i173, %if.then.i.i.i171 ] + %45 = load ptr, ptr %ptr_.i.i169, align 8 store i64 %inc.pre-phi.i.i168, ptr %size_.i.i164, align 8 - %arrayidx.i.i170 = getelementptr inbounds i8, ptr %43, i64 %42 + %arrayidx.i.i170 = getelementptr inbounds i8, ptr %45, i64 %44 store i8 %conv8.i154, ptr %arrayidx.i.i170, align 1 %shr15.i158 = lshr i32 %p.i122.0206, 8 %cmp6.i150.not = icmp ult i32 %p.i122.0206, 256 @@ -42330,23 +42330,23 @@ if.end.i144: ; preds = %_ZNSt20back_insert_ if.end30.i135: ; preds = %if.end65.i call void @_ZN3fmt3v106detail14write_int_dataIcEC2EijRKNS0_12format_specsIcEE(ptr noundef nonnull align 8 dereferenceable(16) %data.i128, i32 noundef %inc.i.i149, i32 noundef %prefix.i.2, ptr noundef nonnull align 4 dereferenceable(16) %specs) - %44 = load i64, ptr %data.i128, align 8 + %46 = load i64, ptr %data.i128, align 8 store i32 %prefix.i.2, ptr %ref.tmp32.i130, align 16 - %45 = getelementptr inbounds i8, ptr %ref.tmp32.i130, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %45, ptr noundef nonnull align 8 dereferenceable(16) %data.i128, i64 16, i1 false) - %46 = getelementptr inbounds i8, ptr %ref.tmp32.i130, i64 32 - store i128 %agg.tmp3.sroa.0.0.copyload, ptr %46, align 16 + %47 = getelementptr inbounds i8, ptr %ref.tmp32.i130, i64 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %47, ptr noundef nonnull align 8 dereferenceable(16) %data.i128, i64 16, i1 false) + %48 = getelementptr inbounds i8, ptr %ref.tmp32.i130, i64 32 + store i128 %agg.tmp3.sroa.0.0.copyload, ptr %48, align 16 %agg.tmp67.i115.sroa.3.0..sroa_idx = getelementptr inbounds i8, ptr %ref.tmp32.i130, i64 48 store i32 %inc.i.i149, ptr %agg.tmp67.i115.sroa.3.0..sroa_idx, align 16 - %call.i180 = call ptr @_ZN3fmt3v106detail12write_paddedILNS0_5align4typeE2ENS0_8appenderEcRZNS1_9write_intIS5_cZNS1_9write_intIcS5_oEET0_S8_NS1_13write_int_argIT1_EERKNS0_12format_specsIT_EENS1_10locale_refEEUlS5_E2_EESD_SD_ijRKNSC_IS8_EESA_EUlS5_E_EES8_S8_RKNSC_ISA_EEmmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(16) %specs, i64 noundef %44, i64 noundef %44, ptr noundef nonnull align 16 dereferenceable(64) %ref.tmp32.i130) + %call.i180 = call ptr @_ZN3fmt3v106detail12write_paddedILNS0_5align4typeE2ENS0_8appenderEcRZNS1_9write_intIS5_cZNS1_9write_intIcS5_oEET0_S8_NS1_13write_int_argIT1_EERKNS0_12format_specsIT_EENS1_10locale_refEEUlS5_E2_EESD_SD_ijRKNSC_IS8_EESA_EUlS5_E_EES8_S8_RKNSC_ISA_EEmmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(16) %specs, i64 noundef %46, i64 noundef %46, ptr noundef nonnull align 16 dereferenceable(64) %ref.tmp32.i130) br label %_ZN3fmt3v106detail9write_intIcNS0_8appenderEoEET0_S4_NS1_13write_int_argIT1_EERKNS0_12format_specsIT_EENS1_10locale_refE.exit sw.bb73.i: ; preds = %entry %conv75.i = trunc i128 %agg.tmp3.sroa.0.0.copyload to i8 call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %ref.tmp.i181) store i8 0, ptr %ref.tmp.i181, align 1 - %47 = getelementptr inbounds i8, ptr %ref.tmp.i181, i64 1 - store i8 %conv75.i, ptr %47, align 1 + %49 = getelementptr inbounds i8, ptr %ref.tmp.i181, i64 1 + store i8 %conv75.i, ptr %49, align 1 %call.i.i185 = call ptr @_ZN3fmt3v106detail12write_paddedILNS0_5align4typeE1ENS0_8appenderEcRZNS1_10write_charIcS5_EET0_S7_T_RKNS0_12format_specsIS8_EEEUlS5_E_EES7_S7_RKNS9_IT1_EEmmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(16) %specs, i64 noundef 1, i64 noundef 1, ptr noundef nonnull align 1 dereferenceable(2) %ref.tmp.i181) call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %ref.tmp.i181) br label %_ZN3fmt3v106detail9write_intIcNS0_8appenderEoEET0_S4_NS1_13write_int_argIT1_EERKNS0_12format_specsIT_EENS1_10locale_refE.exit diff --git a/bench/fmt/optimized/format-test.cc.ll b/bench/fmt/optimized/format-test.cc.ll index 0227fad864d..ef4707ad3ee 100644 --- a/bench/fmt/optimized/format-test.cc.ll +++ b/bench/fmt/optimized/format-test.cc.ll @@ -179142,39 +179142,39 @@ land.lhs.true: ; preds = %invoke.cont52 if.then62: ; preds = %land.lhs.true %cmp.not.i137 = icmp eq i32 %prefix, 0 - %cond.i138 = select i1 %cmp.not.i137, i32 48, i32 12288 - %or.i139 = or i32 %cond.i138, %prefix - %add4.i140 = add i32 %or.i139, 16777216 + %44 = or i32 %prefix, 12288 + %45 = add i32 %44, 16777216 + %add4.i140 = select i1 %cmp.not.i137, i32 16777264, i32 %45 store i32 %add4.i140, ptr %prefix.addr, align 4 br label %invoke.cont65 invoke.cont65: ; preds = %invoke.cont52, %land.lhs.true, %if.then62 - %44 = phi i32 [ %prefix, %invoke.cont52 ], [ %prefix, %land.lhs.true ], [ %add4.i140, %if.then62 ] + %46 = phi i32 [ %prefix, %invoke.cont52 ], [ %prefix, %land.lhs.true ], [ %add4.i140, %if.then62 ] call void @llvm.lifetime.start.p0(i64 22, ptr nonnull %buffer.i141) %conv.i142 = zext nneg i32 %inc.i.i134 to i64 %size_.i.i.i143 = getelementptr inbounds i8, ptr %buffer, i64 16 - %45 = load i64, ptr %size_.i.i.i143, align 8 - %46 = load i64, ptr %capacity_.i.i, align 8 - %add.i.i145 = add i64 %45, %conv.i142 - %cmp.i.i146 = icmp ult i64 %46, %add.i.i145 + %47 = load i64, ptr %size_.i.i.i143, align 8 + %48 = load i64, ptr %capacity_.i.i, align 8 + %add.i.i145 = add i64 %47, %conv.i142 + %cmp.i.i146 = icmp ult i64 %48, %add.i.i145 br i1 %cmp.i.i146, label %if.end.i162, label %_ZN3fmt3v106detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i147 _ZN3fmt3v106detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i147: ; preds = %invoke.cont65 store i64 %add.i.i145, ptr %size_.i.i.i143, align 8 - %47 = load ptr, ptr %ptr_.i.i, align 8 - %tobool.not.i149 = icmp eq ptr %47, null + %49 = load ptr, ptr %ptr_.i.i, align 8 + %tobool.not.i149 = icmp eq ptr %49, null br i1 %tobool.not.i149, label %if.end.i162, label %if.then.i150 if.then.i150: ; preds = %_ZN3fmt3v106detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i147 - %add.ptr.i.i151 = getelementptr inbounds i8, ptr %47, i64 %45 + %add.ptr.i.i151 = getelementptr inbounds i8, ptr %49, i64 %47 %add.ptr.i7.i153 = getelementptr inbounds i8, ptr %add.ptr.i.i151, i64 %conv.i142 br label %do.body.i.i154 do.body.i.i154: ; preds = %do.body.i.i154, %if.then.i150 %value.addr.0.i.i155 = phi i64 [ %value, %if.then.i150 ], [ %shr.i.i160, %do.body.i.i154 ] %buffer.addr.0.i.i156 = phi ptr [ %add.ptr.i7.i153, %if.then.i150 ], [ %incdec.ptr.i.i159, %do.body.i.i154 ] - %48 = trunc i64 %value.addr.0.i.i155 to i8 - %conv.i.i157 = and i8 %48, 7 + %50 = trunc i64 %value.addr.0.i.i155 to i8 + %conv.i.i157 = and i8 %50, 7 %add.i8.i158 = or disjoint i8 %conv.i.i157, 48 %incdec.ptr.i.i159 = getelementptr inbounds i8, ptr %buffer.addr.0.i.i156, i64 -1 store i8 %add.i8.i158, ptr %incdec.ptr.i.i159, align 1 @@ -179183,7 +179183,7 @@ do.body.i.i154: ; preds = %do.body.i.i154, %if br i1 %cmp.not.i.i161, label %_ZN3fmt3v106detail11format_uintILj3EcNS0_8appenderEmEET1_S4_T2_ib.exit, label %do.body.i.i154, !llvm.loop !6484 if.end.i162: ; preds = %_ZN3fmt3v106detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i147, %invoke.cont65 - %.pre.i.i.i.i163 = phi i64 [ %45, %invoke.cont65 ], [ %add.i.i145, %_ZN3fmt3v106detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i147 ] + %.pre.i.i.i.i163 = phi i64 [ %47, %invoke.cont65 ], [ %add.i.i145, %_ZN3fmt3v106detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i147 ] call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(22) %buffer.i141, i8 0, i64 22, i1 false) %add.ptr.i10.i165 = getelementptr inbounds i8, ptr %buffer.i141, i64 %conv.i142 br label %do.body.i11.i166 @@ -179191,8 +179191,8 @@ if.end.i162: ; preds = %_ZN3fmt3v106detail1 do.body.i11.i166: ; preds = %do.body.i11.i166, %if.end.i162 %value.addr.0.i12.i167 = phi i64 [ %value, %if.end.i162 ], [ %shr.i17.i172, %do.body.i11.i166 ] %buffer.addr.0.i13.i168 = phi ptr [ %add.ptr.i10.i165, %if.end.i162 ], [ %incdec.ptr.i16.i171, %do.body.i11.i166 ] - %49 = trunc i64 %value.addr.0.i12.i167 to i8 - %conv.i14.i169 = and i8 %49, 7 + %51 = trunc i64 %value.addr.0.i12.i167 to i8 + %conv.i14.i169 = and i8 %51, 7 %add.i15.i170 = or disjoint i8 %conv.i14.i169, 48 %incdec.ptr.i16.i171 = getelementptr inbounds i8, ptr %buffer.addr.0.i13.i168, i64 -1 store i8 %add.i15.i170, ptr %incdec.ptr.i16.i171, align 1 @@ -179205,19 +179205,19 @@ _ZN3fmt3v106detail11format_uintILj3EcmEEPT0_S4_T1_ib.exit19.i: ; preds = %do.bod br label %while.body.i.i.i.i178 while.body.i.i.i.i178: ; preds = %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i191, %_ZN3fmt3v106detail11format_uintILj3EcmEEPT0_S4_T1_ib.exit19.i - %50 = phi i64 [ %.pre.i.i.i.i163, %_ZN3fmt3v106detail11format_uintILj3EcmEEPT0_S4_T1_ib.exit19.i ], [ %add7.i.i.i.i192, %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i191 ] + %52 = phi i64 [ %.pre.i.i.i.i163, %_ZN3fmt3v106detail11format_uintILj3EcmEEPT0_S4_T1_ib.exit19.i ], [ %add7.i.i.i.i192, %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i191 ] %begin.addr.011.i.i.i.i179 = phi ptr [ %buffer.i141, %_ZN3fmt3v106detail11format_uintILj3EcmEEPT0_S4_T1_ib.exit19.i ], [ %add.ptr8.i.i.i.i193, %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i191 ] %sub.ptr.rhs.cast.i.i.i.i180 = ptrtoint ptr %begin.addr.011.i.i.i.i179 to i64 %sub.ptr.sub.i.i.i.i181 = sub i64 %sub.ptr.lhs.cast.i.i.i.i176, %sub.ptr.rhs.cast.i.i.i.i180 - %add.i.i.i.i182 = add i64 %sub.ptr.sub.i.i.i.i181, %50 - %51 = load i64, ptr %capacity_.i.i, align 8 - %cmp.i.i.i.i.i183 = icmp ult i64 %51, %add.i.i.i.i182 + %add.i.i.i.i182 = add i64 %sub.ptr.sub.i.i.i.i181, %52 + %53 = load i64, ptr %capacity_.i.i, align 8 + %cmp.i.i.i.i.i183 = icmp ult i64 %53, %add.i.i.i.i182 br i1 %cmp.i.i.i.i.i183, label %if.then.i.i.i.i.i195, label %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i184 if.then.i.i.i.i.i195: ; preds = %while.body.i.i.i.i178 %vtable.i.i.i.i.i196 = load ptr, ptr %buffer, align 8 - %52 = load ptr, ptr %vtable.i.i.i.i.i196, align 8 - invoke void %52(ptr noundef nonnull align 8 dereferenceable(32) %buffer, i64 noundef %add.i.i.i.i182) + %54 = load ptr, ptr %vtable.i.i.i.i.i196, align 8 + invoke void %54(ptr noundef nonnull align 8 dereferenceable(32) %buffer, i64 noundef %add.i.i.i.i182) to label %.noexc199 unwind label %lpad2.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit .noexc199: ; preds = %if.then.i.i.i.i.i195 @@ -179226,23 +179226,23 @@ if.then.i.i.i.i.i195: ; preds = %while.body.i.i.i.i1 br label %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i184 _ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i184: ; preds = %.noexc199, %while.body.i.i.i.i178 - %53 = phi i64 [ %50, %while.body.i.i.i.i178 ], [ %.pre13.i.i.i.i198, %.noexc199 ] - %54 = phi i64 [ %51, %while.body.i.i.i.i178 ], [ %.pre12.i.i.i.i197, %.noexc199 ] - %sub.i.i.i.i185 = sub i64 %54, %53 + %55 = phi i64 [ %52, %while.body.i.i.i.i178 ], [ %.pre13.i.i.i.i198, %.noexc199 ] + %56 = phi i64 [ %53, %while.body.i.i.i.i178 ], [ %.pre12.i.i.i.i197, %.noexc199 ] + %sub.i.i.i.i185 = sub i64 %56, %55 %spec.select.i.i.i.i186 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i185, i64 %sub.ptr.sub.i.i.i.i181) %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i187 = icmp eq i64 %spec.select.i.i.i.i186, 0 br i1 %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i187, label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i191, label %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i188 if.then.i.i.i.i.i.i.i.i.i.i.i.i.i188: ; preds = %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i184 - %55 = load ptr, ptr %ptr_.i.i, align 8 - %add.ptr.i.i.i.i189 = getelementptr inbounds i8, ptr %55, i64 %53 + %57 = load ptr, ptr %ptr_.i.i, align 8 + %add.ptr.i.i.i.i189 = getelementptr inbounds i8, ptr %57, i64 %55 call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr.i.i.i.i189, ptr align 1 %begin.addr.011.i.i.i.i179, i64 %spec.select.i.i.i.i186, i1 false) %.pre14.i.i.i.i190 = load i64, ptr %size_.i.i.i143, align 8 br label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i191 _ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i191: ; preds = %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i188, %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i184 - %56 = phi i64 [ %53, %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i184 ], [ %.pre14.i.i.i.i190, %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i188 ] - %add7.i.i.i.i192 = add i64 %56, %spec.select.i.i.i.i186 + %58 = phi i64 [ %55, %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i184 ], [ %.pre14.i.i.i.i190, %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i188 ] + %add7.i.i.i.i192 = add i64 %58, %spec.select.i.i.i.i186 store i64 %add7.i.i.i.i192, ptr %size_.i.i.i143, align 8 %add.ptr8.i.i.i.i193 = getelementptr inbounds i8, ptr %begin.addr.011.i.i.i.i179, i64 %spec.select.i.i.i.i186 %cmp.not.i.i.i.i194 = icmp eq ptr %add.ptr8.i.i.i.i193, %add.ptr.i10.i165 @@ -179256,8 +179256,8 @@ sw.bb73: ; preds = %entry %conv75 = trunc i64 %value to i8 call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %ref.tmp.i) store i8 0, ptr %ref.tmp.i, align 1 - %57 = getelementptr inbounds i8, ptr %ref.tmp.i, i64 1 - store i8 %conv75, ptr %57, align 1 + %59 = getelementptr inbounds i8, ptr %ref.tmp.i, i64 1 + store i8 %conv75, ptr %59, align 1 %call.i.i200 = invoke ptr @_ZN3fmt3v106detail12write_paddedILNS0_5align4typeE1ENS0_8appenderEcRZNS1_10write_charIcS5_EET0_S7_T_RKNS0_12format_specsIS8_EEEUlS5_E_EES7_S7_RKNS9_IT1_EEmmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(16) %specs, i64 noundef 1, i64 noundef 1, ptr noundef nonnull align 1 dereferenceable(2) %ref.tmp.i) to label %_ZN3fmt3v106detail10write_charIcNS0_8appenderEEET0_S4_T_RKNS0_12format_specsIS5_EE.exit unwind label %lpad2.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp @@ -179273,7 +179273,7 @@ invoke.cont82: ; preds = %sw.default unreachable sw.epilog: ; preds = %_ZN3fmt3v106detail11format_uintILj3EcNS0_8appenderEmEET1_S4_T2_ib.exit, %_ZN3fmt3v106detail11format_uintILj1EcNS0_8appenderEmEET1_S4_T2_ib.exit, %_ZN3fmt3v106detail11format_uintILj4EcNS0_8appenderEmEET1_S4_T2_ib.exit, %_ZN3fmt3v106detail14format_decimalIcmNS0_8appenderETnNSt9enable_ifIXntsr3std10is_pointerINSt9remove_cvINSt16remove_referenceIT1_E4typeEE4typeEEE5valueEiE4typeELi0EEENS1_21format_decimal_resultIS7_EES7_T0_i.exit - %58 = phi i32 [ %.pre, %_ZN3fmt3v106detail14format_decimalIcmNS0_8appenderETnNSt9enable_ifIXntsr3std10is_pointerINSt9remove_cvINSt16remove_referenceIT1_E4typeEE4typeEEE5valueEiE4typeELi0EEENS1_21format_decimal_resultIS7_EES7_T0_i.exit ], [ %15, %_ZN3fmt3v106detail11format_uintILj4EcNS0_8appenderEmEET1_S4_T2_ib.exit ], [ %29, %_ZN3fmt3v106detail11format_uintILj1EcNS0_8appenderEmEET1_S4_T2_ib.exit ], [ %44, %_ZN3fmt3v106detail11format_uintILj3EcNS0_8appenderEmEET1_S4_T2_ib.exit ] + %60 = phi i32 [ %.pre, %_ZN3fmt3v106detail14format_decimalIcmNS0_8appenderETnNSt9enable_ifIXntsr3std10is_pointerINSt9remove_cvINSt16remove_referenceIT1_E4typeEE4typeEEE5valueEiE4typeELi0EEENS1_21format_decimal_resultIS7_EES7_T0_i.exit ], [ %15, %_ZN3fmt3v106detail11format_uintILj4EcNS0_8appenderEmEET1_S4_T2_ib.exit ], [ %29, %_ZN3fmt3v106detail11format_uintILj1EcNS0_8appenderEmEET1_S4_T2_ib.exit ], [ %46, %_ZN3fmt3v106detail11format_uintILj3EcNS0_8appenderEmEET1_S4_T2_ib.exit ] %num_digits.0 = phi i32 [ %sub.i.i, %_ZN3fmt3v106detail14format_decimalIcmNS0_8appenderETnNSt9enable_ifIXntsr3std10is_pointerINSt9remove_cvINSt16remove_referenceIT1_E4typeEE4typeEEE5valueEiE4typeELi0EEENS1_21format_decimal_resultIS7_EES7_T0_i.exit ], [ %inc.i.i, %_ZN3fmt3v106detail11format_uintILj4EcNS0_8appenderEmEET1_S4_T2_ib.exit ], [ %inc.i.i73, %_ZN3fmt3v106detail11format_uintILj1EcNS0_8appenderEmEET1_S4_T2_ib.exit ], [ %inc.i.i134, %_ZN3fmt3v106detail11format_uintILj3EcNS0_8appenderEmEET1_S4_T2_ib.exit ] %call.i.i = call ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %grouping) #29 %thousands_sep_.i.i = getelementptr inbounds i8, ptr %grouping, i64 32 @@ -179294,9 +179294,9 @@ if.then5.i.i: ; preds = %if.end.i.i201 br label %_ZNK3fmt3v106detail14digit_groupingIcE4nextERNS3_10next_stateE.exit.i if.end8.i.i: ; preds = %if.end.i.i201 - %59 = load i8, ptr %state.sroa.0.09.i, align 1 - %60 = add i8 %59, -127 - %or.cond.i.i = icmp ult i8 %60, -126 + %61 = load i8, ptr %state.sroa.0.09.i, align 1 + %62 = add i8 %61, -127 + %or.cond.i.i = icmp ult i8 %62, -126 br i1 %or.cond.i.i, label %invoke.cont86, label %if.end20.i.i if.end20.i.i: ; preds = %if.end8.i.i @@ -179304,9 +179304,9 @@ if.end20.i.i: ; preds = %if.end8.i.i br label %_ZNK3fmt3v106detail14digit_groupingIcE4nextERNS3_10next_stateE.exit.i _ZNK3fmt3v106detail14digit_groupingIcE4nextERNS3_10next_stateE.exit.i: ; preds = %if.end20.i.i, %if.then5.i.i - %61 = phi i8 [ %.pre.i, %if.then5.i.i ], [ %59, %if.end20.i.i ] + %63 = phi i8 [ %.pre.i, %if.then5.i.i ], [ %61, %if.end20.i.i ] %state.sroa.0.1.i = phi ptr [ %state.sroa.0.09.i, %if.then5.i.i ], [ %incdec.ptr.i.i.i, %if.end20.i.i ] - %conv26.i.i = sext i8 %61 to i32 + %conv26.i.i = sext i8 %63 to i32 %add28.i.i = add nsw i32 %state.sroa.3.08.i, %conv26.i.i %cmp.i202 = icmp slt i32 %add28.i.i, %num_digits.0 br i1 %cmp.i202, label %while.body.i, label %invoke.cont86 @@ -179318,26 +179318,26 @@ while.body.i: ; preds = %_ZNK3fmt3v106detail invoke.cont86: ; preds = %while.body.i, %_ZNK3fmt3v106detail14digit_groupingIcE4nextERNS3_10next_stateE.exit.i, %if.end8.i.i, %sw.epilog %count.0.lcssa.i = phi i32 [ 0, %sw.epilog ], [ %count.010.i, %_ZNK3fmt3v106detail14digit_groupingIcE4nextERNS3_10next_stateE.exit.i ], [ %inc.i, %while.body.i ], [ %count.010.i, %if.end8.i.i ] - %shr = lshr i32 %58, 24 + %shr = lshr i32 %60, 24 %add = add i32 %shr, %num_digits.0 %add89 = add i32 %add, %count.0.lcssa.i %conv91 = zext i32 %add89 to i64 store ptr %prefix.addr, ptr %ref.tmp93, align 8 - %62 = getelementptr inbounds i8, ptr %ref.tmp93, i64 8 - store ptr %grouping, ptr %62, align 8 - %63 = getelementptr inbounds i8, ptr %ref.tmp93, i64 16 - store ptr %buffer, ptr %63, align 8 + %64 = getelementptr inbounds i8, ptr %ref.tmp93, i64 8 + store ptr %grouping, ptr %64, align 8 + %65 = getelementptr inbounds i8, ptr %ref.tmp93, i64 16 + store ptr %buffer, ptr %65, align 8 %call97 = invoke ptr @_ZN3fmt3v106detail12write_paddedILNS0_5align4typeE2ENS0_8appenderEcZNS1_9write_intIS5_mcEET_S7_T0_jRKNS0_12format_specsIT1_EERKNS1_14digit_groupingISA_EEEUlS5_E_EES8_S8_SD_mmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(16) %specs, i64 noundef %conv91, i64 noundef %conv91, ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp93) to label %cleanup unwind label %lpad2.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp cleanup: ; preds = %_ZN3fmt3v106detail10write_charIcNS0_8appenderEEET0_S4_T_RKNS0_12format_specsIS5_EE.exit, %invoke.cont86 %retval.sroa.0.0 = phi ptr [ %call.i.i200, %_ZN3fmt3v106detail10write_charIcNS0_8appenderEEET0_S4_T_RKNS0_12format_specsIS5_EE.exit ], [ %call97, %invoke.cont86 ] - %64 = load ptr, ptr %ptr_.i.i, align 8 - %cmp.not.i.i204 = icmp eq ptr %64, %store_.i + %66 = load ptr, ptr %ptr_.i.i, align 8 + %cmp.not.i.i204 = icmp eq ptr %66, %store_.i br i1 %cmp.not.i.i204, label %_ZN3fmt3v1019basic_memory_bufferIcLm500ESaIcEED2Ev.exit, label %if.then.i.i205 if.then.i.i205: ; preds = %cleanup - call void @_ZdlPv(ptr noundef %64) #30 + call void @_ZdlPv(ptr noundef %66) #30 br label %_ZN3fmt3v1019basic_memory_bufferIcLm500ESaIcEED2Ev.exit _ZN3fmt3v1019basic_memory_bufferIcLm500ESaIcEED2Ev.exit: ; preds = %cleanup, %if.then.i.i205 diff --git a/bench/fmt/optimized/format.cc.ll b/bench/fmt/optimized/format.cc.ll index 3c48dee57f7..210d3ef5a03 100644 --- a/bench/fmt/optimized/format.cc.ll +++ b/bench/fmt/optimized/format.cc.ll @@ -26748,16 +26748,16 @@ land.lhs.true.i: ; preds = %_ZN3fmt3v106detail1 if.then61.i: ; preds = %land.lhs.true.i %cmp.not.i256 = icmp eq i32 %arg.coerce1, 0 - %cond.i257 = select i1 %cmp.not.i256, i32 48, i32 12288 - %or.i258 = or i32 %cond.i257, %arg.coerce1 - %add4.i259 = add i32 %or.i258, 16777216 + %71 = or i32 %arg.coerce1, 12288 + %72 = add i32 %71, 16777216 + %add4.i259 = select i1 %cmp.not.i256, i32 16777264, i32 %72 br label %if.end62.i if.end62.i: ; preds = %_ZN3fmt3v106detail12count_digitsILi3EmEEiT0_.exit, %if.then61.i, %land.lhs.true.i %prefix.i.2 = phi i32 [ %add4.i259, %if.then61.i ], [ %arg.coerce1, %land.lhs.true.i ], [ %arg.coerce1, %_ZN3fmt3v106detail12count_digitsILi3EmEEiT0_.exit ] - %71 = load i32, ptr %specs, align 4 + %73 = load i32, ptr %specs, align 4 %add.i130 = add nsw i32 %.pre, 1 - %or.i131 = or i32 %add.i130, %71 + %or.i131 = or i32 %add.i130, %73 %cmp.i132 = icmp eq i32 %or.i131, 0 br i1 %cmp.i132, label %if.then.i135, label %if.end30.i133 @@ -26779,26 +26779,26 @@ for.body.i150.lr.ph: ; preds = %if.then5.i145 for.body.i150: ; preds = %for.body.i150.lr.ph, %_ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIcEEEaSEOc.exit272 %p.i120.0366 = phi i32 [ %and.i146, %for.body.i150.lr.ph ], [ %shr15.i156, %_ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIcEEEaSEOc.exit272 ] %conv8.i152 = trunc i32 %p.i120.0366 to i8 - %72 = load i64, ptr %size_.i.i261, align 8 - %add.i.i262 = add i64 %72, 1 - %73 = load i64, ptr %capacity_.i.i.i263, align 8 - %cmp.i.i.i264 = icmp ult i64 %73, %add.i.i262 + %74 = load i64, ptr %size_.i.i261, align 8 + %add.i.i262 = add i64 %74, 1 + %75 = load i64, ptr %capacity_.i.i.i263, align 8 + %cmp.i.i.i264 = icmp ult i64 %75, %add.i.i262 br i1 %cmp.i.i.i264, label %if.then.i.i.i268, label %_ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIcEEEaSEOc.exit272 if.then.i.i.i268: ; preds = %for.body.i150 %vtable.i.i.i269 = load ptr, ptr %out.coerce, align 8 - %74 = load ptr, ptr %vtable.i.i.i269, align 8 - tail call void %74(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i262) + %76 = load ptr, ptr %vtable.i.i.i269, align 8 + tail call void %76(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i262) %.pre.i.i270 = load i64, ptr %size_.i.i261, align 8 %.pre1.i.i271 = add i64 %.pre.i.i270, 1 br label %_ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIcEEEaSEOc.exit272 _ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIcEEEaSEOc.exit272: ; preds = %for.body.i150, %if.then.i.i.i268 %inc.pre-phi.i.i265 = phi i64 [ %add.i.i262, %for.body.i150 ], [ %.pre1.i.i271, %if.then.i.i.i268 ] - %75 = phi i64 [ %72, %for.body.i150 ], [ %.pre.i.i270, %if.then.i.i.i268 ] - %76 = load ptr, ptr %ptr_.i.i266, align 8 + %77 = phi i64 [ %74, %for.body.i150 ], [ %.pre.i.i270, %if.then.i.i.i268 ] + %78 = load ptr, ptr %ptr_.i.i266, align 8 store i64 %inc.pre-phi.i.i265, ptr %size_.i.i261, align 8 - %arrayidx.i.i267 = getelementptr inbounds i8, ptr %76, i64 %75 + %arrayidx.i.i267 = getelementptr inbounds i8, ptr %78, i64 %77 store i8 %conv8.i152, ptr %arrayidx.i.i267, align 1 %shr15.i156 = lshr i32 %p.i120.0366, 8 %cmp6.i148.not = icmp ult i32 %p.i120.0366, 256 @@ -26808,30 +26808,30 @@ if.end.i142: ; preds = %_ZNSt20back_insert_ call void @llvm.lifetime.start.p0(i64 22, ptr nonnull %buffer.i.i273) %conv.i.i274 = zext nneg i32 %inc.i.i253 to i64 %size_.i.i.i.i275 = getelementptr inbounds i8, ptr %out.coerce, i64 16 - %77 = load i64, ptr %size_.i.i.i.i275, align 8 + %79 = load i64, ptr %size_.i.i.i.i275, align 8 %capacity_.i.i.i.i276 = getelementptr inbounds i8, ptr %out.coerce, i64 24 - %78 = load i64, ptr %capacity_.i.i.i.i276, align 8 - %add.i.i.i277 = add i64 %77, %conv.i.i274 - %cmp.i.i.i278 = icmp ult i64 %78, %add.i.i.i277 + %80 = load i64, ptr %capacity_.i.i.i.i276, align 8 + %add.i.i.i277 = add i64 %79, %conv.i.i274 + %cmp.i.i.i278 = icmp ult i64 %80, %add.i.i.i277 br i1 %cmp.i.i.i278, label %if.end.i.i294, label %_ZN3fmt3v106detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i279 _ZN3fmt3v106detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i279: ; preds = %if.end.i142 store i64 %add.i.i.i277, ptr %size_.i.i.i.i275, align 8 %ptr_.i.i.i.i280 = getelementptr inbounds i8, ptr %out.coerce, i64 8 - %79 = load ptr, ptr %ptr_.i.i.i.i280, align 8 - %tobool.not.i.i281 = icmp eq ptr %79, null + %81 = load ptr, ptr %ptr_.i.i.i.i280, align 8 + %tobool.not.i.i281 = icmp eq ptr %81, null br i1 %tobool.not.i.i281, label %if.end.i.i294, label %if.then.i.i282 if.then.i.i282: ; preds = %_ZN3fmt3v106detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i279 - %add.ptr.i.i.i283 = getelementptr inbounds i8, ptr %79, i64 %77 + %add.ptr.i.i.i283 = getelementptr inbounds i8, ptr %81, i64 %79 %add.ptr.i7.i.i285 = getelementptr inbounds i8, ptr %add.ptr.i.i.i283, i64 %conv.i.i274 br label %do.body.i.i.i286 do.body.i.i.i286: ; preds = %do.body.i.i.i286, %if.then.i.i282 %value.addr.0.i.i.i287 = phi i64 [ %arg.coerce0, %if.then.i.i282 ], [ %shr.i.i.i292, %do.body.i.i.i286 ] %buffer.addr.0.i.i.i288 = phi ptr [ %add.ptr.i7.i.i285, %if.then.i.i282 ], [ %incdec.ptr.i.i.i291, %do.body.i.i.i286 ] - %80 = trunc i64 %value.addr.0.i.i.i287 to i8 - %conv.i.i.i289 = and i8 %80, 7 + %82 = trunc i64 %value.addr.0.i.i.i287 to i8 + %conv.i.i.i289 = and i8 %82, 7 %add.i8.i.i290 = or disjoint i8 %conv.i.i.i289, 48 %incdec.ptr.i.i.i291 = getelementptr inbounds i8, ptr %buffer.addr.0.i.i.i288, i64 -1 store i8 %add.i8.i.i290, ptr %incdec.ptr.i.i.i291, align 1 @@ -26840,7 +26840,7 @@ do.body.i.i.i286: ; preds = %do.body.i.i.i286, % br i1 %cmp.not.i.i.i293, label %_ZZN3fmt3v106detail9write_intIcNS0_8appenderEmEET0_S4_NS1_13write_int_argIT1_EERKNS0_12format_specsIT_EENS1_10locale_refEENKUlS3_E2_clES3_.exit, label %do.body.i.i.i286, !llvm.loop !191 if.end.i.i294: ; preds = %_ZN3fmt3v106detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i279, %if.end.i142 - %.pre.i.i.i.i.i295 = phi i64 [ %77, %if.end.i142 ], [ %add.i.i.i277, %_ZN3fmt3v106detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i279 ] + %.pre.i.i.i.i.i295 = phi i64 [ %79, %if.end.i142 ], [ %add.i.i.i277, %_ZN3fmt3v106detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i279 ] call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(22) %buffer.i.i273, i8 0, i64 22, i1 false) %add.ptr.i10.i.i297 = getelementptr inbounds i8, ptr %buffer.i.i273, i64 %conv.i.i274 br label %do.body.i11.i.i298 @@ -26848,8 +26848,8 @@ if.end.i.i294: ; preds = %_ZN3fmt3v106detail1 do.body.i11.i.i298: ; preds = %do.body.i11.i.i298, %if.end.i.i294 %value.addr.0.i12.i.i299 = phi i64 [ %arg.coerce0, %if.end.i.i294 ], [ %shr.i17.i.i304, %do.body.i11.i.i298 ] %buffer.addr.0.i13.i.i300 = phi ptr [ %add.ptr.i10.i.i297, %if.end.i.i294 ], [ %incdec.ptr.i16.i.i303, %do.body.i11.i.i298 ] - %81 = trunc i64 %value.addr.0.i12.i.i299 to i8 - %conv.i14.i.i301 = and i8 %81, 7 + %83 = trunc i64 %value.addr.0.i12.i.i299 to i8 + %conv.i14.i.i301 = and i8 %83, 7 %add.i15.i.i302 = or disjoint i8 %conv.i14.i.i301, 48 %incdec.ptr.i16.i.i303 = getelementptr inbounds i8, ptr %buffer.addr.0.i13.i.i300, i64 -1 store i8 %add.i15.i.i302, ptr %incdec.ptr.i16.i.i303, align 1 @@ -26863,41 +26863,41 @@ while.body.lr.ph.i.i.i.i.i307: ; preds = %do.body.i11.i.i298 br label %while.body.i.i.i.i.i310 while.body.i.i.i.i.i310: ; preds = %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i323, %while.body.lr.ph.i.i.i.i.i307 - %82 = phi i64 [ %.pre.i.i.i.i.i295, %while.body.lr.ph.i.i.i.i.i307 ], [ %add7.i.i.i.i.i324, %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i323 ] + %84 = phi i64 [ %.pre.i.i.i.i.i295, %while.body.lr.ph.i.i.i.i.i307 ], [ %add7.i.i.i.i.i324, %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i323 ] %begin.addr.011.i.i.i.i.i311 = phi ptr [ %buffer.i.i273, %while.body.lr.ph.i.i.i.i.i307 ], [ %add.ptr8.i.i.i.i.i325, %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i323 ] %sub.ptr.rhs.cast.i.i.i.i.i312 = ptrtoint ptr %begin.addr.011.i.i.i.i.i311 to i64 %sub.ptr.sub.i.i.i.i.i313 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i308, %sub.ptr.rhs.cast.i.i.i.i.i312 - %add.i.i.i.i.i314 = add i64 %sub.ptr.sub.i.i.i.i.i313, %82 - %83 = load i64, ptr %capacity_.i.i.i.i276, align 8 - %cmp.i.i.i.i.i.i315 = icmp ult i64 %83, %add.i.i.i.i.i314 + %add.i.i.i.i.i314 = add i64 %sub.ptr.sub.i.i.i.i.i313, %84 + %85 = load i64, ptr %capacity_.i.i.i.i276, align 8 + %cmp.i.i.i.i.i.i315 = icmp ult i64 %85, %add.i.i.i.i.i314 br i1 %cmp.i.i.i.i.i.i315, label %if.then.i.i.i.i.i.i327, label %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i316 if.then.i.i.i.i.i.i327: ; preds = %while.body.i.i.i.i.i310 %vtable.i.i.i.i.i.i328 = load ptr, ptr %out.coerce, align 8 - %84 = load ptr, ptr %vtable.i.i.i.i.i.i328, align 8 - call void %84(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i.i.i.i314) + %86 = load ptr, ptr %vtable.i.i.i.i.i.i328, align 8 + call void %86(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i.i.i.i314) %.pre12.i.i.i.i.i329 = load i64, ptr %capacity_.i.i.i.i276, align 8 %.pre13.i.i.i.i.i330 = load i64, ptr %size_.i.i.i.i275, align 8 br label %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i316 _ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i316: ; preds = %if.then.i.i.i.i.i.i327, %while.body.i.i.i.i.i310 - %85 = phi i64 [ %82, %while.body.i.i.i.i.i310 ], [ %.pre13.i.i.i.i.i330, %if.then.i.i.i.i.i.i327 ] - %86 = phi i64 [ %83, %while.body.i.i.i.i.i310 ], [ %.pre12.i.i.i.i.i329, %if.then.i.i.i.i.i.i327 ] - %sub.i.i.i.i.i317 = sub i64 %86, %85 + %87 = phi i64 [ %84, %while.body.i.i.i.i.i310 ], [ %.pre13.i.i.i.i.i330, %if.then.i.i.i.i.i.i327 ] + %88 = phi i64 [ %85, %while.body.i.i.i.i.i310 ], [ %.pre12.i.i.i.i.i329, %if.then.i.i.i.i.i.i327 ] + %sub.i.i.i.i.i317 = sub i64 %88, %87 %spec.select.i.i.i.i.i318 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i317, i64 %sub.ptr.sub.i.i.i.i.i313) %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i.i319 = icmp eq i64 %spec.select.i.i.i.i.i318, 0 br i1 %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i.i319, label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i323, label %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i320 if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i320: ; preds = %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i316 - %87 = load ptr, ptr %ptr_.i.i.i.i.i309, align 8 - %add.ptr.i.i.i.i.i321 = getelementptr inbounds i8, ptr %87, i64 %85 + %89 = load ptr, ptr %ptr_.i.i.i.i.i309, align 8 + %add.ptr.i.i.i.i.i321 = getelementptr inbounds i8, ptr %89, i64 %87 call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr.i.i.i.i.i321, ptr align 1 %begin.addr.011.i.i.i.i.i311, i64 %spec.select.i.i.i.i.i318, i1 false) %.pre14.i.i.i.i.i322 = load i64, ptr %size_.i.i.i.i275, align 8 br label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i323 _ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i323: ; preds = %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i320, %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i316 - %88 = phi i64 [ %85, %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i316 ], [ %.pre14.i.i.i.i.i322, %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i320 ] - %add7.i.i.i.i.i324 = add i64 %88, %spec.select.i.i.i.i.i318 + %90 = phi i64 [ %87, %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i316 ], [ %.pre14.i.i.i.i.i322, %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i320 ] + %add7.i.i.i.i.i324 = add i64 %90, %spec.select.i.i.i.i.i318 store i64 %add7.i.i.i.i.i324, ptr %size_.i.i.i.i275, align 8 %add.ptr8.i.i.i.i.i325 = getelementptr inbounds i8, ptr %begin.addr.011.i.i.i.i.i311, i64 %spec.select.i.i.i.i.i318 %cmp.not.i.i.i.i.i326 = icmp eq ptr %add.ptr8.i.i.i.i.i325, %add.ptr.i10.i.i297 @@ -26911,16 +26911,16 @@ if.end30.i133: ; preds = %if.end62.i %shr.i331 = lshr i32 %prefix.i.2, 24 %add.i332 = add nuw i32 %shr.i331, %inc.i.i253 %conv.i333 = zext i32 %add.i332 to i64 - %89 = and i16 %bf.load54.i, 15 - %cmp.i337 = icmp eq i16 %89, 4 + %91 = and i16 %bf.load54.i, 15 + %cmp.i337 = icmp eq i16 %91, 4 br i1 %cmp.i337, label %if.then.i346, label %if.else.i338 if.then.i346: ; preds = %if.end30.i133 - %cmp7.i347 = icmp ult i32 %add.i332, %71 + %cmp7.i347 = icmp ult i32 %add.i332, %73 br i1 %cmp7.i347, label %if.then8.i348, label %_ZN3fmt3v106detail14write_int_dataIcEC2EijRKNS0_12format_specsIcEE.exit351 if.then8.i348: ; preds = %if.then.i346 - %conv5.i349 = zext i32 %71 to i64 + %conv5.i349 = zext i32 %73 to i64 %sub.i350 = sub nsw i64 %conv5.i349, %conv.i333 br label %_ZN3fmt3v106detail14write_int_dataIcEC2EijRKNS0_12format_specsIcEE.exit351 @@ -26939,12 +26939,12 @@ _ZN3fmt3v106detail14write_int_dataIcEC2EijRKNS0_12format_specsIcEE.exit351: ; pr %data.i126.sroa.0.0 = phi i64 [ %conv5.i349, %if.then8.i348 ], [ %conv.i333, %if.then.i346 ], [ %conv20.i343, %if.then15.i341 ], [ %conv.i333, %if.else.i338 ] %data.i126.sroa.5.0 = phi i64 [ %sub.i350, %if.then8.i348 ], [ 0, %if.then.i346 ], [ %conv25.i345, %if.then15.i341 ], [ 0, %if.else.i338 ] store i32 %prefix.i.2, ptr %ref.tmp32.i128, align 8 - %90 = getelementptr inbounds i8, ptr %ref.tmp32.i128, i64 8 - store i64 %data.i126.sroa.0.0, ptr %90, align 8 + %92 = getelementptr inbounds i8, ptr %ref.tmp32.i128, i64 8 + store i64 %data.i126.sroa.0.0, ptr %92, align 8 %data.i126.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %ref.tmp32.i128, i64 16 store i64 %data.i126.sroa.5.0, ptr %data.i126.sroa.5.0..sroa_idx, align 8 - %91 = getelementptr inbounds i8, ptr %ref.tmp32.i128, i64 24 - store i64 %arg.coerce0, ptr %91, align 8 + %93 = getelementptr inbounds i8, ptr %ref.tmp32.i128, i64 24 + store i64 %arg.coerce0, ptr %93, align 8 %write_digits.i115.sroa.3.0..sroa_idx = getelementptr inbounds i8, ptr %ref.tmp32.i128, i64 32 store i32 %inc.i.i253, ptr %write_digits.i115.sroa.3.0..sroa_idx, align 8 %call.i352 = call ptr @_ZN3fmt3v106detail12write_paddedILNS0_5align4typeE2ENS0_8appenderEcRZNS1_9write_intIS5_cZNS1_9write_intIcS5_mEET0_S8_NS1_13write_int_argIT1_EERKNS0_12format_specsIT_EENS1_10locale_refEEUlS5_E2_EESD_SD_ijRKNSC_IS8_EESA_EUlS5_E_EES8_S8_RKNSC_ISA_EEmmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(16) %specs, i64 noundef %data.i126.sroa.0.0, i64 noundef %data.i126.sroa.0.0, ptr noundef nonnull align 8 dereferenceable(40) %ref.tmp32.i128) @@ -26954,8 +26954,8 @@ sw.bb70.i: ; preds = %entry %conv72.i = trunc i64 %arg.coerce0 to i8 call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %ref.tmp.i353) store i8 0, ptr %ref.tmp.i353, align 1 - %92 = getelementptr inbounds i8, ptr %ref.tmp.i353, i64 1 - store i8 %conv72.i, ptr %92, align 1 + %94 = getelementptr inbounds i8, ptr %ref.tmp.i353, i64 1 + store i8 %conv72.i, ptr %94, align 1 %call.i.i = call ptr @_ZN3fmt3v106detail12write_paddedILNS0_5align4typeE1ENS0_8appenderEcRZNS1_10write_charIcS5_EET0_S7_T_RKNS0_12format_specsIS8_EEEUlS5_E_EES7_S7_RKNS9_IT1_EEmmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(16) %specs, i64 noundef 1, i64 noundef 1, ptr noundef nonnull align 1 dereferenceable(2) %ref.tmp.i353) call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %ref.tmp.i353) br label %_ZN3fmt3v106detail9write_intIcNS0_8appenderEmEET0_S4_NS1_13write_int_argIT1_EERKNS0_12format_specsIT_EENS1_10locale_refE.exit @@ -29447,16 +29447,16 @@ land.lhs.true.i: ; preds = %_ZN3fmt3v106detail1 if.then64.i: ; preds = %land.lhs.true.i %cmp.not.i263 = icmp eq i32 %agg.tmp3.sroa.2.0.copyload, 0 - %cond.i264 = select i1 %cmp.not.i263, i32 48, i32 12288 - %or.i265 = or i32 %cond.i264, %agg.tmp3.sroa.2.0.copyload - %add4.i266 = add i32 %or.i265, 16777216 + %71 = or i32 %agg.tmp3.sroa.2.0.copyload, 12288 + %72 = add i32 %71, 16777216 + %add4.i266 = select i1 %cmp.not.i263, i32 16777264, i32 %72 br label %if.end65.i if.end65.i: ; preds = %_ZN3fmt3v106detail12count_digitsILi3EoEEiT0_.exit, %if.then64.i, %land.lhs.true.i %prefix.i.2 = phi i32 [ %add4.i266, %if.then64.i ], [ %agg.tmp3.sroa.2.0.copyload, %land.lhs.true.i ], [ %agg.tmp3.sroa.2.0.copyload, %_ZN3fmt3v106detail12count_digitsILi3EoEEiT0_.exit ] - %71 = load i32, ptr %specs, align 4 + %73 = load i32, ptr %specs, align 4 %add.i132 = add nsw i32 %.pre, 1 - %or.i133 = or i32 %add.i132, %71 + %or.i133 = or i32 %add.i132, %73 %cmp.i134 = icmp eq i32 %or.i133, 0 br i1 %cmp.i134, label %if.then.i137, label %if.end30.i135 @@ -29478,26 +29478,26 @@ for.body.i152.lr.ph: ; preds = %if.then5.i147 for.body.i152: ; preds = %for.body.i152.lr.ph, %_ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIcEEEaSEOc.exit279 %p.i122.0377 = phi i32 [ %and.i148, %for.body.i152.lr.ph ], [ %shr15.i158, %_ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIcEEEaSEOc.exit279 ] %conv8.i154 = trunc i32 %p.i122.0377 to i8 - %72 = load i64, ptr %size_.i.i268, align 8 - %add.i.i269 = add i64 %72, 1 - %73 = load i64, ptr %capacity_.i.i.i270, align 8 - %cmp.i.i.i271 = icmp ult i64 %73, %add.i.i269 + %74 = load i64, ptr %size_.i.i268, align 8 + %add.i.i269 = add i64 %74, 1 + %75 = load i64, ptr %capacity_.i.i.i270, align 8 + %cmp.i.i.i271 = icmp ult i64 %75, %add.i.i269 br i1 %cmp.i.i.i271, label %if.then.i.i.i275, label %_ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIcEEEaSEOc.exit279 if.then.i.i.i275: ; preds = %for.body.i152 %vtable.i.i.i276 = load ptr, ptr %out.coerce, align 8 - %74 = load ptr, ptr %vtable.i.i.i276, align 8 - tail call void %74(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i269) + %76 = load ptr, ptr %vtable.i.i.i276, align 8 + tail call void %76(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i269) %.pre.i.i277 = load i64, ptr %size_.i.i268, align 8 %.pre1.i.i278 = add i64 %.pre.i.i277, 1 br label %_ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIcEEEaSEOc.exit279 _ZNSt20back_insert_iteratorIN3fmt3v106detail6bufferIcEEEaSEOc.exit279: ; preds = %for.body.i152, %if.then.i.i.i275 %inc.pre-phi.i.i272 = phi i64 [ %add.i.i269, %for.body.i152 ], [ %.pre1.i.i278, %if.then.i.i.i275 ] - %75 = phi i64 [ %72, %for.body.i152 ], [ %.pre.i.i277, %if.then.i.i.i275 ] - %76 = load ptr, ptr %ptr_.i.i273, align 8 + %77 = phi i64 [ %74, %for.body.i152 ], [ %.pre.i.i277, %if.then.i.i.i275 ] + %78 = load ptr, ptr %ptr_.i.i273, align 8 store i64 %inc.pre-phi.i.i272, ptr %size_.i.i268, align 8 - %arrayidx.i.i274 = getelementptr inbounds i8, ptr %76, i64 %75 + %arrayidx.i.i274 = getelementptr inbounds i8, ptr %78, i64 %77 store i8 %conv8.i154, ptr %arrayidx.i.i274, align 1 %shr15.i158 = lshr i32 %p.i122.0377, 8 %cmp6.i150.not = icmp ult i32 %p.i122.0377, 256 @@ -29507,30 +29507,30 @@ if.end.i144: ; preds = %_ZNSt20back_insert_ call void @llvm.lifetime.start.p0(i64 43, ptr nonnull %buffer.i.i280) %conv.i.i281 = zext nneg i32 %inc.i.i260 to i64 %size_.i.i.i.i282 = getelementptr inbounds i8, ptr %out.coerce, i64 16 - %77 = load i64, ptr %size_.i.i.i.i282, align 8 + %79 = load i64, ptr %size_.i.i.i.i282, align 8 %capacity_.i.i.i.i283 = getelementptr inbounds i8, ptr %out.coerce, i64 24 - %78 = load i64, ptr %capacity_.i.i.i.i283, align 8 - %add.i.i.i284 = add i64 %77, %conv.i.i281 - %cmp.i.i.i285 = icmp ult i64 %78, %add.i.i.i284 + %80 = load i64, ptr %capacity_.i.i.i.i283, align 8 + %add.i.i.i284 = add i64 %79, %conv.i.i281 + %cmp.i.i.i285 = icmp ult i64 %80, %add.i.i.i284 br i1 %cmp.i.i.i285, label %if.end.i.i301, label %_ZN3fmt3v106detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i286 _ZN3fmt3v106detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i286: ; preds = %if.end.i144 store i64 %add.i.i.i284, ptr %size_.i.i.i.i282, align 8 %ptr_.i.i.i.i287 = getelementptr inbounds i8, ptr %out.coerce, i64 8 - %79 = load ptr, ptr %ptr_.i.i.i.i287, align 8 - %tobool.not.i.i288 = icmp eq ptr %79, null + %81 = load ptr, ptr %ptr_.i.i.i.i287, align 8 + %tobool.not.i.i288 = icmp eq ptr %81, null br i1 %tobool.not.i.i288, label %if.end.i.i301, label %if.then.i.i289 if.then.i.i289: ; preds = %_ZN3fmt3v106detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i286 - %add.ptr.i.i.i290 = getelementptr inbounds i8, ptr %79, i64 %77 + %add.ptr.i.i.i290 = getelementptr inbounds i8, ptr %81, i64 %79 %add.ptr.i7.i.i292 = getelementptr inbounds i8, ptr %add.ptr.i.i.i290, i64 %conv.i.i281 br label %do.body.i.i.i293 do.body.i.i.i293: ; preds = %do.body.i.i.i293, %if.then.i.i289 %value.addr.0.i.i.i294 = phi i128 [ %agg.tmp3.sroa.0.0.copyload, %if.then.i.i289 ], [ %shr.i.i.i299, %do.body.i.i.i293 ] %buffer.addr.0.i.i.i295 = phi ptr [ %add.ptr.i7.i.i292, %if.then.i.i289 ], [ %incdec.ptr.i.i.i298, %do.body.i.i.i293 ] - %80 = trunc i128 %value.addr.0.i.i.i294 to i8 - %conv.i.i.i296 = and i8 %80, 7 + %82 = trunc i128 %value.addr.0.i.i.i294 to i8 + %conv.i.i.i296 = and i8 %82, 7 %add.i8.i.i297 = or disjoint i8 %conv.i.i.i296, 48 %incdec.ptr.i.i.i298 = getelementptr inbounds i8, ptr %buffer.addr.0.i.i.i295, i64 -1 store i8 %add.i8.i.i297, ptr %incdec.ptr.i.i.i298, align 1 @@ -29539,7 +29539,7 @@ do.body.i.i.i293: ; preds = %do.body.i.i.i293, % br i1 %cmp.not.i.i.i300, label %_ZZN3fmt3v106detail9write_intIcNS0_8appenderEoEET0_S4_NS1_13write_int_argIT1_EERKNS0_12format_specsIT_EENS1_10locale_refEENKUlS3_E2_clES3_.exit, label %do.body.i.i.i293, !llvm.loop !203 if.end.i.i301: ; preds = %_ZN3fmt3v106detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i286, %if.end.i144 - %.pre.i.i.i.i.i302 = phi i64 [ %77, %if.end.i144 ], [ %add.i.i.i284, %_ZN3fmt3v106detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i286 ] + %.pre.i.i.i.i.i302 = phi i64 [ %79, %if.end.i144 ], [ %add.i.i.i284, %_ZN3fmt3v106detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i286 ] call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(43) %buffer.i.i280, i8 0, i64 43, i1 false) %add.ptr.i14.i.i304 = getelementptr inbounds i8, ptr %buffer.i.i280, i64 %conv.i.i281 br label %do.body.i15.i.i305 @@ -29547,8 +29547,8 @@ if.end.i.i301: ; preds = %_ZN3fmt3v106detail1 do.body.i15.i.i305: ; preds = %do.body.i15.i.i305, %if.end.i.i301 %value.addr.0.i16.i.i306 = phi i128 [ %agg.tmp3.sroa.0.0.copyload, %if.end.i.i301 ], [ %shr.i21.i.i311, %do.body.i15.i.i305 ] %buffer.addr.0.i17.i.i307 = phi ptr [ %add.ptr.i14.i.i304, %if.end.i.i301 ], [ %incdec.ptr.i20.i.i310, %do.body.i15.i.i305 ] - %81 = trunc i128 %value.addr.0.i16.i.i306 to i8 - %conv.i18.i.i308 = and i8 %81, 7 + %83 = trunc i128 %value.addr.0.i16.i.i306 to i8 + %conv.i18.i.i308 = and i8 %83, 7 %add.i19.i.i309 = or disjoint i8 %conv.i18.i.i308, 48 %incdec.ptr.i20.i.i310 = getelementptr inbounds i8, ptr %buffer.addr.0.i17.i.i307, i64 -1 store i8 %add.i19.i.i309, ptr %incdec.ptr.i20.i.i310, align 1 @@ -29562,41 +29562,41 @@ while.body.lr.ph.i.i.i.i.i314: ; preds = %do.body.i15.i.i305 br label %while.body.i.i.i.i.i317 while.body.i.i.i.i.i317: ; preds = %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i330, %while.body.lr.ph.i.i.i.i.i314 - %82 = phi i64 [ %.pre.i.i.i.i.i302, %while.body.lr.ph.i.i.i.i.i314 ], [ %add7.i.i.i.i.i331, %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i330 ] + %84 = phi i64 [ %.pre.i.i.i.i.i302, %while.body.lr.ph.i.i.i.i.i314 ], [ %add7.i.i.i.i.i331, %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i330 ] %begin.addr.011.i.i.i.i.i318 = phi ptr [ %buffer.i.i280, %while.body.lr.ph.i.i.i.i.i314 ], [ %add.ptr8.i.i.i.i.i332, %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i330 ] %sub.ptr.rhs.cast.i.i.i.i.i319 = ptrtoint ptr %begin.addr.011.i.i.i.i.i318 to i64 %sub.ptr.sub.i.i.i.i.i320 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i315, %sub.ptr.rhs.cast.i.i.i.i.i319 - %add.i.i.i.i.i321 = add i64 %sub.ptr.sub.i.i.i.i.i320, %82 - %83 = load i64, ptr %capacity_.i.i.i.i283, align 8 - %cmp.i.i.i.i.i.i322 = icmp ult i64 %83, %add.i.i.i.i.i321 + %add.i.i.i.i.i321 = add i64 %sub.ptr.sub.i.i.i.i.i320, %84 + %85 = load i64, ptr %capacity_.i.i.i.i283, align 8 + %cmp.i.i.i.i.i.i322 = icmp ult i64 %85, %add.i.i.i.i.i321 br i1 %cmp.i.i.i.i.i.i322, label %if.then.i.i.i.i.i.i334, label %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i323 if.then.i.i.i.i.i.i334: ; preds = %while.body.i.i.i.i.i317 %vtable.i.i.i.i.i.i335 = load ptr, ptr %out.coerce, align 8 - %84 = load ptr, ptr %vtable.i.i.i.i.i.i335, align 8 - call void %84(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i.i.i.i321) + %86 = load ptr, ptr %vtable.i.i.i.i.i.i335, align 8 + call void %86(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i.i.i.i321) %.pre12.i.i.i.i.i336 = load i64, ptr %capacity_.i.i.i.i283, align 8 %.pre13.i.i.i.i.i337 = load i64, ptr %size_.i.i.i.i282, align 8 br label %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i323 _ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i323: ; preds = %if.then.i.i.i.i.i.i334, %while.body.i.i.i.i.i317 - %85 = phi i64 [ %82, %while.body.i.i.i.i.i317 ], [ %.pre13.i.i.i.i.i337, %if.then.i.i.i.i.i.i334 ] - %86 = phi i64 [ %83, %while.body.i.i.i.i.i317 ], [ %.pre12.i.i.i.i.i336, %if.then.i.i.i.i.i.i334 ] - %sub.i.i.i.i.i324 = sub i64 %86, %85 + %87 = phi i64 [ %84, %while.body.i.i.i.i.i317 ], [ %.pre13.i.i.i.i.i337, %if.then.i.i.i.i.i.i334 ] + %88 = phi i64 [ %85, %while.body.i.i.i.i.i317 ], [ %.pre12.i.i.i.i.i336, %if.then.i.i.i.i.i.i334 ] + %sub.i.i.i.i.i324 = sub i64 %88, %87 %spec.select.i.i.i.i.i325 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i324, i64 %sub.ptr.sub.i.i.i.i.i320) %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i.i326 = icmp eq i64 %spec.select.i.i.i.i.i325, 0 br i1 %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i.i326, label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i330, label %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i327 if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i327: ; preds = %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i323 - %87 = load ptr, ptr %ptr_.i.i.i.i.i316, align 8 - %add.ptr.i.i.i.i.i328 = getelementptr inbounds i8, ptr %87, i64 %85 + %89 = load ptr, ptr %ptr_.i.i.i.i.i316, align 8 + %add.ptr.i.i.i.i.i328 = getelementptr inbounds i8, ptr %89, i64 %87 call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr.i.i.i.i.i328, ptr align 1 %begin.addr.011.i.i.i.i.i318, i64 %spec.select.i.i.i.i.i325, i1 false) %.pre14.i.i.i.i.i329 = load i64, ptr %size_.i.i.i.i282, align 8 br label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i330 _ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i330: ; preds = %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i327, %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i323 - %88 = phi i64 [ %85, %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i323 ], [ %.pre14.i.i.i.i.i329, %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i327 ] - %add7.i.i.i.i.i331 = add i64 %88, %spec.select.i.i.i.i.i325 + %90 = phi i64 [ %87, %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i323 ], [ %.pre14.i.i.i.i.i329, %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i327 ] + %add7.i.i.i.i.i331 = add i64 %90, %spec.select.i.i.i.i.i325 store i64 %add7.i.i.i.i.i331, ptr %size_.i.i.i.i282, align 8 %add.ptr8.i.i.i.i.i332 = getelementptr inbounds i8, ptr %begin.addr.011.i.i.i.i.i318, i64 %spec.select.i.i.i.i.i325 %cmp.not.i.i.i.i.i333 = icmp eq ptr %add.ptr8.i.i.i.i.i332, %add.ptr.i14.i.i304 @@ -29610,16 +29610,16 @@ if.end30.i135: ; preds = %if.end65.i %shr.i338 = lshr i32 %prefix.i.2, 24 %add.i339 = add nuw i32 %shr.i338, %inc.i.i260 %conv.i340 = zext i32 %add.i339 to i64 - %89 = and i16 %bf.load57.i, 15 - %cmp.i344 = icmp eq i16 %89, 4 + %91 = and i16 %bf.load57.i, 15 + %cmp.i344 = icmp eq i16 %91, 4 br i1 %cmp.i344, label %if.then.i353, label %if.else.i345 if.then.i353: ; preds = %if.end30.i135 - %cmp7.i354 = icmp ult i32 %add.i339, %71 + %cmp7.i354 = icmp ult i32 %add.i339, %73 br i1 %cmp7.i354, label %if.then8.i355, label %_ZN3fmt3v106detail14write_int_dataIcEC2EijRKNS0_12format_specsIcEE.exit358 if.then8.i355: ; preds = %if.then.i353 - %conv5.i356 = zext i32 %71 to i64 + %conv5.i356 = zext i32 %73 to i64 %sub.i357 = sub nsw i64 %conv5.i356, %conv.i340 br label %_ZN3fmt3v106detail14write_int_dataIcEC2EijRKNS0_12format_specsIcEE.exit358 @@ -29638,12 +29638,12 @@ _ZN3fmt3v106detail14write_int_dataIcEC2EijRKNS0_12format_specsIcEE.exit358: ; pr %data.i128.sroa.0.0 = phi i64 [ %conv5.i356, %if.then8.i355 ], [ %conv.i340, %if.then.i353 ], [ %conv20.i350, %if.then15.i348 ], [ %conv.i340, %if.else.i345 ] %data.i128.sroa.5.0 = phi i64 [ %sub.i357, %if.then8.i355 ], [ 0, %if.then.i353 ], [ %conv25.i352, %if.then15.i348 ], [ 0, %if.else.i345 ] store i32 %prefix.i.2, ptr %ref.tmp32.i130, align 16 - %90 = getelementptr inbounds i8, ptr %ref.tmp32.i130, i64 8 - store i64 %data.i128.sroa.0.0, ptr %90, align 8 + %92 = getelementptr inbounds i8, ptr %ref.tmp32.i130, i64 8 + store i64 %data.i128.sroa.0.0, ptr %92, align 8 %data.i128.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %ref.tmp32.i130, i64 16 store i64 %data.i128.sroa.5.0, ptr %data.i128.sroa.5.0..sroa_idx, align 16 - %91 = getelementptr inbounds i8, ptr %ref.tmp32.i130, i64 32 - store i128 %agg.tmp3.sroa.0.0.copyload, ptr %91, align 16 + %93 = getelementptr inbounds i8, ptr %ref.tmp32.i130, i64 32 + store i128 %agg.tmp3.sroa.0.0.copyload, ptr %93, align 16 %agg.tmp67.i115.sroa.3.0..sroa_idx = getelementptr inbounds i8, ptr %ref.tmp32.i130, i64 48 store i32 %inc.i.i260, ptr %agg.tmp67.i115.sroa.3.0..sroa_idx, align 16 %call.i359 = call ptr @_ZN3fmt3v106detail12write_paddedILNS0_5align4typeE2ENS0_8appenderEcRZNS1_9write_intIS5_cZNS1_9write_intIcS5_oEET0_S8_NS1_13write_int_argIT1_EERKNS0_12format_specsIT_EENS1_10locale_refEEUlS5_E2_EESD_SD_ijRKNSC_IS8_EESA_EUlS5_E_EES8_S8_RKNSC_ISA_EEmmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(16) %specs, i64 noundef %data.i128.sroa.0.0, i64 noundef %data.i128.sroa.0.0, ptr noundef nonnull align 16 dereferenceable(64) %ref.tmp32.i130) @@ -29653,8 +29653,8 @@ sw.bb73.i: ; preds = %entry %conv75.i = trunc i128 %agg.tmp3.sroa.0.0.copyload to i8 call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %ref.tmp.i360) store i8 0, ptr %ref.tmp.i360, align 1 - %92 = getelementptr inbounds i8, ptr %ref.tmp.i360, i64 1 - store i8 %conv75.i, ptr %92, align 1 + %94 = getelementptr inbounds i8, ptr %ref.tmp.i360, i64 1 + store i8 %conv75.i, ptr %94, align 1 %call.i.i = call ptr @_ZN3fmt3v106detail12write_paddedILNS0_5align4typeE1ENS0_8appenderEcRZNS1_10write_charIcS5_EET0_S7_T_RKNS0_12format_specsIS8_EEEUlS5_E_EES7_S7_RKNS9_IT1_EEmmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(16) %specs, i64 noundef 1, i64 noundef 1, ptr noundef nonnull align 1 dereferenceable(2) %ref.tmp.i360) call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %ref.tmp.i360) br label %_ZN3fmt3v106detail9write_intIcNS0_8appenderEoEET0_S4_NS1_13write_int_argIT1_EERKNS0_12format_specsIT_EENS1_10locale_refE.exit @@ -36139,39 +36139,39 @@ land.lhs.true: ; preds = %invoke.cont52 if.then62: ; preds = %land.lhs.true %cmp.not.i137 = icmp eq i32 %prefix, 0 - %cond.i138 = select i1 %cmp.not.i137, i32 48, i32 12288 - %or.i139 = or i32 %cond.i138, %prefix - %add4.i140 = add i32 %or.i139, 16777216 + %44 = or i32 %prefix, 12288 + %45 = add i32 %44, 16777216 + %add4.i140 = select i1 %cmp.not.i137, i32 16777264, i32 %45 store i32 %add4.i140, ptr %prefix.addr, align 4 br label %invoke.cont65 invoke.cont65: ; preds = %invoke.cont52, %land.lhs.true, %if.then62 - %44 = phi i32 [ %prefix, %invoke.cont52 ], [ %prefix, %land.lhs.true ], [ %add4.i140, %if.then62 ] + %46 = phi i32 [ %prefix, %invoke.cont52 ], [ %prefix, %land.lhs.true ], [ %add4.i140, %if.then62 ] call void @llvm.lifetime.start.p0(i64 22, ptr nonnull %buffer.i141) %conv.i142 = zext nneg i32 %inc.i.i134 to i64 %size_.i.i.i143 = getelementptr inbounds i8, ptr %buffer, i64 16 - %45 = load i64, ptr %size_.i.i.i143, align 8 - %46 = load i64, ptr %capacity_.i.i, align 8 - %add.i.i145 = add i64 %45, %conv.i142 - %cmp.i.i146 = icmp ult i64 %46, %add.i.i145 + %47 = load i64, ptr %size_.i.i.i143, align 8 + %48 = load i64, ptr %capacity_.i.i, align 8 + %add.i.i145 = add i64 %47, %conv.i142 + %cmp.i.i146 = icmp ult i64 %48, %add.i.i145 br i1 %cmp.i.i146, label %if.end.i162, label %_ZN3fmt3v106detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i147 _ZN3fmt3v106detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i147: ; preds = %invoke.cont65 store i64 %add.i.i145, ptr %size_.i.i.i143, align 8 - %47 = load ptr, ptr %ptr_.i.i, align 8 - %tobool.not.i149 = icmp eq ptr %47, null + %49 = load ptr, ptr %ptr_.i.i, align 8 + %tobool.not.i149 = icmp eq ptr %49, null br i1 %tobool.not.i149, label %if.end.i162, label %if.then.i150 if.then.i150: ; preds = %_ZN3fmt3v106detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i147 - %add.ptr.i.i151 = getelementptr inbounds i8, ptr %47, i64 %45 + %add.ptr.i.i151 = getelementptr inbounds i8, ptr %49, i64 %47 %add.ptr.i7.i153 = getelementptr inbounds i8, ptr %add.ptr.i.i151, i64 %conv.i142 br label %do.body.i.i154 do.body.i.i154: ; preds = %do.body.i.i154, %if.then.i150 %value.addr.0.i.i155 = phi i64 [ %value, %if.then.i150 ], [ %shr.i.i160, %do.body.i.i154 ] %buffer.addr.0.i.i156 = phi ptr [ %add.ptr.i7.i153, %if.then.i150 ], [ %incdec.ptr.i.i159, %do.body.i.i154 ] - %48 = trunc i64 %value.addr.0.i.i155 to i8 - %conv.i.i157 = and i8 %48, 7 + %50 = trunc i64 %value.addr.0.i.i155 to i8 + %conv.i.i157 = and i8 %50, 7 %add.i8.i158 = or disjoint i8 %conv.i.i157, 48 %incdec.ptr.i.i159 = getelementptr inbounds i8, ptr %buffer.addr.0.i.i156, i64 -1 store i8 %add.i8.i158, ptr %incdec.ptr.i.i159, align 1 @@ -36180,7 +36180,7 @@ do.body.i.i154: ; preds = %do.body.i.i154, %if br i1 %cmp.not.i.i161, label %_ZN3fmt3v106detail11format_uintILj3EcNS0_8appenderEmEET1_S4_T2_ib.exit, label %do.body.i.i154, !llvm.loop !191 if.end.i162: ; preds = %_ZN3fmt3v106detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i147, %invoke.cont65 - %.pre.i.i.i.i163 = phi i64 [ %45, %invoke.cont65 ], [ %add.i.i145, %_ZN3fmt3v106detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i147 ] + %.pre.i.i.i.i163 = phi i64 [ %47, %invoke.cont65 ], [ %add.i.i145, %_ZN3fmt3v106detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i147 ] call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(22) %buffer.i141, i8 0, i64 22, i1 false) %add.ptr.i10.i165 = getelementptr inbounds i8, ptr %buffer.i141, i64 %conv.i142 br label %do.body.i11.i166 @@ -36188,8 +36188,8 @@ if.end.i162: ; preds = %_ZN3fmt3v106detail1 do.body.i11.i166: ; preds = %do.body.i11.i166, %if.end.i162 %value.addr.0.i12.i167 = phi i64 [ %value, %if.end.i162 ], [ %shr.i17.i172, %do.body.i11.i166 ] %buffer.addr.0.i13.i168 = phi ptr [ %add.ptr.i10.i165, %if.end.i162 ], [ %incdec.ptr.i16.i171, %do.body.i11.i166 ] - %49 = trunc i64 %value.addr.0.i12.i167 to i8 - %conv.i14.i169 = and i8 %49, 7 + %51 = trunc i64 %value.addr.0.i12.i167 to i8 + %conv.i14.i169 = and i8 %51, 7 %add.i15.i170 = or disjoint i8 %conv.i14.i169, 48 %incdec.ptr.i16.i171 = getelementptr inbounds i8, ptr %buffer.addr.0.i13.i168, i64 -1 store i8 %add.i15.i170, ptr %incdec.ptr.i16.i171, align 1 @@ -36202,19 +36202,19 @@ _ZN3fmt3v106detail11format_uintILj3EcmEEPT0_S4_T1_ib.exit19.i: ; preds = %do.bod br label %while.body.i.i.i.i178 while.body.i.i.i.i178: ; preds = %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i191, %_ZN3fmt3v106detail11format_uintILj3EcmEEPT0_S4_T1_ib.exit19.i - %50 = phi i64 [ %.pre.i.i.i.i163, %_ZN3fmt3v106detail11format_uintILj3EcmEEPT0_S4_T1_ib.exit19.i ], [ %add7.i.i.i.i192, %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i191 ] + %52 = phi i64 [ %.pre.i.i.i.i163, %_ZN3fmt3v106detail11format_uintILj3EcmEEPT0_S4_T1_ib.exit19.i ], [ %add7.i.i.i.i192, %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i191 ] %begin.addr.011.i.i.i.i179 = phi ptr [ %buffer.i141, %_ZN3fmt3v106detail11format_uintILj3EcmEEPT0_S4_T1_ib.exit19.i ], [ %add.ptr8.i.i.i.i193, %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i191 ] %sub.ptr.rhs.cast.i.i.i.i180 = ptrtoint ptr %begin.addr.011.i.i.i.i179 to i64 %sub.ptr.sub.i.i.i.i181 = sub i64 %sub.ptr.lhs.cast.i.i.i.i176, %sub.ptr.rhs.cast.i.i.i.i180 - %add.i.i.i.i182 = add i64 %sub.ptr.sub.i.i.i.i181, %50 - %51 = load i64, ptr %capacity_.i.i, align 8 - %cmp.i.i.i.i.i183 = icmp ult i64 %51, %add.i.i.i.i182 + %add.i.i.i.i182 = add i64 %sub.ptr.sub.i.i.i.i181, %52 + %53 = load i64, ptr %capacity_.i.i, align 8 + %cmp.i.i.i.i.i183 = icmp ult i64 %53, %add.i.i.i.i182 br i1 %cmp.i.i.i.i.i183, label %if.then.i.i.i.i.i195, label %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i184 if.then.i.i.i.i.i195: ; preds = %while.body.i.i.i.i178 %vtable.i.i.i.i.i196 = load ptr, ptr %buffer, align 8 - %52 = load ptr, ptr %vtable.i.i.i.i.i196, align 8 - invoke void %52(ptr noundef nonnull align 8 dereferenceable(32) %buffer, i64 noundef %add.i.i.i.i182) + %54 = load ptr, ptr %vtable.i.i.i.i.i196, align 8 + invoke void %54(ptr noundef nonnull align 8 dereferenceable(32) %buffer, i64 noundef %add.i.i.i.i182) to label %.noexc199 unwind label %lpad2.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit .noexc199: ; preds = %if.then.i.i.i.i.i195 @@ -36223,23 +36223,23 @@ if.then.i.i.i.i.i195: ; preds = %while.body.i.i.i.i1 br label %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i184 _ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i184: ; preds = %.noexc199, %while.body.i.i.i.i178 - %53 = phi i64 [ %50, %while.body.i.i.i.i178 ], [ %.pre13.i.i.i.i198, %.noexc199 ] - %54 = phi i64 [ %51, %while.body.i.i.i.i178 ], [ %.pre12.i.i.i.i197, %.noexc199 ] - %sub.i.i.i.i185 = sub i64 %54, %53 + %55 = phi i64 [ %52, %while.body.i.i.i.i178 ], [ %.pre13.i.i.i.i198, %.noexc199 ] + %56 = phi i64 [ %53, %while.body.i.i.i.i178 ], [ %.pre12.i.i.i.i197, %.noexc199 ] + %sub.i.i.i.i185 = sub i64 %56, %55 %spec.select.i.i.i.i186 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i185, i64 %sub.ptr.sub.i.i.i.i181) %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i187 = icmp eq i64 %spec.select.i.i.i.i186, 0 br i1 %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i187, label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i191, label %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i188 if.then.i.i.i.i.i.i.i.i.i.i.i.i.i188: ; preds = %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i184 - %55 = load ptr, ptr %ptr_.i.i, align 8 - %add.ptr.i.i.i.i189 = getelementptr inbounds i8, ptr %55, i64 %53 + %57 = load ptr, ptr %ptr_.i.i, align 8 + %add.ptr.i.i.i.i189 = getelementptr inbounds i8, ptr %57, i64 %55 call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr.i.i.i.i189, ptr align 1 %begin.addr.011.i.i.i.i179, i64 %spec.select.i.i.i.i186, i1 false) %.pre14.i.i.i.i190 = load i64, ptr %size_.i.i.i143, align 8 br label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i191 _ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i191: ; preds = %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i188, %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i184 - %56 = phi i64 [ %53, %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i184 ], [ %.pre14.i.i.i.i190, %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i188 ] - %add7.i.i.i.i192 = add i64 %56, %spec.select.i.i.i.i186 + %58 = phi i64 [ %55, %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i184 ], [ %.pre14.i.i.i.i190, %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i188 ] + %add7.i.i.i.i192 = add i64 %58, %spec.select.i.i.i.i186 store i64 %add7.i.i.i.i192, ptr %size_.i.i.i143, align 8 %add.ptr8.i.i.i.i193 = getelementptr inbounds i8, ptr %begin.addr.011.i.i.i.i179, i64 %spec.select.i.i.i.i186 %cmp.not.i.i.i.i194 = icmp eq ptr %add.ptr8.i.i.i.i193, %add.ptr.i10.i165 @@ -36253,8 +36253,8 @@ sw.bb73: ; preds = %entry %conv75 = trunc i64 %value to i8 call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %ref.tmp.i) store i8 0, ptr %ref.tmp.i, align 1 - %57 = getelementptr inbounds i8, ptr %ref.tmp.i, i64 1 - store i8 %conv75, ptr %57, align 1 + %59 = getelementptr inbounds i8, ptr %ref.tmp.i, i64 1 + store i8 %conv75, ptr %59, align 1 %call.i.i200 = invoke ptr @_ZN3fmt3v106detail12write_paddedILNS0_5align4typeE1ENS0_8appenderEcRZNS1_10write_charIcS5_EET0_S7_T_RKNS0_12format_specsIS8_EEEUlS5_E_EES7_S7_RKNS9_IT1_EEmmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(16) %specs, i64 noundef 1, i64 noundef 1, ptr noundef nonnull align 1 dereferenceable(2) %ref.tmp.i) to label %_ZN3fmt3v106detail10write_charIcNS0_8appenderEEET0_S4_T_RKNS0_12format_specsIS5_EE.exit unwind label %lpad2.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp @@ -36270,9 +36270,9 @@ invoke.cont82: ; preds = %sw.default unreachable invoke.cont85: ; preds = %_ZN3fmt3v106detail14format_decimalIcmNS0_8appenderETnNSt9enable_ifIXntsr3std10is_pointerINSt9remove_cvINSt16remove_referenceIT1_E4typeEE4typeEEE5valueEiE4typeELi0EEENS1_21format_decimal_resultIS7_EES7_T0_i.exit, %_ZN3fmt3v106detail11format_uintILj4EcNS0_8appenderEmEET1_S4_T2_ib.exit, %_ZN3fmt3v106detail11format_uintILj1EcNS0_8appenderEmEET1_S4_T2_ib.exit, %_ZN3fmt3v106detail11format_uintILj3EcNS0_8appenderEmEET1_S4_T2_ib.exit - %58 = phi i32 [ %.pre, %_ZN3fmt3v106detail14format_decimalIcmNS0_8appenderETnNSt9enable_ifIXntsr3std10is_pointerINSt9remove_cvINSt16remove_referenceIT1_E4typeEE4typeEEE5valueEiE4typeELi0EEENS1_21format_decimal_resultIS7_EES7_T0_i.exit ], [ %15, %_ZN3fmt3v106detail11format_uintILj4EcNS0_8appenderEmEET1_S4_T2_ib.exit ], [ %29, %_ZN3fmt3v106detail11format_uintILj1EcNS0_8appenderEmEET1_S4_T2_ib.exit ], [ %44, %_ZN3fmt3v106detail11format_uintILj3EcNS0_8appenderEmEET1_S4_T2_ib.exit ] + %60 = phi i32 [ %.pre, %_ZN3fmt3v106detail14format_decimalIcmNS0_8appenderETnNSt9enable_ifIXntsr3std10is_pointerINSt9remove_cvINSt16remove_referenceIT1_E4typeEE4typeEEE5valueEiE4typeELi0EEENS1_21format_decimal_resultIS7_EES7_T0_i.exit ], [ %15, %_ZN3fmt3v106detail11format_uintILj4EcNS0_8appenderEmEET1_S4_T2_ib.exit ], [ %29, %_ZN3fmt3v106detail11format_uintILj1EcNS0_8appenderEmEET1_S4_T2_ib.exit ], [ %46, %_ZN3fmt3v106detail11format_uintILj3EcNS0_8appenderEmEET1_S4_T2_ib.exit ] %num_digits.0 = phi i32 [ %sub.i.i, %_ZN3fmt3v106detail14format_decimalIcmNS0_8appenderETnNSt9enable_ifIXntsr3std10is_pointerINSt9remove_cvINSt16remove_referenceIT1_E4typeEE4typeEEE5valueEiE4typeELi0EEENS1_21format_decimal_resultIS7_EES7_T0_i.exit ], [ %inc.i.i, %_ZN3fmt3v106detail11format_uintILj4EcNS0_8appenderEmEET1_S4_T2_ib.exit ], [ %inc.i.i73, %_ZN3fmt3v106detail11format_uintILj1EcNS0_8appenderEmEET1_S4_T2_ib.exit ], [ %inc.i.i134, %_ZN3fmt3v106detail11format_uintILj3EcNS0_8appenderEmEET1_S4_T2_ib.exit ] - %shr = lshr i32 %58, 24 + %shr = lshr i32 %60, 24 %add = add i32 %shr, %num_digits.0 %call.i.i = call ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %grouping) #27 %thousands_sep_.i.i = getelementptr inbounds i8, ptr %grouping, i64 32 @@ -36293,9 +36293,9 @@ if.then5.i.i: ; preds = %if.end.i.i201 br label %_ZNK3fmt3v106detail14digit_groupingIcE4nextERNS3_10next_stateE.exit.i if.end8.i.i: ; preds = %if.end.i.i201 - %59 = load i8, ptr %state.sroa.0.09.i, align 1 - %60 = add i8 %59, -127 - %or.cond.i.i = icmp ult i8 %60, -126 + %61 = load i8, ptr %state.sroa.0.09.i, align 1 + %62 = add i8 %61, -127 + %or.cond.i.i = icmp ult i8 %62, -126 br i1 %or.cond.i.i, label %invoke.cont89, label %if.end20.i.i if.end20.i.i: ; preds = %if.end8.i.i @@ -36303,9 +36303,9 @@ if.end20.i.i: ; preds = %if.end8.i.i br label %_ZNK3fmt3v106detail14digit_groupingIcE4nextERNS3_10next_stateE.exit.i _ZNK3fmt3v106detail14digit_groupingIcE4nextERNS3_10next_stateE.exit.i: ; preds = %if.end20.i.i, %if.then5.i.i - %61 = phi i8 [ %.pre.i, %if.then5.i.i ], [ %59, %if.end20.i.i ] + %63 = phi i8 [ %.pre.i, %if.then5.i.i ], [ %61, %if.end20.i.i ] %state.sroa.0.1.i = phi ptr [ %state.sroa.0.09.i, %if.then5.i.i ], [ %incdec.ptr.i.i.i, %if.end20.i.i ] - %conv26.i.i = sext i8 %61 to i32 + %conv26.i.i = sext i8 %63 to i32 %add28.i.i = add nsw i32 %state.sroa.3.08.i, %conv26.i.i %cmp.i202 = icmp slt i32 %add28.i.i, %num_digits.0 br i1 %cmp.i202, label %while.body.i, label %invoke.cont89 @@ -36320,21 +36320,21 @@ invoke.cont89: ; preds = %if.end8.i.i, %_ZNK3 %add91 = add i32 %add, %count.0.lcssa.i %conv93 = zext i32 %add91 to i64 store ptr %prefix.addr, ptr %ref.tmp95, align 8 - %62 = getelementptr inbounds i8, ptr %ref.tmp95, i64 8 - store ptr %grouping, ptr %62, align 8 - %63 = getelementptr inbounds i8, ptr %ref.tmp95, i64 16 - store ptr %buffer, ptr %63, align 8 + %64 = getelementptr inbounds i8, ptr %ref.tmp95, i64 8 + store ptr %grouping, ptr %64, align 8 + %65 = getelementptr inbounds i8, ptr %ref.tmp95, i64 16 + store ptr %buffer, ptr %65, align 8 %call99 = invoke ptr @_ZN3fmt3v106detail12write_paddedILNS0_5align4typeE2ENS0_8appenderEcZNS1_9write_intIS5_mcEET_S7_T0_jRKNS0_12format_specsIT1_EERKNS1_14digit_groupingISA_EEEUlS5_E_EES8_S8_SD_mmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(16) %specs, i64 noundef %conv93, i64 noundef %conv93, ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp95) to label %cleanup unwind label %lpad2.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp cleanup: ; preds = %_ZN3fmt3v106detail10write_charIcNS0_8appenderEEET0_S4_T_RKNS0_12format_specsIS5_EE.exit, %invoke.cont89 %retval.sroa.0.0 = phi ptr [ %call.i.i200, %_ZN3fmt3v106detail10write_charIcNS0_8appenderEEET0_S4_T_RKNS0_12format_specsIS5_EE.exit ], [ %call99, %invoke.cont89 ] - %64 = load ptr, ptr %ptr_.i.i, align 8 - %cmp.not.i.i204 = icmp eq ptr %64, %store_.i + %66 = load ptr, ptr %ptr_.i.i, align 8 + %cmp.not.i.i204 = icmp eq ptr %66, %store_.i br i1 %cmp.not.i.i204, label %_ZN3fmt3v1019basic_memory_bufferIcLm500ESaIcEED2Ev.exit, label %if.then.i.i205 if.then.i.i205: ; preds = %cleanup - call void @_ZdlPv(ptr noundef %64) #29 + call void @_ZdlPv(ptr noundef %66) #29 br label %_ZN3fmt3v1019basic_memory_bufferIcLm500ESaIcEED2Ev.exit _ZN3fmt3v1019basic_memory_bufferIcLm500ESaIcEED2Ev.exit: ; preds = %cleanup, %if.then.i.i205 @@ -37146,39 +37146,39 @@ land.lhs.true: ; preds = %invoke.cont60 if.then70: ; preds = %land.lhs.true %cmp.not.i152 = icmp eq i32 %prefix, 0 - %cond.i153 = select i1 %cmp.not.i152, i32 48, i32 12288 - %or.i154 = or i32 %cond.i153, %prefix - %add4.i155 = add i32 %or.i154, 16777216 + %43 = or i32 %prefix, 12288 + %44 = add i32 %43, 16777216 + %add4.i155 = select i1 %cmp.not.i152, i32 16777264, i32 %44 store i32 %add4.i155, ptr %prefix.addr, align 4 br label %invoke.cont73 invoke.cont73: ; preds = %invoke.cont60, %land.lhs.true, %if.then70 - %43 = phi i32 [ %prefix, %invoke.cont60 ], [ %prefix, %land.lhs.true ], [ %add4.i155, %if.then70 ] + %45 = phi i32 [ %prefix, %invoke.cont60 ], [ %prefix, %land.lhs.true ], [ %add4.i155, %if.then70 ] call void @llvm.lifetime.start.p0(i64 43, ptr nonnull %buffer.i156) %conv.i157 = zext nneg i32 %inc.i.i149 to i64 %size_.i.i.i158 = getelementptr inbounds i8, ptr %buffer, i64 16 - %44 = load i64, ptr %size_.i.i.i158, align 8 - %45 = load i64, ptr %capacity_.i.i, align 8 - %add.i.i160 = add i64 %44, %conv.i157 - %cmp.i.i161 = icmp ult i64 %45, %add.i.i160 + %46 = load i64, ptr %size_.i.i.i158, align 8 + %47 = load i64, ptr %capacity_.i.i, align 8 + %add.i.i160 = add i64 %46, %conv.i157 + %cmp.i.i161 = icmp ult i64 %47, %add.i.i160 br i1 %cmp.i.i161, label %if.end.i181, label %_ZN3fmt3v106detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i162 _ZN3fmt3v106detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i162: ; preds = %invoke.cont73 store i64 %add.i.i160, ptr %size_.i.i.i158, align 8 - %46 = load ptr, ptr %ptr_.i.i, align 8 - %tobool.not.i164 = icmp eq ptr %46, null + %48 = load ptr, ptr %ptr_.i.i, align 8 + %tobool.not.i164 = icmp eq ptr %48, null br i1 %tobool.not.i164, label %if.end.i181, label %if.then.i165 if.then.i165: ; preds = %_ZN3fmt3v106detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i162 - %add.ptr.i.i166 = getelementptr inbounds i8, ptr %46, i64 %44 + %add.ptr.i.i166 = getelementptr inbounds i8, ptr %48, i64 %46 %add.ptr.i7.i172 = getelementptr inbounds i8, ptr %add.ptr.i.i166, i64 %conv.i157 br label %do.body.i.i173 do.body.i.i173: ; preds = %do.body.i.i173, %if.then.i165 %value.addr.0.i.i174 = phi i128 [ %value.sroa.0.0.insert.insert, %if.then.i165 ], [ %shr.i.i179, %do.body.i.i173 ] %buffer.addr.0.i.i175 = phi ptr [ %add.ptr.i7.i172, %if.then.i165 ], [ %incdec.ptr.i.i178, %do.body.i.i173 ] - %47 = trunc i128 %value.addr.0.i.i174 to i8 - %conv.i.i176 = and i8 %47, 7 + %49 = trunc i128 %value.addr.0.i.i174 to i8 + %conv.i.i176 = and i8 %49, 7 %add.i8.i177 = or disjoint i8 %conv.i.i176, 48 %incdec.ptr.i.i178 = getelementptr inbounds i8, ptr %buffer.addr.0.i.i175, i64 -1 store i8 %add.i8.i177, ptr %incdec.ptr.i.i178, align 1 @@ -37187,7 +37187,7 @@ do.body.i.i173: ; preds = %do.body.i.i173, %if br i1 %cmp.not.i.i180, label %_ZN3fmt3v106detail11format_uintILj3EcNS0_8appenderEoEET1_S4_T2_ib.exit, label %do.body.i.i173, !llvm.loop !203 if.end.i181: ; preds = %_ZN3fmt3v106detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i162, %invoke.cont73 - %.pre.i.i.i.i182 = phi i64 [ %44, %invoke.cont73 ], [ %add.i.i160, %_ZN3fmt3v106detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i162 ] + %.pre.i.i.i.i182 = phi i64 [ %46, %invoke.cont73 ], [ %add.i.i160, %_ZN3fmt3v106detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i162 ] call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(43) %buffer.i156, i8 0, i64 43, i1 false) %add.ptr.i14.i188 = getelementptr inbounds i8, ptr %buffer.i156, i64 %conv.i157 br label %do.body.i15.i189 @@ -37195,8 +37195,8 @@ if.end.i181: ; preds = %_ZN3fmt3v106detail1 do.body.i15.i189: ; preds = %do.body.i15.i189, %if.end.i181 %value.addr.0.i16.i190 = phi i128 [ %value.sroa.0.0.insert.insert, %if.end.i181 ], [ %shr.i21.i195, %do.body.i15.i189 ] %buffer.addr.0.i17.i191 = phi ptr [ %add.ptr.i14.i188, %if.end.i181 ], [ %incdec.ptr.i20.i194, %do.body.i15.i189 ] - %48 = trunc i128 %value.addr.0.i16.i190 to i8 - %conv.i18.i192 = and i8 %48, 7 + %50 = trunc i128 %value.addr.0.i16.i190 to i8 + %conv.i18.i192 = and i8 %50, 7 %add.i19.i193 = or disjoint i8 %conv.i18.i192, 48 %incdec.ptr.i20.i194 = getelementptr inbounds i8, ptr %buffer.addr.0.i17.i191, i64 -1 store i8 %add.i19.i193, ptr %incdec.ptr.i20.i194, align 1 @@ -37209,19 +37209,19 @@ _ZN3fmt3v106detail11format_uintILj3EcoEEPT0_S4_T1_ib.exit23.i: ; preds = %do.bod br label %while.body.i.i.i.i199 while.body.i.i.i.i199: ; preds = %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i212, %_ZN3fmt3v106detail11format_uintILj3EcoEEPT0_S4_T1_ib.exit23.i - %49 = phi i64 [ %.pre.i.i.i.i182, %_ZN3fmt3v106detail11format_uintILj3EcoEEPT0_S4_T1_ib.exit23.i ], [ %add7.i.i.i.i213, %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i212 ] + %51 = phi i64 [ %.pre.i.i.i.i182, %_ZN3fmt3v106detail11format_uintILj3EcoEEPT0_S4_T1_ib.exit23.i ], [ %add7.i.i.i.i213, %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i212 ] %begin.addr.011.i.i.i.i200 = phi ptr [ %buffer.i156, %_ZN3fmt3v106detail11format_uintILj3EcoEEPT0_S4_T1_ib.exit23.i ], [ %add.ptr8.i.i.i.i214, %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i212 ] %sub.ptr.rhs.cast.i.i.i.i201 = ptrtoint ptr %begin.addr.011.i.i.i.i200 to i64 %sub.ptr.sub.i.i.i.i202 = sub i64 %sub.ptr.lhs.cast.i.i.i.i197, %sub.ptr.rhs.cast.i.i.i.i201 - %add.i.i.i.i203 = add i64 %sub.ptr.sub.i.i.i.i202, %49 - %50 = load i64, ptr %capacity_.i.i, align 8 - %cmp.i.i.i.i.i204 = icmp ult i64 %50, %add.i.i.i.i203 + %add.i.i.i.i203 = add i64 %sub.ptr.sub.i.i.i.i202, %51 + %52 = load i64, ptr %capacity_.i.i, align 8 + %cmp.i.i.i.i.i204 = icmp ult i64 %52, %add.i.i.i.i203 br i1 %cmp.i.i.i.i.i204, label %if.then.i.i.i.i.i216, label %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i205 if.then.i.i.i.i.i216: ; preds = %while.body.i.i.i.i199 %vtable.i.i.i.i.i217 = load ptr, ptr %buffer, align 8 - %51 = load ptr, ptr %vtable.i.i.i.i.i217, align 8 - invoke void %51(ptr noundef nonnull align 8 dereferenceable(32) %buffer, i64 noundef %add.i.i.i.i203) + %53 = load ptr, ptr %vtable.i.i.i.i.i217, align 8 + invoke void %53(ptr noundef nonnull align 8 dereferenceable(32) %buffer, i64 noundef %add.i.i.i.i203) to label %.noexc220 unwind label %lpad3.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit .noexc220: ; preds = %if.then.i.i.i.i.i216 @@ -37230,23 +37230,23 @@ if.then.i.i.i.i.i216: ; preds = %while.body.i.i.i.i1 br label %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i205 _ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i205: ; preds = %.noexc220, %while.body.i.i.i.i199 - %52 = phi i64 [ %49, %while.body.i.i.i.i199 ], [ %.pre13.i.i.i.i219, %.noexc220 ] - %53 = phi i64 [ %50, %while.body.i.i.i.i199 ], [ %.pre12.i.i.i.i218, %.noexc220 ] - %sub.i.i.i.i206 = sub i64 %53, %52 + %54 = phi i64 [ %51, %while.body.i.i.i.i199 ], [ %.pre13.i.i.i.i219, %.noexc220 ] + %55 = phi i64 [ %52, %while.body.i.i.i.i199 ], [ %.pre12.i.i.i.i218, %.noexc220 ] + %sub.i.i.i.i206 = sub i64 %55, %54 %spec.select.i.i.i.i207 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i206, i64 %sub.ptr.sub.i.i.i.i202) %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i208 = icmp eq i64 %spec.select.i.i.i.i207, 0 br i1 %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i208, label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i212, label %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i209 if.then.i.i.i.i.i.i.i.i.i.i.i.i.i209: ; preds = %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i205 - %54 = load ptr, ptr %ptr_.i.i, align 8 - %add.ptr.i.i.i.i210 = getelementptr inbounds i8, ptr %54, i64 %52 + %56 = load ptr, ptr %ptr_.i.i, align 8 + %add.ptr.i.i.i.i210 = getelementptr inbounds i8, ptr %56, i64 %54 call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr.i.i.i.i210, ptr align 1 %begin.addr.011.i.i.i.i200, i64 %spec.select.i.i.i.i207, i1 false) %.pre14.i.i.i.i211 = load i64, ptr %size_.i.i.i158, align 8 br label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i212 _ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i212: ; preds = %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i209, %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i205 - %55 = phi i64 [ %52, %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i205 ], [ %.pre14.i.i.i.i211, %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i209 ] - %add7.i.i.i.i213 = add i64 %55, %spec.select.i.i.i.i207 + %57 = phi i64 [ %54, %_ZN3fmt3v106detail6bufferIcE11try_reserveEm.exit.i.i.i.i205 ], [ %.pre14.i.i.i.i211, %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i209 ] + %add7.i.i.i.i213 = add i64 %57, %spec.select.i.i.i.i207 store i64 %add7.i.i.i.i213, ptr %size_.i.i.i158, align 8 %add.ptr8.i.i.i.i214 = getelementptr inbounds i8, ptr %begin.addr.011.i.i.i.i200, i64 %spec.select.i.i.i.i207 %cmp.not.i.i.i.i215 = icmp eq ptr %add.ptr8.i.i.i.i214, %add.ptr.i14.i188 @@ -37260,8 +37260,8 @@ sw.bb82: ; preds = %entry %conv84 = trunc i64 %value.coerce0 to i8 call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %ref.tmp.i) store i8 0, ptr %ref.tmp.i, align 1 - %56 = getelementptr inbounds i8, ptr %ref.tmp.i, i64 1 - store i8 %conv84, ptr %56, align 1 + %58 = getelementptr inbounds i8, ptr %ref.tmp.i, i64 1 + store i8 %conv84, ptr %58, align 1 %call.i.i221 = invoke ptr @_ZN3fmt3v106detail12write_paddedILNS0_5align4typeE1ENS0_8appenderEcRZNS1_10write_charIcS5_EET0_S7_T_RKNS0_12format_specsIS8_EEEUlS5_E_EES7_S7_RKNS9_IT1_EEmmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(16) %specs, i64 noundef 1, i64 noundef 1, ptr noundef nonnull align 1 dereferenceable(2) %ref.tmp.i) to label %_ZN3fmt3v106detail10write_charIcNS0_8appenderEEET0_S4_T_RKNS0_12format_specsIS5_EE.exit unwind label %lpad3.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp @@ -37277,9 +37277,9 @@ invoke.cont91: ; preds = %sw.default unreachable invoke.cont94: ; preds = %_ZN3fmt3v106detail14format_decimalIcoNS0_8appenderETnNSt9enable_ifIXntsr3std10is_pointerINSt9remove_cvINSt16remove_referenceIT1_E4typeEE4typeEEE5valueEiE4typeELi0EEENS1_21format_decimal_resultIS7_EES7_T0_i.exit, %_ZN3fmt3v106detail11format_uintILj4EcNS0_8appenderEoEET1_S4_T2_ib.exit, %_ZN3fmt3v106detail11format_uintILj1EcNS0_8appenderEoEET1_S4_T2_ib.exit, %_ZN3fmt3v106detail11format_uintILj3EcNS0_8appenderEoEET1_S4_T2_ib.exit - %57 = phi i32 [ %.pre, %_ZN3fmt3v106detail14format_decimalIcoNS0_8appenderETnNSt9enable_ifIXntsr3std10is_pointerINSt9remove_cvINSt16remove_referenceIT1_E4typeEE4typeEEE5valueEiE4typeELi0EEENS1_21format_decimal_resultIS7_EES7_T0_i.exit ], [ %12, %_ZN3fmt3v106detail11format_uintILj4EcNS0_8appenderEoEET1_S4_T2_ib.exit ], [ %28, %_ZN3fmt3v106detail11format_uintILj1EcNS0_8appenderEoEET1_S4_T2_ib.exit ], [ %43, %_ZN3fmt3v106detail11format_uintILj3EcNS0_8appenderEoEET1_S4_T2_ib.exit ] + %59 = phi i32 [ %.pre, %_ZN3fmt3v106detail14format_decimalIcoNS0_8appenderETnNSt9enable_ifIXntsr3std10is_pointerINSt9remove_cvINSt16remove_referenceIT1_E4typeEE4typeEEE5valueEiE4typeELi0EEENS1_21format_decimal_resultIS7_EES7_T0_i.exit ], [ %12, %_ZN3fmt3v106detail11format_uintILj4EcNS0_8appenderEoEET1_S4_T2_ib.exit ], [ %28, %_ZN3fmt3v106detail11format_uintILj1EcNS0_8appenderEoEET1_S4_T2_ib.exit ], [ %45, %_ZN3fmt3v106detail11format_uintILj3EcNS0_8appenderEoEET1_S4_T2_ib.exit ] %num_digits.0 = phi i32 [ %retval.0.i.i233242, %_ZN3fmt3v106detail14format_decimalIcoNS0_8appenderETnNSt9enable_ifIXntsr3std10is_pointerINSt9remove_cvINSt16remove_referenceIT1_E4typeEE4typeEEE5valueEiE4typeELi0EEENS1_21format_decimal_resultIS7_EES7_T0_i.exit ], [ %inc.i.i, %_ZN3fmt3v106detail11format_uintILj4EcNS0_8appenderEoEET1_S4_T2_ib.exit ], [ %inc.i.i82, %_ZN3fmt3v106detail11format_uintILj1EcNS0_8appenderEoEET1_S4_T2_ib.exit ], [ %inc.i.i149, %_ZN3fmt3v106detail11format_uintILj3EcNS0_8appenderEoEET1_S4_T2_ib.exit ] - %shr = lshr i32 %57, 24 + %shr = lshr i32 %59, 24 %add = add i32 %shr, %num_digits.0 %call.i.i = call ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %grouping) #27 %thousands_sep_.i.i = getelementptr inbounds i8, ptr %grouping, i64 32 @@ -37300,9 +37300,9 @@ if.then5.i.i: ; preds = %if.end.i.i222 br label %_ZNK3fmt3v106detail14digit_groupingIcE4nextERNS3_10next_stateE.exit.i if.end8.i.i223: ; preds = %if.end.i.i222 - %58 = load i8, ptr %state.sroa.0.09.i, align 1 - %59 = add i8 %58, -127 - %or.cond.i.i = icmp ult i8 %59, -126 + %60 = load i8, ptr %state.sroa.0.09.i, align 1 + %61 = add i8 %60, -127 + %or.cond.i.i = icmp ult i8 %61, -126 br i1 %or.cond.i.i, label %invoke.cont98, label %if.end20.i.i if.end20.i.i: ; preds = %if.end8.i.i223 @@ -37310,9 +37310,9 @@ if.end20.i.i: ; preds = %if.end8.i.i223 br label %_ZNK3fmt3v106detail14digit_groupingIcE4nextERNS3_10next_stateE.exit.i _ZNK3fmt3v106detail14digit_groupingIcE4nextERNS3_10next_stateE.exit.i: ; preds = %if.end20.i.i, %if.then5.i.i - %60 = phi i8 [ %.pre.i, %if.then5.i.i ], [ %58, %if.end20.i.i ] + %62 = phi i8 [ %.pre.i, %if.then5.i.i ], [ %60, %if.end20.i.i ] %state.sroa.0.1.i = phi ptr [ %state.sroa.0.09.i, %if.then5.i.i ], [ %incdec.ptr.i.i.i, %if.end20.i.i ] - %conv26.i.i = sext i8 %60 to i32 + %conv26.i.i = sext i8 %62 to i32 %add28.i.i = add nsw i32 %state.sroa.3.08.i, %conv26.i.i %cmp.i224 = icmp slt i32 %add28.i.i, %num_digits.0 br i1 %cmp.i224, label %while.body.i, label %invoke.cont98 @@ -37327,21 +37327,21 @@ invoke.cont98: ; preds = %if.end8.i.i223, %_Z %add100 = add i32 %add, %count.0.lcssa.i %conv102 = zext i32 %add100 to i64 store ptr %prefix.addr, ptr %ref.tmp104, align 8 - %61 = getelementptr inbounds i8, ptr %ref.tmp104, i64 8 - store ptr %grouping, ptr %61, align 8 - %62 = getelementptr inbounds i8, ptr %ref.tmp104, i64 16 - store ptr %buffer, ptr %62, align 8 + %63 = getelementptr inbounds i8, ptr %ref.tmp104, i64 8 + store ptr %grouping, ptr %63, align 8 + %64 = getelementptr inbounds i8, ptr %ref.tmp104, i64 16 + store ptr %buffer, ptr %64, align 8 %call108 = invoke ptr @_ZN3fmt3v106detail12write_paddedILNS0_5align4typeE2ENS0_8appenderEcZNS1_9write_intIS5_ocEET_S7_T0_jRKNS0_12format_specsIT1_EERKNS1_14digit_groupingISA_EEEUlS5_E_EES8_S8_SD_mmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(16) %specs, i64 noundef %conv102, i64 noundef %conv102, ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp104) to label %cleanup unwind label %lpad3.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp cleanup: ; preds = %_ZN3fmt3v106detail10write_charIcNS0_8appenderEEET0_S4_T_RKNS0_12format_specsIS5_EE.exit, %invoke.cont98 %retval.sroa.0.0 = phi ptr [ %call.i.i221, %_ZN3fmt3v106detail10write_charIcNS0_8appenderEEET0_S4_T_RKNS0_12format_specsIS5_EE.exit ], [ %call108, %invoke.cont98 ] - %63 = load ptr, ptr %ptr_.i.i, align 8 - %cmp.not.i.i226 = icmp eq ptr %63, %store_.i + %65 = load ptr, ptr %ptr_.i.i, align 8 + %cmp.not.i.i226 = icmp eq ptr %65, %store_.i br i1 %cmp.not.i.i226, label %_ZN3fmt3v1019basic_memory_bufferIcLm500ESaIcEED2Ev.exit, label %if.then.i.i227 if.then.i.i227: ; preds = %cleanup - call void @_ZdlPv(ptr noundef %63) #29 + call void @_ZdlPv(ptr noundef %65) #29 br label %_ZN3fmt3v1019basic_memory_bufferIcLm500ESaIcEED2Ev.exit _ZN3fmt3v1019basic_memory_bufferIcLm500ESaIcEED2Ev.exit: ; preds = %cleanup, %if.then.i.i227 diff --git a/bench/folly/optimized/File.cpp.ll b/bench/folly/optimized/File.cpp.ll index 032b4e6e534..2e832a4a380 100644 --- a/bench/folly/optimized/File.cpp.ll +++ b/bench/folly/optimized/File.cpp.ll @@ -2270,7 +2270,7 @@ if.then.i.i.i.i8.i: ; preds = %lpad.i br label %_ZN3fmt2v96detail14digit_groupingIcED2Ev.exit12.i common.resume: ; preds = %_ZN3fmt2v96detail14digit_groupingIcED2Ev.exit12.i567, %_ZN3fmt2v96detail14digit_groupingIcED2Ev.exit12.i - %common.resume.op = phi { ptr, i32 } [ %21, %_ZN3fmt2v96detail14digit_groupingIcED2Ev.exit12.i ], [ %95, %_ZN3fmt2v96detail14digit_groupingIcED2Ev.exit12.i567 ] + %common.resume.op = phi { ptr, i32 } [ %21, %_ZN3fmt2v96detail14digit_groupingIcED2Ev.exit12.i ], [ %97, %_ZN3fmt2v96detail14digit_groupingIcED2Ev.exit12.i567 ] resume { ptr, i32 } %common.resume.op _ZN3fmt2v96detail14digit_groupingIcED2Ev.exit12.i: ; preds = %if.then.i.i.i.i8.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i9.i @@ -2804,16 +2804,16 @@ land.lhs.true61.i: ; preds = %sw.bb53.i if.then65.i: ; preds = %land.lhs.true61.i %cmp.not.i503 = icmp eq i32 %prefix.0.i, 0 - %cond.i504 = select i1 %cmp.not.i503, i32 48, i32 12288 - %or.i505 = or i32 %cond.i504, %prefix.0.i - %add4.i506 = add i32 %or.i505, 16777216 + %72 = or i32 %prefix.0.i, 12288 + %73 = add i32 %72, 16777216 + %add4.i506 = select i1 %cmp.not.i503, i32 16777264, i32 %73 br label %if.end66.i if.end66.i: ; preds = %if.then65.i, %land.lhs.true61.i, %sw.bb53.i %prefix.i.2 = phi i32 [ %prefix.0.i, %sw.bb53.i ], [ %add4.i506, %if.then65.i ], [ %prefix.0.i, %land.lhs.true61.i ] - %72 = load i32, ptr %specs.i, align 8, !tbaa !98 + %74 = load i32, ptr %specs.i, align 8, !tbaa !98 %add.i336 = add nsw i32 %.pre, 1 - %or.i337 = or i32 %72, %add.i336 + %or.i337 = or i32 %74, %add.i336 %cmp.i338 = icmp eq i32 %or.i337, 0 %shr.i346 = lshr i32 %prefix.i.2, 24 %add1.i347 = add nuw nsw i32 %shr.i346, %add.i502 @@ -2822,11 +2822,11 @@ if.end66.i: ; preds = %if.then65.i, %land. if.then.i343: ; preds = %if.end66.i %_M_string_length.i.i507 = getelementptr inbounds i8, ptr %out.coerce, i64 8 - %73 = load i64, ptr %_M_string_length.i.i507, align 8, !tbaa !28 - %add.i508 = add i64 %73, %conv.i348 + %75 = load i64, ptr %_M_string_length.i.i507, align 8, !tbaa !28 + %add.i508 = add i64 %75, %conv.i348 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEmc(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i508, i8 noundef signext 0) - %74 = load ptr, ptr %out.coerce, align 8, !tbaa !32 - %add.ptr.i509 = getelementptr inbounds i8, ptr %74, i64 %73 + %76 = load ptr, ptr %out.coerce, align 8, !tbaa !32 + %add.ptr.i509 = getelementptr inbounds i8, ptr %76, i64 %75 %and.i352 = and i32 %prefix.i.2, 16777215 %cmp6.not.i3561045 = icmp eq i32 %and.i352, 0 br i1 %cmp6.not.i3561045, label %if.end.i361, label %for.body.i357 @@ -2850,9 +2850,9 @@ if.end.i361: ; preds = %for.body.i357, %if. do.body.i.i512: ; preds = %do.body.i.i512, %if.end.i361 %value.addr.0.i.i513 = phi i32 [ %abs_value.0.i, %if.end.i361 ], [ %shr.i.i517, %do.body.i.i512 ] %buffer.addr.0.i.i514 = phi ptr [ %add.ptr.i.i511, %if.end.i361 ], [ %incdec.ptr.i.i516, %do.body.i.i512 ] - %75 = trunc i32 %value.addr.0.i.i513 to i8 - %76 = and i8 %75, 7 - %conv.i.i515 = or disjoint i8 %76, 48 + %77 = trunc i32 %value.addr.0.i.i513 to i8 + %78 = and i8 %77, 7 + %conv.i.i515 = or disjoint i8 %78, 48 %incdec.ptr.i.i516 = getelementptr inbounds i8, ptr %buffer.addr.0.i.i514, i64 -1 store i8 %conv.i.i515, ptr %incdec.ptr.i.i516, align 1, !tbaa !31 %shr.i.i517 = lshr i32 %value.addr.0.i.i513, 3 @@ -2860,16 +2860,16 @@ do.body.i.i512: ; preds = %do.body.i.i512, %if br i1 %cmp.not.i.i518, label %_ZN3fmt2v96detail9write_intIcSt20back_insert_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEjEET0_SB_NS1_13write_int_argIT1_EERKNS0_18basic_format_specsIT_EENS1_10locale_refE.exit, label %do.body.i.i512, !llvm.loop !123 if.end13.i339: ; preds = %if.end66.i - %77 = and i16 %bf.load.i21, 15 - %cmp.i526 = icmp eq i16 %77, 4 + %79 = and i16 %bf.load.i21, 15 + %cmp.i526 = icmp eq i16 %79, 4 br i1 %cmp.i526, label %if.then.i535, label %if.else.i527 if.then.i535: ; preds = %if.end13.i339 - %cmp7.i536 = icmp ult i32 %add1.i347, %72 + %cmp7.i536 = icmp ult i32 %add1.i347, %74 br i1 %cmp7.i536, label %if.then8.i537, label %_ZN3fmt2v96detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit540 if.then8.i537: ; preds = %if.then.i535 - %conv5.i538 = zext i32 %72 to i64 + %conv5.i538 = zext i32 %74 to i64 %sub.i539 = sub nsw i64 %conv5.i538, %conv.i348 br label %_ZN3fmt2v96detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit540 @@ -2887,46 +2887,46 @@ if.then15.i530: ; preds = %if.else.i527 _ZN3fmt2v96detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit540: ; preds = %if.then15.i530, %if.else.i527, %if.then8.i537, %if.then.i535 %data.i333.sroa.0.0 = phi i64 [ %conv5.i538, %if.then8.i537 ], [ %conv.i348, %if.then.i535 ], [ %conv20.i532, %if.then15.i530 ], [ %conv.i348, %if.else.i527 ] %data.i333.sroa.7.0 = phi i64 [ %sub.i539, %if.then8.i537 ], [ 0, %if.then.i535 ], [ %conv25.i534, %if.then15.i530 ], [ 0, %if.else.i527 ] - %conv.i857 = zext i32 %72 to i64 + %conv.i857 = zext i32 %74 to i64 %cond.i858 = tail call i64 @llvm.usub.sat.i64(i64 %conv.i857, i64 %data.i333.sroa.0.0) - %bf.cast.i861 = zext nneg i16 %77 to i64 + %bf.cast.i861 = zext nneg i16 %79 to i64 %arrayidx.i862 = getelementptr inbounds i8, ptr @.str.22, i64 %bf.cast.i861 - %78 = load i8, ptr %arrayidx.i862, align 1, !tbaa !31 - %conv3.i863 = sext i8 %78 to i64 + %80 = load i8, ptr %arrayidx.i862, align 1, !tbaa !31 + %conv3.i863 = sext i8 %80 to i64 %sh_prom.i864 = and i64 %conv3.i863, 4294967295 %shr.i865 = lshr i64 %cond.i858, %sh_prom.i864 %sub4.i866 = sub nsw i64 %cond.i858, %shr.i865 %fill.i867 = getelementptr inbounds i8, ptr %specs.i, i64 11 %size_.i.i868 = getelementptr inbounds i8, ptr %specs.i, i64 15 - %79 = load i8, ptr %size_.i.i868, align 1, !tbaa !116 - %conv.i.i869 = zext i8 %79 to i64 + %81 = load i8, ptr %size_.i.i868, align 1, !tbaa !116 + %conv.i.i869 = zext i8 %81 to i64 %mul.i870 = mul nuw nsw i64 %cond.i858, %conv.i.i869 %_M_string_length.i.i.i871 = getelementptr inbounds i8, ptr %out.coerce, i64 8 - %80 = load i64, ptr %_M_string_length.i.i.i871, align 8, !tbaa !28 - %add.i872 = add i64 %80, %data.i333.sroa.0.0 + %82 = load i64, ptr %_M_string_length.i.i.i871, align 8, !tbaa !28 + %add.i872 = add i64 %82, %data.i333.sroa.0.0 %add.i.i873 = add i64 %add.i872, %mul.i870 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEmc(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i873, i8 noundef signext 0) - %81 = load ptr, ptr %out.coerce, align 8, !tbaa !32 - %add.ptr.i.i874 = getelementptr inbounds i8, ptr %81, i64 %80 + %83 = load ptr, ptr %out.coerce, align 8, !tbaa !32 + %add.ptr.i.i874 = getelementptr inbounds i8, ptr %83, i64 %82 %cmp8.not.i875 = icmp eq i64 %shr.i865, 0 br i1 %cmp8.not.i875, label %if.end.i878, label %if.then.i876 if.then.i876: ; preds = %_ZN3fmt2v96detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit540 - %cmp.i60 = icmp eq i8 %79, 1 + %cmp.i60 = icmp eq i8 %81, 1 br i1 %cmp.i60, label %if.then.i87, label %for.body.preheader.i63 for.body.preheader.i63: ; preds = %if.then.i876 %xtraiter.i64 = and i64 %shr.i865, 3 - %82 = icmp ult i64 %shr.i865, 4 - br i1 %82, label %cleanup.loopexit.unr-lcssa.i76, label %for.body.preheader.new.i65 + %84 = icmp ult i64 %shr.i865, 4 + br i1 %84, label %cleanup.loopexit.unr-lcssa.i76, label %for.body.preheader.new.i65 for.body.preheader.new.i65: ; preds = %for.body.preheader.i63 %unroll_iter.i66 = and i64 %shr.i865, 4294967292 br label %for.body.i67 if.then.i87: ; preds = %if.then.i876 - %83 = load i8, ptr %fill.i867, align 1, !tbaa !31 - tail call void @llvm.memset.p0.i64(ptr align 1 %add.ptr.i.i874, i8 %83, i64 %shr.i865, i1 false) + %85 = load i8, ptr %fill.i867, align 1, !tbaa !31 + tail call void @llvm.memset.p0.i64(ptr align 1 %add.ptr.i.i874, i8 %85, i64 %shr.i865, i1 false) %add.ptr.i.i88 = getelementptr inbounds i8, ptr %add.ptr.i.i874, i64 %shr.i865 br label %if.end.i878 @@ -2977,9 +2977,9 @@ for.cond.cleanup.i.i889: ; preds = %for.body.i.i882, %i do.body.i.i.i.i895: ; preds = %do.body.i.i.i.i895, %for.cond.cleanup.i.i889 %value.addr.0.i.i.i.i896 = phi i32 [ %abs_value.0.i, %for.cond.cleanup.i.i889 ], [ %shr.i.i.i.i900, %do.body.i.i.i.i895 ] %buffer.addr.0.i.i.i.i897 = phi ptr [ %add.ptr.i.i.i.i894, %for.cond.cleanup.i.i889 ], [ %incdec.ptr.i.i.i.i899, %do.body.i.i.i.i895 ] - %84 = trunc i32 %value.addr.0.i.i.i.i896 to i8 - %85 = and i8 %84, 7 - %conv.i.i.i.i898 = or disjoint i8 %85, 48 + %86 = trunc i32 %value.addr.0.i.i.i.i896 to i8 + %87 = and i8 %86, 7 + %conv.i.i.i.i898 = or disjoint i8 %87, 48 %incdec.ptr.i.i.i.i899 = getelementptr inbounds i8, ptr %buffer.addr.0.i.i.i.i897, i64 -1 store i8 %conv.i.i.i.i898, ptr %incdec.ptr.i.i.i.i899, align 1, !tbaa !31 %shr.i.i.i.i900 = lshr i32 %value.addr.0.i.i.i.i896, 3 @@ -3008,8 +3008,8 @@ sw.bb72.i: ; preds = %_ZN3fmt2v96detail18 %conv74.i = trunc i32 %abs_value.0.i to i8 call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %ref.tmp.i542) #31 store i8 0, ptr %ref.tmp.i542, align 1, !tbaa !126 - %86 = getelementptr inbounds i8, ptr %ref.tmp.i542, i64 1 - store i8 %conv74.i, ptr %86, align 1, !tbaa !128 + %88 = getelementptr inbounds i8, ptr %ref.tmp.i542, i64 1 + store i8 %conv74.i, ptr %88, align 1, !tbaa !128 %call.i.i = call ptr @_ZN3fmt2v96detail12write_paddedILNS0_5align4typeE1ESt20back_insert_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEcRZNS1_10write_charIcSC_EET0_SE_T_RKNS0_18basic_format_specsISF_EEEUlPcE_EESE_SE_RKNSG_IT1_EEmmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(16) %specs.i, i64 noundef 1, i64 noundef 1, ptr noundef nonnull align 1 dereferenceable(2) %ref.tmp.i542) call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %ref.tmp.i542) #31 br label %_ZN3fmt2v96detail9write_intIcSt20back_insert_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEjEET0_SB_NS1_13write_int_argIT1_EERKNS0_18basic_format_specsIT_EENS1_10locale_refE.exit @@ -3035,20 +3035,20 @@ if.then.i558: ; preds = %if.end.i br label %_ZN3fmt2v96detail18make_write_int_argIiEENS1_13write_int_argINSt11conditionalIXaalecl8num_bitsIT_EELi32EntLi0EEjNS4_IXlecl8num_bitsIS5_EELi64EEmoE4typeEE4typeEEES5_NS0_4sign4typeE.exit560 if.else.i550: ; preds = %if.end.i - %87 = lshr i16 %bf.load.i, 4 - %88 = and i16 %87, 7 - %bf.cast.i = zext nneg i16 %88 to i64 + %89 = lshr i16 %bf.load.i, 4 + %90 = and i16 %89, 7 + %bf.cast.i = zext nneg i16 %90 to i64 %arrayidx.i552 = getelementptr inbounds [4 x i32], ptr @__const._ZN3fmt2v96detail18make_write_int_argIjEENS1_13write_int_argINSt11conditionalIXaalecl8num_bitsIT_EELi32EntLi0EEjNS4_IXlecl8num_bitsIS5_EELi64EEmoE4typeEE4typeEEES5_NS0_4sign4typeE.prefixes, i64 0, i64 %bf.cast.i - %89 = load i32, ptr %arrayidx.i552, align 4, !tbaa !14 + %91 = load i32, ptr %arrayidx.i552, align 4, !tbaa !14 br label %_ZN3fmt2v96detail18make_write_int_argIiEENS1_13write_int_argINSt11conditionalIXaalecl8num_bitsIT_EELi32EntLi0EEjNS4_IXlecl8num_bitsIS5_EELi64EEmoE4typeEE4typeEEES5_NS0_4sign4typeE.exit560 _ZN3fmt2v96detail18make_write_int_argIiEENS1_13write_int_argINSt11conditionalIXaalecl8num_bitsIT_EELi32EntLi0EEjNS4_IXlecl8num_bitsIS5_EELi64EEmoE4typeEE4typeEEES5_NS0_4sign4typeE.exit560: ; preds = %if.else.i550, %if.then.i558 %retval.sroa.0.0.insert.ext.i556.pre-phi = phi i64 [ %.pre1088, %if.then.i558 ], [ %retval.i8.sroa.0.0.insert.ext.i, %if.else.i550 ] - %prefix.0.i554 = phi i32 [ 16777261, %if.then.i558 ], [ %89, %if.else.i550 ] + %prefix.0.i554 = phi i32 [ 16777261, %if.then.i558 ], [ %91, %if.else.i550 ] %abs_value.0.i555 = phi i32 [ %sub.i559, %if.then.i558 ], [ %2, %if.else.i550 ] %type.i37 = getelementptr inbounds i8, ptr %this, i64 8 - %90 = load i8, ptr %type.i37, align 8, !tbaa !96 - switch i8 %90, label %sw.default.i109 [ + %92 = load i8, ptr %type.i37, align 8, !tbaa !96 + switch i8 %92, label %sw.default.i109 [ i8 0, label %sw.bb.i92 i8 1, label %sw.bb.i92 i8 3, label %sw.bb11.i76 @@ -3060,8 +3060,8 @@ _ZN3fmt2v96detail18make_write_int_argIiEENS1_13write_int_argINSt11conditionalIXa ] sw.bb.i92: ; preds = %_ZN3fmt2v96detail18make_write_int_argIiEENS1_13write_int_argINSt11conditionalIXaalecl8num_bitsIT_EELi32EntLi0EEjNS4_IXlecl8num_bitsIS5_EELi64EEmoE4typeEE4typeEEES5_NS0_4sign4typeE.exit560, %_ZN3fmt2v96detail18make_write_int_argIiEENS1_13write_int_argINSt11conditionalIXaalecl8num_bitsIT_EELi32EntLi0EEjNS4_IXlecl8num_bitsIS5_EELi64EEmoE4typeEE4typeEEES5_NS0_4sign4typeE.exit560 - %91 = and i16 %bf.load.i, 256 - %bf.cast.not.i95 = icmp eq i16 %91, 0 + %93 = and i16 %bf.load.i, 256 + %bf.cast.not.i95 = icmp eq i16 %93, 0 br i1 %bf.cast.not.i95, label %if.end.i99, label %land.lhs.true.i96 land.lhs.true.i96: ; preds = %sw.bb.i92 @@ -3071,39 +3071,39 @@ land.lhs.true.i96: ; preds = %sw.bb.i92 to label %invoke.cont.i571 unwind label %lpad.i564 invoke.cont.i571: ; preds = %land.lhs.true.i96 - %92 = load ptr, ptr %grouping.i561, align 8, !tbaa !32 - %93 = getelementptr inbounds i8, ptr %grouping.i561, i64 16 - %cmp.i.i.i.i.i.i572 = icmp eq ptr %92, %93 + %94 = load ptr, ptr %grouping.i561, align 8, !tbaa !32 + %95 = getelementptr inbounds i8, ptr %grouping.i561, i64 16 + %cmp.i.i.i.i.i.i572 = icmp eq ptr %94, %95 br i1 %cmp.i.i.i.i.i.i572, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i574, label %if.then.i.i.i.i.i573 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i574: ; preds = %invoke.cont.i571 %_M_string_length.i.i.i.i.i.i575 = getelementptr inbounds i8, ptr %grouping.i561, i64 8 - %94 = load i64, ptr %_M_string_length.i.i.i.i.i.i575, align 8, !tbaa !28 - %cmp3.i.i.i.i.i.i576 = icmp ult i64 %94, 16 + %96 = load i64, ptr %_M_string_length.i.i.i.i.i.i575, align 8, !tbaa !28 + %cmp3.i.i.i.i.i.i576 = icmp ult i64 %96, 16 call void @llvm.assume(i1 %cmp3.i.i.i.i.i.i576) br label %if.then.i107 if.then.i.i.i.i.i573: ; preds = %invoke.cont.i571 - call void @_ZdlPv(ptr noundef %92) #33 + call void @_ZdlPv(ptr noundef %94) #33 br label %if.then.i107 lpad.i564: ; preds = %land.lhs.true.i96 - %95 = landingpad { ptr, i32 } + %97 = landingpad { ptr, i32 } cleanup - %96 = load ptr, ptr %grouping.i561, align 8, !tbaa !32 - %97 = getelementptr inbounds i8, ptr %grouping.i561, i64 16 - %cmp.i.i.i.i.i7.i565 = icmp eq ptr %96, %97 + %98 = load ptr, ptr %grouping.i561, align 8, !tbaa !32 + %99 = getelementptr inbounds i8, ptr %grouping.i561, i64 16 + %cmp.i.i.i.i.i7.i565 = icmp eq ptr %98, %99 br i1 %cmp.i.i.i.i.i7.i565, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i9.i568, label %if.then.i.i.i.i8.i566 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i9.i568: ; preds = %lpad.i564 %_M_string_length.i.i.i.i.i10.i569 = getelementptr inbounds i8, ptr %grouping.i561, i64 8 - %98 = load i64, ptr %_M_string_length.i.i.i.i.i10.i569, align 8, !tbaa !28 - %cmp3.i.i.i.i.i11.i570 = icmp ult i64 %98, 16 + %100 = load i64, ptr %_M_string_length.i.i.i.i.i10.i569, align 8, !tbaa !28 + %cmp3.i.i.i.i.i11.i570 = icmp ult i64 %100, 16 call void @llvm.assume(i1 %cmp3.i.i.i.i.i11.i570) br label %_ZN3fmt2v96detail14digit_groupingIcED2Ev.exit12.i567 if.then.i.i.i.i8.i566: ; preds = %lpad.i564 - call void @_ZdlPv(ptr noundef %96) #33 + call void @_ZdlPv(ptr noundef %98) #33 br label %_ZN3fmt2v96detail14digit_groupingIcED2Ev.exit12.i567 _ZN3fmt2v96detail14digit_groupingIcED2Ev.exit12.i567: ; preds = %if.then.i.i.i.i8.i566, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i9.i568 @@ -3116,20 +3116,20 @@ if.then.i107: ; preds = %if.then.i.i.i.i.i57 if.end.i99: ; preds = %sw.bb.i92 %or.i.i578 = or i32 %abs_value.0.i555, 1 - %99 = tail call i32 @llvm.ctlz.i32(i32 %or.i.i578, i1 true), !range !97 - %xor.i.i579 = xor i32 %99, 31 + %101 = tail call i32 @llvm.ctlz.i32(i32 %or.i.i578, i1 true), !range !97 + %xor.i.i579 = xor i32 %101, 31 %idxprom.i.i580 = zext nneg i32 %xor.i.i579 to i64 %arrayidx.i.i581 = getelementptr inbounds [32 x i64], ptr @_ZZN3fmt2v96detail15do_count_digitsEjE5table.const, i64 0, i64 %idxprom.i.i580 - %100 = load i64, ptr %arrayidx.i.i581, align 8, !tbaa !40 - %add.i.i583 = add i64 %100, %retval.sroa.0.0.insert.ext.i556.pre-phi + %102 = load i64, ptr %arrayidx.i.i581, align 8, !tbaa !40 + %add.i.i583 = add i64 %102, %retval.sroa.0.0.insert.ext.i556.pre-phi %shr.i.i584 = lshr i64 %add.i.i583, 32 %conv1.i.i585 = trunc nuw i64 %shr.i.i584 to i32 %agg.tmp7.sroa.2.0.insert.shift.i103 = and i64 %add.i.i583, -4294967296 - %101 = load i32, ptr %this, align 8, !tbaa !98 + %103 = load i32, ptr %this, align 8, !tbaa !98 %precision.i113 = getelementptr inbounds i8, ptr %this, i64 4 - %102 = load i32, ptr %precision.i113, align 4, !tbaa !99 - %add.i = add nsw i32 %102, 1 - %or.i114 = or i32 %add.i, %101 + %104 = load i32, ptr %precision.i113, align 4, !tbaa !99 + %add.i = add nsw i32 %104, 1 + %or.i114 = or i32 %add.i, %103 %cmp.i115 = icmp eq i32 %or.i114, 0 %shr.i = lshr i32 %prefix.0.i554, 24 %add1.i = add i32 %shr.i, %conv1.i.i585 @@ -3138,11 +3138,11 @@ if.end.i99: ; preds = %sw.bb.i92 if.then.i117: ; preds = %if.end.i99 %_M_string_length.i.i586 = getelementptr inbounds i8, ptr %out.coerce, i64 8 - %103 = load i64, ptr %_M_string_length.i.i586, align 8, !tbaa !28 - %add.i587 = add i64 %103, %conv.i119 + %105 = load i64, ptr %_M_string_length.i.i586, align 8, !tbaa !28 + %add.i587 = add i64 %105, %conv.i119 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEmc(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i587, i8 noundef signext 0) - %104 = load ptr, ptr %out.coerce, align 8, !tbaa !32 - %add.ptr.i588 = getelementptr inbounds i8, ptr %104, i64 %103 + %106 = load ptr, ptr %out.coerce, align 8, !tbaa !32 + %add.ptr.i588 = getelementptr inbounds i8, ptr %106, i64 %105 %and.i = and i32 %prefix.0.i554, 16777215 %cmp6.not.i1072 = icmp eq i32 %and.i, 0 br i1 %cmp6.not.i1072, label %if.end.i121, label %for.body.i @@ -3169,11 +3169,11 @@ while.body.i.i603: ; preds = %if.end.i121, %while %out.addr.031.i.i605 = phi ptr [ %add.ptr2.i.i606, %while.body.i.i603 ], [ %add.ptr.i.i590, %if.end.i121 ] %add.ptr2.i.i606 = getelementptr inbounds i8, ptr %out.addr.031.i.i605, i64 -2 %rem.i.i607 = urem i32 %value.addr.032.i.i604, 100 - %105 = shl nuw nsw i32 %rem.i.i607, 1 - %mul.i.i.i608 = zext nneg i32 %105 to i64 + %107 = shl nuw nsw i32 %rem.i.i607, 1 + %mul.i.i.i608 = zext nneg i32 %107 to i64 %arrayidx.i.i.i609 = getelementptr inbounds [201 x i8], ptr @.str.21, i64 0, i64 %mul.i.i.i608 - %106 = load i16, ptr %arrayidx.i.i.i609, align 1 - store i16 %106, ptr %add.ptr2.i.i606, align 1 + %108 = load i16, ptr %arrayidx.i.i.i609, align 1 + store i16 %108, ptr %add.ptr2.i.i606, align 1 %div.i.i610 = udiv i32 %value.addr.032.i.i604, 100 %cmp1.i.i611 = icmp ugt i32 %value.addr.032.i.i604, 9999 br i1 %cmp1.i.i611, label %while.body.i.i603, label %while.end.i.i592, !llvm.loop !130 @@ -3185,43 +3185,43 @@ while.end.i.i592: ; preds = %while.body.i.i603, br i1 %cmp4.i.i595, label %if.then.i.i600, label %if.end.i.i596 if.then.i.i600: ; preds = %while.end.i.i592 - %107 = trunc nuw nsw i32 %value.addr.0.lcssa.i.i594 to i8 - %conv5.i.i601 = or disjoint i8 %107, 48 + %109 = trunc nuw nsw i32 %value.addr.0.lcssa.i.i594 to i8 + %conv5.i.i601 = or disjoint i8 %109, 48 %incdec.ptr.i.i602 = getelementptr inbounds i8, ptr %out.addr.0.lcssa.i.i593, i64 -1 store i8 %conv5.i.i601, ptr %incdec.ptr.i.i602, align 1, !tbaa !31 br label %_ZNK3fmt2v99formatterIicvE6formatINS0_20basic_format_contextISt20back_insert_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEcEEEEDTcldtfp0_3outEERKiRT_.exit if.end.i.i596: ; preds = %while.end.i.i592 %add.ptr7.i.i597 = getelementptr inbounds i8, ptr %out.addr.0.lcssa.i.i593, i64 -2 - %108 = shl nuw nsw i32 %value.addr.0.lcssa.i.i594, 1 - %mul.i28.i.i598 = zext nneg i32 %108 to i64 + %110 = shl nuw nsw i32 %value.addr.0.lcssa.i.i594, 1 + %mul.i28.i.i598 = zext nneg i32 %110 to i64 %arrayidx.i29.i.i599 = getelementptr inbounds [201 x i8], ptr @.str.21, i64 0, i64 %mul.i28.i.i598 - %109 = load i16, ptr %arrayidx.i29.i.i599, align 1 - store i16 %109, ptr %add.ptr7.i.i597, align 1 + %111 = load i16, ptr %arrayidx.i29.i.i599, align 1 + store i16 %111, ptr %add.ptr7.i.i597, align 1 br label %_ZNK3fmt2v99formatterIicvE6formatINS0_20basic_format_contextISt20back_insert_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEcEEEEDTcldtfp0_3outEERKiRT_.exit if.end13.i: ; preds = %if.end.i99 - %110 = and i16 %bf.load.i, 15 - %cmp.i620 = icmp eq i16 %110, 4 + %112 = and i16 %bf.load.i, 15 + %cmp.i620 = icmp eq i16 %112, 4 br i1 %cmp.i620, label %if.then.i629, label %if.else.i621 if.then.i629: ; preds = %if.end13.i - %cmp7.i630 = icmp ult i32 %add1.i, %101 + %cmp7.i630 = icmp ult i32 %add1.i, %103 br i1 %cmp7.i630, label %if.then8.i631, label %_ZN3fmt2v96detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit634 if.then8.i631: ; preds = %if.then.i629 - %conv5.i632 = zext i32 %101 to i64 + %conv5.i632 = zext i32 %103 to i64 %sub.i633 = sub nsw i64 %conv5.i632, %conv.i119 br label %_ZN3fmt2v96detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit634 if.else.i621: ; preds = %if.end13.i - %cmp14.i623 = icmp sgt i32 %102, %conv1.i.i585 + %cmp14.i623 = icmp sgt i32 %104, %conv1.i.i585 br i1 %cmp14.i623, label %if.then15.i624, label %_ZN3fmt2v96detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit634 if.then15.i624: ; preds = %if.else.i621 - %add19.i625 = add i32 %102, %shr.i + %add19.i625 = add i32 %104, %shr.i %conv20.i626 = zext i32 %add19.i625 to i64 - %sub23.i627 = sub nsw i32 %102, %conv1.i.i585 + %sub23.i627 = sub nsw i32 %104, %conv1.i.i585 %conv25.i628 = zext i32 %sub23.i627 to i64 br label %_ZN3fmt2v96detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit634 @@ -3230,22 +3230,22 @@ _ZN3fmt2v96detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit634: %data.i.sroa.0.0 = phi i64 [ %conv5.i632, %if.then8.i631 ], [ %conv.i119, %if.then.i629 ], [ %conv20.i626, %if.then15.i624 ], [ %conv.i119, %if.else.i621 ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i112) #31 store i32 %prefix.0.i554, ptr %ref.tmp.i112, align 8, !tbaa !103 - %111 = getelementptr inbounds i8, ptr %ref.tmp.i112, i64 8 - store i64 %data.i.sroa.0.0, ptr %111, align 8, !tbaa !40 + %113 = getelementptr inbounds i8, ptr %ref.tmp.i112, i64 8 + store i64 %data.i.sroa.0.0, ptr %113, align 8, !tbaa !40 %data.i.sroa.7.0..sroa_idx = getelementptr inbounds i8, ptr %ref.tmp.i112, i64 16 store i64 %data.i.sroa.7.0, ptr %data.i.sroa.7.0..sroa_idx, align 8, !tbaa !40 - %112 = getelementptr inbounds i8, ptr %ref.tmp.i112, i64 24 + %114 = getelementptr inbounds i8, ptr %ref.tmp.i112, i64 24 %write_digits.i.sroa.0.0.insert.insert = or disjoint i64 %agg.tmp7.sroa.2.0.insert.shift.i103, %retval.sroa.0.0.insert.ext.i556.pre-phi - store i64 %write_digits.i.sroa.0.0.insert.insert, ptr %112, align 8, !tbaa.struct !107 + store i64 %write_digits.i.sroa.0.0.insert.insert, ptr %114, align 8, !tbaa.struct !107 %call.i635 = call ptr @_ZN3fmt2v96detail12write_paddedILNS0_5align4typeE2ESt20back_insert_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEcRZNS1_9write_intISC_cZNS1_9write_intIcSC_jEET0_SF_NS1_13write_int_argIT1_EERKNS0_18basic_format_specsIT_EENS1_10locale_refEEUlPcE_EESK_SK_ijRKNSJ_ISF_EESH_EUlSP_E_EESF_SF_RKNSJ_ISH_EEmmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(16) %this, i64 noundef %data.i.sroa.0.0, i64 noundef %data.i.sroa.0.0, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp.i112) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp.i112) #31 br label %_ZNK3fmt2v99formatterIicvE6formatINS0_20basic_format_contextISt20back_insert_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEcEEEEDTcldtfp0_3outEERKiRT_.exit sw.bb11.i76: ; preds = %_ZN3fmt2v96detail18make_write_int_argIiEENS1_13write_int_argINSt11conditionalIXaalecl8num_bitsIT_EELi32EntLi0EEjNS4_IXlecl8num_bitsIS5_EELi64EEmoE4typeEE4typeEEES5_NS0_4sign4typeE.exit560, %_ZN3fmt2v96detail18make_write_int_argIiEENS1_13write_int_argINSt11conditionalIXaalecl8num_bitsIT_EELi32EntLi0EEjNS4_IXlecl8num_bitsIS5_EELi64EEmoE4typeEE4typeEEES5_NS0_4sign4typeE.exit560 - %cmp.i77 = icmp eq i8 %90, 4 + %cmp.i77 = icmp eq i8 %92, 4 %frombool.i78 = zext i1 %cmp.i77 to i8 - %113 = and i16 %bf.load.i, 128 - %bf.cast16.not.i81 = icmp eq i16 %113, 0 + %115 = and i16 %bf.load.i, 128 + %bf.cast16.not.i81 = icmp eq i16 %115, 0 br i1 %bf.cast16.not.i81, label %if.end19.i84, label %if.then17.i82 if.then17.i82: ; preds = %sw.bb11.i76 @@ -3260,16 +3260,16 @@ if.then17.i82: ; preds = %sw.bb11.i76 if.end19.i84: ; preds = %if.then17.i82, %sw.bb11.i76 %prefix.i33.0 = phi i32 [ %prefix.0.i554, %sw.bb11.i76 ], [ %add4.i640, %if.then17.i82 ] %or.i641 = or i32 %abs_value.0.i555, 1 - %114 = tail call i32 @llvm.ctlz.i32(i32 %or.i641, i1 true), !range !97 - %xor.i642 = lshr i32 %114, 2 + %116 = tail call i32 @llvm.ctlz.i32(i32 %or.i641, i1 true), !range !97 + %xor.i642 = lshr i32 %116, 2 %add.i643 = sub nuw nsw i32 8, %xor.i642 %agg.tmp23.sroa.2.0.insert.ext.i87 = zext nneg i32 %add.i643 to i64 %agg.tmp23.sroa.2.0.insert.shift.i88 = shl nuw nsw i64 %agg.tmp23.sroa.2.0.insert.ext.i87, 32 - %115 = load i32, ptr %this, align 8, !tbaa !98 + %117 = load i32, ptr %this, align 8, !tbaa !98 %precision.i162 = getelementptr inbounds i8, ptr %this, i64 4 - %116 = load i32, ptr %precision.i162, align 4, !tbaa !99 - %add.i163 = add nsw i32 %116, 1 - %or.i164 = or i32 %add.i163, %115 + %118 = load i32, ptr %precision.i162, align 4, !tbaa !99 + %add.i163 = add nsw i32 %118, 1 + %or.i164 = or i32 %add.i163, %117 %cmp.i165 = icmp eq i32 %or.i164, 0 %shr.i173 = lshr i32 %prefix.i33.0, 24 %add1.i174 = add nuw nsw i32 %shr.i173, %add.i643 @@ -3278,11 +3278,11 @@ if.end19.i84: ; preds = %if.then17.i82, %sw. if.then.i170: ; preds = %if.end19.i84 %_M_string_length.i.i644 = getelementptr inbounds i8, ptr %out.coerce, i64 8 - %117 = load i64, ptr %_M_string_length.i.i644, align 8, !tbaa !28 - %add.i645 = add i64 %117, %conv.i175 + %119 = load i64, ptr %_M_string_length.i.i644, align 8, !tbaa !28 + %add.i645 = add i64 %119, %conv.i175 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEmc(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i645, i8 noundef signext 0) - %118 = load ptr, ptr %out.coerce, align 8, !tbaa !32 - %add.ptr.i646 = getelementptr inbounds i8, ptr %118, i64 %117 + %120 = load ptr, ptr %out.coerce, align 8, !tbaa !32 + %add.ptr.i646 = getelementptr inbounds i8, ptr %120, i64 %119 %and.i179 = and i32 %prefix.i33.0, 16777215 %cmp6.not.i1831068 = icmp eq i32 %and.i179, 0 br i1 %cmp6.not.i1831068, label %if.end.i188, label %for.body.i184 @@ -3309,35 +3309,35 @@ do.body.i.i651: ; preds = %do.body.i.i651, %if %and.i.i654 = and i32 %value.addr.0.i.i652, 15 %idxprom.i.i655 = zext nneg i32 %and.i.i654 to i64 %arrayidx.i.i656 = getelementptr inbounds i8, ptr %.str.23..str.24.i.i650, i64 %idxprom.i.i655 - %119 = load i8, ptr %arrayidx.i.i656, align 1, !tbaa !31 + %121 = load i8, ptr %arrayidx.i.i656, align 1, !tbaa !31 %incdec.ptr.i.i657 = getelementptr inbounds i8, ptr %buffer.addr.0.i.i653, i64 -1 - store i8 %119, ptr %incdec.ptr.i.i657, align 1, !tbaa !31 + store i8 %121, ptr %incdec.ptr.i.i657, align 1, !tbaa !31 %shr.i.i658 = lshr i32 %value.addr.0.i.i652, 4 %cmp.not.i.i659 = icmp ult i32 %value.addr.0.i.i652, 16 br i1 %cmp.not.i.i659, label %_ZNK3fmt2v99formatterIicvE6formatINS0_20basic_format_contextISt20back_insert_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEcEEEEDTcldtfp0_3outEERKiRT_.exit, label %do.body.i.i651, !llvm.loop !132 if.end13.i166: ; preds = %if.end19.i84 - %120 = and i16 %bf.load.i, 15 - %cmp.i668 = icmp eq i16 %120, 4 + %122 = and i16 %bf.load.i, 15 + %cmp.i668 = icmp eq i16 %122, 4 br i1 %cmp.i668, label %if.then.i677, label %if.else.i669 if.then.i677: ; preds = %if.end13.i166 - %cmp7.i678 = icmp ult i32 %add1.i174, %115 + %cmp7.i678 = icmp ult i32 %add1.i174, %117 br i1 %cmp7.i678, label %if.then8.i679, label %_ZN3fmt2v96detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit682 if.then8.i679: ; preds = %if.then.i677 - %conv5.i680 = zext i32 %115 to i64 + %conv5.i680 = zext i32 %117 to i64 %sub.i681 = sub nsw i64 %conv5.i680, %conv.i175 br label %_ZN3fmt2v96detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit682 if.else.i669: ; preds = %if.end13.i166 - %cmp14.i671 = icmp sgt i32 %116, %add.i643 + %cmp14.i671 = icmp sgt i32 %118, %add.i643 br i1 %cmp14.i671, label %if.then15.i672, label %_ZN3fmt2v96detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit682 if.then15.i672: ; preds = %if.else.i669 - %add19.i673 = add nuw i32 %116, %shr.i173 + %add19.i673 = add nuw i32 %118, %shr.i173 %conv20.i674 = zext i32 %add19.i673 to i64 - %sub23.i675 = sub nsw i32 %116, %add.i643 + %sub23.i675 = sub nsw i32 %118, %add.i643 %conv25.i676 = zext i32 %sub23.i675 to i64 br label %_ZN3fmt2v96detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit682 @@ -3346,13 +3346,13 @@ _ZN3fmt2v96detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit682: %data.i160.sroa.7.0 = phi i64 [ %sub.i681, %if.then8.i679 ], [ 0, %if.then.i677 ], [ %conv25.i676, %if.then15.i672 ], [ 0, %if.else.i669 ] call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %ref.tmp.i161) #31 store i32 %prefix.i33.0, ptr %ref.tmp.i161, align 8, !tbaa !110 - %121 = getelementptr inbounds i8, ptr %ref.tmp.i161, i64 8 - store i64 %data.i160.sroa.0.0, ptr %121, align 8, !tbaa !40 + %123 = getelementptr inbounds i8, ptr %ref.tmp.i161, i64 8 + store i64 %data.i160.sroa.0.0, ptr %123, align 8, !tbaa !40 %data.i160.sroa.7.0..sroa_idx = getelementptr inbounds i8, ptr %ref.tmp.i161, i64 16 store i64 %data.i160.sroa.7.0, ptr %data.i160.sroa.7.0..sroa_idx, align 8, !tbaa !40 - %122 = getelementptr inbounds i8, ptr %ref.tmp.i161, i64 24 + %124 = getelementptr inbounds i8, ptr %ref.tmp.i161, i64 24 %write_digits.i159.sroa.0.sroa.0.0.insert.insert = or disjoint i64 %agg.tmp23.sroa.2.0.insert.shift.i88, %retval.sroa.0.0.insert.ext.i556.pre-phi - store i64 %write_digits.i159.sroa.0.sroa.0.0.insert.insert, ptr %122, align 8, !tbaa.struct !113 + store i64 %write_digits.i159.sroa.0.sroa.0.0.insert.insert, ptr %124, align 8, !tbaa.struct !113 %write_digits.i159.sroa.6.0..sroa_idx = getelementptr inbounds i8, ptr %ref.tmp.i161, i64 32 store i8 %frombool.i78, ptr %write_digits.i159.sroa.6.0..sroa_idx, align 8, !tbaa !58 %call.i683 = call ptr @_ZN3fmt2v96detail12write_paddedILNS0_5align4typeE2ESt20back_insert_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEcRZNS1_9write_intISC_cZNS1_9write_intIcSC_jEET0_SF_NS1_13write_int_argIT1_EERKNS0_18basic_format_specsIT_EENS1_10locale_refEEUlPcE0_EESK_SK_ijRKNSJ_ISF_EESH_EUlSP_E_EESF_SF_RKNSJ_ISH_EEmmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(16) %this, i64 noundef %data.i160.sroa.0.0, i64 noundef %data.i160.sroa.0.0, ptr noundef nonnull align 8 dereferenceable(36) %ref.tmp.i161) @@ -3360,12 +3360,12 @@ _ZN3fmt2v96detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit682: br label %_ZNK3fmt2v99formatterIicvE6formatINS0_20basic_format_contextISt20back_insert_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEcEEEEDTcldtfp0_3outEERKiRT_.exit sw.bb29.i61: ; preds = %_ZN3fmt2v96detail18make_write_int_argIiEENS1_13write_int_argINSt11conditionalIXaalecl8num_bitsIT_EELi32EntLi0EEjNS4_IXlecl8num_bitsIS5_EELi64EEmoE4typeEE4typeEEES5_NS0_4sign4typeE.exit560, %_ZN3fmt2v96detail18make_write_int_argIiEENS1_13write_int_argINSt11conditionalIXaalecl8num_bitsIT_EELi32EntLi0EEjNS4_IXlecl8num_bitsIS5_EELi64EEmoE4typeEE4typeEEES5_NS0_4sign4typeE.exit560 - %123 = and i16 %bf.load.i, 128 - %bf.cast38.not.i64 = icmp eq i16 %123, 0 + %125 = and i16 %bf.load.i, 128 + %bf.cast38.not.i64 = icmp eq i16 %125, 0 br i1 %bf.cast38.not.i64, label %if.end45.i68, label %if.then39.i65 if.then39.i65: ; preds = %sw.bb29.i61 - %cmp32.i66 = icmp eq i8 %90, 6 + %cmp32.i66 = icmp eq i8 %92, 6 %or44.i67 = select i1 %cmp32.i66, i32 16944, i32 25136 %cmp.not.i684 = icmp eq i32 %prefix.0.i554, 0 %shl.i685 = shl nuw nsw i32 %or44.i67, 8 @@ -3377,13 +3377,13 @@ if.then39.i65: ; preds = %sw.bb29.i61 if.end45.i68: ; preds = %if.then39.i65, %sw.bb29.i61 %prefix.i33.1 = phi i32 [ %prefix.0.i554, %sw.bb29.i61 ], [ %add4.i688, %if.then39.i65 ] %or.i689 = or i32 %abs_value.0.i555, 1 - %124 = tail call i32 @llvm.ctlz.i32(i32 %or.i689, i1 true), !range !97 - %add.i690 = sub nuw nsw i32 32, %124 - %125 = load i32, ptr %this, align 8, !tbaa !98 + %126 = tail call i32 @llvm.ctlz.i32(i32 %or.i689, i1 true), !range !97 + %add.i690 = sub nuw nsw i32 32, %126 + %127 = load i32, ptr %this, align 8, !tbaa !98 %precision.i232 = getelementptr inbounds i8, ptr %this, i64 4 - %126 = load i32, ptr %precision.i232, align 4, !tbaa !99 - %add.i233 = add nsw i32 %126, 1 - %or.i234 = or i32 %add.i233, %125 + %128 = load i32, ptr %precision.i232, align 4, !tbaa !99 + %add.i233 = add nsw i32 %128, 1 + %or.i234 = or i32 %add.i233, %127 %cmp.i235 = icmp eq i32 %or.i234, 0 %shr.i243 = lshr i32 %prefix.i33.1, 24 %add1.i244 = add nuw nsw i32 %shr.i243, %add.i690 @@ -3392,11 +3392,11 @@ if.end45.i68: ; preds = %if.then39.i65, %sw. if.then.i240: ; preds = %if.end45.i68 %_M_string_length.i.i691 = getelementptr inbounds i8, ptr %out.coerce, i64 8 - %127 = load i64, ptr %_M_string_length.i.i691, align 8, !tbaa !28 - %add.i692 = add i64 %127, %conv.i245 + %129 = load i64, ptr %_M_string_length.i.i691, align 8, !tbaa !28 + %add.i692 = add i64 %129, %conv.i245 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEmc(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i692, i8 noundef signext 0) - %128 = load ptr, ptr %out.coerce, align 8, !tbaa !32 - %add.ptr.i693 = getelementptr inbounds i8, ptr %128, i64 %127 + %130 = load ptr, ptr %out.coerce, align 8, !tbaa !32 + %add.ptr.i693 = getelementptr inbounds i8, ptr %130, i64 %129 %and.i249 = and i32 %prefix.i33.1, 16777215 %cmp6.not.i2531064 = icmp eq i32 %and.i249, 0 br i1 %cmp6.not.i2531064, label %if.end.i258, label %for.body.i254 @@ -3420,9 +3420,9 @@ if.end.i258: ; preds = %for.body.i254, %if. do.body.i.i696: ; preds = %do.body.i.i696, %if.end.i258 %value.addr.0.i.i697 = phi i32 [ %abs_value.0.i555, %if.end.i258 ], [ %shr.i.i701, %do.body.i.i696 ] %buffer.addr.0.i.i698 = phi ptr [ %add.ptr.i.i695, %if.end.i258 ], [ %incdec.ptr.i.i700, %do.body.i.i696 ] - %129 = trunc i32 %value.addr.0.i.i697 to i8 - %130 = and i8 %129, 1 - %conv.i.i699 = or disjoint i8 %130, 48 + %131 = trunc i32 %value.addr.0.i.i697 to i8 + %132 = and i8 %131, 1 + %conv.i.i699 = or disjoint i8 %132, 48 %incdec.ptr.i.i700 = getelementptr inbounds i8, ptr %buffer.addr.0.i.i698, i64 -1 store i8 %conv.i.i699, ptr %incdec.ptr.i.i700, align 1, !tbaa !31 %shr.i.i701 = lshr i32 %value.addr.0.i.i697, 1 @@ -3430,75 +3430,75 @@ do.body.i.i696: ; preds = %do.body.i.i696, %if br i1 %cmp.not.i.i702, label %_ZNK3fmt2v99formatterIicvE6formatINS0_20basic_format_contextISt20back_insert_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEcEEEEDTcldtfp0_3outEERKiRT_.exit, label %do.body.i.i696, !llvm.loop !134 if.end13.i236: ; preds = %if.end45.i68 - %131 = and i16 %bf.load.i, 15 - %cmp.i711 = icmp eq i16 %131, 4 + %133 = and i16 %bf.load.i, 15 + %cmp.i711 = icmp eq i16 %133, 4 br i1 %cmp.i711, label %if.then.i720, label %if.else.i712 if.then.i720: ; preds = %if.end13.i236 - %cmp7.i721 = icmp ult i32 %add1.i244, %125 + %cmp7.i721 = icmp ult i32 %add1.i244, %127 br i1 %cmp7.i721, label %if.then8.i722, label %_ZN3fmt2v96detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit725 if.then8.i722: ; preds = %if.then.i720 - %conv5.i723 = zext i32 %125 to i64 + %conv5.i723 = zext i32 %127 to i64 %sub.i724 = sub nsw i64 %conv5.i723, %conv.i245 br label %_ZN3fmt2v96detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit725 if.else.i712: ; preds = %if.end13.i236 - %cmp14.i714 = icmp sgt i32 %126, %add.i690 + %cmp14.i714 = icmp sgt i32 %128, %add.i690 br i1 %cmp14.i714, label %if.then15.i715, label %_ZN3fmt2v96detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit725 if.then15.i715: ; preds = %if.else.i712 - %add19.i716 = add nuw i32 %126, %shr.i243 + %add19.i716 = add nuw i32 %128, %shr.i243 %conv20.i717 = zext i32 %add19.i716 to i64 - %sub23.i718 = sub nsw i32 %126, %add.i690 + %sub23.i718 = sub nsw i32 %128, %add.i690 %conv25.i719 = zext i32 %sub23.i718 to i64 br label %_ZN3fmt2v96detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit725 _ZN3fmt2v96detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit725: ; preds = %if.then15.i715, %if.else.i712, %if.then8.i722, %if.then.i720 %data.i230.sroa.0.0 = phi i64 [ %conv5.i723, %if.then8.i722 ], [ %conv.i245, %if.then.i720 ], [ %conv20.i717, %if.then15.i715 ], [ %conv.i245, %if.else.i712 ] %data.i230.sroa.7.0 = phi i64 [ %sub.i724, %if.then8.i722 ], [ 0, %if.then.i720 ], [ %conv25.i719, %if.then15.i715 ], [ 0, %if.else.i712 ] - %conv.i905 = zext i32 %125 to i64 + %conv.i905 = zext i32 %127 to i64 %cond.i906 = tail call i64 @llvm.usub.sat.i64(i64 %conv.i905, i64 %data.i230.sroa.0.0) - %bf.cast.i909 = zext nneg i16 %131 to i64 + %bf.cast.i909 = zext nneg i16 %133 to i64 %arrayidx.i910 = getelementptr inbounds i8, ptr @.str.22, i64 %bf.cast.i909 - %132 = load i8, ptr %arrayidx.i910, align 1, !tbaa !31 - %conv3.i911 = sext i8 %132 to i64 + %134 = load i8, ptr %arrayidx.i910, align 1, !tbaa !31 + %conv3.i911 = sext i8 %134 to i64 %sh_prom.i912 = and i64 %conv3.i911, 4294967295 %shr.i913 = lshr i64 %cond.i906, %sh_prom.i912 %sub4.i914 = sub nsw i64 %cond.i906, %shr.i913 %fill.i915 = getelementptr inbounds i8, ptr %this, i64 11 %size_.i.i916 = getelementptr inbounds i8, ptr %this, i64 15 - %133 = load i8, ptr %size_.i.i916, align 1, !tbaa !116 - %conv.i.i917 = zext i8 %133 to i64 + %135 = load i8, ptr %size_.i.i916, align 1, !tbaa !116 + %conv.i.i917 = zext i8 %135 to i64 %mul.i918 = mul nuw nsw i64 %cond.i906, %conv.i.i917 %_M_string_length.i.i.i919 = getelementptr inbounds i8, ptr %out.coerce, i64 8 - %134 = load i64, ptr %_M_string_length.i.i.i919, align 8, !tbaa !28 - %add.i920 = add i64 %134, %data.i230.sroa.0.0 + %136 = load i64, ptr %_M_string_length.i.i.i919, align 8, !tbaa !28 + %add.i920 = add i64 %136, %data.i230.sroa.0.0 %add.i.i921 = add i64 %add.i920, %mul.i918 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEmc(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i921, i8 noundef signext 0) - %135 = load ptr, ptr %out.coerce, align 8, !tbaa !32 - %add.ptr.i.i922 = getelementptr inbounds i8, ptr %135, i64 %134 + %137 = load ptr, ptr %out.coerce, align 8, !tbaa !32 + %add.ptr.i.i922 = getelementptr inbounds i8, ptr %137, i64 %136 %cmp8.not.i923 = icmp eq i64 %shr.i913, 0 br i1 %cmp8.not.i923, label %if.end.i926, label %if.then.i924 if.then.i924: ; preds = %_ZN3fmt2v96detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit725 - %136 = load i8, ptr %size_.i.i916, align 1, !tbaa !116 - %conv.i.i91 = zext i8 %136 to i64 - %cmp.i92 = icmp eq i8 %136, 1 + %138 = load i8, ptr %size_.i.i916, align 1, !tbaa !116 + %conv.i.i91 = zext i8 %138 to i64 + %cmp.i92 = icmp eq i8 %138, 1 br i1 %cmp.i92, label %if.then.i119, label %for.body.preheader.i95 for.body.preheader.i95: ; preds = %if.then.i924 %xtraiter.i96 = and i64 %shr.i913, 3 - %137 = icmp ult i64 %shr.i913, 4 - br i1 %137, label %cleanup.loopexit.unr-lcssa.i108, label %for.body.preheader.new.i97 + %139 = icmp ult i64 %shr.i913, 4 + br i1 %139, label %cleanup.loopexit.unr-lcssa.i108, label %for.body.preheader.new.i97 for.body.preheader.new.i97: ; preds = %for.body.preheader.i95 %unroll_iter.i98 = and i64 %shr.i913, 4294967292 br label %for.body.i99 if.then.i119: ; preds = %if.then.i924 - %138 = load i8, ptr %fill.i915, align 1, !tbaa !31 - tail call void @llvm.memset.p0.i64(ptr align 1 %add.ptr.i.i922, i8 %138, i64 %shr.i913, i1 false) + %140 = load i8, ptr %fill.i915, align 1, !tbaa !31 + tail call void @llvm.memset.p0.i64(ptr align 1 %add.ptr.i.i922, i8 %140, i64 %shr.i913, i1 false) %add.ptr.i.i120 = getelementptr inbounds i8, ptr %add.ptr.i.i922, i64 %shr.i913 br label %if.end.i926 @@ -3549,9 +3549,9 @@ for.cond.cleanup.i.i937: ; preds = %for.body.i.i930, %i do.body.i.i.i.i943: ; preds = %do.body.i.i.i.i943, %for.cond.cleanup.i.i937 %value.addr.0.i.i.i.i944 = phi i32 [ %abs_value.0.i555, %for.cond.cleanup.i.i937 ], [ %shr.i.i.i.i948, %do.body.i.i.i.i943 ] %buffer.addr.0.i.i.i.i945 = phi ptr [ %add.ptr.i.i.i.i942, %for.cond.cleanup.i.i937 ], [ %incdec.ptr.i.i.i.i947, %do.body.i.i.i.i943 ] - %139 = trunc i32 %value.addr.0.i.i.i.i944 to i8 - %140 = and i8 %139, 1 - %conv.i.i.i.i946 = or disjoint i8 %140, 48 + %141 = trunc i32 %value.addr.0.i.i.i.i944 to i8 + %142 = and i8 %141, 1 + %conv.i.i.i.i946 = or disjoint i8 %142, 48 %incdec.ptr.i.i.i.i947 = getelementptr inbounds i8, ptr %buffer.addr.0.i.i.i.i945, i64 -1 store i8 %conv.i.i.i.i946, ptr %incdec.ptr.i.i.i.i947, align 1, !tbaa !31 %shr.i.i.i.i948 = lshr i32 %value.addr.0.i.i.i.i944, 1 @@ -3573,23 +3573,23 @@ _ZZN3fmt2v96detail9write_intISt20back_insert_iteratorINSt7__cxx1112basic_stringI br i1 %cmp12.not.i951, label %_ZNK3fmt2v99formatterIicvE6formatINS0_20basic_format_contextISt20back_insert_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEcEEEEDTcldtfp0_3outEERKiRT_.exit, label %if.then13.i952 if.then13.i952: ; preds = %_ZZN3fmt2v96detail9write_intISt20back_insert_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEcZNS1_9write_intIcSA_jEET0_SC_NS1_13write_int_argIT1_EERKNS0_18basic_format_specsIT_EENS1_10locale_refEEUlPcE1_EESH_SH_ijRKNSG_ISC_EESE_ENKUlSM_E_clESM_.exit.i950 - %141 = load i8, ptr %size_.i.i916, align 1, !tbaa !116 - %conv.i.i123 = zext i8 %141 to i64 - %cmp.i124 = icmp eq i8 %141, 1 + %143 = load i8, ptr %size_.i.i916, align 1, !tbaa !116 + %conv.i.i123 = zext i8 %143 to i64 + %cmp.i124 = icmp eq i8 %143, 1 br i1 %cmp.i124, label %if.then.i151, label %for.body.preheader.i127 for.body.preheader.i127: ; preds = %if.then13.i952 %xtraiter.i128 = and i64 %sub4.i914, 3 - %142 = icmp ult i64 %sub4.i914, 4 - br i1 %142, label %cleanup.loopexit.unr-lcssa.i140, label %for.body.preheader.new.i129 + %144 = icmp ult i64 %sub4.i914, 4 + br i1 %144, label %cleanup.loopexit.unr-lcssa.i140, label %for.body.preheader.new.i129 for.body.preheader.new.i129: ; preds = %for.body.preheader.i127 %unroll_iter.i130 = and i64 %sub4.i914, -4 br label %for.body.i131 if.then.i151: ; preds = %if.then13.i952 - %143 = load i8, ptr %fill.i915, align 1, !tbaa !31 - tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %add.ptr.i.i.i.i942, i8 %143, i64 %sub4.i914, i1 false) + %145 = load i8, ptr %fill.i915, align 1, !tbaa !31 + tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %add.ptr.i.i.i.i942, i8 %145, i64 %sub4.i914, i1 false) br label %_ZNK3fmt2v99formatterIicvE6formatINS0_20basic_format_contextISt20back_insert_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEcEEEEDTcldtfp0_3outEERKiRT_.exit for.body.i131: ; preds = %for.body.i131, %for.body.preheader.new.i129 @@ -3623,14 +3623,14 @@ for.body.epil.i144: ; preds = %cleanup.loopexit.un sw.bb53.i43: ; preds = %_ZN3fmt2v96detail18make_write_int_argIiEENS1_13write_int_argINSt11conditionalIXaalecl8num_bitsIT_EELi32EntLi0EEjNS4_IXlecl8num_bitsIS5_EELi64EEmoE4typeEE4typeEEES5_NS0_4sign4typeE.exit560 %or.i727 = or i32 %abs_value.0.i555, 1 - %144 = tail call i32 @llvm.ctlz.i32(i32 %or.i727, i1 true), !range !97 - %145 = trunc nuw nsw i32 %144 to i8 - %div.lhs.trunc.i728 = xor i8 %145, 31 + %146 = tail call i32 @llvm.ctlz.i32(i32 %or.i727, i1 true), !range !97 + %147 = trunc nuw nsw i32 %146 to i8 + %div.lhs.trunc.i728 = xor i8 %147, 31 %div1.i729 = udiv i8 %div.lhs.trunc.i728, 3 %narrow.i730 = add nuw nsw i8 %div1.i729, 1 %add.i731 = zext nneg i8 %narrow.i730 to i32 - %146 = and i16 %bf.load.i, 128 - %bf.cast60.not.i47 = icmp eq i16 %146, 0 + %148 = and i16 %bf.load.i, 128 + %bf.cast60.not.i47 = icmp eq i16 %148, 0 %precision.i301.phi.trans.insert = getelementptr inbounds i8, ptr %this, i64 4 %.pre1087 = load i32, ptr %precision.i301.phi.trans.insert, align 4, !tbaa !99 br i1 %bf.cast60.not.i47, label %if.end66.i53, label %land.lhs.true61.i48 @@ -3643,16 +3643,16 @@ land.lhs.true61.i48: ; preds = %sw.bb53.i43 if.then65.i60: ; preds = %land.lhs.true61.i48 %cmp.not.i732 = icmp eq i32 %prefix.0.i554, 0 - %cond.i733 = select i1 %cmp.not.i732, i32 48, i32 12288 - %or.i734 = or i32 %cond.i733, %prefix.0.i554 - %add4.i735 = add i32 %or.i734, 16777216 + %149 = or i32 %prefix.0.i554, 12288 + %150 = add i32 %149, 16777216 + %add4.i735 = select i1 %cmp.not.i732, i32 16777264, i32 %150 br label %if.end66.i53 if.end66.i53: ; preds = %if.then65.i60, %land.lhs.true61.i48, %sw.bb53.i43 %prefix.i33.2 = phi i32 [ %add4.i735, %if.then65.i60 ], [ %prefix.0.i554, %land.lhs.true61.i48 ], [ %prefix.0.i554, %sw.bb53.i43 ] - %147 = load i32, ptr %this, align 8, !tbaa !98 + %151 = load i32, ptr %this, align 8, !tbaa !98 %add.i302 = add nsw i32 %.pre1087, 1 - %or.i303 = or i32 %147, %add.i302 + %or.i303 = or i32 %151, %add.i302 %cmp.i304 = icmp eq i32 %or.i303, 0 %shr.i312 = lshr i32 %prefix.i33.2, 24 %add1.i313 = add nuw nsw i32 %shr.i312, %add.i731 @@ -3661,11 +3661,11 @@ if.end66.i53: ; preds = %if.then65.i60, %lan if.then.i309: ; preds = %if.end66.i53 %_M_string_length.i.i736 = getelementptr inbounds i8, ptr %out.coerce, i64 8 - %148 = load i64, ptr %_M_string_length.i.i736, align 8, !tbaa !28 - %add.i737 = add i64 %148, %conv.i314 + %152 = load i64, ptr %_M_string_length.i.i736, align 8, !tbaa !28 + %add.i737 = add i64 %152, %conv.i314 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEmc(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i737, i8 noundef signext 0) - %149 = load ptr, ptr %out.coerce, align 8, !tbaa !32 - %add.ptr.i738 = getelementptr inbounds i8, ptr %149, i64 %148 + %153 = load ptr, ptr %out.coerce, align 8, !tbaa !32 + %add.ptr.i738 = getelementptr inbounds i8, ptr %153, i64 %152 %and.i318 = and i32 %prefix.i33.2, 16777215 %cmp6.not.i3221060 = icmp eq i32 %and.i318, 0 br i1 %cmp6.not.i3221060, label %if.end.i327, label %for.body.i323 @@ -3689,9 +3689,9 @@ if.end.i327: ; preds = %for.body.i323, %if. do.body.i.i741: ; preds = %do.body.i.i741, %if.end.i327 %value.addr.0.i.i742 = phi i32 [ %abs_value.0.i555, %if.end.i327 ], [ %shr.i.i746, %do.body.i.i741 ] %buffer.addr.0.i.i743 = phi ptr [ %add.ptr.i.i740, %if.end.i327 ], [ %incdec.ptr.i.i745, %do.body.i.i741 ] - %150 = trunc i32 %value.addr.0.i.i742 to i8 - %151 = and i8 %150, 7 - %conv.i.i744 = or disjoint i8 %151, 48 + %154 = trunc i32 %value.addr.0.i.i742 to i8 + %155 = and i8 %154, 7 + %conv.i.i744 = or disjoint i8 %155, 48 %incdec.ptr.i.i745 = getelementptr inbounds i8, ptr %buffer.addr.0.i.i743, i64 -1 store i8 %conv.i.i744, ptr %incdec.ptr.i.i745, align 1, !tbaa !31 %shr.i.i746 = lshr i32 %value.addr.0.i.i742, 3 @@ -3699,16 +3699,16 @@ do.body.i.i741: ; preds = %do.body.i.i741, %if br i1 %cmp.not.i.i747, label %_ZNK3fmt2v99formatterIicvE6formatINS0_20basic_format_contextISt20back_insert_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEcEEEEDTcldtfp0_3outEERKiRT_.exit, label %do.body.i.i741, !llvm.loop !138 if.end13.i305: ; preds = %if.end66.i53 - %152 = and i16 %bf.load.i, 15 - %cmp.i756 = icmp eq i16 %152, 4 + %156 = and i16 %bf.load.i, 15 + %cmp.i756 = icmp eq i16 %156, 4 br i1 %cmp.i756, label %if.then.i765, label %if.else.i757 if.then.i765: ; preds = %if.end13.i305 - %cmp7.i766 = icmp ult i32 %add1.i313, %147 + %cmp7.i766 = icmp ult i32 %add1.i313, %151 br i1 %cmp7.i766, label %if.then8.i767, label %_ZN3fmt2v96detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit770 if.then8.i767: ; preds = %if.then.i765 - %conv5.i768 = zext i32 %147 to i64 + %conv5.i768 = zext i32 %151 to i64 %sub.i769 = sub nsw i64 %conv5.i768, %conv.i314 br label %_ZN3fmt2v96detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit770 @@ -3726,48 +3726,48 @@ if.then15.i760: ; preds = %if.else.i757 _ZN3fmt2v96detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit770: ; preds = %if.then15.i760, %if.else.i757, %if.then8.i767, %if.then.i765 %data.i299.sroa.0.0 = phi i64 [ %conv5.i768, %if.then8.i767 ], [ %conv.i314, %if.then.i765 ], [ %conv20.i762, %if.then15.i760 ], [ %conv.i314, %if.else.i757 ] %data.i299.sroa.7.0 = phi i64 [ %sub.i769, %if.then8.i767 ], [ 0, %if.then.i765 ], [ %conv25.i764, %if.then15.i760 ], [ 0, %if.else.i757 ] - %conv.i955 = zext i32 %147 to i64 + %conv.i955 = zext i32 %151 to i64 %cond.i956 = tail call i64 @llvm.usub.sat.i64(i64 %conv.i955, i64 %data.i299.sroa.0.0) - %bf.cast.i959 = zext nneg i16 %152 to i64 + %bf.cast.i959 = zext nneg i16 %156 to i64 %arrayidx.i960 = getelementptr inbounds i8, ptr @.str.22, i64 %bf.cast.i959 - %153 = load i8, ptr %arrayidx.i960, align 1, !tbaa !31 - %conv3.i961 = sext i8 %153 to i64 + %157 = load i8, ptr %arrayidx.i960, align 1, !tbaa !31 + %conv3.i961 = sext i8 %157 to i64 %sh_prom.i962 = and i64 %conv3.i961, 4294967295 %shr.i963 = lshr i64 %cond.i956, %sh_prom.i962 %sub4.i964 = sub nsw i64 %cond.i956, %shr.i963 %fill.i965 = getelementptr inbounds i8, ptr %this, i64 11 %size_.i.i966 = getelementptr inbounds i8, ptr %this, i64 15 - %154 = load i8, ptr %size_.i.i966, align 1, !tbaa !116 - %conv.i.i967 = zext i8 %154 to i64 + %158 = load i8, ptr %size_.i.i966, align 1, !tbaa !116 + %conv.i.i967 = zext i8 %158 to i64 %mul.i968 = mul nuw nsw i64 %cond.i956, %conv.i.i967 %_M_string_length.i.i.i969 = getelementptr inbounds i8, ptr %out.coerce, i64 8 - %155 = load i64, ptr %_M_string_length.i.i.i969, align 8, !tbaa !28 - %add.i970 = add i64 %155, %data.i299.sroa.0.0 + %159 = load i64, ptr %_M_string_length.i.i.i969, align 8, !tbaa !28 + %add.i970 = add i64 %159, %data.i299.sroa.0.0 %add.i.i971 = add i64 %add.i970, %mul.i968 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEmc(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i971, i8 noundef signext 0) - %156 = load ptr, ptr %out.coerce, align 8, !tbaa !32 - %add.ptr.i.i972 = getelementptr inbounds i8, ptr %156, i64 %155 + %160 = load ptr, ptr %out.coerce, align 8, !tbaa !32 + %add.ptr.i.i972 = getelementptr inbounds i8, ptr %160, i64 %159 %cmp8.not.i973 = icmp eq i64 %shr.i963, 0 br i1 %cmp8.not.i973, label %if.end.i976, label %if.then.i974 if.then.i974: ; preds = %_ZN3fmt2v96detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit770 - %157 = load i8, ptr %size_.i.i966, align 1, !tbaa !116 - %conv.i.i155 = zext i8 %157 to i64 - %cmp.i156 = icmp eq i8 %157, 1 + %161 = load i8, ptr %size_.i.i966, align 1, !tbaa !116 + %conv.i.i155 = zext i8 %161 to i64 + %cmp.i156 = icmp eq i8 %161, 1 br i1 %cmp.i156, label %if.then.i183, label %for.body.preheader.i159 for.body.preheader.i159: ; preds = %if.then.i974 %xtraiter.i160 = and i64 %shr.i963, 3 - %158 = icmp ult i64 %shr.i963, 4 - br i1 %158, label %cleanup.loopexit.unr-lcssa.i172, label %for.body.preheader.new.i161 + %162 = icmp ult i64 %shr.i963, 4 + br i1 %162, label %cleanup.loopexit.unr-lcssa.i172, label %for.body.preheader.new.i161 for.body.preheader.new.i161: ; preds = %for.body.preheader.i159 %unroll_iter.i162 = and i64 %shr.i963, 4294967292 br label %for.body.i163 if.then.i183: ; preds = %if.then.i974 - %159 = load i8, ptr %fill.i965, align 1, !tbaa !31 - tail call void @llvm.memset.p0.i64(ptr align 1 %add.ptr.i.i972, i8 %159, i64 %shr.i963, i1 false) + %163 = load i8, ptr %fill.i965, align 1, !tbaa !31 + tail call void @llvm.memset.p0.i64(ptr align 1 %add.ptr.i.i972, i8 %163, i64 %shr.i963, i1 false) %add.ptr.i.i184 = getelementptr inbounds i8, ptr %add.ptr.i.i972, i64 %shr.i963 br label %if.end.i976 @@ -3818,9 +3818,9 @@ for.cond.cleanup.i.i987: ; preds = %for.body.i.i980, %i do.body.i.i.i.i993: ; preds = %do.body.i.i.i.i993, %for.cond.cleanup.i.i987 %value.addr.0.i.i.i.i994 = phi i32 [ %abs_value.0.i555, %for.cond.cleanup.i.i987 ], [ %shr.i.i.i.i998, %do.body.i.i.i.i993 ] %buffer.addr.0.i.i.i.i995 = phi ptr [ %add.ptr.i.i.i.i992, %for.cond.cleanup.i.i987 ], [ %incdec.ptr.i.i.i.i997, %do.body.i.i.i.i993 ] - %160 = trunc i32 %value.addr.0.i.i.i.i994 to i8 - %161 = and i8 %160, 7 - %conv.i.i.i.i996 = or disjoint i8 %161, 48 + %164 = trunc i32 %value.addr.0.i.i.i.i994 to i8 + %165 = and i8 %164, 7 + %conv.i.i.i.i996 = or disjoint i8 %165, 48 %incdec.ptr.i.i.i.i997 = getelementptr inbounds i8, ptr %buffer.addr.0.i.i.i.i995, i64 -1 store i8 %conv.i.i.i.i996, ptr %incdec.ptr.i.i.i.i997, align 1, !tbaa !31 %shr.i.i.i.i998 = lshr i32 %value.addr.0.i.i.i.i994, 3 @@ -3849,8 +3849,8 @@ sw.bb72.i38: ; preds = %_ZN3fmt2v96detail18 %conv74.i40 = trunc i32 %abs_value.0.i555 to i8 call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %ref.tmp.i772) #31 store i8 0, ptr %ref.tmp.i772, align 1, !tbaa !126 - %162 = getelementptr inbounds i8, ptr %ref.tmp.i772, i64 1 - store i8 %conv74.i40, ptr %162, align 1, !tbaa !128 + %166 = getelementptr inbounds i8, ptr %ref.tmp.i772, i64 1 + store i8 %conv74.i40, ptr %166, align 1, !tbaa !128 %call.i.i776 = call ptr @_ZN3fmt2v96detail12write_paddedILNS0_5align4typeE1ESt20back_insert_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEcRZNS1_10write_charIcSC_EET0_SE_T_RKNS0_18basic_format_specsISF_EEEUlPcE_EESE_SE_RKNSG_IT1_EEmmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(16) %this, i64 noundef 1, i64 noundef 1, ptr noundef nonnull align 1 dereferenceable(2) %ref.tmp.i772) call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %ref.tmp.i772) #31 br label %_ZNK3fmt2v99formatterIicvE6formatINS0_20basic_format_contextISt20back_insert_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEcEEEEDTcldtfp0_3outEERKiRT_.exit @@ -3867,11 +3867,11 @@ _ZNK3fmt2v99formatterIicvE6formatINS0_20basic_format_contextISt20back_insert_ite %agg.tmp4.sroa.2.0.data.sroa_idx.i.i = getelementptr inbounds i8, ptr %this, i64 72 %agg.tmp4.sroa.2.0.copyload.i.i = load i64, ptr %agg.tmp4.sroa.2.0.data.sroa_idx.i.i, align 8, !tbaa !40 %_M_string_length.i.i.i.i.i = getelementptr inbounds i8, ptr %retval.sroa.0.0.i, i64 8 - %163 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !28 - %add.i.i.i.i = add i64 %163, %agg.tmp4.sroa.2.0.copyload.i.i + %167 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !28 + %add.i.i.i.i = add i64 %167, %agg.tmp4.sroa.2.0.copyload.i.i call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEmc(ptr noundef nonnull align 8 dereferenceable(32) %retval.sroa.0.0.i, i64 noundef %add.i.i.i.i, i8 noundef signext 0) - %164 = load ptr, ptr %retval.sroa.0.0.i, align 8, !tbaa !32 - %add.ptr.i.i.i.i = getelementptr inbounds i8, ptr %164, i64 %163 + %168 = load ptr, ptr %retval.sroa.0.0.i, align 8, !tbaa !32 + %add.ptr.i.i.i.i = getelementptr inbounds i8, ptr %168, i64 %167 call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr.i.i.i.i, ptr align 1 %agg.tmp4.sroa.0.0.copyload.i.i, i64 %agg.tmp4.sroa.2.0.copyload.i.i, i1 false) %rhs.i = getelementptr inbounds i8, ptr %this, i64 80 %call10.i = call ptr @_ZNK3fmt2v96detail6concatINS1_10spec_fieldIcjLi2EEENS1_4textIcEEE6formatISt20back_insert_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEJPKcijEEET_SJ_DpRKT0_(ptr noundef nonnull align 8 dereferenceable(80) %rhs.i, ptr nonnull %retval.sroa.0.0.i, ptr noundef nonnull align 8 dereferenceable(8) %args, ptr noundef nonnull align 4 dereferenceable(4) %args1, ptr noundef nonnull align 4 dereferenceable(4) %args3) diff --git a/bench/icu/optimized/ucnvmbcs.ll b/bench/icu/optimized/ucnvmbcs.ll index 4daf527b3aa..16481620871 100644 --- a/bench/icu/optimized/ucnvmbcs.ll +++ b/bench/icu/optimized/ucnvmbcs.ll @@ -4736,11 +4736,11 @@ entry: ] if.end19.thread: ; preds = %entry - %flags181 = getelementptr inbounds i8, ptr %raw, i64 24 - %1 = load i32, ptr %flags181, align 4 - %conv20182 = trunc i32 %1 to i8 - %outputType183 = getelementptr inbounds i8, ptr %sharedData, i64 252 - store i8 %conv20182, ptr %outputType183, align 4 + %flags180 = getelementptr inbounds i8, ptr %raw, i64 24 + %1 = load i32, ptr %flags180, align 4 + %conv20181 = trunc i32 %1 to i8 + %outputType182 = getelementptr inbounds i8, ptr %sharedData, i64 252 + store i8 %conv20181, ptr %outputType182, align 4 br label %if.end26 land.lhs.true: ; preds = %entry @@ -4771,20 +4771,20 @@ if.end19: ; preds = %land.lhs.true9 %tobool.not = icmp ne i32 %5, 0 %conv23 = and i32 %4, 255 %cmp24 = icmp eq i32 %conv23, 0 - %or.cond154 = select i1 %tobool.not, i1 %cmp24, i1 false - br i1 %or.cond154, label %if.then25, label %if.end26 + %or.cond153 = select i1 %tobool.not, i1 %cmp24, i1 false + br i1 %or.cond153, label %if.then25, label %if.end26 if.then25: ; preds = %if.end19 store i32 13, ptr %pErrorCode, align 4 br label %if.end341 if.end26: ; preds = %if.end19.thread, %if.end19 - %tobool.not192 = phi i1 [ false, %if.end19.thread ], [ %tobool.not, %if.end19 ] - %outputType191 = phi ptr [ %outputType183, %if.end19.thread ], [ %outputType, %if.end19 ] - %conv20190 = phi i8 [ %conv20182, %if.end19.thread ], [ %conv20, %if.end19 ] - %flags189 = phi ptr [ %flags181, %if.end19.thread ], [ %flags, %if.end19 ] - %headerLength.0188 = phi i32 [ 8, %if.end19.thread ], [ %and13, %if.end19 ] - %6 = load i32, ptr %flags189, align 4 + %tobool.not191 = phi i1 [ false, %if.end19.thread ], [ %tobool.not, %if.end19 ] + %outputType190 = phi ptr [ %outputType182, %if.end19.thread ], [ %outputType, %if.end19 ] + %conv20189 = phi i8 [ %conv20181, %if.end19.thread ], [ %conv20, %if.end19 ] + %flags188 = phi ptr [ %flags180, %if.end19.thread ], [ %flags, %if.end19 ] + %headerLength.0187 = phi i32 [ 8, %if.end19.thread ], [ %and13, %if.end19 ] + %6 = load i32, ptr %flags188, align 4 %cmp28.not = icmp ult i32 %6, 256 br i1 %cmp28.not, label %if.end30, label %if.then29 @@ -4797,7 +4797,7 @@ if.then29: ; preds = %if.end26 br label %if.end30 if.end30: ; preds = %if.then29, %if.end26 - switch i8 %conv20190, label %sw.default [ + switch i8 %conv20189, label %sw.default [ i8 14, label %if.then34 i8 0, label %sw.epilog i8 1, label %sw.epilog @@ -4831,7 +4831,7 @@ if.then41: ; preds = %if.end39 br label %if.end341 if.end42: ; preds = %if.end39 - %mul = shl nuw nsw i32 %headerLength.0188, 2 + %mul = shl nuw nsw i32 %headerLength.0187, 2 %idx.ext43 = zext nneg i32 %mul to i64 %add.ptr44 = getelementptr inbounds i8, ptr %raw, i64 %idx.ext43 %staticData = getelementptr inbounds i8, ptr %sharedData, i64 16 @@ -4938,8 +4938,8 @@ if.then93: ; preds = %if.then88 %arrayidx96 = getelementptr inbounds i8, ptr %24, i64 56 %25 = load i32, ptr %arrayidx96, align 4 %26 = and i32 %25, -2131755008 - %or.cond155 = icmp eq i32 %26, -2139095040 - br i1 %or.cond155, label %land.lhs.true102, label %if.end315 + %or.cond154 = icmp eq i32 %26, -2139095040 + br i1 %or.cond154, label %land.lhs.true102, label %if.end315 land.lhs.true102: ; preds = %if.then93 %shr103 = lshr i32 %25, 24 @@ -4951,7 +4951,7 @@ if.then106: ; preds = %land.lhs.true102 %conv109 = trunc nuw nsw i32 %and104 to i8 %dbcsOnlyState = getelementptr inbounds i8, ptr %sharedData, i64 49 store i8 %conv109, ptr %dbcsOnlyState, align 1 - store i8 -37, ptr %outputType191, align 4 + store i8 -37, ptr %outputType190, align 4 br label %if.end315 if.else112: ; preds = %if.then88 @@ -5002,8 +5002,8 @@ do.body138: ; preds = %if.then129 br label %for.body for.body: ; preds = %do.body138, %for.inc - %indvars.iv171 = phi i64 [ 0, %do.body138 ], [ %indvars.iv.next172, %for.inc ] - %arrayidx146 = getelementptr inbounds i32, ptr %call134, i64 %indvars.iv171 + %indvars.iv170 = phi i64 [ 0, %do.body138 ], [ %indvars.iv.next171, %for.inc ] + %arrayidx146 = getelementptr inbounds i32, ptr %call134, i64 %indvars.iv170 %33 = load i32, ptr %arrayidx146, align 4 %cmp147 = icmp slt i32 %33, 0 br i1 %cmp147, label %if.then148, label %for.inc @@ -5013,9 +5013,9 @@ if.then148: ; preds = %for.body br label %for.inc for.inc: ; preds = %for.body, %if.then148 - %indvars.iv.next172 = add nuw nsw i64 %indvars.iv171, 1 - %exitcond174.not = icmp eq i64 %indvars.iv.next172, 256 - br i1 %exitcond174.not, label %for.end, label %for.body, !llvm.loop !36 + %indvars.iv.next171 = add nuw nsw i64 %indvars.iv170, 1 + %exitcond173.not = icmp eq i64 %indvars.iv.next171, 256 + br i1 %exitcond173.not, label %for.end, label %for.body, !llvm.loop !36 for.end: ; preds = %for.inc %idxprom152 = zext nneg i8 %31 to i64 @@ -5023,12 +5023,12 @@ for.end: ; preds = %for.inc br label %for.body157 for.body157: ; preds = %for.end, %for.body157 - %indvars.iv175 = phi i64 [ 0, %for.end ], [ %indvars.iv.next176, %for.body157 ] - %arrayidx159 = getelementptr inbounds i32, ptr %arrayidx153, i64 %indvars.iv175 + %indvars.iv174 = phi i64 [ 0, %for.end ], [ %indvars.iv.next175, %for.body157 ] + %arrayidx159 = getelementptr inbounds i32, ptr %arrayidx153, i64 %indvars.iv174 store i32 -2140143616, ptr %arrayidx159, align 4 - %indvars.iv.next176 = add nuw nsw i64 %indvars.iv175, 1 - %exitcond178.not = icmp eq i64 %indvars.iv.next176, 256 - br i1 %exitcond178.not, label %for.end162, label %for.body157, !llvm.loop !37 + %indvars.iv.next175 = add nuw nsw i64 %indvars.iv174, 1 + %exitcond177.not = icmp eq i64 %indvars.iv.next175, 256 + br i1 %exitcond177.not, label %for.end162, label %for.body157, !llvm.loop !37 for.end162: ; preds = %for.body157 store ptr %call134, ptr %stateTable139, align 8 @@ -5036,7 +5036,7 @@ for.end162: ; preds = %for.body157 store i8 %conv165, ptr %mbcs, align 8 %stateTableOwned = getelementptr inbounds i8, ptr %sharedData, i64 50 store i8 1, ptr %stateTableOwned, align 2 - store i8 -37, ptr %outputType191, align 4 + store i8 -37, ptr %outputType190, align 4 br label %if.end315 sw.default: ; preds = %if.end30 @@ -5058,7 +5058,7 @@ if.end177: ; preds = %sw.epilog %36 = load i32, ptr %countToUFallbacks, align 4 %countToUFallbacks181 = getelementptr inbounds i8, ptr %sharedData, i64 52 store i32 %36, ptr %countToUFallbacks181, align 4 - %mul182 = shl nuw nsw i32 %headerLength.0188, 2 + %mul182 = shl nuw nsw i32 %headerLength.0187, 2 %idx.ext183 = zext nneg i32 %mul182 to i64 %add.ptr184 = getelementptr inbounds i8, ptr %raw, i64 %idx.ext183 %stateTable185 = getelementptr inbounds i8, ptr %sharedData, i64 56 @@ -5119,8 +5119,8 @@ if.end219: ; preds = %if.end177, %lor.lhs %48 = load i8, ptr %arrayidx221, align 1 %cmp223 = icmp ugt i8 %48, 2 %cmp228 = icmp ult i8 %47, 2 - %or.cond196 = select i1 %cmp223, i1 %cmp228, i1 false - br i1 %or.cond196, label %land.lhs.true229, label %if.end283 + %or.cond195 = select i1 %cmp223, i1 %cmp228, i1 false + br i1 %or.cond195, label %land.lhs.true229, label %if.end283 if.end219.thread: ; preds = %lor.lhs.false201 %unicodeMask218 = getelementptr inbounds i8, ptr %sharedData, i64 253 @@ -5173,10 +5173,10 @@ for.end265: ; preds = %for.body249 br label %if.end283 if.else266: ; preds = %cond.false - %utf8Friendly158 = getelementptr inbounds i8, ptr %sharedData, i64 254 - store i8 1, ptr %utf8Friendly158, align 2 + %utf8Friendly157 = getelementptr inbounds i8, ptr %sharedData, i64 254 + store i8 1, ptr %utf8Friendly157, align 2 %56 = load ptr, ptr %fromUnicodeBytes, align 8 - br i1 %tobool.not192, label %cond.end, label %cond.false270 + br i1 %tobool.not191, label %cond.end, label %cond.false270 cond.false270: ; preds = %if.else266 %57 = load i32, ptr %fromUBytesLength196, align 8 @@ -5201,27 +5201,27 @@ if.end283: ; preds = %if.end219.thread, % br label %for.body287 for.body287: ; preds = %if.end283, %for.body287 - %indvars.iv166 = phi i64 [ 0, %if.end283 ], [ %indvars.iv.next167, %for.body287 ] - %asciiRoundtrips.0160 = phi i32 [ -1, %if.end283 ], [ %asciiRoundtrips.1, %for.body287 ] - %arrayidx291 = getelementptr inbounds [256 x i32], ptr %60, i64 0, i64 %indvars.iv166 + %indvars.iv165 = phi i64 [ 0, %if.end283 ], [ %indvars.iv.next166, %for.body287 ] + %asciiRoundtrips.0159 = phi i32 [ -1, %if.end283 ], [ %asciiRoundtrips.1, %for.body287 ] + %arrayidx291 = getelementptr inbounds [256 x i32], ptr %60, i64 0, i64 %indvars.iv165 %61 = load i32, ptr %arrayidx291, align 4 - %62 = or disjoint i64 %indvars.iv166, 2147483648 + %62 = or disjoint i64 %indvars.iv165, 2147483648 %63 = zext i32 %61 to i64 %cmp293.not = icmp eq i64 %62, %63 - %64 = trunc nuw nsw i64 %indvars.iv166 to i32 + %64 = trunc nuw nsw i64 %indvars.iv165 to i32 %shr295 = lshr i32 %64, 2 %shl296 = shl nuw i32 1, %shr295 %not = xor i32 %shl296, -1 %and297 = select i1 %cmp293.not, i32 -1, i32 %not - %asciiRoundtrips.1 = and i32 %and297, %asciiRoundtrips.0160 - %indvars.iv.next167 = add nuw nsw i64 %indvars.iv166, 1 - %exitcond170.not = icmp eq i64 %indvars.iv.next167, 128 - br i1 %exitcond170.not, label %for.end301, label %for.body287, !llvm.loop !39 + %asciiRoundtrips.1 = and i32 %and297, %asciiRoundtrips.0159 + %indvars.iv.next166 = add nuw nsw i64 %indvars.iv165, 1 + %exitcond169.not = icmp eq i64 %indvars.iv.next166, 128 + br i1 %exitcond169.not, label %for.end301, label %for.body287, !llvm.loop !39 for.end301: ; preds = %for.body287 %asciiRoundtrips302 = getelementptr inbounds i8, ptr %sharedData, i64 260 store i32 %asciiRoundtrips.1, ptr %asciiRoundtrips302, align 4 - br i1 %tobool.not192, label %if.then304, label %if.end315 + br i1 %tobool.not191, label %if.then304, label %if.end315 if.then304: ; preds = %for.end301 %unicodeMask305 = getelementptr inbounds i8, ptr %sharedData, i64 253 @@ -5231,7 +5231,6 @@ if.then304: ; preds = %for.end301 %cond309 = select i1 %tobool308.not, i32 64, i32 1088 %67 = load i32, ptr %offsetFromUBytes, align 4 %68 = load i32, ptr %offsetFromUTable, align 4 - %div312153 = lshr exact i32 %cond309, 1 %fullStage2Length = getelementptr inbounds i8, ptr %raw, i64 36 %69 = load i32, ptr %fullStage2Length, align 4 %mul.i = shl nuw nsw i32 %cond309, 1 @@ -5239,22 +5238,23 @@ if.then304: ; preds = %for.end301 %add.i = add i32 %mul1.i, %mul.i %70 = load i32, ptr %fromUBytesLength196, align 8 %add2.i = add i32 %add.i, %70 - %conv.i156 = zext i32 %add2.i to i64 - %call.i = call noalias ptr @uprv_malloc_75(i64 noundef %conv.i156) #16 + %conv.i155 = zext i32 %add2.i to i64 + %call.i = call noalias ptr @uprv_malloc_75(i64 noundef %conv.i155) #16 %reconstitutedData.i = getelementptr inbounds i8, ptr %sharedData, i64 264 store ptr %call.i, ptr %reconstitutedData.i, align 8 - %cmp.i157 = icmp eq ptr %call.i, null - br i1 %cmp.i157, label %if.then.i, label %if.end.i + %cmp.i156 = icmp eq ptr %call.i, null + br i1 %cmp.i156, label %if.then.i, label %if.end.i if.then.i: ; preds = %if.then304 store i32 7, ptr %pErrorCode, align 4 br label %if.end315 if.end.i: ; preds = %if.then304 + %div312.neg = select i1 %tobool308.not, i32 -32, i32 -544 %sub = sub i32 %67, %68 %div152 = lshr i32 %sub, 2 - %sub313 = sub nsw i32 %div152, %div312153 - call void @llvm.memset.p0.i64(ptr nonnull align 1 %call.i, i8 0, i64 %conv.i156, i1 false) + %sub313 = add nsw i32 %div152, %div312.neg + call void @llvm.memset.p0.i64(ptr nonnull align 1 %call.i, i8 0, i64 %conv.i155, i1 false) %71 = load ptr, ptr %fromUnicodeTable, align 8 %conv8.i = zext nneg i32 %mul.i to i64 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(1) %call.i, ptr noundef nonnull align 2 dereferenceable(1) %71, i64 %conv8.i, i1 false) @@ -5280,6 +5280,7 @@ if.end.i: ; preds = %if.then304 br i1 %cmp2349.not.i, label %for.end59.i, label %for.body.lr.ph.i for.body.lr.ph.i: ; preds = %if.end.i + %div45.i = lshr exact i32 %cond309, 1 %mbcsIndex.i = getelementptr inbounds i8, ptr %sharedData, i64 96 br label %for.body.i @@ -5289,7 +5290,7 @@ for.body.i: ; preds = %for.inc57.i, %for.b %arrayidx.i = getelementptr inbounds i16, ptr %call.i, i64 %indvars.iv57.i %73 = load i16, ptr %arrayidx.i, align 2 %conv24.i = zext i16 %73 to i32 - %cmp25.not.i = icmp eq i32 %div312153, %conv24.i + %cmp25.not.i = icmp eq i32 %div45.i, %conv24.i br i1 %cmp25.not.i, label %if.else54.i, label %for.cond27.preheader.i for.cond27.preheader.i: ; preds = %for.body.i @@ -5395,7 +5396,7 @@ if.then322: ; preds = %if.then318 br label %if.end331thread-pre-split if.else323: ; preds = %if.then318 - %90 = load i8, ptr %outputType191, align 4 + %90 = load i8, ptr %outputType190, align 4 %cmp326 = icmp eq i8 %90, 1 br i1 %cmp326, label %if.end331.thread, label %if.end331 @@ -5405,7 +5406,7 @@ if.end331.thread: ; preds = %if.else323 br label %if.end341 if.end331thread-pre-split: ; preds = %if.end315, %if.then322 - %.pr = load i8, ptr %outputType191, align 4 + %.pr = load i8, ptr %outputType190, align 4 br label %if.end331 if.end331: ; preds = %if.end331thread-pre-split, %if.else323 diff --git a/bench/lief/optimized/AArch64Feature.cpp.ll b/bench/lief/optimized/AArch64Feature.cpp.ll index 4ee2880e9ae..ca8c4a64e9f 100644 --- a/bench/lief/optimized/AArch64Feature.cpp.ll +++ b/bench/lief/optimized/AArch64Feature.cpp.ll @@ -106,253 +106,262 @@ define hidden void @_ZN4LIEF3ELF14AArch64Feature6createERNS_12BinaryStreamE(ptr %7 = getelementptr inbounds i8, ptr %6, i64 96 %8 = load ptr, ptr %7, align 8 %9 = call i64 %8(ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull %3, i64 noundef %5, i64 noundef 4) + %10 = and i64 %9, 4294967296 + %.not.i.i = icmp eq i64 %10, 0 call void @_ZNK4LIEF12BinaryStream6setposEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %4) - %10 = load i32, ptr %3, align 4 + %11 = load i32, ptr %3, align 4 + %12 = zext i32 %11 to i64 + %13 = or disjoint i64 %10, %12 + %.sroa.03.0.insert.insert.i.i = select i1 %.not.i.i, i64 1, i64 %13 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) - %11 = and i64 %9, 4294967296 - %.not.i = icmp eq i64 %11, 0 - br i1 %.not.i, label %select.unfold._crit_edge, label %_ZNK4LIEF12BinaryStream4readIjEEN2tl8expectedIT_11lief_errorsEEv.exit + %.not.i = icmp ult i64 %.sroa.03.0.insert.insert.i.i, 4294967296 + br i1 %.not.i, label %_ZNK4LIEF12BinaryStream4readIjEEN2tl8expectedIT_11lief_errorsEEv.exit, label %14 -_ZNK4LIEF12BinaryStream4readIjEEN2tl8expectedIT_11lief_errorsEEv.exit: ; preds = %2 +14: ; preds = %2 call void @_ZNK4LIEF12BinaryStream13increment_posEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 4) - %.not83 = icmp eq i32 %10, 0 - br i1 %.not83, label %select.unfold._crit_edge, label %.lr.ph + br label %_ZNK4LIEF12BinaryStream4readIjEEN2tl8expectedIT_11lief_errorsEEv.exit + +_ZNK4LIEF12BinaryStream4readIjEEN2tl8expectedIT_11lief_errorsEEv.exit: ; preds = %2, %14 + %spec.select70 = call i64 @llvm.umax.i64(i64 %.sroa.03.0.insert.insert.i.i, i64 4294967296) + %spec.select = trunc i64 %spec.select70 to i32 + %.not85 = icmp eq i32 %spec.select, 0 + br i1 %.not85, label %select.unfold._crit_edge, label %.lr.ph .lr.ph: ; preds = %_ZNK4LIEF12BinaryStream4readIjEEN2tl8expectedIT_11lief_errorsEEv.exit, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE9push_backEOS3_.exit - %.01087 = phi i32 [ %14, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE9push_backEOS3_.exit ], [ %10, %_ZNK4LIEF12BinaryStream4readIjEEN2tl8expectedIT_11lief_errorsEEv.exit ] - %.sroa.048.086 = phi ptr [ %.sroa.048.4, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE9push_backEOS3_.exit ], [ null, %_ZNK4LIEF12BinaryStream4readIjEEN2tl8expectedIT_11lief_errorsEEv.exit ] - %.sroa.11.085 = phi ptr [ %.sroa.11.4, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE9push_backEOS3_.exit ], [ null, %_ZNK4LIEF12BinaryStream4readIjEEN2tl8expectedIT_11lief_errorsEEv.exit ] - %.sroa.24.084 = phi ptr [ %.sroa.24.4, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE9push_backEOS3_.exit ], [ null, %_ZNK4LIEF12BinaryStream4readIjEEN2tl8expectedIT_11lief_errorsEEv.exit ] - %12 = sub i32 0, %.01087 - %13 = and i32 %.01087, %12 - %14 = xor i32 %13, %.01087 - %.not.i.i24 = icmp eq ptr %.sroa.11.085, %.sroa.24.084 - switch i32 %13, label %64 [ - i32 1, label %15 - i32 2, label %40 + %.01089 = phi i32 [ %17, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE9push_backEOS3_.exit ], [ %spec.select, %_ZNK4LIEF12BinaryStream4readIjEEN2tl8expectedIT_11lief_errorsEEv.exit ] + %.sroa.049.088 = phi ptr [ %.sroa.049.4, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE9push_backEOS3_.exit ], [ null, %_ZNK4LIEF12BinaryStream4readIjEEN2tl8expectedIT_11lief_errorsEEv.exit ] + %.sroa.11.087 = phi ptr [ %.sroa.11.4, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE9push_backEOS3_.exit ], [ null, %_ZNK4LIEF12BinaryStream4readIjEEN2tl8expectedIT_11lief_errorsEEv.exit ] + %.sroa.24.086 = phi ptr [ %.sroa.24.4, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE9push_backEOS3_.exit ], [ null, %_ZNK4LIEF12BinaryStream4readIjEEN2tl8expectedIT_11lief_errorsEEv.exit ] + %15 = sub i32 0, %.01089 + %16 = and i32 %.01089, %15 + %17 = xor i32 %16, %.01089 + %.not.i.i25 = icmp eq ptr %.sroa.11.087, %.sroa.24.086 + switch i32 %16, label %67 [ + i32 1, label %18 + i32 2, label %43 ] -15: ; preds = %.lr.ph - br i1 %.not.i.i24, label %18, label %16 +18: ; preds = %.lr.ph + br i1 %.not.i.i25, label %21, label %19 -16: ; preds = %15 - store i32 1, ptr %.sroa.11.085, align 4 - %17 = getelementptr inbounds i8, ptr %.sroa.11.085, i64 4 +19: ; preds = %18 + store i32 1, ptr %.sroa.11.087, align 4 + %20 = getelementptr inbounds i8, ptr %.sroa.11.087, i64 4 br label %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE9push_backEOS3_.exit -18: ; preds = %15 - %19 = ptrtoint ptr %.sroa.11.085 to i64 - %20 = ptrtoint ptr %.sroa.048.086 to i64 - %21 = sub i64 %19, %20 - %22 = icmp eq i64 %21, 9223372036854775804 - br i1 %22, label %.invoke, label %_ZNKSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE12_M_check_lenEmPKc.exit.i.i.i +21: ; preds = %18 + %22 = ptrtoint ptr %.sroa.11.087 to i64 + %23 = ptrtoint ptr %.sroa.049.088 to i64 + %24 = sub i64 %22, %23 + %25 = icmp eq i64 %24, 9223372036854775804 + br i1 %25, label %.invoke, label %_ZNKSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE12_M_check_lenEmPKc.exit.i.i.i -.invoke: ; preds = %18, %67, %43 +.invoke: ; preds = %21, %70, %46 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.5) #16 to label %.cont unwind label %.loopexit.split-lp .cont: ; preds = %.invoke unreachable -_ZNKSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE12_M_check_lenEmPKc.exit.i.i.i: ; preds = %18 - %23 = ashr exact i64 %21, 2 - %.sroa.speculated.i.i.i.i = call i64 @llvm.umax.i64(i64 %23, i64 1) - %24 = add nsw i64 %.sroa.speculated.i.i.i.i, %23 - %25 = icmp ult i64 %24, %23 - %26 = call i64 @llvm.umin.i64(i64 %24, i64 2305843009213693951) - %27 = select i1 %25, i64 2305843009213693951, i64 %26 - %.not.i.i.i.i = icmp eq i64 %27, 0 - br i1 %.not.i.i.i.i, label %_ZNSt12_Vector_baseIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_M_allocateEm.exit.i.i.i, label %28 - -28: ; preds = %_ZNKSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE12_M_check_lenEmPKc.exit.i.i.i - %29 = shl nuw nsw i64 %27, 2 - %30 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %29) #17 +_ZNKSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE12_M_check_lenEmPKc.exit.i.i.i: ; preds = %21 + %26 = ashr exact i64 %24, 2 + %.sroa.speculated.i.i.i.i = call i64 @llvm.umax.i64(i64 %26, i64 1) + %27 = add nsw i64 %.sroa.speculated.i.i.i.i, %26 + %28 = icmp ult i64 %27, %26 + %29 = call i64 @llvm.umin.i64(i64 %27, i64 2305843009213693951) + %30 = select i1 %28, i64 2305843009213693951, i64 %29 + %.not.i.i.i.i = icmp eq i64 %30, 0 + br i1 %.not.i.i.i.i, label %_ZNSt12_Vector_baseIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_M_allocateEm.exit.i.i.i, label %31 + +31: ; preds = %_ZNKSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE12_M_check_lenEmPKc.exit.i.i.i + %32 = shl nuw nsw i64 %30, 2 + %33 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %32) #17 to label %_ZNSt12_Vector_baseIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_M_allocateEm.exit.i.i.i unwind label %.loopexit -_ZNSt12_Vector_baseIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_M_allocateEm.exit.i.i.i: ; preds = %28, %_ZNKSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE12_M_check_lenEmPKc.exit.i.i.i - %31 = phi ptr [ null, %_ZNKSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE12_M_check_lenEmPKc.exit.i.i.i ], [ %30, %28 ] - %32 = getelementptr inbounds i32, ptr %31, i64 %23 - store i32 1, ptr %32, align 4 - %33 = icmp sgt i64 %21, 0 - br i1 %33, label %34, label %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit16.i.i.i +_ZNSt12_Vector_baseIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_M_allocateEm.exit.i.i.i: ; preds = %31, %_ZNKSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE12_M_check_lenEmPKc.exit.i.i.i + %34 = phi ptr [ null, %_ZNKSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE12_M_check_lenEmPKc.exit.i.i.i ], [ %33, %31 ] + %35 = getelementptr inbounds i32, ptr %34, i64 %26 + store i32 1, ptr %35, align 4 + %36 = icmp sgt i64 %24, 0 + br i1 %36, label %37, label %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit16.i.i.i -34: ; preds = %_ZNSt12_Vector_baseIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_M_allocateEm.exit.i.i.i - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %31, ptr align 4 %.sroa.048.086, i64 %21, i1 false) +37: ; preds = %_ZNSt12_Vector_baseIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_M_allocateEm.exit.i.i.i + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %34, ptr align 4 %.sroa.049.088, i64 %24, i1 false) br label %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit16.i.i.i -_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit16.i.i.i: ; preds = %34, %_ZNSt12_Vector_baseIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_M_allocateEm.exit.i.i.i - %35 = getelementptr inbounds i8, ptr %31, i64 %21 - %36 = getelementptr inbounds i8, ptr %35, i64 4 - %.not.i17.i.i.i = icmp eq ptr %.sroa.048.086, null - br i1 %.not.i17.i.i.i, label %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i, label %37 +_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit16.i.i.i: ; preds = %37, %_ZNSt12_Vector_baseIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_M_allocateEm.exit.i.i.i + %38 = getelementptr inbounds i8, ptr %34, i64 %24 + %39 = getelementptr inbounds i8, ptr %38, i64 4 + %.not.i17.i.i.i = icmp eq ptr %.sroa.049.088, null + br i1 %.not.i17.i.i.i, label %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i, label %40 -37: ; preds = %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit16.i.i.i - call void @_ZdlPv(ptr noundef nonnull %.sroa.048.086) #15 +40: ; preds = %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit16.i.i.i + call void @_ZdlPv(ptr noundef nonnull %.sroa.049.088) #15 br label %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i -_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i: ; preds = %37, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit16.i.i.i - %38 = getelementptr inbounds i32, ptr %31, i64 %27 +_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i: ; preds = %40, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit16.i.i.i + %41 = getelementptr inbounds i32, ptr %34, i64 %30 br label %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE9push_backEOS3_.exit -.loopexit: ; preds = %28, %53, %77 +.loopexit: ; preds = %31, %56, %80 %lpad.loopexit = landingpad { ptr, i32 } cleanup - br label %39 + br label %42 .loopexit.split-lp: ; preds = %.invoke, %select.unfold._crit_edge - %.sroa.048.074 = phi ptr [ %.sroa.048.0.lcssa, %select.unfold._crit_edge ], [ %.sroa.048.086, %.invoke ] + %.sroa.049.076 = phi ptr [ %.sroa.049.0.lcssa, %select.unfold._crit_edge ], [ %.sroa.049.088, %.invoke ] %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup - br label %39 + br label %42 -39: ; preds = %.loopexit.split-lp, %.loopexit - %.sroa.048.073 = phi ptr [ %.sroa.048.086, %.loopexit ], [ %.sroa.048.074, %.loopexit.split-lp ] +42: ; preds = %.loopexit.split-lp, %.loopexit + %.sroa.049.075 = phi ptr [ %.sroa.049.088, %.loopexit ], [ %.sroa.049.076, %.loopexit.split-lp ] %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] - %.not.i.i.i39 = icmp eq ptr %.sroa.048.073, null - br i1 %.not.i.i.i39, label %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EED2Ev.exit40, label %93 + %.not.i.i.i40 = icmp eq ptr %.sroa.049.075, null + br i1 %.not.i.i.i40, label %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EED2Ev.exit41, label %96 -40: ; preds = %.lr.ph - br i1 %.not.i.i24, label %43, label %41 +43: ; preds = %.lr.ph + br i1 %.not.i.i25, label %46, label %44 -41: ; preds = %40 - store i32 2, ptr %.sroa.11.085, align 4 - %42 = getelementptr inbounds i8, ptr %.sroa.11.085, i64 4 +44: ; preds = %43 + store i32 2, ptr %.sroa.11.087, align 4 + %45 = getelementptr inbounds i8, ptr %.sroa.11.087, i64 4 br label %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE9push_backEOS3_.exit -43: ; preds = %40 - %44 = ptrtoint ptr %.sroa.11.085 to i64 - %45 = ptrtoint ptr %.sroa.048.086 to i64 - %46 = sub i64 %44, %45 - %47 = icmp eq i64 %46, 9223372036854775804 - br i1 %47, label %.invoke, label %_ZNKSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE12_M_check_lenEmPKc.exit.i.i.i14 - -_ZNKSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE12_M_check_lenEmPKc.exit.i.i.i14: ; preds = %43 - %48 = ashr exact i64 %46, 2 - %.sroa.speculated.i.i.i.i15 = call i64 @llvm.umax.i64(i64 %48, i64 1) - %49 = add nsw i64 %.sroa.speculated.i.i.i.i15, %48 - %50 = icmp ult i64 %49, %48 - %51 = call i64 @llvm.umin.i64(i64 %49, i64 2305843009213693951) - %52 = select i1 %50, i64 2305843009213693951, i64 %51 - %.not.i.i.i.i16 = icmp eq i64 %52, 0 - br i1 %.not.i.i.i.i16, label %_ZNSt12_Vector_baseIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_M_allocateEm.exit.i.i.i17, label %53 - -53: ; preds = %_ZNKSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE12_M_check_lenEmPKc.exit.i.i.i14 - %54 = shl nuw nsw i64 %52, 2 - %55 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %54) #17 - to label %_ZNSt12_Vector_baseIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_M_allocateEm.exit.i.i.i17 unwind label %.loopexit - -_ZNSt12_Vector_baseIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_M_allocateEm.exit.i.i.i17: ; preds = %53, %_ZNKSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE12_M_check_lenEmPKc.exit.i.i.i14 - %56 = phi ptr [ null, %_ZNKSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE12_M_check_lenEmPKc.exit.i.i.i14 ], [ %55, %53 ] - %57 = getelementptr inbounds i32, ptr %56, i64 %48 - store i32 2, ptr %57, align 4 - %58 = icmp sgt i64 %46, 0 - br i1 %58, label %59, label %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit16.i.i.i18 - -59: ; preds = %_ZNSt12_Vector_baseIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_M_allocateEm.exit.i.i.i17 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %56, ptr align 4 %.sroa.048.086, i64 %46, i1 false) - br label %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit16.i.i.i18 - -_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit16.i.i.i18: ; preds = %59, %_ZNSt12_Vector_baseIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_M_allocateEm.exit.i.i.i17 - %60 = getelementptr inbounds i8, ptr %56, i64 %46 - %61 = getelementptr inbounds i8, ptr %60, i64 4 - %.not.i17.i.i.i19 = icmp eq ptr %.sroa.048.086, null - br i1 %.not.i17.i.i.i19, label %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i20, label %62 - -62: ; preds = %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit16.i.i.i18 - call void @_ZdlPv(ptr noundef nonnull %.sroa.048.086) #15 - br label %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i20 - -_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i20: ; preds = %62, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit16.i.i.i18 - %63 = getelementptr inbounds i32, ptr %56, i64 %52 +46: ; preds = %43 + %47 = ptrtoint ptr %.sroa.11.087 to i64 + %48 = ptrtoint ptr %.sroa.049.088 to i64 + %49 = sub i64 %47, %48 + %50 = icmp eq i64 %49, 9223372036854775804 + br i1 %50, label %.invoke, label %_ZNKSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE12_M_check_lenEmPKc.exit.i.i.i15 + +_ZNKSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE12_M_check_lenEmPKc.exit.i.i.i15: ; preds = %46 + %51 = ashr exact i64 %49, 2 + %.sroa.speculated.i.i.i.i16 = call i64 @llvm.umax.i64(i64 %51, i64 1) + %52 = add nsw i64 %.sroa.speculated.i.i.i.i16, %51 + %53 = icmp ult i64 %52, %51 + %54 = call i64 @llvm.umin.i64(i64 %52, i64 2305843009213693951) + %55 = select i1 %53, i64 2305843009213693951, i64 %54 + %.not.i.i.i.i17 = icmp eq i64 %55, 0 + br i1 %.not.i.i.i.i17, label %_ZNSt12_Vector_baseIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_M_allocateEm.exit.i.i.i18, label %56 + +56: ; preds = %_ZNKSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE12_M_check_lenEmPKc.exit.i.i.i15 + %57 = shl nuw nsw i64 %55, 2 + %58 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %57) #17 + to label %_ZNSt12_Vector_baseIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_M_allocateEm.exit.i.i.i18 unwind label %.loopexit + +_ZNSt12_Vector_baseIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_M_allocateEm.exit.i.i.i18: ; preds = %56, %_ZNKSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE12_M_check_lenEmPKc.exit.i.i.i15 + %59 = phi ptr [ null, %_ZNKSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE12_M_check_lenEmPKc.exit.i.i.i15 ], [ %58, %56 ] + %60 = getelementptr inbounds i32, ptr %59, i64 %51 + store i32 2, ptr %60, align 4 + %61 = icmp sgt i64 %49, 0 + br i1 %61, label %62, label %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit16.i.i.i19 + +62: ; preds = %_ZNSt12_Vector_baseIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_M_allocateEm.exit.i.i.i18 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %59, ptr align 4 %.sroa.049.088, i64 %49, i1 false) + br label %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit16.i.i.i19 + +_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit16.i.i.i19: ; preds = %62, %_ZNSt12_Vector_baseIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_M_allocateEm.exit.i.i.i18 + %63 = getelementptr inbounds i8, ptr %59, i64 %49 + %64 = getelementptr inbounds i8, ptr %63, i64 4 + %.not.i17.i.i.i20 = icmp eq ptr %.sroa.049.088, null + br i1 %.not.i17.i.i.i20, label %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i21, label %65 + +65: ; preds = %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit16.i.i.i19 + call void @_ZdlPv(ptr noundef nonnull %.sroa.049.088) #15 + br label %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i21 + +_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i21: ; preds = %65, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit16.i.i.i19 + %66 = getelementptr inbounds i32, ptr %59, i64 %55 br label %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE9push_backEOS3_.exit -64: ; preds = %.lr.ph - br i1 %.not.i.i24, label %67, label %65 +67: ; preds = %.lr.ph + br i1 %.not.i.i25, label %70, label %68 -65: ; preds = %64 - store i32 0, ptr %.sroa.11.085, align 4 - %66 = getelementptr inbounds i8, ptr %.sroa.11.085, i64 4 +68: ; preds = %67 + store i32 0, ptr %.sroa.11.087, align 4 + %69 = getelementptr inbounds i8, ptr %.sroa.11.087, i64 4 br label %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE9push_backEOS3_.exit -67: ; preds = %64 - %68 = ptrtoint ptr %.sroa.11.085 to i64 - %69 = ptrtoint ptr %.sroa.048.086 to i64 - %70 = sub i64 %68, %69 - %71 = icmp eq i64 %70, 9223372036854775804 - br i1 %71, label %.invoke, label %_ZNKSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE12_M_check_lenEmPKc.exit.i.i.i25 - -_ZNKSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE12_M_check_lenEmPKc.exit.i.i.i25: ; preds = %67 - %72 = ashr exact i64 %70, 2 - %.sroa.speculated.i.i.i.i26 = call i64 @llvm.umax.i64(i64 %72, i64 1) - %73 = add nsw i64 %.sroa.speculated.i.i.i.i26, %72 - %74 = icmp ult i64 %73, %72 - %75 = call i64 @llvm.umin.i64(i64 %73, i64 2305843009213693951) - %76 = select i1 %74, i64 2305843009213693951, i64 %75 - %.not.i.i.i.i27 = icmp eq i64 %76, 0 - br i1 %.not.i.i.i.i27, label %_ZNSt12_Vector_baseIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_M_allocateEm.exit.i.i.i28, label %77 - -77: ; preds = %_ZNKSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE12_M_check_lenEmPKc.exit.i.i.i25 - %78 = shl nuw nsw i64 %76, 2 - %79 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %78) #17 - to label %_ZNSt12_Vector_baseIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_M_allocateEm.exit.i.i.i28 unwind label %.loopexit - -_ZNSt12_Vector_baseIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_M_allocateEm.exit.i.i.i28: ; preds = %77, %_ZNKSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE12_M_check_lenEmPKc.exit.i.i.i25 - %80 = phi ptr [ null, %_ZNKSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE12_M_check_lenEmPKc.exit.i.i.i25 ], [ %79, %77 ] - %81 = getelementptr inbounds i32, ptr %80, i64 %72 - store i32 0, ptr %81, align 4 - %82 = icmp sgt i64 %70, 0 - br i1 %82, label %83, label %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit16.i.i.i29 - -83: ; preds = %_ZNSt12_Vector_baseIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_M_allocateEm.exit.i.i.i28 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %80, ptr align 4 %.sroa.048.086, i64 %70, i1 false) - br label %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit16.i.i.i29 - -_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit16.i.i.i29: ; preds = %83, %_ZNSt12_Vector_baseIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_M_allocateEm.exit.i.i.i28 - %84 = getelementptr inbounds i8, ptr %80, i64 %70 - %85 = getelementptr inbounds i8, ptr %84, i64 4 - %.not.i17.i.i.i30 = icmp eq ptr %.sroa.048.086, null - br i1 %.not.i17.i.i.i30, label %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i31, label %86 - -86: ; preds = %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit16.i.i.i29 - call void @_ZdlPv(ptr noundef nonnull %.sroa.048.086) #15 - br label %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i31 - -_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i31: ; preds = %86, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit16.i.i.i29 - %87 = getelementptr inbounds i32, ptr %80, i64 %76 +70: ; preds = %67 + %71 = ptrtoint ptr %.sroa.11.087 to i64 + %72 = ptrtoint ptr %.sroa.049.088 to i64 + %73 = sub i64 %71, %72 + %74 = icmp eq i64 %73, 9223372036854775804 + br i1 %74, label %.invoke, label %_ZNKSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE12_M_check_lenEmPKc.exit.i.i.i26 + +_ZNKSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE12_M_check_lenEmPKc.exit.i.i.i26: ; preds = %70 + %75 = ashr exact i64 %73, 2 + %.sroa.speculated.i.i.i.i27 = call i64 @llvm.umax.i64(i64 %75, i64 1) + %76 = add nsw i64 %.sroa.speculated.i.i.i.i27, %75 + %77 = icmp ult i64 %76, %75 + %78 = call i64 @llvm.umin.i64(i64 %76, i64 2305843009213693951) + %79 = select i1 %77, i64 2305843009213693951, i64 %78 + %.not.i.i.i.i28 = icmp eq i64 %79, 0 + br i1 %.not.i.i.i.i28, label %_ZNSt12_Vector_baseIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_M_allocateEm.exit.i.i.i29, label %80 + +80: ; preds = %_ZNKSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE12_M_check_lenEmPKc.exit.i.i.i26 + %81 = shl nuw nsw i64 %79, 2 + %82 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %81) #17 + to label %_ZNSt12_Vector_baseIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_M_allocateEm.exit.i.i.i29 unwind label %.loopexit + +_ZNSt12_Vector_baseIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_M_allocateEm.exit.i.i.i29: ; preds = %80, %_ZNKSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE12_M_check_lenEmPKc.exit.i.i.i26 + %83 = phi ptr [ null, %_ZNKSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE12_M_check_lenEmPKc.exit.i.i.i26 ], [ %82, %80 ] + %84 = getelementptr inbounds i32, ptr %83, i64 %75 + store i32 0, ptr %84, align 4 + %85 = icmp sgt i64 %73, 0 + br i1 %85, label %86, label %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit16.i.i.i30 + +86: ; preds = %_ZNSt12_Vector_baseIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_M_allocateEm.exit.i.i.i29 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %83, ptr align 4 %.sroa.049.088, i64 %73, i1 false) + br label %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit16.i.i.i30 + +_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit16.i.i.i30: ; preds = %86, %_ZNSt12_Vector_baseIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_M_allocateEm.exit.i.i.i29 + %87 = getelementptr inbounds i8, ptr %83, i64 %73 + %88 = getelementptr inbounds i8, ptr %87, i64 4 + %.not.i17.i.i.i31 = icmp eq ptr %.sroa.049.088, null + br i1 %.not.i17.i.i.i31, label %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i32, label %89 + +89: ; preds = %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit16.i.i.i30 + call void @_ZdlPv(ptr noundef nonnull %.sroa.049.088) #15 + br label %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i32 + +_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i32: ; preds = %89, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit16.i.i.i30 + %90 = getelementptr inbounds i32, ptr %83, i64 %79 br label %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE9push_backEOS3_.exit -_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE9push_backEOS3_.exit: ; preds = %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i31, %65, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i20, %41, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i, %16 - %.sroa.24.4 = phi ptr [ %38, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i ], [ %.sroa.24.084, %16 ], [ %63, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i20 ], [ %.sroa.24.084, %41 ], [ %87, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i31 ], [ %.sroa.24.084, %65 ] - %.sroa.11.4 = phi ptr [ %36, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i ], [ %17, %16 ], [ %61, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i20 ], [ %42, %41 ], [ %85, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i31 ], [ %66, %65 ] - %.sroa.048.4 = phi ptr [ %31, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i ], [ %.sroa.048.086, %16 ], [ %56, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i20 ], [ %.sroa.048.086, %41 ], [ %80, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i31 ], [ %.sroa.048.086, %65 ] - %.not = icmp eq i32 %13, %.01087 +_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE9push_backEOS3_.exit: ; preds = %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i32, %68, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i21, %44, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i, %19 + %.sroa.24.4 = phi ptr [ %41, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i ], [ %.sroa.24.086, %19 ], [ %66, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i21 ], [ %.sroa.24.086, %44 ], [ %90, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i32 ], [ %.sroa.24.086, %68 ] + %.sroa.11.4 = phi ptr [ %39, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i ], [ %20, %19 ], [ %64, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i21 ], [ %45, %44 ], [ %88, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i32 ], [ %69, %68 ] + %.sroa.049.4 = phi ptr [ %34, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i ], [ %.sroa.049.088, %19 ], [ %59, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i21 ], [ %.sroa.049.088, %44 ], [ %83, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i32 ], [ %.sroa.049.088, %68 ] + %.not = icmp eq i32 %16, %.01089 br i1 %.not, label %select.unfold._crit_edge, label %.lr.ph, !llvm.loop !4 -select.unfold._crit_edge: ; preds = %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE9push_backEOS3_.exit, %2, %_ZNK4LIEF12BinaryStream4readIjEEN2tl8expectedIT_11lief_errorsEEv.exit - %.sroa.24.0.lcssa = phi ptr [ null, %_ZNK4LIEF12BinaryStream4readIjEEN2tl8expectedIT_11lief_errorsEEv.exit ], [ null, %2 ], [ %.sroa.24.4, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE9push_backEOS3_.exit ] - %.sroa.11.0.lcssa = phi ptr [ null, %_ZNK4LIEF12BinaryStream4readIjEEN2tl8expectedIT_11lief_errorsEEv.exit ], [ null, %2 ], [ %.sroa.11.4, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE9push_backEOS3_.exit ] - %.sroa.048.0.lcssa = phi ptr [ null, %_ZNK4LIEF12BinaryStream4readIjEEN2tl8expectedIT_11lief_errorsEEv.exit ], [ null, %2 ], [ %.sroa.048.4, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE9push_backEOS3_.exit ] - %88 = invoke noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #17 - to label %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EED2Ev.exit36 unwind label %.loopexit.split-lp - -_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EED2Ev.exit36: ; preds = %select.unfold._crit_edge - %89 = getelementptr inbounds i8, ptr %88, i64 8 - store i32 2, ptr %89, align 8 - store ptr getelementptr inbounds (i8, ptr @_ZTVN4LIEF3ELF14AArch64FeatureE, i64 16), ptr %88, align 8 - %90 = getelementptr inbounds i8, ptr %88, i64 16 - store ptr %.sroa.048.0.lcssa, ptr %90, align 8 - %91 = getelementptr inbounds i8, ptr %88, i64 24 - store ptr %.sroa.11.0.lcssa, ptr %91, align 8 - %92 = getelementptr inbounds i8, ptr %88, i64 32 - store ptr %.sroa.24.0.lcssa, ptr %92, align 8 - store ptr %88, ptr %0, align 8 +select.unfold._crit_edge: ; preds = %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE9push_backEOS3_.exit, %_ZNK4LIEF12BinaryStream4readIjEEN2tl8expectedIT_11lief_errorsEEv.exit + %.sroa.24.0.lcssa = phi ptr [ null, %_ZNK4LIEF12BinaryStream4readIjEEN2tl8expectedIT_11lief_errorsEEv.exit ], [ %.sroa.24.4, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE9push_backEOS3_.exit ] + %.sroa.11.0.lcssa = phi ptr [ null, %_ZNK4LIEF12BinaryStream4readIjEEN2tl8expectedIT_11lief_errorsEEv.exit ], [ %.sroa.11.4, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE9push_backEOS3_.exit ] + %.sroa.049.0.lcssa = phi ptr [ null, %_ZNK4LIEF12BinaryStream4readIjEEN2tl8expectedIT_11lief_errorsEEv.exit ], [ %.sroa.049.4, %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EE9push_backEOS3_.exit ] + %91 = invoke noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #17 + to label %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EED2Ev.exit37 unwind label %.loopexit.split-lp + +_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EED2Ev.exit37: ; preds = %select.unfold._crit_edge + %92 = getelementptr inbounds i8, ptr %91, i64 8 + store i32 2, ptr %92, align 8 + store ptr getelementptr inbounds (i8, ptr @_ZTVN4LIEF3ELF14AArch64FeatureE, i64 16), ptr %91, align 8 + %93 = getelementptr inbounds i8, ptr %91, i64 16 + store ptr %.sroa.049.0.lcssa, ptr %93, align 8 + %94 = getelementptr inbounds i8, ptr %91, i64 24 + store ptr %.sroa.11.0.lcssa, ptr %94, align 8 + %95 = getelementptr inbounds i8, ptr %91, i64 32 + store ptr %.sroa.24.0.lcssa, ptr %95, align 8 + store ptr %91, ptr %0, align 8 ret void -93: ; preds = %39 - call void @_ZdlPv(ptr noundef nonnull %.sroa.048.073) #15 - br label %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EED2Ev.exit40 +96: ; preds = %42 + call void @_ZdlPv(ptr noundef nonnull %.sroa.049.075) #15 + br label %_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EED2Ev.exit41 -_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EED2Ev.exit40: ; preds = %39, %93 +_ZNSt6vectorIN4LIEF3ELF14AArch64Feature7FEATUREESaIS3_EED2Ev.exit41: ; preds = %42, %96 resume { ptr, i32 } %lpad.phi } diff --git a/bench/lief/optimized/ASN1Reader.cpp.ll b/bench/lief/optimized/ASN1Reader.cpp.ll index 12714c6cfbd..cc3fcbb4d8d 100644 --- a/bench/lief/optimized/ASN1Reader.cpp.ll +++ b/bench/lief/optimized/ASN1Reader.cpp.ll @@ -27535,9 +27535,9 @@ _ZN3fmt2v96detail12count_digitsILi3EmEEiT0_.exit: ; preds = %.preheader 349: ; preds = %346 %.not.i208 = icmp eq i32 %2, 0 - %350 = select i1 %.not.i208, i32 48, i32 12288 - %351 = or i32 %350, %2 - %352 = add i32 %351, 16777216 + %350 = or i32 %2, 12288 + %351 = add i32 %350, 16777216 + %352 = select i1 %.not.i208, i32 16777264, i32 %351 br label %_ZN3fmt2v96detail12count_digitsILi3EmEEiT0_.exit._crit_edge _ZN3fmt2v96detail12count_digitsILi3EmEEiT0_.exit._crit_edge: ; preds = %_ZN3fmt2v96detail12count_digitsILi3EmEEiT0_.exit, %349, %346 @@ -30243,9 +30243,9 @@ _ZN3fmt2v96detail12count_digitsILi3EoEEiT0_.exit: ; preds = %.preheader 359: ; preds = %356 %.not.i231 = icmp eq i32 %.sroa.28.0.copyload, 0 - %360 = select i1 %.not.i231, i32 48, i32 12288 - %361 = or i32 %360, %.sroa.28.0.copyload - %362 = add i32 %361, 16777216 + %360 = or i32 %.sroa.28.0.copyload, 12288 + %361 = add i32 %360, 16777216 + %362 = select i1 %.not.i231, i32 16777264, i32 %361 br label %_ZN3fmt2v96detail12count_digitsILi3EoEEiT0_.exit._crit_edge _ZN3fmt2v96detail12count_digitsILi3EoEEiT0_.exit._crit_edge: ; preds = %_ZN3fmt2v96detail12count_digitsILi3EoEEiT0_.exit, %359, %356 diff --git a/bench/lief/optimized/BinaryStream.cpp.ll b/bench/lief/optimized/BinaryStream.cpp.ll index fc8f6eb96dc..9ec077c955c 100644 --- a/bench/lief/optimized/BinaryStream.cpp.ll +++ b/bench/lief/optimized/BinaryStream.cpp.ll @@ -235,9 +235,9 @@ define hidden { i64, i8 } @_ZNK4LIEF12BinaryStream18read_dwarf_encodedEh(ptr nou i8 2, label %28 i8 11, label %39 i8 3, label %39 - i8 12, label %51 - i8 4, label %51 - i8 9, label %63 + i8 12, label %53 + i8 4, label %53 + i8 9, label %65 ] 9: ; preds = %2 @@ -275,9 +275,7 @@ _ZNK4LIEF12BinaryStream4readIhEEN2tl8expectedIT_11lief_errorsEEv.exit.i: ; preds br i1 %26, label %11, label %27, !llvm.loop !4 27: ; preds = %_ZNK4LIEF12BinaryStream4readIhEEN2tl8expectedIT_11lief_errorsEEv.exit.i - %.sroa.028.0.extract.trunc29 = trunc i64 %24 to i32 - %.sroa.15.0.extract.shift34 = lshr i64 %24, 32 - %.sroa.15.0.extract.trunc35 = trunc nuw i64 %.sroa.15.0.extract.shift34 to i32 + %.sroa.15.0.extract.shift36 = and i64 %24, -4294967296 br label %_ZN2tl8expectedIl11lief_errorsEC2ImS1_TnPNSt9enable_ifIXaasr3std14is_convertibleIOT_lEE5valuesr3std14is_convertibleIOT0_S1_EE5valueEvE4typeELPv0ETnPNS4_IXaaaaaaaaaaaaaaaaaasr3std16is_constructibleIlS6_EE5valuesr3std16is_constructibleIS1_S8_EE5valuentsr3std16is_constructibleIlRNS0_IS5_S7_EEEE5valuentsr3std16is_constructibleIlOSD_EE5valuentsr3std16is_constructibleIlRKSD_EE5valuentsr3std16is_constructibleIlOSG_EE5valuentsr3std14is_convertibleISE_lEE5valuentsr3std14is_convertibleISF_lEE5valuentsr3std14is_convertibleISH_lEE5valuentsr3std14is_convertibleISI_lEE5valueEvE4typeELSC_0EEESF_.exit 28: ; preds = %2, %2 @@ -299,9 +297,9 @@ _ZNK4LIEF12BinaryStream4readIhEEN2tl8expectedIT_11lief_errorsEEv.exit.i: ; preds _ZNK4LIEF12BinaryStream4readIsEEN2tl8expectedIT_11lief_errorsEEv.exit: ; preds = %28 %37 = add i64 %30, 2 store i64 %37, ptr %29, align 8 - %.sroa.028.0.extract.trunc30 = sext i16 %36 to i32 - %38 = ashr i16 %36, 15 - %.sroa.15.0.extract.trunc37 = sext i16 %38 to i32 + %.sroa.030.0.extract.trunc32 = sext i16 %36 to i64 + %isneg = icmp slt i16 %36, 0 + %38 = select i1 %isneg, i64 -4294967296, i64 0 br label %_ZN2tl8expectedIl11lief_errorsEC2ImS1_TnPNSt9enable_ifIXaasr3std14is_convertibleIOT_lEE5valuesr3std14is_convertibleIOT0_S1_EE5valueEvE4typeELPv0ETnPNS4_IXaaaaaaaaaaaaaaaaaasr3std16is_constructibleIlS6_EE5valuesr3std16is_constructibleIS1_S8_EE5valuentsr3std16is_constructibleIlRNS0_IS5_S7_EEEE5valuentsr3std16is_constructibleIlOSD_EE5valuentsr3std16is_constructibleIlRKSD_EE5valuentsr3std16is_constructibleIlOSG_EE5valuentsr3std14is_convertibleISE_lEE5valuentsr3std14is_convertibleISF_lEE5valuentsr3std14is_convertibleISH_lEE5valuentsr3std14is_convertibleISI_lEE5valueEvE4typeELSC_0EEESF_.exit 39: ; preds = %2, %2 @@ -313,111 +311,104 @@ _ZNK4LIEF12BinaryStream4readIsEEN2tl8expectedIT_11lief_errorsEEv.exit: ; preds = %43 = getelementptr inbounds i8, ptr %42, i64 96 %44 = load ptr, ptr %43, align 8 %45 = call i64 %44(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull %5, i64 noundef %41, i64 noundef 4) - %46 = load i32, ptr %5, align 4 + %46 = and i64 %45, 4294967296 + %.not.i.i3 = icmp eq i64 %46, 0 + %47 = load i32, ptr %5, align 4 + %48 = zext i32 %47 to i64 + %49 = or disjoint i64 %46, %48 store i64 %41, ptr %40, align 8 + %.sroa.03.0.insert.insert.i.i4 = select i1 %.not.i.i3, i64 1, i64 %49 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) - %47 = and i64 %45, 4294967296 - %.not.i = icmp eq i64 %47, 0 - br i1 %.not.i, label %_ZNK4LIEF12BinaryStream4readIiEEN2tl8expectedIT_11lief_errorsEEv.exit, label %48 - -48: ; preds = %39 - %49 = add i64 %41, 4 - store i64 %49, ptr %40, align 8 - br label %_ZNK4LIEF12BinaryStream4readIiEEN2tl8expectedIT_11lief_errorsEEv.exit - -_ZNK4LIEF12BinaryStream4readIiEEN2tl8expectedIT_11lief_errorsEEv.exit: ; preds = %39, %48 - %.sroa.016.0.extract.trunc = phi i32 [ 1, %39 ], [ %46, %48 ] - %50 = ashr i32 %.sroa.016.0.extract.trunc, 31 - %spec.select = select i1 %.not.i, i32 0, i32 %50 - %.lobit = lshr exact i64 %47, 32 - %spec.select81 = trunc nuw nsw i64 %.lobit to i8 + %.not.i = icmp ult i64 %.sroa.03.0.insert.insert.i.i4, 4294967296 + br i1 %.not.i, label %_ZN2tl8expectedIl11lief_errorsEC2ImS1_TnPNSt9enable_ifIXaasr3std14is_convertibleIOT_lEE5valuesr3std14is_convertibleIOT0_S1_EE5valueEvE4typeELPv0ETnPNS4_IXaaaaaaaaaaaaaaaaaasr3std16is_constructibleIlS6_EE5valuesr3std16is_constructibleIS1_S8_EE5valuentsr3std16is_constructibleIlRNS0_IS5_S7_EEEE5valuentsr3std16is_constructibleIlOSD_EE5valuentsr3std16is_constructibleIlRKSD_EE5valuentsr3std16is_constructibleIlOSG_EE5valuentsr3std14is_convertibleISE_lEE5valuentsr3std14is_convertibleISF_lEE5valuentsr3std14is_convertibleISH_lEE5valuentsr3std14is_convertibleISI_lEE5valueEvE4typeELSC_0EEESF_.exit, label %50 + +50: ; preds = %39 + %51 = add i64 %41, 4 + store i64 %51, ptr %40, align 8 + %sext = shl i64 %.sroa.03.0.insert.insert.i.i4, 32 + %52 = ashr exact i64 %sext, 32 + %.sroa.15.0.extract.shift40 = and i64 %52, -4294967296 br label %_ZN2tl8expectedIl11lief_errorsEC2ImS1_TnPNSt9enable_ifIXaasr3std14is_convertibleIOT_lEE5valuesr3std14is_convertibleIOT0_S1_EE5valueEvE4typeELPv0ETnPNS4_IXaaaaaaaaaaaaaaaaaasr3std16is_constructibleIlS6_EE5valuesr3std16is_constructibleIS1_S8_EE5valuentsr3std16is_constructibleIlRNS0_IS5_S7_EEEE5valuentsr3std16is_constructibleIlOSD_EE5valuentsr3std16is_constructibleIlRKSD_EE5valuentsr3std16is_constructibleIlOSG_EE5valuentsr3std14is_convertibleISE_lEE5valuentsr3std14is_convertibleISF_lEE5valuentsr3std14is_convertibleISH_lEE5valuentsr3std14is_convertibleISI_lEE5valueEvE4typeELSC_0EEESF_.exit -51: ; preds = %2, %2 +53: ; preds = %2, %2 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) - %52 = getelementptr inbounds i8, ptr %0, i64 8 - %53 = load i64, ptr %52, align 8 + %54 = getelementptr inbounds i8, ptr %0, i64 8 + %55 = load i64, ptr %54, align 8 store i64 0, ptr %4, align 8 - %54 = load ptr, ptr %0, align 8 - %55 = getelementptr inbounds i8, ptr %54, i64 96 - %56 = load ptr, ptr %55, align 8 - %57 = call i64 %56(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull %4, i64 noundef %53, i64 noundef 8) - %58 = and i64 %57, 4294967296 - %59 = load i64, ptr %4, align 8 - %.lobit.i.i = lshr exact i64 %58, 32 - store i64 %53, ptr %52, align 8 + %56 = load ptr, ptr %0, align 8 + %57 = getelementptr inbounds i8, ptr %56, i64 96 + %58 = load ptr, ptr %57, align 8 + %59 = call i64 %58(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull %4, i64 noundef %55, i64 noundef 8) + %60 = and i64 %59, 4294967296 + %61 = load i64, ptr %4, align 8 + %.lobit.i.i = lshr exact i64 %60, 32 + store i64 %55, ptr %54, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) - %60 = trunc nuw i64 %.lobit.i.i to i1 - br i1 %60, label %61, label %_ZNK4LIEF12BinaryStream4readIlEEN2tl8expectedIT_11lief_errorsEEv.exit + %62 = trunc nuw i64 %.lobit.i.i to i1 + br i1 %62, label %63, label %_ZNK4LIEF12BinaryStream4readIlEEN2tl8expectedIT_11lief_errorsEEv.exit -61: ; preds = %51 - %62 = add i64 %53, 8 - store i64 %62, ptr %52, align 8 +63: ; preds = %53 + %64 = add i64 %55, 8 + store i64 %64, ptr %54, align 8 br label %_ZNK4LIEF12BinaryStream4readIlEEN2tl8expectedIT_11lief_errorsEEv.exit -_ZNK4LIEF12BinaryStream4readIlEEN2tl8expectedIT_11lief_errorsEEv.exit: ; preds = %51, %61 +_ZNK4LIEF12BinaryStream4readIlEEN2tl8expectedIT_11lief_errorsEEv.exit: ; preds = %53, %63 %spec.select.i.i = trunc nuw nsw i64 %.lobit.i.i to i8 - %.not.not.i.i = icmp eq i64 %58, 0 - %spec.select5.i.i = select i1 %.not.not.i.i, i64 1, i64 %59 - %.sroa.028.0.extract.trunc = trunc i64 %spec.select5.i.i to i32 - %.sroa.15.0.extract.shift = lshr i64 %spec.select5.i.i, 32 - %.sroa.15.0.extract.trunc = trunc nuw i64 %.sroa.15.0.extract.shift to i32 + %.not.not.i.i = icmp eq i64 %60, 0 + %spec.select5.i.i = select i1 %.not.not.i.i, i64 1, i64 %61 + %.sroa.15.0.extract.shift = and i64 %spec.select5.i.i, -4294967296 br label %_ZN2tl8expectedIl11lief_errorsEC2ImS1_TnPNSt9enable_ifIXaasr3std14is_convertibleIOT_lEE5valuesr3std14is_convertibleIOT0_S1_EE5valueEvE4typeELPv0ETnPNS4_IXaaaaaaaaaaaaaaaaaasr3std16is_constructibleIlS6_EE5valuesr3std16is_constructibleIS1_S8_EE5valuentsr3std16is_constructibleIlRNS0_IS5_S7_EEEE5valuentsr3std16is_constructibleIlOSD_EE5valuentsr3std16is_constructibleIlRKSD_EE5valuentsr3std16is_constructibleIlOSG_EE5valuentsr3std14is_convertibleISE_lEE5valuentsr3std14is_convertibleISF_lEE5valuentsr3std14is_convertibleISH_lEE5valuentsr3std14is_convertibleISI_lEE5valueEvE4typeELSC_0EEESF_.exit -63: ; preds = %2 - %64 = getelementptr inbounds i8, ptr %0, i64 8 - %.pre.i4 = load i64, ptr %64, align 8 - br label %65 +65: ; preds = %2 + %66 = getelementptr inbounds i8, ptr %0, i64 8 + %.pre.i6 = load i64, ptr %66, align 8 + br label %67 -65: ; preds = %_ZNK4LIEF12BinaryStream4readIhEEN2tl8expectedIT_11lief_errorsEEv.exit.i7, %63 - %66 = phi i64 [ %.pre.i4, %63 ], [ %73, %_ZNK4LIEF12BinaryStream4readIhEEN2tl8expectedIT_11lief_errorsEEv.exit.i7 ] - %.013.i = phi i64 [ 0, %63 ], [ %78, %_ZNK4LIEF12BinaryStream4readIhEEN2tl8expectedIT_11lief_errorsEEv.exit.i7 ] - %.0.i5 = phi i32 [ 0, %63 ], [ %79, %_ZNK4LIEF12BinaryStream4readIhEEN2tl8expectedIT_11lief_errorsEEv.exit.i7 ] +67: ; preds = %_ZNK4LIEF12BinaryStream4readIhEEN2tl8expectedIT_11lief_errorsEEv.exit.i9, %65 + %68 = phi i64 [ %.pre.i6, %65 ], [ %75, %_ZNK4LIEF12BinaryStream4readIhEEN2tl8expectedIT_11lief_errorsEEv.exit.i9 ] + %.013.i = phi i64 [ 0, %65 ], [ %80, %_ZNK4LIEF12BinaryStream4readIhEEN2tl8expectedIT_11lief_errorsEEv.exit.i9 ] + %.0.i7 = phi i32 [ 0, %65 ], [ %81, %_ZNK4LIEF12BinaryStream4readIhEEN2tl8expectedIT_11lief_errorsEEv.exit.i9 ] call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %3) store i8 0, ptr %3, align 1 - %67 = load ptr, ptr %0, align 8 - %68 = getelementptr inbounds i8, ptr %67, i64 96 - %69 = load ptr, ptr %68, align 8 - %70 = call i64 %69(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull %3, i64 noundef %66, i64 noundef 1) - %71 = and i64 %70, 4294967296 - %.not.i.i.i6 = icmp eq i64 %71, 0 - %72 = load i8, ptr %3, align 1 - store i64 %66, ptr %64, align 8 + %69 = load ptr, ptr %0, align 8 + %70 = getelementptr inbounds i8, ptr %69, i64 96 + %71 = load ptr, ptr %70, align 8 + %72 = call i64 %71(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull %3, i64 noundef %68, i64 noundef 1) + %73 = and i64 %72, 4294967296 + %.not.i.i.i8 = icmp eq i64 %73, 0 + %74 = load i8, ptr %3, align 1 + store i64 %68, ptr %66, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %3) - br i1 %.not.i.i.i6, label %_ZN2tl8expectedIl11lief_errorsEC2ImS1_TnPNSt9enable_ifIXaasr3std14is_convertibleIOT_lEE5valuesr3std14is_convertibleIOT0_S1_EE5valueEvE4typeELPv0ETnPNS4_IXaaaaaaaaaaaaaaaaaasr3std16is_constructibleIlS6_EE5valuesr3std16is_constructibleIS1_S8_EE5valuentsr3std16is_constructibleIlRNS0_IS5_S7_EEEE5valuentsr3std16is_constructibleIlOSD_EE5valuentsr3std16is_constructibleIlRKSD_EE5valuentsr3std16is_constructibleIlOSG_EE5valuentsr3std14is_convertibleISE_lEE5valuentsr3std14is_convertibleISF_lEE5valuentsr3std14is_convertibleISH_lEE5valuentsr3std14is_convertibleISI_lEE5valueEvE4typeELSC_0EEESF_.exit, label %_ZNK4LIEF12BinaryStream4readIhEEN2tl8expectedIT_11lief_errorsEEv.exit.i7 - -_ZNK4LIEF12BinaryStream4readIhEEN2tl8expectedIT_11lief_errorsEEv.exit.i7: ; preds = %65 - %73 = add i64 %66, 1 - store i64 %73, ptr %64, align 8 - %74 = and i8 %72, 127 - %75 = zext nneg i8 %74 to i64 - %76 = zext nneg i32 %.0.i5 to i64 - %77 = shl i64 %75, %76 - %78 = add nsw i64 %77, %.013.i - %79 = add i32 %.0.i5, 7 - %80 = icmp slt i8 %72, 0 - br i1 %80, label %65, label %81, !llvm.loop !6 - -81: ; preds = %_ZNK4LIEF12BinaryStream4readIhEEN2tl8expectedIT_11lief_errorsEEv.exit.i7 - %.not.i8 = icmp ult i8 %72, 64 - %82 = zext nneg i32 %79 to i64 - %83 = shl nsw i64 -1, %82 - %84 = select i1 %.not.i8, i64 0, i64 %83 - %.1.i = or i64 %78, %84 - %.sroa.028.0.extract.trunc32 = trunc i64 %.1.i to i32 - %.sroa.15.0.extract.shift40 = lshr i64 %.1.i, 32 - %.sroa.15.0.extract.trunc41 = trunc nuw i64 %.sroa.15.0.extract.shift40 to i32 + br i1 %.not.i.i.i8, label %_ZN2tl8expectedIl11lief_errorsEC2ImS1_TnPNSt9enable_ifIXaasr3std14is_convertibleIOT_lEE5valuesr3std14is_convertibleIOT0_S1_EE5valueEvE4typeELPv0ETnPNS4_IXaaaaaaaaaaaaaaaaaasr3std16is_constructibleIlS6_EE5valuesr3std16is_constructibleIS1_S8_EE5valuentsr3std16is_constructibleIlRNS0_IS5_S7_EEEE5valuentsr3std16is_constructibleIlOSD_EE5valuentsr3std16is_constructibleIlRKSD_EE5valuentsr3std16is_constructibleIlOSG_EE5valuentsr3std14is_convertibleISE_lEE5valuentsr3std14is_convertibleISF_lEE5valuentsr3std14is_convertibleISH_lEE5valuentsr3std14is_convertibleISI_lEE5valueEvE4typeELSC_0EEESF_.exit, label %_ZNK4LIEF12BinaryStream4readIhEEN2tl8expectedIT_11lief_errorsEEv.exit.i9 + +_ZNK4LIEF12BinaryStream4readIhEEN2tl8expectedIT_11lief_errorsEEv.exit.i9: ; preds = %67 + %75 = add i64 %68, 1 + store i64 %75, ptr %66, align 8 + %76 = and i8 %74, 127 + %77 = zext nneg i8 %76 to i64 + %78 = zext nneg i32 %.0.i7 to i64 + %79 = shl i64 %77, %78 + %80 = add nsw i64 %79, %.013.i + %81 = add i32 %.0.i7, 7 + %82 = icmp slt i8 %74, 0 + br i1 %82, label %67, label %83, !llvm.loop !6 + +83: ; preds = %_ZNK4LIEF12BinaryStream4readIhEEN2tl8expectedIT_11lief_errorsEEv.exit.i9 + %.not.i10 = icmp ult i8 %74, 64 + %84 = zext nneg i32 %81 to i64 + %85 = shl nsw i64 -1, %84 + %86 = select i1 %.not.i10, i64 0, i64 %85 + %.1.i = or i64 %80, %86 + %.sroa.15.0.extract.shift42 = and i64 %.1.i, -4294967296 br label %_ZN2tl8expectedIl11lief_errorsEC2ImS1_TnPNSt9enable_ifIXaasr3std14is_convertibleIOT_lEE5valuesr3std14is_convertibleIOT0_S1_EE5valueEvE4typeELPv0ETnPNS4_IXaaaaaaaaaaaaaaaaaasr3std16is_constructibleIlS6_EE5valuesr3std16is_constructibleIS1_S8_EE5valuentsr3std16is_constructibleIlRNS0_IS5_S7_EEEE5valuentsr3std16is_constructibleIlOSD_EE5valuentsr3std16is_constructibleIlRKSD_EE5valuentsr3std16is_constructibleIlOSG_EE5valuentsr3std14is_convertibleISE_lEE5valuentsr3std14is_convertibleISF_lEE5valuentsr3std14is_convertibleISH_lEE5valuentsr3std14is_convertibleISI_lEE5valueEvE4typeELSC_0EEESF_.exit -_ZN2tl8expectedIl11lief_errorsEC2ImS1_TnPNSt9enable_ifIXaasr3std14is_convertibleIOT_lEE5valuesr3std14is_convertibleIOT0_S1_EE5valueEvE4typeELPv0ETnPNS4_IXaaaaaaaaaaaaaaaaaasr3std16is_constructibleIlS6_EE5valuesr3std16is_constructibleIS1_S8_EE5valuentsr3std16is_constructibleIlRNS0_IS5_S7_EEEE5valuentsr3std16is_constructibleIlOSD_EE5valuentsr3std16is_constructibleIlRKSD_EE5valuentsr3std16is_constructibleIlOSG_EE5valuentsr3std14is_convertibleISE_lEE5valuentsr3std14is_convertibleISF_lEE5valuentsr3std14is_convertibleISH_lEE5valuentsr3std14is_convertibleISI_lEE5valueEvE4typeELSC_0EEESF_.exit: ; preds = %65, %11, %_ZNK4LIEF12BinaryStream4readIiEEN2tl8expectedIT_11lief_errorsEEv.exit, %28, %2, %81, %_ZNK4LIEF12BinaryStream4readIsEEN2tl8expectedIT_11lief_errorsEEv.exit, %27, %_ZNK4LIEF12BinaryStream4readIlEEN2tl8expectedIT_11lief_errorsEEv.exit - %.sroa.028.4 = phi i32 [ %.sroa.028.0.extract.trunc, %_ZNK4LIEF12BinaryStream4readIlEEN2tl8expectedIT_11lief_errorsEEv.exit ], [ %.sroa.028.0.extract.trunc29, %27 ], [ %.sroa.028.0.extract.trunc30, %_ZNK4LIEF12BinaryStream4readIsEEN2tl8expectedIT_11lief_errorsEEv.exit ], [ %.sroa.028.0.extract.trunc32, %81 ], [ 0, %2 ], [ 1, %28 ], [ %.sroa.016.0.extract.trunc, %_ZNK4LIEF12BinaryStream4readIiEEN2tl8expectedIT_11lief_errorsEEv.exit ], [ 1, %11 ], [ 1, %65 ] - %.sroa.15.sroa.0.4 = phi i32 [ %.sroa.15.0.extract.trunc, %_ZNK4LIEF12BinaryStream4readIlEEN2tl8expectedIT_11lief_errorsEEv.exit ], [ %.sroa.15.0.extract.trunc35, %27 ], [ %.sroa.15.0.extract.trunc37, %_ZNK4LIEF12BinaryStream4readIsEEN2tl8expectedIT_11lief_errorsEEv.exit ], [ %.sroa.15.0.extract.trunc41, %81 ], [ 0, %2 ], [ 0, %28 ], [ %spec.select, %_ZNK4LIEF12BinaryStream4readIiEEN2tl8expectedIT_11lief_errorsEEv.exit ], [ 0, %11 ], [ 0, %65 ] - %.sroa.15.sroa.11.0 = phi i8 [ %spec.select.i.i, %_ZNK4LIEF12BinaryStream4readIlEEN2tl8expectedIT_11lief_errorsEEv.exit ], [ 1, %27 ], [ 1, %_ZNK4LIEF12BinaryStream4readIsEEN2tl8expectedIT_11lief_errorsEEv.exit ], [ 1, %81 ], [ 1, %2 ], [ 0, %28 ], [ %spec.select81, %_ZNK4LIEF12BinaryStream4readIiEEN2tl8expectedIT_11lief_errorsEEv.exit ], [ 0, %11 ], [ 0, %65 ] - %.sroa.15.0.insert.ext = zext i32 %.sroa.15.sroa.0.4 to i64 - %.sroa.15.0.insert.shift = shl nuw i64 %.sroa.15.0.insert.ext, 32 - %.sroa.028.0.insert.ext = zext i32 %.sroa.028.4 to i64 - %.sroa.028.0.insert.insert = or disjoint i64 %.sroa.15.0.insert.shift, %.sroa.028.0.insert.ext - %.fca.0.insert = insertvalue { i64, i8 } poison, i64 %.sroa.028.0.insert.insert, 0 +_ZN2tl8expectedIl11lief_errorsEC2ImS1_TnPNSt9enable_ifIXaasr3std14is_convertibleIOT_lEE5valuesr3std14is_convertibleIOT0_S1_EE5valueEvE4typeELPv0ETnPNS4_IXaaaaaaaaaaaaaaaaaasr3std16is_constructibleIlS6_EE5valuesr3std16is_constructibleIS1_S8_EE5valuentsr3std16is_constructibleIlRNS0_IS5_S7_EEEE5valuentsr3std16is_constructibleIlOSD_EE5valuentsr3std16is_constructibleIlRKSD_EE5valuentsr3std16is_constructibleIlOSG_EE5valuentsr3std14is_convertibleISE_lEE5valuentsr3std14is_convertibleISF_lEE5valuentsr3std14is_convertibleISH_lEE5valuentsr3std14is_convertibleISI_lEE5valueEvE4typeELSC_0EEESF_.exit: ; preds = %67, %11, %39, %28, %2, %83, %50, %_ZNK4LIEF12BinaryStream4readIsEEN2tl8expectedIT_11lief_errorsEEv.exit, %27, %_ZNK4LIEF12BinaryStream4readIlEEN2tl8expectedIT_11lief_errorsEEv.exit + %.sroa.030.4 = phi i64 [ %spec.select5.i.i, %_ZNK4LIEF12BinaryStream4readIlEEN2tl8expectedIT_11lief_errorsEEv.exit ], [ %24, %27 ], [ %.sroa.030.0.extract.trunc32, %_ZNK4LIEF12BinaryStream4readIsEEN2tl8expectedIT_11lief_errorsEEv.exit ], [ %49, %50 ], [ %.1.i, %83 ], [ 0, %2 ], [ 1, %28 ], [ %.sroa.03.0.insert.insert.i.i4, %39 ], [ 1, %11 ], [ 1, %67 ] + %.sroa.15.sroa.0.4 = phi i64 [ %.sroa.15.0.extract.shift, %_ZNK4LIEF12BinaryStream4readIlEEN2tl8expectedIT_11lief_errorsEEv.exit ], [ %.sroa.15.0.extract.shift36, %27 ], [ %38, %_ZNK4LIEF12BinaryStream4readIsEEN2tl8expectedIT_11lief_errorsEEv.exit ], [ %.sroa.15.0.extract.shift40, %50 ], [ %.sroa.15.0.extract.shift42, %83 ], [ 0, %2 ], [ 0, %28 ], [ 0, %39 ], [ 0, %11 ], [ 0, %67 ] + %.sroa.15.sroa.11.0 = phi i8 [ %spec.select.i.i, %_ZNK4LIEF12BinaryStream4readIlEEN2tl8expectedIT_11lief_errorsEEv.exit ], [ 1, %27 ], [ 1, %_ZNK4LIEF12BinaryStream4readIsEEN2tl8expectedIT_11lief_errorsEEv.exit ], [ 1, %50 ], [ 1, %83 ], [ 1, %2 ], [ 0, %28 ], [ 0, %39 ], [ 0, %11 ], [ 0, %67 ] + %.sroa.030.0.insert.ext = and i64 %.sroa.030.4, 4294967295 + %.sroa.030.0.insert.insert = or disjoint i64 %.sroa.15.sroa.0.4, %.sroa.030.0.insert.ext + %.fca.0.insert = insertvalue { i64, i8 } poison, i64 %.sroa.030.0.insert.insert, 0 %.fca.1.insert = insertvalue { i64, i8 } %.fca.0.insert, i8 %.sroa.15.sroa.11.0, 1 ret { i64, i8 } %.fca.1.insert } diff --git a/bench/lief/optimized/CodeViewPDB.cpp.ll b/bench/lief/optimized/CodeViewPDB.cpp.ll index 2328eeced9a..085e959fe38 100644 --- a/bench/lief/optimized/CodeViewPDB.cpp.ll +++ b/bench/lief/optimized/CodeViewPDB.cpp.ll @@ -772,14 +772,14 @@ define void @_ZNK4LIEF2PE11CodeViewPDB4guidB5cxx11Ev(ptr dead_on_unwind noalias invoke void @_ZN4LIEF10SpanStreamC1EOS0_(ptr noundef nonnull align 8 dereferenceable(40) %11, ptr noundef nonnull align 8 dereferenceable(40) %9) to label %_ZN4LIEF10SpanStream10from_arrayILm16EEEN2tl8expectedIS0_11lief_errorsEERKSt5arrayIhXT_EE.exit unwind label %17 -common.resume.sink.split: ; preds = %134, %17 - %.sink = phi ptr [ %9, %17 ], [ %11, %134 ] - %common.resume.op.ph = phi { ptr, i32 } [ %18, %17 ], [ %.pn, %134 ] +common.resume.sink.split: ; preds = %136, %17 + %.sink = phi ptr [ %9, %17 ], [ %11, %136 ] + %common.resume.op.ph = phi { ptr, i32 } [ %18, %17 ], [ %.pn, %136 ] call void @_ZN4LIEF10SpanStreamD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %.sink) #19 br label %common.resume -common.resume: ; preds = %common.resume.sink.split, %134 - %common.resume.op = phi { ptr, i32 } [ %.pn, %134 ], [ %common.resume.op.ph, %common.resume.sink.split ] +common.resume: ; preds = %common.resume.sink.split, %136 + %common.resume.op = phi { ptr, i32 } [ %.pn, %136 ], [ %common.resume.op.ph, %common.resume.sink.split ] resume { ptr, i32 } %common.resume.op 17: ; preds = %2 @@ -817,7 +817,7 @@ _ZN4LIEF10SpanStream10from_arrayILm16EEEN2tl8expectedIS0_11lief_errorsEERKSt5arr _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit: ; preds = %.noexc29 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #19 - br label %130 + br label %132 26: ; preds = %.noexc, %22 %27 = landingpad { ptr, i32 } @@ -827,306 +827,309 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit: ; pr .body: ; preds = %24, %26 %eh.lpad-body = phi { ptr, i32 } [ %27, %26 ], [ %25, %24 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #19 - br label %134 + br label %136 28: ; preds = %_ZN4LIEF10SpanStream10from_arrayILm16EEEN2tl8expectedIS0_11lief_errorsEERKSt5arrayIhXT_EE.exit invoke void @_ZN4LIEF12BinaryStream15set_endian_swapEb(ptr noundef nonnull align 8 dereferenceable(24) %11, i1 noundef zeroext true) - to label %29 unwind label %128 + to label %29 unwind label %130 29: ; preds = %28 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) %30 = invoke noundef i64 @_ZNK4LIEF12BinaryStream3posEv(ptr noundef nonnull align 8 dereferenceable(24) %11) - to label %.noexc30 unwind label %128 + to label %.noexc30 unwind label %130 .noexc30: ; preds = %29 store i32 0, ptr %8, align 4 %31 = invoke noundef i64 @_ZNK4LIEF12BinaryStream3posEv(ptr noundef nonnull align 8 dereferenceable(24) %11) - to label %.noexc31 unwind label %128 + to label %.noexc31 unwind label %130 .noexc31: ; preds = %.noexc30 %32 = load ptr, ptr %11, align 8 %33 = getelementptr inbounds i8, ptr %32, i64 96 %34 = load ptr, ptr %33, align 8 %35 = invoke i64 %34(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull %8, i64 noundef %31, i64 noundef 4) - to label %.noexc32 unwind label %128 + to label %.noexc32 unwind label %130 .noexc32: ; preds = %.noexc31 invoke void @_ZNK4LIEF12BinaryStream6setposEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %30) - to label %.noexc33 unwind label %128 + to label %.noexc33 unwind label %130 .noexc33: ; preds = %.noexc32 - %36 = load i32, ptr %8, align 4 + %36 = and i64 %35, 4294967296 + %.not.i.i = icmp eq i64 %36, 0 + %37 = load i32, ptr %8, align 4 + %38 = zext i32 %37 to i64 + %39 = or disjoint i64 %36, %38 + %.sroa.03.0.insert.insert.i.i = select i1 %.not.i.i, i64 1, i64 %39 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) - %37 = and i64 %35, 4294967296 - %.not.i = icmp eq i64 %37, 0 - br i1 %.not.i, label %39, label %38 + %.not.i = icmp ult i64 %.sroa.03.0.insert.insert.i.i, 4294967296 + br i1 %.not.i, label %41, label %40 -38: ; preds = %.noexc33 +40: ; preds = %.noexc33 invoke void @_ZNK4LIEF12BinaryStream13increment_posEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef 4) - to label %39 unwind label %128 + to label %41 unwind label %130 -39: ; preds = %.noexc33, %38 - %.sroa.0107.0.extract.trunc = phi i32 [ 1, %.noexc33 ], [ %36, %38 ] - %40 = zext i32 %.sroa.0107.0.extract.trunc to i64 +41: ; preds = %.noexc33, %40 + %42 = call i64 @llvm.umax.i64(i64 %.sroa.03.0.insert.insert.i.i, i64 4294967296) call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %7) - %41 = invoke noundef i64 @_ZNK4LIEF12BinaryStream3posEv(ptr noundef nonnull align 8 dereferenceable(24) %11) - to label %.noexc35 unwind label %128 + %43 = invoke noundef i64 @_ZNK4LIEF12BinaryStream3posEv(ptr noundef nonnull align 8 dereferenceable(24) %11) + to label %.noexc37 unwind label %130 -.noexc35: ; preds = %39 +.noexc37: ; preds = %41 store i16 0, ptr %7, align 2 - %42 = invoke noundef i64 @_ZNK4LIEF12BinaryStream3posEv(ptr noundef nonnull align 8 dereferenceable(24) %11) - to label %.noexc36 unwind label %128 + %44 = invoke noundef i64 @_ZNK4LIEF12BinaryStream3posEv(ptr noundef nonnull align 8 dereferenceable(24) %11) + to label %.noexc38 unwind label %130 -.noexc36: ; preds = %.noexc35 - %43 = load ptr, ptr %11, align 8 - %44 = getelementptr inbounds i8, ptr %43, i64 96 - %45 = load ptr, ptr %44, align 8 - %46 = invoke i64 %45(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull %7, i64 noundef %42, i64 noundef 2) - to label %.noexc37 unwind label %128 +.noexc38: ; preds = %.noexc37 + %45 = load ptr, ptr %11, align 8 + %46 = getelementptr inbounds i8, ptr %45, i64 96 + %47 = load ptr, ptr %46, align 8 + %48 = invoke i64 %47(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull %7, i64 noundef %44, i64 noundef 2) + to label %.noexc39 unwind label %130 -.noexc37: ; preds = %.noexc36 - invoke void @_ZNK4LIEF12BinaryStream6setposEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %41) - to label %.noexc38 unwind label %128 +.noexc39: ; preds = %.noexc38 + invoke void @_ZNK4LIEF12BinaryStream6setposEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %43) + to label %.noexc40 unwind label %130 -.noexc38: ; preds = %.noexc37 - %47 = and i64 %46, 4294967296 - %.not.i.i = icmp eq i64 %47, 0 - %48 = load i16, ptr %7, align 2 +.noexc40: ; preds = %.noexc39 + %49 = and i64 %48, 4294967296 + %.not.i.i35 = icmp eq i64 %49, 0 + %50 = load i16, ptr %7, align 2 call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %7) - br i1 %.not.i.i, label %52, label %49 + br i1 %.not.i.i35, label %54, label %51 -49: ; preds = %.noexc38 - %50 = zext i16 %48 to i64 - %51 = or disjoint i64 %50, 4294967296 +51: ; preds = %.noexc40 + %52 = zext i16 %50 to i64 + %53 = or disjoint i64 %52, 4294967296 invoke void @_ZNK4LIEF12BinaryStream13increment_posEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef 2) - to label %52 unwind label %128 + to label %54 unwind label %130 -52: ; preds = %.noexc38, %49 - %.sroa.03.0.insert.insert.i.i = phi i64 [ 1, %.noexc38 ], [ %51, %49 ] - %53 = and i64 %.sroa.03.0.insert.insert.i.i, 4294967296 - %.not113 = icmp eq i64 %53, 0 - %54 = and i64 %.sroa.03.0.insert.insert.i.i, 65535 +54: ; preds = %.noexc40, %51 + %.sroa.03.0.insert.insert.i.i36 = phi i64 [ 1, %.noexc40 ], [ %53, %51 ] + %55 = and i64 %.sroa.03.0.insert.insert.i.i36, 4294967296 + %.not = icmp eq i64 %55, 0 + %56 = and i64 %.sroa.03.0.insert.insert.i.i36, 65535 call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %6) - %55 = invoke noundef i64 @_ZNK4LIEF12BinaryStream3posEv(ptr noundef nonnull align 8 dereferenceable(24) %11) - to label %.noexc42 unwind label %128 + %57 = invoke noundef i64 @_ZNK4LIEF12BinaryStream3posEv(ptr noundef nonnull align 8 dereferenceable(24) %11) + to label %.noexc44 unwind label %130 -.noexc42: ; preds = %52 +.noexc44: ; preds = %54 store i16 0, ptr %6, align 2 - %56 = invoke noundef i64 @_ZNK4LIEF12BinaryStream3posEv(ptr noundef nonnull align 8 dereferenceable(24) %11) - to label %.noexc43 unwind label %128 + %58 = invoke noundef i64 @_ZNK4LIEF12BinaryStream3posEv(ptr noundef nonnull align 8 dereferenceable(24) %11) + to label %.noexc45 unwind label %130 -.noexc43: ; preds = %.noexc42 - %57 = load ptr, ptr %11, align 8 - %58 = getelementptr inbounds i8, ptr %57, i64 96 - %59 = load ptr, ptr %58, align 8 - %60 = invoke i64 %59(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull %6, i64 noundef %56, i64 noundef 2) - to label %.noexc44 unwind label %128 +.noexc45: ; preds = %.noexc44 + %59 = load ptr, ptr %11, align 8 + %60 = getelementptr inbounds i8, ptr %59, i64 96 + %61 = load ptr, ptr %60, align 8 + %62 = invoke i64 %61(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull %6, i64 noundef %58, i64 noundef 2) + to label %.noexc46 unwind label %130 -.noexc44: ; preds = %.noexc43 - invoke void @_ZNK4LIEF12BinaryStream6setposEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %55) - to label %.noexc45 unwind label %128 +.noexc46: ; preds = %.noexc45 + invoke void @_ZNK4LIEF12BinaryStream6setposEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %57) + to label %.noexc47 unwind label %130 -.noexc45: ; preds = %.noexc44 - %61 = and i64 %60, 4294967296 - %.not.i.i40 = icmp eq i64 %61, 0 - %62 = load i16, ptr %6, align 2 +.noexc47: ; preds = %.noexc46 + %63 = and i64 %62, 4294967296 + %.not.i.i42 = icmp eq i64 %63, 0 + %64 = load i16, ptr %6, align 2 call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %6) - br i1 %.not.i.i40, label %66, label %63 + br i1 %.not.i.i42, label %68, label %65 -63: ; preds = %.noexc45 - %64 = zext i16 %62 to i64 - %65 = or disjoint i64 %64, 4294967296 +65: ; preds = %.noexc47 + %66 = zext i16 %64 to i64 + %67 = or disjoint i64 %66, 4294967296 invoke void @_ZNK4LIEF12BinaryStream13increment_posEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef 2) - to label %66 unwind label %128 + to label %68 unwind label %130 -66: ; preds = %.noexc45, %63 - %.sroa.03.0.insert.insert.i.i41 = phi i64 [ 1, %.noexc45 ], [ %65, %63 ] - %67 = and i64 %.sroa.03.0.insert.insert.i.i41, 4294967296 - %.not114 = icmp eq i64 %67, 0 - %68 = and i64 %.sroa.03.0.insert.insert.i.i41, 65535 +68: ; preds = %.noexc47, %65 + %.sroa.03.0.insert.insert.i.i43 = phi i64 [ 1, %.noexc47 ], [ %67, %65 ] + %69 = and i64 %.sroa.03.0.insert.insert.i.i43, 4294967296 + %.not113 = icmp eq i64 %69, 0 + %70 = and i64 %.sroa.03.0.insert.insert.i.i43, 65535 call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %5) - %69 = invoke noundef i64 @_ZNK4LIEF12BinaryStream3posEv(ptr noundef nonnull align 8 dereferenceable(24) %11) - to label %.noexc50 unwind label %128 - -.noexc50: ; preds = %66 - %70 = load ptr, ptr %11, align 8 - %71 = getelementptr inbounds i8, ptr %70, i64 96 - %72 = load ptr, ptr %71, align 8 - %73 = invoke i64 %72(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull %5, i64 noundef %69, i64 noundef 2) - to label %.noexc51 unwind label %128 - -.noexc51: ; preds = %.noexc50 - %74 = and i64 %73, 4294967296 - %.not.i.i48 = icmp eq i64 %74, 0 - br i1 %.not.i.i48, label %_ZNK4LIEF12BinaryStream9peek_convItEENSt9enable_ifIXsr3std11is_integralIT_EE5valueEN2tl8expectedIS3_11lief_errorsEEE4typeEv.exit.i, label %75 - -75: ; preds = %.noexc51 - %76 = getelementptr inbounds i8, ptr %11, i64 16 - %77 = load i8, ptr %76, align 8 - %78 = trunc i8 %77 to i1 - %79 = load i16, ptr %5, align 2 - br i1 %78, label %80, label %.noexc52 - -80: ; preds = %75 - %81 = invoke noundef zeroext i16 @_ZN4LIEF12BinaryStream11swap_endianItEET_S2_(i16 noundef zeroext %79) - to label %.noexc52 unwind label %128 - -_ZNK4LIEF12BinaryStream9peek_convItEENSt9enable_ifIXsr3std11is_integralIT_EE5valueEN2tl8expectedIS3_11lief_errorsEEE4typeEv.exit.i: ; preds = %.noexc51 + %71 = invoke noundef i64 @_ZNK4LIEF12BinaryStream3posEv(ptr noundef nonnull align 8 dereferenceable(24) %11) + to label %.noexc51 unwind label %130 + +.noexc51: ; preds = %68 + %72 = load ptr, ptr %11, align 8 + %73 = getelementptr inbounds i8, ptr %72, i64 96 + %74 = load ptr, ptr %73, align 8 + %75 = invoke i64 %74(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull %5, i64 noundef %71, i64 noundef 2) + to label %.noexc52 unwind label %130 + +.noexc52: ; preds = %.noexc51 + %76 = and i64 %75, 4294967296 + %.not.i.i50 = icmp eq i64 %76, 0 + br i1 %.not.i.i50, label %_ZNK4LIEF12BinaryStream9peek_convItEENSt9enable_ifIXsr3std11is_integralIT_EE5valueEN2tl8expectedIS3_11lief_errorsEEE4typeEv.exit.i, label %77 + +77: ; preds = %.noexc52 + %78 = getelementptr inbounds i8, ptr %11, i64 16 + %79 = load i8, ptr %78, align 8 + %80 = trunc i8 %79 to i1 + %81 = load i16, ptr %5, align 2 + br i1 %80, label %82, label %.noexc53 + +82: ; preds = %77 + %83 = invoke noundef zeroext i16 @_ZN4LIEF12BinaryStream11swap_endianItEET_S2_(i16 noundef zeroext %81) + to label %.noexc53 unwind label %130 + +_ZNK4LIEF12BinaryStream9peek_convItEENSt9enable_ifIXsr3std11is_integralIT_EE5valueEN2tl8expectedIS3_11lief_errorsEEE4typeEv.exit.i: ; preds = %.noexc52 call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %5) - br label %84 + br label %86 -.noexc52: ; preds = %80, %75 - %.sroa.02.sroa.0.0.i.ph.i = phi i16 [ %79, %75 ], [ %81, %80 ] +.noexc53: ; preds = %82, %77 + %.sroa.02.sroa.0.0.i.ph.i = phi i16 [ %81, %77 ], [ %83, %82 ] call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %5) invoke void @_ZNK4LIEF12BinaryStream13increment_posEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef 2) - to label %.noexc53 unwind label %128 + to label %.noexc54 unwind label %130 -.noexc53: ; preds = %.noexc52 - %82 = zext i16 %.sroa.02.sroa.0.0.i.ph.i to i64 - %83 = or disjoint i64 %82, 4294967296 - br label %84 +.noexc54: ; preds = %.noexc53 + %84 = zext i16 %.sroa.02.sroa.0.0.i.ph.i to i64 + %85 = or disjoint i64 %84, 4294967296 + br label %86 -84: ; preds = %.noexc53, %_ZNK4LIEF12BinaryStream9peek_convItEENSt9enable_ifIXsr3std11is_integralIT_EE5valueEN2tl8expectedIS3_11lief_errorsEEE4typeEv.exit.i - %.sroa.0.0.insert.insert.i49 = phi i64 [ 1, %_ZNK4LIEF12BinaryStream9peek_convItEENSt9enable_ifIXsr3std11is_integralIT_EE5valueEN2tl8expectedIS3_11lief_errorsEEE4typeEv.exit.i ], [ %83, %.noexc53 ] - %85 = and i64 %.sroa.0.0.insert.insert.i49, 4294967296 - %.not115 = icmp eq i64 %85, 0 - %86 = and i64 %.sroa.0.0.insert.insert.i49, 65535 +86: ; preds = %.noexc54, %_ZNK4LIEF12BinaryStream9peek_convItEENSt9enable_ifIXsr3std11is_integralIT_EE5valueEN2tl8expectedIS3_11lief_errorsEEE4typeEv.exit.i + %.sroa.0.0.insert.insert.i = phi i64 [ 1, %_ZNK4LIEF12BinaryStream9peek_convItEENSt9enable_ifIXsr3std11is_integralIT_EE5valueEN2tl8expectedIS3_11lief_errorsEEE4typeEv.exit.i ], [ %85, %.noexc54 ] + %87 = and i64 %.sroa.0.0.insert.insert.i, 4294967296 + %.not114 = icmp eq i64 %87, 0 + %88 = and i64 %.sroa.0.0.insert.insert.i, 65535 call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %4) - %87 = invoke noundef i64 @_ZNK4LIEF12BinaryStream3posEv(ptr noundef nonnull align 8 dereferenceable(24) %11) - to label %.noexc58 unwind label %128 + %89 = invoke noundef i64 @_ZNK4LIEF12BinaryStream3posEv(ptr noundef nonnull align 8 dereferenceable(24) %11) + to label %.noexc59 unwind label %130 -.noexc58: ; preds = %84 - %88 = load ptr, ptr %11, align 8 - %89 = getelementptr inbounds i8, ptr %88, i64 96 - %90 = load ptr, ptr %89, align 8 - %91 = invoke i64 %90(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull %4, i64 noundef %87, i64 noundef 2) - to label %.noexc59 unwind label %128 - -.noexc59: ; preds = %.noexc58 - %92 = and i64 %91, 4294967296 - %.not.i.i54 = icmp eq i64 %92, 0 - br i1 %.not.i.i54, label %_ZNK4LIEF12BinaryStream9peek_convItEENSt9enable_ifIXsr3std11is_integralIT_EE5valueEN2tl8expectedIS3_11lief_errorsEEE4typeEv.exit.i57, label %93 - -93: ; preds = %.noexc59 - %94 = getelementptr inbounds i8, ptr %11, i64 16 - %95 = load i8, ptr %94, align 8 - %96 = trunc i8 %95 to i1 - %97 = load i16, ptr %4, align 2 - br i1 %96, label %98, label %.noexc60 - -98: ; preds = %93 - %99 = invoke noundef zeroext i16 @_ZN4LIEF12BinaryStream11swap_endianItEET_S2_(i16 noundef zeroext %97) - to label %.noexc60 unwind label %128 - -_ZNK4LIEF12BinaryStream9peek_convItEENSt9enable_ifIXsr3std11is_integralIT_EE5valueEN2tl8expectedIS3_11lief_errorsEEE4typeEv.exit.i57: ; preds = %.noexc59 +.noexc59: ; preds = %86 + %90 = load ptr, ptr %11, align 8 + %91 = getelementptr inbounds i8, ptr %90, i64 96 + %92 = load ptr, ptr %91, align 8 + %93 = invoke i64 %92(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull %4, i64 noundef %89, i64 noundef 2) + to label %.noexc60 unwind label %130 + +.noexc60: ; preds = %.noexc59 + %94 = and i64 %93, 4294967296 + %.not.i.i55 = icmp eq i64 %94, 0 + br i1 %.not.i.i55, label %_ZNK4LIEF12BinaryStream9peek_convItEENSt9enable_ifIXsr3std11is_integralIT_EE5valueEN2tl8expectedIS3_11lief_errorsEEE4typeEv.exit.i58, label %95 + +95: ; preds = %.noexc60 + %96 = getelementptr inbounds i8, ptr %11, i64 16 + %97 = load i8, ptr %96, align 8 + %98 = trunc i8 %97 to i1 + %99 = load i16, ptr %4, align 2 + br i1 %98, label %100, label %.noexc61 + +100: ; preds = %95 + %101 = invoke noundef zeroext i16 @_ZN4LIEF12BinaryStream11swap_endianItEET_S2_(i16 noundef zeroext %99) + to label %.noexc61 unwind label %130 + +_ZNK4LIEF12BinaryStream9peek_convItEENSt9enable_ifIXsr3std11is_integralIT_EE5valueEN2tl8expectedIS3_11lief_errorsEEE4typeEv.exit.i58: ; preds = %.noexc60 call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %4) - br label %102 + br label %104 -.noexc60: ; preds = %98, %93 - %.sroa.02.sroa.0.0.i.ph.i55 = phi i16 [ %97, %93 ], [ %99, %98 ] +.noexc61: ; preds = %100, %95 + %.sroa.02.sroa.0.0.i.ph.i56 = phi i16 [ %99, %95 ], [ %101, %100 ] call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %4) invoke void @_ZNK4LIEF12BinaryStream13increment_posEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef 2) - to label %.noexc61 unwind label %128 + to label %.noexc62 unwind label %130 -.noexc61: ; preds = %.noexc60 - %100 = zext i16 %.sroa.02.sroa.0.0.i.ph.i55 to i64 - %101 = or disjoint i64 %100, 4294967296 - br label %102 +.noexc62: ; preds = %.noexc61 + %102 = zext i16 %.sroa.02.sroa.0.0.i.ph.i56 to i64 + %103 = or disjoint i64 %102, 4294967296 + br label %104 -102: ; preds = %.noexc61, %_ZNK4LIEF12BinaryStream9peek_convItEENSt9enable_ifIXsr3std11is_integralIT_EE5valueEN2tl8expectedIS3_11lief_errorsEEE4typeEv.exit.i57 - %.sroa.0.0.insert.insert.i56 = phi i64 [ 1, %_ZNK4LIEF12BinaryStream9peek_convItEENSt9enable_ifIXsr3std11is_integralIT_EE5valueEN2tl8expectedIS3_11lief_errorsEEE4typeEv.exit.i57 ], [ %101, %.noexc61 ] - %103 = and i64 %.sroa.0.0.insert.insert.i56, 4294967296 - %.not116 = icmp eq i64 %103, 0 - %104 = and i64 %.sroa.0.0.insert.insert.i56, 65535 +104: ; preds = %.noexc62, %_ZNK4LIEF12BinaryStream9peek_convItEENSt9enable_ifIXsr3std11is_integralIT_EE5valueEN2tl8expectedIS3_11lief_errorsEEE4typeEv.exit.i58 + %.sroa.0.0.insert.insert.i57 = phi i64 [ 1, %_ZNK4LIEF12BinaryStream9peek_convItEENSt9enable_ifIXsr3std11is_integralIT_EE5valueEN2tl8expectedIS3_11lief_errorsEEE4typeEv.exit.i58 ], [ %103, %.noexc62 ] + %105 = and i64 %.sroa.0.0.insert.insert.i57, 4294967296 + %.not115 = icmp eq i64 %105, 0 + %106 = and i64 %.sroa.0.0.insert.insert.i57, 65535 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) - %105 = invoke noundef i64 @_ZNK4LIEF12BinaryStream3posEv(ptr noundef nonnull align 8 dereferenceable(24) %11) - to label %.noexc65 unwind label %128 + %107 = invoke noundef i64 @_ZNK4LIEF12BinaryStream3posEv(ptr noundef nonnull align 8 dereferenceable(24) %11) + to label %.noexc66 unwind label %130 -.noexc65: ; preds = %102 - %106 = load ptr, ptr %11, align 8 - %107 = getelementptr inbounds i8, ptr %106, i64 96 - %108 = load ptr, ptr %107, align 8 - %109 = invoke i64 %108(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull %3, i64 noundef %105, i64 noundef 4) - to label %.noexc66 unwind label %128 - -.noexc66: ; preds = %.noexc65 - %110 = and i64 %109, 4294967296 - %.not.i.i63 = icmp eq i64 %110, 0 - br i1 %.not.i.i63, label %_ZNK4LIEF12BinaryStream9peek_convIjEENSt9enable_ifIXsr3std11is_integralIT_EE5valueEN2tl8expectedIS3_11lief_errorsEEE4typeEv.exit.i, label %111 - -111: ; preds = %.noexc66 - %112 = getelementptr inbounds i8, ptr %11, i64 16 - %113 = load i8, ptr %112, align 8 - %114 = trunc i8 %113 to i1 - %115 = load i32, ptr %3, align 4 - br i1 %114, label %116, label %.noexc67 - -116: ; preds = %111 - %117 = invoke noundef i32 @_ZN4LIEF12BinaryStream11swap_endianIjEET_S2_(i32 noundef %115) - to label %.noexc67 unwind label %128 - -_ZNK4LIEF12BinaryStream9peek_convIjEENSt9enable_ifIXsr3std11is_integralIT_EE5valueEN2tl8expectedIS3_11lief_errorsEEE4typeEv.exit.i: ; preds = %.noexc66 +.noexc66: ; preds = %104 + %108 = load ptr, ptr %11, align 8 + %109 = getelementptr inbounds i8, ptr %108, i64 96 + %110 = load ptr, ptr %109, align 8 + %111 = invoke i64 %110(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull %3, i64 noundef %107, i64 noundef 4) + to label %.noexc67 unwind label %130 + +.noexc67: ; preds = %.noexc66 + %112 = and i64 %111, 4294967296 + %.not.i.i64 = icmp eq i64 %112, 0 + br i1 %.not.i.i64, label %_ZNK4LIEF12BinaryStream9peek_convIjEENSt9enable_ifIXsr3std11is_integralIT_EE5valueEN2tl8expectedIS3_11lief_errorsEEE4typeEv.exit.i, label %113 + +113: ; preds = %.noexc67 + %114 = getelementptr inbounds i8, ptr %11, i64 16 + %115 = load i8, ptr %114, align 8 + %116 = trunc i8 %115 to i1 + %117 = load i32, ptr %3, align 4 + br i1 %116, label %118, label %.noexc68 + +118: ; preds = %113 + %119 = invoke noundef i32 @_ZN4LIEF12BinaryStream11swap_endianIjEET_S2_(i32 noundef %117) + to label %.noexc68 unwind label %130 + +_ZNK4LIEF12BinaryStream9peek_convIjEENSt9enable_ifIXsr3std11is_integralIT_EE5valueEN2tl8expectedIS3_11lief_errorsEEE4typeEv.exit.i: ; preds = %.noexc67 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) - br label %120 + br label %122 -.noexc67: ; preds = %116, %111 - %.sroa.02.0.i.ph.i = phi i32 [ %115, %111 ], [ %117, %116 ] +.noexc68: ; preds = %118, %113 + %.sroa.02.0.i.ph.i = phi i32 [ %117, %113 ], [ %119, %118 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) invoke void @_ZNK4LIEF12BinaryStream13increment_posEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef 4) - to label %.noexc68 unwind label %128 - -.noexc68: ; preds = %.noexc67 - %118 = zext i32 %.sroa.02.0.i.ph.i to i64 - %119 = or disjoint i64 %118, 4294967296 - br label %120 - -120: ; preds = %.noexc68, %_ZNK4LIEF12BinaryStream9peek_convIjEENSt9enable_ifIXsr3std11is_integralIT_EE5valueEN2tl8expectedIS3_11lief_errorsEEE4typeEv.exit.i - %.sroa.0.0.insert.insert.i64 = phi i64 [ 1, %_ZNK4LIEF12BinaryStream9peek_convIjEENSt9enable_ifIXsr3std11is_integralIT_EE5valueEN2tl8expectedIS3_11lief_errorsEEE4typeEv.exit.i ], [ %119, %.noexc68 ] - %121 = and i64 %.sroa.0.0.insert.insert.i64, 4294967296 - %.not117 = icmp eq i64 %121, 0 - %122 = and i64 %.sroa.0.0.insert.insert.i64, 4294967295 - %.sroa.0137.0.insert.ext.i = select i1 %.not.i, i64 0, i64 %40 - %.sroa.0129.0.insert.ext.i = select i1 %.not113, i64 0, i64 %54 - %.sroa.0121.0.insert.ext.i = select i1 %.not114, i64 0, i64 %68 - %.sroa.0113.0.insert.ext.i = select i1 %.not115, i64 0, i64 %86 - %.sroa.0.0.insert.ext.i71 = select i1 %.not116, i64 0, i64 %104 - %.sroa.0144.0.insert.ext.i = select i1 %.not117, i64 0, i64 %122 + to label %.noexc69 unwind label %130 + +.noexc69: ; preds = %.noexc68 + %120 = zext i32 %.sroa.02.0.i.ph.i to i64 + %121 = or disjoint i64 %120, 4294967296 + br label %122 + +122: ; preds = %.noexc69, %_ZNK4LIEF12BinaryStream9peek_convIjEENSt9enable_ifIXsr3std11is_integralIT_EE5valueEN2tl8expectedIS3_11lief_errorsEEE4typeEv.exit.i + %.sroa.0.0.insert.insert.i65 = phi i64 [ 1, %_ZNK4LIEF12BinaryStream9peek_convIjEENSt9enable_ifIXsr3std11is_integralIT_EE5valueEN2tl8expectedIS3_11lief_errorsEEE4typeEv.exit.i ], [ %121, %.noexc69 ] + %123 = and i64 %.sroa.0.0.insert.insert.i65, 4294967296 + %.not116 = icmp eq i64 %123, 0 + %124 = and i64 %.sroa.0.0.insert.insert.i65, 4294967295 + %.sroa.0137.0.insert.ext.i = and i64 %42, 4294967295 + %.sroa.0129.0.insert.ext.i = select i1 %.not, i64 0, i64 %56 + %.sroa.0121.0.insert.ext.i = select i1 %.not113, i64 0, i64 %70 + %.sroa.0113.0.insert.ext.i = select i1 %.not114, i64 0, i64 %88 + %.sroa.0.0.insert.ext.i = select i1 %.not115, i64 0, i64 %106 + %.sroa.0144.0.insert.ext.i = select i1 %.not116, i64 0, i64 %124 store i64 %.sroa.0137.0.insert.ext.i, ptr %10, align 16, !alias.scope !7 - %123 = getelementptr inbounds i8, ptr %10, i64 16 - store i64 %.sroa.0129.0.insert.ext.i, ptr %123, align 16, !alias.scope !7 - %124 = getelementptr inbounds i8, ptr %10, i64 32 - store i64 %.sroa.0121.0.insert.ext.i, ptr %124, align 16, !alias.scope !7 - %125 = getelementptr inbounds i8, ptr %10, i64 48 - store i64 %.sroa.0113.0.insert.ext.i, ptr %125, align 16, !alias.scope !7 - %126 = getelementptr inbounds i8, ptr %10, i64 64 - store i64 %.sroa.0.0.insert.ext.i71, ptr %126, align 16, !alias.scope !7 - %127 = getelementptr inbounds i8, ptr %10, i64 80 - store i64 %.sroa.0144.0.insert.ext.i, ptr %127, align 16, !alias.scope !7 + %125 = getelementptr inbounds i8, ptr %10, i64 16 + store i64 %.sroa.0129.0.insert.ext.i, ptr %125, align 16, !alias.scope !7 + %126 = getelementptr inbounds i8, ptr %10, i64 32 + store i64 %.sroa.0121.0.insert.ext.i, ptr %126, align 16, !alias.scope !7 + %127 = getelementptr inbounds i8, ptr %10, i64 48 + store i64 %.sroa.0113.0.insert.ext.i, ptr %127, align 16, !alias.scope !7 + %128 = getelementptr inbounds i8, ptr %10, i64 64 + store i64 %.sroa.0.0.insert.ext.i, ptr %128, align 16, !alias.scope !7 + %129 = getelementptr inbounds i8, ptr %10, i64 80 + store i64 %.sroa.0144.0.insert.ext.i, ptr %129, align 16, !alias.scope !7 invoke void @_ZN3fmt2v97vformatB5cxx11ENS0_17basic_string_viewIcEENS0_17basic_format_argsINS0_20basic_format_contextINS0_8appenderEcEEEE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr nonnull @.str.1, i64 40, i64 2236962, ptr nonnull %10) - to label %130 unwind label %128 + to label %132 unwind label %130 -128: ; preds = %.noexc67, %116, %.noexc65, %102, %.noexc60, %98, %.noexc58, %84, %.noexc52, %80, %.noexc50, %66, %63, %.noexc44, %.noexc43, %.noexc42, %52, %49, %.noexc37, %.noexc36, %.noexc35, %39, %38, %.noexc32, %.noexc31, %.noexc30, %29, %120, %28 - %129 = landingpad { ptr, i32 } +130: ; preds = %.noexc68, %118, %.noexc66, %104, %.noexc61, %100, %.noexc59, %86, %.noexc53, %82, %.noexc51, %68, %65, %.noexc46, %.noexc45, %.noexc44, %54, %51, %.noexc39, %.noexc38, %.noexc37, %41, %40, %.noexc32, %.noexc31, %.noexc30, %29, %122, %28 + %131 = landingpad { ptr, i32 } cleanup - br label %134 + br label %136 -130: ; preds = %120, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit - %131 = load i8, ptr %19, align 8 - %132 = trunc i8 %131 to i1 - br i1 %132, label %133, label %_ZN2tl8expectedIN4LIEF10SpanStreamE11lief_errorsED2Ev.exit +132: ; preds = %122, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit + %133 = load i8, ptr %19, align 8 + %134 = trunc i8 %133 to i1 + br i1 %134, label %135, label %_ZN2tl8expectedIN4LIEF10SpanStreamE11lief_errorsED2Ev.exit -133: ; preds = %130 +135: ; preds = %132 call void @_ZN4LIEF10SpanStreamD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %11) #19 br label %_ZN2tl8expectedIN4LIEF10SpanStreamE11lief_errorsED2Ev.exit -_ZN2tl8expectedIN4LIEF10SpanStreamE11lief_errorsED2Ev.exit: ; preds = %130, %133 +_ZN2tl8expectedIN4LIEF10SpanStreamE11lief_errorsED2Ev.exit: ; preds = %132, %135 ret void -134: ; preds = %128, %.body - %.pn = phi { ptr, i32 } [ %129, %128 ], [ %eh.lpad-body, %.body ] - %135 = load i8, ptr %19, align 8 - %136 = trunc i8 %135 to i1 - br i1 %136, label %common.resume.sink.split, label %common.resume +136: ; preds = %130, %.body + %.pn = phi { ptr, i32 } [ %131, %130 ], [ %eh.lpad-body, %.body ] + %137 = load i8, ptr %19, align 8 + %138 = trunc i8 %137 to i1 + br i1 %138, label %common.resume.sink.split, label %common.resume } ; Function Attrs: nounwind @@ -25875,9 +25878,9 @@ _ZN3fmt2v96detail12count_digitsILi3EmEEiT0_.exit: ; preds = %.preheader 349: ; preds = %346 %.not.i208 = icmp eq i32 %2, 0 - %350 = select i1 %.not.i208, i32 48, i32 12288 - %351 = or i32 %350, %2 - %352 = add i32 %351, 16777216 + %350 = or i32 %2, 12288 + %351 = add i32 %350, 16777216 + %352 = select i1 %.not.i208, i32 16777264, i32 %351 br label %_ZN3fmt2v96detail12count_digitsILi3EmEEiT0_.exit._crit_edge _ZN3fmt2v96detail12count_digitsILi3EmEEiT0_.exit._crit_edge: ; preds = %_ZN3fmt2v96detail12count_digitsILi3EmEEiT0_.exit, %349, %346 @@ -28583,9 +28586,9 @@ _ZN3fmt2v96detail12count_digitsILi3EoEEiT0_.exit: ; preds = %.preheader 359: ; preds = %356 %.not.i231 = icmp eq i32 %.sroa.28.0.copyload, 0 - %360 = select i1 %.not.i231, i32 48, i32 12288 - %361 = or i32 %360, %.sroa.28.0.copyload - %362 = add i32 %361, 16777216 + %360 = or i32 %.sroa.28.0.copyload, 12288 + %361 = add i32 %360, 16777216 + %362 = select i1 %.not.i231, i32 16777264, i32 %361 br label %_ZN3fmt2v96detail12count_digitsILi3EoEEiT0_.exit._crit_edge _ZN3fmt2v96detail12count_digitsILi3EoEEiT0_.exit._crit_edge: ; preds = %_ZN3fmt2v96detail12count_digitsILi3EoEEiT0_.exit, %359, %356 diff --git a/bench/lief/optimized/CoreFile.cpp.ll b/bench/lief/optimized/CoreFile.cpp.ll index d2e3b4ea960..454826d721b 100644 --- a/bench/lief/optimized/CoreFile.cpp.ll +++ b/bench/lief/optimized/CoreFile.cpp.ll @@ -838,45 +838,46 @@ _ZN4LIEF10SpanStream11from_vectorERKSt6vectorIhSaIhEE.exit: ; preds = %1 to label %.noexc16 unwind label %.loopexit.split-lp.loopexit.split-lp .noexc16: ; preds = %.noexc15 - %25 = load i32, ptr %5, align 4 + %25 = and i64 %24, 4294967296 + %.not.i.i = icmp eq i64 %25, 0 + %26 = load i32, ptr %5, align 4 + %27 = zext i32 %26 to i64 + %28 = or disjoint i64 %25, %27 + %.sroa.03.0.insert.insert.i.i = select i1 %.not.i.i, i64 1, i64 %28 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) - %26 = and i64 %24, 4294967296 - %.not.i = icmp eq i64 %26, 0 - br i1 %.not.i, label %28, label %27 + %.not.i = icmp ult i64 %.sroa.03.0.insert.insert.i.i, 4294967296 + br i1 %.not.i, label %_ZNK4LIEF12BinaryStream4readIjEEN2tl8expectedIT_11lief_errorsEEv.exit.thread, label %29 -27: ; preds = %.noexc16 +_ZNK4LIEF12BinaryStream4readIjEEN2tl8expectedIT_11lief_errorsEEv.exit.thread: ; preds = %.noexc16 + store i64 %.sroa.03.0.insert.insert.i.i, ptr %8, align 8 + br label %.loopexit + +29: ; preds = %.noexc16 invoke void @_ZNK4LIEF12BinaryStream13increment_posEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef 4) - to label %28 unwind label %.loopexit.split-lp.loopexit.split-lp - -28: ; preds = %.noexc16, %27 - %29 = zext i32 %25 to i64 - %.sroa.0.0.insert.ext.i = select i1 %.not.i, i64 1, i64 %29 - %.sroa.0.0.insert.insert.i = or disjoint i64 %.sroa.0.0.insert.ext.i, %26 - store i64 %.sroa.0.0.insert.insert.i, ptr %8, align 8 - %30 = and i64 %24, 4294967296 - %.not = icmp eq i64 %30, 0 - br i1 %.not, label %.loopexit, label %31 - -.loopexit54: ; preds = %112 + to label %30 unwind label %.loopexit.split-lp.loopexit.split-lp + +.loopexit55: ; preds = %114 %lpad.loopexit = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit: ; preds = %79, %.noexc33, %.noexc32, %.noexc31, %71 - %lpad.loopexit55 = landingpad { ptr, i32 } +.loopexit.split-lp.loopexit: ; preds = %81, %.noexc34, %.noexc33, %.noexc32, %73 + %lpad.loopexit56 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit.split-lp: ; preds = %58, %45, %.noexc25, %.noexc24, %.noexc23, %36, %.noexc18, %33, %27, %.noexc15, %.noexc14, %.noexc, %18 - %lpad.loopexit.split-lp56 = landingpad { ptr, i32 } +.loopexit.split-lp.loopexit.split-lp: ; preds = %60, %47, %.noexc25, %.noexc24, %.noexc23, %36, %.noexc18, %33, %29, %.noexc15, %.noexc14, %.noexc, %18 + %lpad.loopexit.split-lp57 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -31: ; preds = %28 - %32 = icmp ugt i64 %.sroa.0.0.insert.ext.i, 6000 +30: ; preds = %29 + store i64 %.sroa.03.0.insert.insert.i.i, ptr %8, align 8 + %31 = trunc i64 %.sroa.03.0.insert.insert.i.i to i32 + %32 = icmp ugt i32 %31, 6000 br i1 %32, label %33, label %36 -33: ; preds = %31 +33: ; preds = %30 %34 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN4LIEF7logging6Logger8instanceEv() to label %.noexc18 unwind label %.loopexit.split-lp.loopexit.split-lp @@ -891,7 +892,7 @@ _ZN4LIEF7logging6Logger3errIJjiEEEvPKcDpRKT_.exit: ; preds = %.noexc18 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) br label %.loopexit -36: ; preds = %31 +36: ; preds = %30 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) %37 = invoke noundef i64 @_ZNK4LIEF12BinaryStream3posEv(ptr noundef nonnull align 8 dereferenceable(24) %7) to label %.noexc23 unwind label %.loopexit.split-lp.loopexit.split-lp @@ -913,233 +914,238 @@ _ZN4LIEF7logging6Logger3errIJjiEEEvPKcDpRKT_.exit: ; preds = %.noexc18 to label %.noexc26 unwind label %.loopexit.split-lp.loopexit.split-lp .noexc26: ; preds = %.noexc25 - %43 = load i32, ptr %3, align 4 + %43 = and i64 %42, 4294967296 + %.not.i.i20 = icmp eq i64 %43, 0 + %44 = load i32, ptr %3, align 4 + %45 = zext i32 %44 to i64 + %46 = or disjoint i64 %43, %45 + %.sroa.03.0.insert.insert.i.i21 = select i1 %.not.i.i20, i64 1, i64 %46 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) - %44 = and i64 %42, 4294967296 - %.not.i20 = icmp eq i64 %44, 0 - br i1 %.not.i20, label %.loopexit, label %45 + %.not.i22 = icmp ult i64 %.sroa.03.0.insert.insert.i.i21, 4294967296 + br i1 %.not.i22, label %.loopexit, label %47 -45: ; preds = %.noexc26 +47: ; preds = %.noexc26 invoke void @_ZNK4LIEF12BinaryStream13increment_posEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef 4) - to label %46 unwind label %.loopexit.split-lp.loopexit.split-lp - -46: ; preds = %45 - %47 = zext i32 %43 to i64 - %48 = getelementptr inbounds i8, ptr %0, i64 96 - store i64 %47, ptr %48, align 8 - %49 = getelementptr inbounds i8, ptr %0, i64 72 - %50 = getelementptr inbounds i8, ptr %0, i64 80 - %51 = load ptr, ptr %50, align 8 - %52 = load ptr, ptr %49, align 8 - %53 = ptrtoint ptr %51 to i64 - %54 = ptrtoint ptr %52 to i64 - %55 = sub i64 %53, %54 - %56 = sdiv exact i64 %55, 56 - %57 = icmp ult i64 %56, %.sroa.0.0.insert.ext.i - br i1 %57, label %58, label %60 - -58: ; preds = %46 - %59 = sub nsw i64 %.sroa.0.0.insert.ext.i, %56 - invoke void @_ZNSt6vectorIN4LIEF3ELF8CoreFile7entry_tESaIS3_EE17_M_default_appendEm(ptr noundef nonnull align 8 dereferenceable(24) %49, i64 noundef %59) + to label %_ZNK4LIEF12BinaryStream4readIjEEN2tl8expectedIT_11lief_errorsEEv.exit28 unwind label %.loopexit.split-lp.loopexit.split-lp + +_ZNK4LIEF12BinaryStream4readIjEEN2tl8expectedIT_11lief_errorsEEv.exit28: ; preds = %47 + %48 = and i64 %.sroa.03.0.insert.insert.i.i21, 4294967295 + %49 = getelementptr inbounds i8, ptr %0, i64 96 + store i64 %48, ptr %49, align 8 + %50 = getelementptr inbounds i8, ptr %0, i64 72 + %51 = and i64 %.sroa.03.0.insert.insert.i.i, 8191 + %52 = getelementptr inbounds i8, ptr %0, i64 80 + %53 = load ptr, ptr %52, align 8 + %54 = load ptr, ptr %50, align 8 + %55 = ptrtoint ptr %53 to i64 + %56 = ptrtoint ptr %54 to i64 + %57 = sub i64 %55, %56 + %58 = sdiv exact i64 %57, 56 + %59 = icmp ult i64 %58, %51 + br i1 %59, label %60, label %62 + +60: ; preds = %_ZNK4LIEF12BinaryStream4readIjEEN2tl8expectedIT_11lief_errorsEEv.exit28 + %61 = sub nsw i64 %51, %58 + invoke void @_ZNSt6vectorIN4LIEF3ELF8CoreFile7entry_tESaIS3_EE17_M_default_appendEm(ptr noundef nonnull align 8 dereferenceable(24) %50, i64 noundef %61) to label %._ZNSt6vectorIN4LIEF3ELF8CoreFile7entry_tESaIS3_EE6resizeEm.exit_crit_edge unwind label %.loopexit.split-lp.loopexit.split-lp -._ZNSt6vectorIN4LIEF3ELF8CoreFile7entry_tESaIS3_EE6resizeEm.exit_crit_edge: ; preds = %58 - %.pre = load ptr, ptr %50, align 8 +._ZNSt6vectorIN4LIEF3ELF8CoreFile7entry_tESaIS3_EE6resizeEm.exit_crit_edge: ; preds = %60 + %.pre = load ptr, ptr %52, align 8 br label %_ZNSt6vectorIN4LIEF3ELF8CoreFile7entry_tESaIS3_EE6resizeEm.exit -60: ; preds = %46 - %61 = icmp ugt i64 %56, %.sroa.0.0.insert.ext.i - br i1 %61, label %62, label %_ZNSt6vectorIN4LIEF3ELF8CoreFile7entry_tESaIS3_EE6resizeEm.exit - -62: ; preds = %60 - %63 = getelementptr inbounds %"struct.LIEF::ELF::CoreFile::entry_t", ptr %52, i64 %.sroa.0.0.insert.ext.i - %.not.i.i = icmp eq ptr %51, %63 - br i1 %.not.i.i, label %_ZNSt6vectorIN4LIEF3ELF8CoreFile7entry_tESaIS3_EE6resizeEm.exit, label %.lr.ph.i.i.i.i.i +62: ; preds = %_ZNK4LIEF12BinaryStream4readIjEEN2tl8expectedIT_11lief_errorsEEv.exit28 + %63 = icmp ugt i64 %58, %51 + br i1 %63, label %64, label %_ZNSt6vectorIN4LIEF3ELF8CoreFile7entry_tESaIS3_EE6resizeEm.exit -.lr.ph.i.i.i.i.i: ; preds = %62, %.lr.ph.i.i.i.i.i - %.05.i.i.i.i.i = phi ptr [ %65, %.lr.ph.i.i.i.i.i ], [ %63, %62 ] - %64 = getelementptr inbounds i8, ptr %.05.i.i.i.i.i, i64 24 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #19 - %65 = getelementptr inbounds i8, ptr %.05.i.i.i.i.i, i64 56 - %.not.i.i.i.i.i = icmp eq ptr %65, %51 +64: ; preds = %62 + %65 = getelementptr inbounds %"struct.LIEF::ELF::CoreFile::entry_t", ptr %54, i64 %51 + %.not.i.i29 = icmp eq ptr %53, %65 + br i1 %.not.i.i29, label %_ZNSt6vectorIN4LIEF3ELF8CoreFile7entry_tESaIS3_EE6resizeEm.exit, label %.lr.ph.i.i.i.i.i + +.lr.ph.i.i.i.i.i: ; preds = %64, %.lr.ph.i.i.i.i.i + %.05.i.i.i.i.i = phi ptr [ %67, %.lr.ph.i.i.i.i.i ], [ %65, %64 ] + %66 = getelementptr inbounds i8, ptr %.05.i.i.i.i.i, i64 24 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #19 + %67 = getelementptr inbounds i8, ptr %.05.i.i.i.i.i, i64 56 + %.not.i.i.i.i.i = icmp eq ptr %67, %53 br i1 %.not.i.i.i.i.i, label %_ZSt8_DestroyIPN4LIEF3ELF8CoreFile7entry_tES3_EvT_S5_RSaIT0_E.exit.i.i, label %.lr.ph.i.i.i.i.i, !llvm.loop !7 _ZSt8_DestroyIPN4LIEF3ELF8CoreFile7entry_tES3_EvT_S5_RSaIT0_E.exit.i.i: ; preds = %.lr.ph.i.i.i.i.i - store ptr %63, ptr %50, align 8 + store ptr %65, ptr %52, align 8 br label %_ZNSt6vectorIN4LIEF3ELF8CoreFile7entry_tESaIS3_EE6resizeEm.exit -_ZNSt6vectorIN4LIEF3ELF8CoreFile7entry_tESaIS3_EE6resizeEm.exit: ; preds = %._ZNSt6vectorIN4LIEF3ELF8CoreFile7entry_tESaIS3_EE6resizeEm.exit_crit_edge, %60, %62, %_ZSt8_DestroyIPN4LIEF3ELF8CoreFile7entry_tES3_EvT_S5_RSaIT0_E.exit.i.i - %66 = phi ptr [ %.pre, %._ZNSt6vectorIN4LIEF3ELF8CoreFile7entry_tESaIS3_EE6resizeEm.exit_crit_edge ], [ %51, %60 ], [ %51, %62 ], [ %63, %_ZSt8_DestroyIPN4LIEF3ELF8CoreFile7entry_tES3_EvT_S5_RSaIT0_E.exit.i.i ] - %67 = load ptr, ptr %49, align 8 - %.not62 = icmp eq ptr %66, %67 - br i1 %.not62, label %.loopexit, label %.lr.ph +_ZNSt6vectorIN4LIEF3ELF8CoreFile7entry_tESaIS3_EE6resizeEm.exit: ; preds = %._ZNSt6vectorIN4LIEF3ELF8CoreFile7entry_tESaIS3_EE6resizeEm.exit_crit_edge, %62, %64, %_ZSt8_DestroyIPN4LIEF3ELF8CoreFile7entry_tES3_EvT_S5_RSaIT0_E.exit.i.i + %68 = phi ptr [ %.pre, %._ZNSt6vectorIN4LIEF3ELF8CoreFile7entry_tESaIS3_EE6resizeEm.exit_crit_edge ], [ %53, %62 ], [ %53, %64 ], [ %65, %_ZSt8_DestroyIPN4LIEF3ELF8CoreFile7entry_tES3_EvT_S5_RSaIT0_E.exit.i.i ] + %69 = load ptr, ptr %50, align 8 + %.not63 = icmp eq ptr %68, %69 + br i1 %.not63, label %.loopexit, label %.lr.ph .lr.ph: ; preds = %_ZNSt6vectorIN4LIEF3ELF8CoreFile7entry_tESaIS3_EE6resizeEm.exit %.sroa.3.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %2, i64 8 - %68 = getelementptr inbounds i8, ptr %9, i64 8 - %69 = getelementptr inbounds i8, ptr %9, i64 16 - %70 = getelementptr inbounds i8, ptr %9, i64 24 - br label %71 + %70 = getelementptr inbounds i8, ptr %9, i64 8 + %71 = getelementptr inbounds i8, ptr %9, i64 16 + %72 = getelementptr inbounds i8, ptr %9, i64 24 + br label %73 -71: ; preds = %.lr.ph, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit - %.0959 = phi i64 [ 0, %.lr.ph ], [ %90, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit ] +73: ; preds = %.lr.ph, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit + %.0960 = phi i64 [ 0, %.lr.ph ], [ %92, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit ] call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %2) - %72 = invoke noundef i64 @_ZNK4LIEF12BinaryStream3posEv(ptr noundef nonnull align 8 dereferenceable(24) %7) - to label %.noexc31 unwind label %.loopexit.split-lp.loopexit - -.noexc31: ; preds = %71 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(12) %2, i8 0, i64 12, i1 false) - %73 = invoke noundef i64 @_ZNK4LIEF12BinaryStream3posEv(ptr noundef nonnull align 8 dereferenceable(24) %7) + %74 = invoke noundef i64 @_ZNK4LIEF12BinaryStream3posEv(ptr noundef nonnull align 8 dereferenceable(24) %7) to label %.noexc32 unwind label %.loopexit.split-lp.loopexit -.noexc32: ; preds = %.noexc31 - %74 = load ptr, ptr %7, align 8 - %75 = getelementptr inbounds i8, ptr %74, i64 96 - %76 = load ptr, ptr %75, align 8 - %77 = invoke i64 %76(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull %2, i64 noundef %73, i64 noundef 12) +.noexc32: ; preds = %73 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(12) %2, i8 0, i64 12, i1 false) + %75 = invoke noundef i64 @_ZNK4LIEF12BinaryStream3posEv(ptr noundef nonnull align 8 dereferenceable(24) %7) to label %.noexc33 unwind label %.loopexit.split-lp.loopexit .noexc33: ; preds = %.noexc32 - invoke void @_ZNK4LIEF12BinaryStream6setposEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %72) + %76 = load ptr, ptr %7, align 8 + %77 = getelementptr inbounds i8, ptr %76, i64 96 + %78 = load ptr, ptr %77, align 8 + %79 = invoke i64 %78(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull %2, i64 noundef %75, i64 noundef 12) to label %.noexc34 unwind label %.loopexit.split-lp.loopexit .noexc34: ; preds = %.noexc33 - %78 = and i64 %77, 4294967296 - %.not.i.i30 = icmp eq i64 %78, 0 + invoke void @_ZNK4LIEF12BinaryStream6setposEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %74) + to label %.noexc35 unwind label %.loopexit.split-lp.loopexit + +.noexc35: ; preds = %.noexc34 + %80 = and i64 %79, 4294967296 + %.not.i.i31 = icmp eq i64 %80, 0 %.sroa.03.0.copyload.i.i = load i64, ptr %2, align 8 %.sroa.3.0.copyload.i.i = load i32, ptr %.sroa.3.0..sroa_idx.i.i, align 8 call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %2) - br i1 %.not.i.i30, label %.noexc34..thread.loopexit_crit_edge, label %79 + br i1 %.not.i.i31, label %.noexc35..thread.loopexit_crit_edge, label %81 -.noexc34..thread.loopexit_crit_edge: ; preds = %.noexc34 - %.pre64.pre = load ptr, ptr %50, align 8 - %.pre65.pre = load ptr, ptr %49, align 8 +.noexc35..thread.loopexit_crit_edge: ; preds = %.noexc35 + %.pre65.pre = load ptr, ptr %52, align 8 + %.pre66.pre = load ptr, ptr %50, align 8 br label %.thread -79: ; preds = %.noexc34 +81: ; preds = %.noexc35 invoke void @_ZNK4LIEF12BinaryStream13increment_posEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef 12) - to label %80 unwind label %.loopexit.split-lp.loopexit + to label %82 unwind label %.loopexit.split-lp.loopexit -80: ; preds = %79 +82: ; preds = %81 %.sroa.2.0.extract.shift = lshr i64 %.sroa.03.0.copyload.i.i, 32 - %81 = and i64 %.sroa.03.0.copyload.i.i, 4294967295 - store i64 %81, ptr %9, align 8 - store i64 %.sroa.2.0.extract.shift, ptr %68, align 8 - %82 = zext i32 %.sroa.3.0.copyload.i.i to i64 - store i64 %82, ptr %69, align 8 + %83 = and i64 %.sroa.03.0.copyload.i.i, 4294967295 + store i64 %83, ptr %9, align 8 + store i64 %.sroa.2.0.extract.shift, ptr %70, align 8 + %84 = zext i32 %.sroa.3.0.copyload.i.i to i64 + store i64 %84, ptr %71, align 8 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #19 - %83 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %70) - to label %.noexc36 unwind label %98 + %85 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %72) + to label %.noexc37 unwind label %100 -.noexc36: ; preds = %80 - invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcRKS3_(ptr noundef nonnull align 8 dereferenceable(8) %70, ptr noundef %83, ptr noundef nonnull align 1 dereferenceable(1) %10) - to label %.noexc37 unwind label %98 +.noexc37: ; preds = %82 + invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcRKS3_(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef %85, ptr noundef nonnull align 1 dereferenceable(1) %10) + to label %.noexc38 unwind label %100 -.noexc37: ; preds = %.noexc36 - invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.22) - to label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit unwind label %84 +.noexc38: ; preds = %.noexc37 + invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.22) + to label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit unwind label %86 -84: ; preds = %.noexc37 - %85 = landingpad { ptr, i32 } +86: ; preds = %.noexc38 + %87 = landingpad { ptr, i32 } cleanup - call void @_ZNSaIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #19 + call void @_ZNSaIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #19 br label %.body -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit: ; preds = %.noexc37 - %86 = load ptr, ptr %49, align 8 - %87 = getelementptr inbounds %"struct.LIEF::ELF::CoreFile::entry_t", ptr %86, i64 %.0959 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %87, ptr noundef nonnull align 8 dereferenceable(24) %9, i64 24, i1 false) - %88 = getelementptr inbounds i8, ptr %87, i64 24 - %89 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %88, ptr noundef nonnull align 8 dereferenceable(32) %70) #19 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #19 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit: ; preds = %.noexc38 + %88 = load ptr, ptr %50, align 8 + %89 = getelementptr inbounds %"struct.LIEF::ELF::CoreFile::entry_t", ptr %88, i64 %.0960 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %89, ptr noundef nonnull align 8 dereferenceable(24) %9, i64 24, i1 false) + %90 = getelementptr inbounds i8, ptr %89, i64 24 + %91 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %90, ptr noundef nonnull align 8 dereferenceable(32) %72) #19 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #19 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #19 - %90 = add nuw i64 %.0959, 1 - %91 = load ptr, ptr %50, align 8 - %92 = load ptr, ptr %49, align 8 - %93 = ptrtoint ptr %91 to i64 - %94 = ptrtoint ptr %92 to i64 - %95 = sub i64 %93, %94 - %96 = sdiv exact i64 %95, 56 - %97 = icmp ult i64 %90, %96 - br i1 %97, label %71, label %.thread, !llvm.loop !9 - -98: ; preds = %.noexc36, %80 - %99 = landingpad { ptr, i32 } + %92 = add nuw i64 %.0960, 1 + %93 = load ptr, ptr %52, align 8 + %94 = load ptr, ptr %50, align 8 + %95 = ptrtoint ptr %93 to i64 + %96 = ptrtoint ptr %94 to i64 + %97 = sub i64 %95, %96 + %98 = sdiv exact i64 %97, 56 + %99 = icmp ult i64 %92, %98 + br i1 %99, label %73, label %.thread, !llvm.loop !9 + +100: ; preds = %.noexc37, %82 + %101 = landingpad { ptr, i32 } cleanup br label %.body -.body: ; preds = %84, %98 - %eh.lpad-body = phi { ptr, i32 } [ %99, %98 ], [ %85, %84 ] +.body: ; preds = %86, %100 + %eh.lpad-body = phi { ptr, i32 } [ %101, %100 ], [ %87, %86 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #19 br label %.loopexit.split-lp -.thread: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit, %.noexc34..thread.loopexit_crit_edge - %100 = phi ptr [ %.pre65.pre, %.noexc34..thread.loopexit_crit_edge ], [ %92, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit ] - %101 = phi ptr [ %.pre64.pre, %.noexc34..thread.loopexit_crit_edge ], [ %91, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit ] - %.not63 = icmp eq ptr %101, %100 - br i1 %.not63, label %.loopexit, label %.lr.ph61 +.thread: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit, %.noexc35..thread.loopexit_crit_edge + %102 = phi ptr [ %.pre66.pre, %.noexc35..thread.loopexit_crit_edge ], [ %94, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit ] + %103 = phi ptr [ %.pre65.pre, %.noexc35..thread.loopexit_crit_edge ], [ %93, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit ] + %.not64 = icmp eq ptr %103, %102 + br i1 %.not64, label %.loopexit, label %.lr.ph62 -.lr.ph61: ; preds = %.thread - %102 = getelementptr inbounds i8, ptr %11, i64 32 - br label %112 +.lr.ph62: ; preds = %.thread + %104 = getelementptr inbounds i8, ptr %11, i64 32 + br label %114 + +105: ; preds = %_ZN2tl8expectedINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE11lief_errorsED2Ev.exit + %106 = add nuw i64 %.061, 1 + %107 = load ptr, ptr %52, align 8 + %108 = load ptr, ptr %50, align 8 + %109 = ptrtoint ptr %107 to i64 + %110 = ptrtoint ptr %108 to i64 + %111 = sub i64 %109, %110 + %112 = sdiv exact i64 %111, 56 + %113 = icmp ult i64 %106, %112 + br i1 %113, label %114, label %.loopexit, !llvm.loop !10 -103: ; preds = %_ZN2tl8expectedINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE11lief_errorsED2Ev.exit - %104 = add nuw i64 %.060, 1 - %105 = load ptr, ptr %50, align 8 - %106 = load ptr, ptr %49, align 8 - %107 = ptrtoint ptr %105 to i64 - %108 = ptrtoint ptr %106 to i64 - %109 = sub i64 %107, %108 - %110 = sdiv exact i64 %109, 56 - %111 = icmp ult i64 %104, %110 - br i1 %111, label %112, label %.loopexit, !llvm.loop !10 - -112: ; preds = %.lr.ph61, %103 - %.060 = phi i64 [ 0, %.lr.ph61 ], [ %104, %103 ] +114: ; preds = %.lr.ph62, %105 + %.061 = phi i64 [ 0, %.lr.ph62 ], [ %106, %105 ] invoke void @_ZNK4LIEF12BinaryStream11read_stringB5cxx11Em(ptr dead_on_unwind nonnull writable sret(%"class.tl::expected.1107") align 8 %11, ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef -1) - to label %113 unwind label %.loopexit54 - -113: ; preds = %112 - %114 = load i8, ptr %102, align 8 - %115 = trunc i8 %114 to i1 - br i1 %115, label %116, label %120 - -116: ; preds = %113 - %117 = load ptr, ptr %49, align 8 - %118 = getelementptr inbounds %"struct.LIEF::ELF::CoreFile::entry_t", ptr %117, i64 %.060, i32 3 - %119 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %118, ptr noundef nonnull align 8 dereferenceable(32) %11) #19 - %.pre66 = load i8, ptr %102, align 8 - br label %120 + to label %115 unwind label %.loopexit55 -120: ; preds = %113, %116 - %121 = phi i8 [ %114, %113 ], [ %.pre66, %116 ] - %122 = trunc i8 %121 to i1 - br i1 %122, label %123, label %_ZN2tl8expectedINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE11lief_errorsED2Ev.exit +115: ; preds = %114 + %116 = load i8, ptr %104, align 8 + %117 = trunc i8 %116 to i1 + br i1 %117, label %118, label %122 -123: ; preds = %120 +118: ; preds = %115 + %119 = load ptr, ptr %50, align 8 + %120 = getelementptr inbounds %"struct.LIEF::ELF::CoreFile::entry_t", ptr %119, i64 %.061, i32 3 + %121 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %120, ptr noundef nonnull align 8 dereferenceable(32) %11) #19 + %.pre67 = load i8, ptr %104, align 8 + br label %122 + +122: ; preds = %115, %118 + %123 = phi i8 [ %116, %115 ], [ %.pre67, %118 ] + %124 = trunc i8 %123 to i1 + br i1 %124, label %125, label %_ZN2tl8expectedINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE11lief_errorsED2Ev.exit + +125: ; preds = %122 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #19 br label %_ZN2tl8expectedINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE11lief_errorsED2Ev.exit -_ZN2tl8expectedINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE11lief_errorsED2Ev.exit: ; preds = %120, %123 - br i1 %115, label %103, label %.loopexit +_ZN2tl8expectedINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE11lief_errorsED2Ev.exit: ; preds = %122, %125 + br i1 %117, label %105, label %.loopexit -.loopexit: ; preds = %_ZN2tl8expectedINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE11lief_errorsED2Ev.exit, %103, %_ZNSt6vectorIN4LIEF3ELF8CoreFile7entry_tESaIS3_EE6resizeEm.exit, %.noexc26, %.thread, %_ZN4LIEF7logging6Logger3errIJjiEEEvPKcDpRKT_.exit, %28, %_ZN4LIEF10SpanStream11from_vectorERKSt6vectorIhSaIhEE.exit - %124 = load i8, ptr %15, align 8 - %125 = trunc i8 %124 to i1 - br i1 %125, label %126, label %_ZN2tl8expectedIN4LIEF10SpanStreamE11lief_errorsED2Ev.exit +.loopexit: ; preds = %_ZN2tl8expectedINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE11lief_errorsED2Ev.exit, %105, %_ZNSt6vectorIN4LIEF3ELF8CoreFile7entry_tESaIS3_EE6resizeEm.exit, %.noexc26, %_ZNK4LIEF12BinaryStream4readIjEEN2tl8expectedIT_11lief_errorsEEv.exit.thread, %.thread, %_ZN4LIEF7logging6Logger3errIJjiEEEvPKcDpRKT_.exit, %_ZN4LIEF10SpanStream11from_vectorERKSt6vectorIhSaIhEE.exit + %126 = load i8, ptr %15, align 8 + %127 = trunc i8 %126 to i1 + br i1 %127, label %128, label %_ZN2tl8expectedIN4LIEF10SpanStreamE11lief_errorsED2Ev.exit -126: ; preds = %.loopexit +128: ; preds = %.loopexit call void @_ZN4LIEF10SpanStreamD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %7) #19 br label %_ZN2tl8expectedIN4LIEF10SpanStreamE11lief_errorsED2Ev.exit -_ZN2tl8expectedIN4LIEF10SpanStreamE11lief_errorsED2Ev.exit: ; preds = %.loopexit, %126 +_ZN2tl8expectedIN4LIEF10SpanStreamE11lief_errorsED2Ev.exit: ; preds = %.loopexit, %128 ret void -.loopexit.split-lp: ; preds = %.loopexit54, %.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %.body - %.pn = phi { ptr, i32 } [ %eh.lpad-body, %.body ], [ %lpad.loopexit, %.loopexit54 ], [ %lpad.loopexit55, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp56, %.loopexit.split-lp.loopexit.split-lp ] - %127 = load i8, ptr %15, align 8 - %128 = trunc i8 %127 to i1 - br i1 %128, label %common.resume.sink.split, label %common.resume +.loopexit.split-lp: ; preds = %.loopexit55, %.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %.body + %.pn = phi { ptr, i32 } [ %eh.lpad-body, %.body ], [ %lpad.loopexit, %.loopexit55 ], [ %lpad.loopexit56, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp57, %.loopexit.split-lp.loopexit.split-lp ] + %129 = load i8, ptr %15, align 8 + %130 = trunc i8 %129 to i1 + br i1 %130, label %common.resume.sink.split, label %common.resume } ; Function Attrs: mustprogress uwtable @@ -27543,9 +27549,9 @@ _ZN3fmt2v96detail12count_digitsILi3EmEEiT0_.exit: ; preds = %.preheader 349: ; preds = %346 %.not.i208 = icmp eq i32 %2, 0 - %350 = select i1 %.not.i208, i32 48, i32 12288 - %351 = or i32 %350, %2 - %352 = add i32 %351, 16777216 + %350 = or i32 %2, 12288 + %351 = add i32 %350, 16777216 + %352 = select i1 %.not.i208, i32 16777264, i32 %351 br label %_ZN3fmt2v96detail12count_digitsILi3EmEEiT0_.exit._crit_edge _ZN3fmt2v96detail12count_digitsILi3EmEEiT0_.exit._crit_edge: ; preds = %_ZN3fmt2v96detail12count_digitsILi3EmEEiT0_.exit, %349, %346 @@ -30251,9 +30257,9 @@ _ZN3fmt2v96detail12count_digitsILi3EoEEiT0_.exit: ; preds = %.preheader 359: ; preds = %356 %.not.i231 = icmp eq i32 %.sroa.28.0.copyload, 0 - %360 = select i1 %.not.i231, i32 48, i32 12288 - %361 = or i32 %360, %.sroa.28.0.copyload - %362 = add i32 %361, 16777216 + %360 = or i32 %.sroa.28.0.copyload, 12288 + %361 = add i32 %360, 16777216 + %362 = select i1 %.not.i231, i32 16777264, i32 %361 br label %_ZN3fmt2v96detail12count_digitsILi3EoEEiT0_.exit._crit_edge _ZN3fmt2v96detail12count_digitsILi3EoEEiT0_.exit._crit_edge: ; preds = %_ZN3fmt2v96detail12count_digitsILi3EoEEiT0_.exit, %359, %356 diff --git a/bench/lief/optimized/Note.cpp.ll b/bench/lief/optimized/Note.cpp.ll index bb593d4a5be..17143488ff6 100644 --- a/bench/lief/optimized/Note.cpp.ll +++ b/bench/lief/optimized/Note.cpp.ll @@ -1325,7 +1325,7 @@ _ZN4LIEF10SpanStream11from_vectorERKSt6vectorIhSaIhEE.exit: ; preds = %2 12: ; preds = %_ZN4LIEF10SpanStream11from_vectorERKSt6vectorIhSaIhEE.exit %13 = load i32, ptr %5, align 8 - br label %28 + br label %30 14: ; preds = %.noexc7, %.noexc6, %.noexc5, %.noexc4, %.noexc3, %.noexc, %18 %15 = landingpad { ptr, i32 } @@ -1372,22 +1372,26 @@ _ZN4LIEF10SpanStream11from_vectorERKSt6vectorIhSaIhEE.exit: ; preds = %2 _ZNK4LIEF12BinaryStream4peekIjEEN2tl8expectedIT_11lief_errorsEEm.exit: ; preds = %.noexc7 %27 = and i64 %25, 4294967296 %.not.i.i = icmp eq i64 %27, 0 - %.sroa.010.0.extract.trunc = select i1 %.not.i.i, i32 1, i32 %26 + %28 = zext i32 %26 to i64 + %29 = or disjoint i64 %27, %28 + %.sroa.03.0.insert.insert.i.i = select i1 %.not.i.i, i64 1, i64 %29 + %.sroa.010.0.extract.trunc = trunc i64 %.sroa.03.0.insert.insert.i.i to i32 + %.sroa.3.0.extract.shift = and i64 %.sroa.03.0.insert.insert.i.i, 4294967296 %.pre = load i8, ptr %9, align 8 - br label %28 + br label %30 -28: ; preds = %_ZNK4LIEF12BinaryStream4peekIjEEN2tl8expectedIT_11lief_errorsEEm.exit, %12 - %29 = phi i8 [ %.pre, %_ZNK4LIEF12BinaryStream4peekIjEEN2tl8expectedIT_11lief_errorsEEm.exit ], [ %10, %12 ] - %.sroa.3.0 = phi i64 [ %27, %_ZNK4LIEF12BinaryStream4peekIjEEN2tl8expectedIT_11lief_errorsEEm.exit ], [ 0, %12 ] +30: ; preds = %_ZNK4LIEF12BinaryStream4peekIjEEN2tl8expectedIT_11lief_errorsEEm.exit, %12 + %31 = phi i8 [ %.pre, %_ZNK4LIEF12BinaryStream4peekIjEEN2tl8expectedIT_11lief_errorsEEm.exit ], [ %10, %12 ] + %.sroa.3.0 = phi i64 [ %.sroa.3.0.extract.shift, %_ZNK4LIEF12BinaryStream4peekIjEEN2tl8expectedIT_11lief_errorsEEm.exit ], [ 0, %12 ] %.sroa.010.0 = phi i32 [ %.sroa.010.0.extract.trunc, %_ZNK4LIEF12BinaryStream4peekIjEEN2tl8expectedIT_11lief_errorsEEm.exit ], [ %13, %12 ] - %30 = trunc i8 %29 to i1 - br i1 %30, label %31, label %_ZN2tl8expectedIN4LIEF10SpanStreamE11lief_errorsED2Ev.exit9 + %32 = trunc i8 %31 to i1 + br i1 %32, label %33, label %_ZN2tl8expectedIN4LIEF10SpanStreamE11lief_errorsED2Ev.exit9 -31: ; preds = %28 +33: ; preds = %30 call void @_ZN4LIEF10SpanStreamD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %5) #20 br label %_ZN2tl8expectedIN4LIEF10SpanStreamE11lief_errorsED2Ev.exit9 -_ZN2tl8expectedIN4LIEF10SpanStreamE11lief_errorsED2Ev.exit9: ; preds = %28, %31 +_ZN2tl8expectedIN4LIEF10SpanStreamE11lief_errorsED2Ev.exit9: ; preds = %30, %33 %.sroa.010.0.insert.ext = zext i32 %.sroa.010.0 to i64 %.sroa.010.0.insert.insert = or disjoint i64 %.sroa.3.0, %.sroa.010.0.insert.ext ret i64 %.sroa.010.0.insert.insert @@ -1431,7 +1435,7 @@ _ZN4LIEF10SpanStream11from_vectorERKSt6vectorIhSaIhEE.exit: ; preds = %2 12: ; preds = %_ZN4LIEF10SpanStream11from_vectorERKSt6vectorIhSaIhEE.exit %13 = load i32, ptr %5, align 8 - br label %28 + br label %30 14: ; preds = %.noexc7, %.noexc6, %.noexc5, %.noexc4, %.noexc3, %.noexc, %18 %15 = landingpad { ptr, i32 } @@ -1478,22 +1482,26 @@ _ZN4LIEF10SpanStream11from_vectorERKSt6vectorIhSaIhEE.exit: ; preds = %2 _ZNK4LIEF12BinaryStream4peekIiEEN2tl8expectedIT_11lief_errorsEEm.exit: ; preds = %.noexc7 %27 = and i64 %25, 4294967296 %.not.i.i = icmp eq i64 %27, 0 - %.sroa.010.0.extract.trunc = select i1 %.not.i.i, i32 1, i32 %26 + %28 = zext i32 %26 to i64 + %29 = or disjoint i64 %27, %28 + %.sroa.03.0.insert.insert.i.i = select i1 %.not.i.i, i64 1, i64 %29 + %.sroa.010.0.extract.trunc = trunc i64 %.sroa.03.0.insert.insert.i.i to i32 + %.sroa.3.0.extract.shift = and i64 %.sroa.03.0.insert.insert.i.i, 4294967296 %.pre = load i8, ptr %9, align 8 - br label %28 + br label %30 -28: ; preds = %_ZNK4LIEF12BinaryStream4peekIiEEN2tl8expectedIT_11lief_errorsEEm.exit, %12 - %29 = phi i8 [ %.pre, %_ZNK4LIEF12BinaryStream4peekIiEEN2tl8expectedIT_11lief_errorsEEm.exit ], [ %10, %12 ] - %.sroa.3.0 = phi i64 [ %27, %_ZNK4LIEF12BinaryStream4peekIiEEN2tl8expectedIT_11lief_errorsEEm.exit ], [ 0, %12 ] +30: ; preds = %_ZNK4LIEF12BinaryStream4peekIiEEN2tl8expectedIT_11lief_errorsEEm.exit, %12 + %31 = phi i8 [ %.pre, %_ZNK4LIEF12BinaryStream4peekIiEEN2tl8expectedIT_11lief_errorsEEm.exit ], [ %10, %12 ] + %.sroa.3.0 = phi i64 [ %.sroa.3.0.extract.shift, %_ZNK4LIEF12BinaryStream4peekIiEEN2tl8expectedIT_11lief_errorsEEm.exit ], [ 0, %12 ] %.sroa.010.0 = phi i32 [ %.sroa.010.0.extract.trunc, %_ZNK4LIEF12BinaryStream4peekIiEEN2tl8expectedIT_11lief_errorsEEm.exit ], [ %13, %12 ] - %30 = trunc i8 %29 to i1 - br i1 %30, label %31, label %_ZN2tl8expectedIN4LIEF10SpanStreamE11lief_errorsED2Ev.exit9 + %32 = trunc i8 %31 to i1 + br i1 %32, label %33, label %_ZN2tl8expectedIN4LIEF10SpanStreamE11lief_errorsED2Ev.exit9 -31: ; preds = %28 +33: ; preds = %30 call void @_ZN4LIEF10SpanStreamD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %5) #20 br label %_ZN2tl8expectedIN4LIEF10SpanStreamE11lief_errorsED2Ev.exit9 -_ZN2tl8expectedIN4LIEF10SpanStreamE11lief_errorsED2Ev.exit9: ; preds = %28, %31 +_ZN2tl8expectedIN4LIEF10SpanStreamE11lief_errorsED2Ev.exit9: ; preds = %30, %33 %.sroa.010.0.insert.ext = zext i32 %.sroa.010.0 to i64 %.sroa.010.0.insert.insert = or disjoint i64 %.sroa.3.0, %.sroa.010.0.insert.ext ret i64 %.sroa.010.0.insert.insert @@ -31659,9 +31667,9 @@ _ZN3fmt2v96detail12count_digitsILi3EmEEiT0_.exit: ; preds = %.preheader 349: ; preds = %346 %.not.i208 = icmp eq i32 %2, 0 - %350 = select i1 %.not.i208, i32 48, i32 12288 - %351 = or i32 %350, %2 - %352 = add i32 %351, 16777216 + %350 = or i32 %2, 12288 + %351 = add i32 %350, 16777216 + %352 = select i1 %.not.i208, i32 16777264, i32 %351 br label %_ZN3fmt2v96detail12count_digitsILi3EmEEiT0_.exit._crit_edge _ZN3fmt2v96detail12count_digitsILi3EmEEiT0_.exit._crit_edge: ; preds = %_ZN3fmt2v96detail12count_digitsILi3EmEEiT0_.exit, %349, %346 @@ -34367,9 +34375,9 @@ _ZN3fmt2v96detail12count_digitsILi3EoEEiT0_.exit: ; preds = %.preheader 359: ; preds = %356 %.not.i231 = icmp eq i32 %.sroa.28.0.copyload, 0 - %360 = select i1 %.not.i231, i32 48, i32 12288 - %361 = or i32 %360, %.sroa.28.0.copyload - %362 = add i32 %361, 16777216 + %360 = or i32 %.sroa.28.0.copyload, 12288 + %361 = add i32 %360, 16777216 + %362 = select i1 %.not.i231, i32 16777264, i32 %361 br label %_ZN3fmt2v96detail12count_digitsILi3EoEEiT0_.exit._crit_edge _ZN3fmt2v96detail12count_digitsILi3EoEEiT0_.exit._crit_edge: ; preds = %_ZN3fmt2v96detail12count_digitsILi3EoEEiT0_.exit, %359, %356 diff --git a/bench/lief/optimized/ResourcesParser.cpp.ll b/bench/lief/optimized/ResourcesParser.cpp.ll index 8c97c82d8bc..559e3972f92 100644 --- a/bench/lief/optimized/ResourcesParser.cpp.ll +++ b/bench/lief/optimized/ResourcesParser.cpp.ll @@ -3000,7 +3000,7 @@ define hidden noundef i64 @_ZN4LIEF2PE15ResourcesParser19parse_var_file_infoERNS 33: ; preds = %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEED2Ev.exit, %2 %34 = call noundef zeroext i1 @_ZNK4LIEF12BinaryStreamcvbEv(ptr noundef nonnull align 8 dereferenceable(24) %1) - br i1 %34, label %35, label %213 + br i1 %34, label %35, label %214 35: ; preds = %33 store i16 0, ptr %19, align 2 @@ -3059,7 +3059,7 @@ _ZN4LIEF7logging6Logger5debugIJtEEEvPKcDpRKT_.exit: ; preds = %.noexc23 47: ; preds = %.noexc54, %_ZNK4LIEF12BinaryStream4readItEEN2tl8expectedIT_11lief_errorsEEv.exit48.thread, %.noexc52, %79, %.noexc49, %_ZNK4LIEF12BinaryStream4readItEEN2tl8expectedIT_11lief_errorsEEv.exit48, %74, %.noexc45, %.noexc44, %.noexc43, %65, %.noexc38, %_ZNK4LIEF12BinaryStream4readItEEN2tl8expectedIT_11lief_errorsEEv.exit34.thread, %.noexc35, %_ZNK4LIEF12BinaryStream4readItEEN2tl8expectedIT_11lief_errorsEEv.exit34, %60, %.noexc31, %.noexc30, %.noexc29, %51, %.noexc25, %_ZNK4LIEF12BinaryStream4readItEEN2tl8expectedIT_11lief_errorsEEv.exit.thread, %.noexc23, %_ZNK4LIEF12BinaryStream4readItEEN2tl8expectedIT_11lief_errorsEEv.exit, %44, %.noexc20, %.noexc19, %.noexc, %35, %84 %48 = landingpad { ptr, i32 } cleanup - br label %_ZN2tl8expectedINSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEEE11lief_errorsED2Ev.exit80 + br label %_ZN2tl8expectedINSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEEE11lief_errorsED2Ev.exit82 _ZNK4LIEF12BinaryStream4readItEEN2tl8expectedIT_11lief_errorsEEv.exit.thread: ; preds = %.noexc21 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) @@ -3226,7 +3226,7 @@ _ZN4LIEF7logging6Logger3errIJEEEvPKcDpRKT_.exit56: ; preds = %.noexc54 85: ; preds = %84 %86 = load i8, ptr %29, align 8 %87 = trunc i8 %86 to i1 - br i1 %87, label %88, label %185 + br i1 %87, label %88, label %186 88: ; preds = %85 %89 = load i64, ptr %30, align 8 @@ -3252,7 +3252,7 @@ _ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE8capacityEv.exit.i.i.i: 100: ; preds = %98 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.230) #23 - to label %.noexc57 unwind label %.loopexit.split-lp126 + to label %.noexc57 unwind label %.loopexit.split-lp128 .noexc57: ; preds = %100 unreachable @@ -3265,7 +3265,7 @@ _ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE9_M_createERmm.exit.i.i. %103 = shl nuw nsw i64 %.0.i.i.i, 1 %104 = add nuw nsw i64 %103, 2 %105 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %104) #24 - to label %.noexc58 unwind label %.loopexit125 + to label %.noexc58 unwind label %.loopexit127 .noexc58: ; preds = %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE9_M_createERmm.exit.i.i.i br i1 %91, label %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.thread.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.i.i.i.i @@ -3319,7 +3319,7 @@ _ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_copyEPDsPKDsm.exit.i %.sink.i.i.i = phi ptr [ %116, %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_copyEPDsPKDsm.exit.i.i.i ], [ %90, %.split.i.i.i ] store i16 0, ptr %.sink.i.i.i, align 2 invoke void @_ZN4LIEF7u16tou8ERKNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEEEb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %24, ptr noundef nonnull align 8 dereferenceable(32) %22, i1 noundef zeroext false) - to label %118 unwind label %.loopexit125 + to label %118 unwind label %.loopexit127 118: ; preds = %117 %119 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN4LIEF7logging6Logger8instanceEv() @@ -3353,35 +3353,35 @@ _ZN4LIEF7logging6Logger4warnIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcE call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) br label %126 -.loopexit125: ; preds = %117, %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE9_M_createERmm.exit.i.i.i, %185, %.noexc75 - %lpad.loopexit127 = landingpad { ptr, i32 } +.loopexit127: ; preds = %117, %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE9_M_createERmm.exit.i.i.i, %186, %.noexc77 + %lpad.loopexit129 = landingpad { ptr, i32 } cleanup - br label %201 + br label %202 -.loopexit.split-lp126: ; preds = %100 - %lpad.loopexit.split-lp128 = landingpad { ptr, i32 } +.loopexit.split-lp128: ; preds = %100 + %lpad.loopexit.split-lp130 = landingpad { ptr, i32 } cleanup - br label %201 + br label %202 -.loopexit124: ; preds = %.lr.ph, %.noexc63, %.noexc64, %.noexc65, %140, %141, %.noexc68, %167 +.loopexit126: ; preds = %.lr.ph, %.noexc65, %.noexc66, %.noexc67, %142, %_ZNK4LIEF12BinaryStream4readIjEEN2tl8expectedIT_11lief_errorsEEv.exit, %.noexc70, %168 %lpad.loopexit = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit: ; preds = %.noexc73, %179, %.noexc61, %123, %.noexc59, %118, %126 - %lpad.loopexit130 = landingpad { ptr, i32 } +.loopexit.split-lp.loopexit: ; preds = %.noexc75, %180, %.noexc61, %123, %.noexc59, %118, %126 + %lpad.loopexit132 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit.split-lp: ; preds = %161 - %lpad.loopexit.split-lp131 = landingpad { ptr, i32 } +.loopexit.split-lp.loopexit.split-lp: ; preds = %162 + %lpad.loopexit.split-lp133 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -.loopexit.split-lp: ; preds = %.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp, %.loopexit124 - %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit124 ], [ %lpad.loopexit130, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp131, %.loopexit.split-lp.loopexit.split-lp ] +.loopexit.split-lp: ; preds = %.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp, %.loopexit126 + %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit126 ], [ %lpad.loopexit132, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp133, %.loopexit.split-lp.loopexit.split-lp ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #21 - br label %201 + br label %202 126: ; preds = %_ZN4LIEF7logging6Logger4warnIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEvPKcDpRKT_.exit, %121 %127 = invoke noundef i64 @_ZNK4LIEF12BinaryStream5alignEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 4) @@ -3392,254 +3392,259 @@ _ZN4LIEF7logging6Logger4warnIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcE %130 = lshr i16 %129, 2 %131 = zext nneg i16 %130 to i64 store i64 0, ptr %25, align 8 - %.not149 = icmp ult i16 %129, 4 - br i1 %.not149, label %.loopexit, label %.lr.ph + %.not151 = icmp ult i16 %129, 4 + br i1 %.not151, label %.loopexit, label %.lr.ph .lr.ph: ; preds = %128, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit store i32 0, ptr %26, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) %132 = invoke noundef i64 @_ZNK4LIEF12BinaryStream3posEv(ptr noundef nonnull align 8 dereferenceable(24) %1) - to label %.noexc63 unwind label %.loopexit124 + to label %.noexc65 unwind label %.loopexit126 -.noexc63: ; preds = %.lr.ph +.noexc65: ; preds = %.lr.ph store i32 0, ptr %6, align 4 %133 = invoke noundef i64 @_ZNK4LIEF12BinaryStream3posEv(ptr noundef nonnull align 8 dereferenceable(24) %1) - to label %.noexc64 unwind label %.loopexit124 + to label %.noexc66 unwind label %.loopexit126 -.noexc64: ; preds = %.noexc63 +.noexc66: ; preds = %.noexc65 %134 = load ptr, ptr %1, align 8 %135 = getelementptr inbounds i8, ptr %134, i64 96 %136 = load ptr, ptr %135, align 8 %137 = invoke i64 %136(ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull %6, i64 noundef %133, i64 noundef 4) - to label %.noexc65 unwind label %.loopexit124 + to label %.noexc67 unwind label %.loopexit126 -.noexc65: ; preds = %.noexc64 +.noexc67: ; preds = %.noexc66 invoke void @_ZNK4LIEF12BinaryStream6setposEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %132) - to label %.noexc66 unwind label %.loopexit124 + to label %.noexc68 unwind label %.loopexit126 -.noexc66: ; preds = %.noexc65 - %138 = load i32, ptr %6, align 4 +.noexc68: ; preds = %.noexc67 + %138 = and i64 %137, 4294967296 + %.not.i.i63 = icmp eq i64 %138, 0 + %139 = load i32, ptr %6, align 4 + %140 = zext i32 %139 to i64 + %141 = or disjoint i64 %138, %140 + %.sroa.03.0.insert.insert.i.i64 = select i1 %.not.i.i63, i64 1, i64 %141 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) - %139 = and i64 %137, 4294967296 - %.not.i = icmp eq i64 %139, 0 - br i1 %.not.i, label %179, label %140 + %.not.i = icmp ult i64 %.sroa.03.0.insert.insert.i.i64, 4294967296 + br i1 %.not.i, label %180, label %142 -140: ; preds = %.noexc66 +142: ; preds = %.noexc68 invoke void @_ZNK4LIEF12BinaryStream13increment_posEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 4) - to label %141 unwind label %.loopexit124 + to label %_ZNK4LIEF12BinaryStream4readIjEEN2tl8expectedIT_11lief_errorsEEv.exit unwind label %.loopexit126 -141: ; preds = %140 - store i32 %138, ptr %26, align 4 - %142 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN4LIEF7logging6Logger8instanceEv() - to label %.noexc68 unwind label %.loopexit124 +_ZNK4LIEF12BinaryStream4readIjEEN2tl8expectedIT_11lief_errorsEEv.exit: ; preds = %142 + %.sroa.086.0.extract.trunc = trunc i64 %.sroa.03.0.insert.insert.i.i64 to i32 + store i32 %.sroa.086.0.extract.trunc, ptr %26, align 4 + %143 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN4LIEF7logging6Logger8instanceEv() + to label %.noexc70 unwind label %.loopexit126 -.noexc68: ; preds = %141 - %143 = load ptr, ptr %142, align 8 +.noexc70: ; preds = %_ZNK4LIEF12BinaryStream4readIjEEN2tl8expectedIT_11lief_errorsEEv.exit + %144 = load ptr, ptr %143, align 8 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %5, i8 0, i64 24, i1 false) - invoke void @_ZN6spdlog6logger4log_IJRKmRKjEEEvNS_10source_locENS_5level10level_enumEN3fmt2v917basic_string_viewIcEEDpOT_(ptr noundef nonnull align 8 dereferenceable(208) %143, ptr noundef nonnull byval(%"struct.spdlog::source_loc") align 8 %5, i32 noundef 1, ptr nonnull @.str.47, i64 21, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 4 dereferenceable(4) %26) - to label %144 unwind label %.loopexit124 + invoke void @_ZN6spdlog6logger4log_IJRKmRKjEEEvNS_10source_locENS_5level10level_enumEN3fmt2v917basic_string_viewIcEEDpOT_(ptr noundef nonnull align 8 dereferenceable(208) %144, ptr noundef nonnull byval(%"struct.spdlog::source_loc") align 8 %5, i32 noundef 1, ptr nonnull @.str.47, i64 21, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 4 dereferenceable(4) %26) + to label %145 unwind label %.loopexit126 -144: ; preds = %.noexc68 +145: ; preds = %.noexc70 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) - %145 = load ptr, ptr %31, align 8 - %146 = getelementptr inbounds i8, ptr %145, i64 48 - %147 = getelementptr inbounds i8, ptr %145, i64 56 - %148 = load ptr, ptr %147, align 8 - %149 = getelementptr inbounds i8, ptr %145, i64 64 - %150 = load ptr, ptr %149, align 8 - %.not.i70 = icmp eq ptr %148, %150 - br i1 %.not.i70, label %155, label %151 - -151: ; preds = %144 - %152 = load i32, ptr %26, align 4 - store i32 %152, ptr %148, align 4 - %153 = load ptr, ptr %147, align 8 - %154 = getelementptr inbounds i8, ptr %153, i64 4 - store ptr %154, ptr %147, align 8 + %146 = load ptr, ptr %31, align 8 + %147 = getelementptr inbounds i8, ptr %146, i64 48 + %148 = getelementptr inbounds i8, ptr %146, i64 56 + %149 = load ptr, ptr %148, align 8 + %150 = getelementptr inbounds i8, ptr %146, i64 64 + %151 = load ptr, ptr %150, align 8 + %.not.i72 = icmp eq ptr %149, %151 + br i1 %.not.i72, label %156, label %152 + +152: ; preds = %145 + %153 = load i32, ptr %26, align 4 + store i32 %153, ptr %149, align 4 + %154 = load ptr, ptr %148, align 8 + %155 = getelementptr inbounds i8, ptr %154, i64 4 + store ptr %155, ptr %148, align 8 br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit -155: ; preds = %144 - %156 = load ptr, ptr %146, align 8 - %157 = ptrtoint ptr %148 to i64 - %158 = ptrtoint ptr %156 to i64 - %159 = sub i64 %157, %158 - %160 = icmp eq i64 %159, 9223372036854775804 - br i1 %160, label %161, label %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i +156: ; preds = %145 + %157 = load ptr, ptr %147, align 8 + %158 = ptrtoint ptr %149 to i64 + %159 = ptrtoint ptr %157 to i64 + %160 = sub i64 %158, %159 + %161 = icmp eq i64 %160, 9223372036854775804 + br i1 %161, label %162, label %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i -161: ; preds = %155 +162: ; preds = %156 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.128) #23 - to label %.noexc71 unwind label %.loopexit.split-lp.loopexit.split-lp + to label %.noexc73 unwind label %.loopexit.split-lp.loopexit.split-lp -.noexc71: ; preds = %161 +.noexc73: ; preds = %162 unreachable -_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i: ; preds = %155 - %162 = ashr exact i64 %159, 2 - %.sroa.speculated.i.i.i = call i64 @llvm.umax.i64(i64 %162, i64 1) - %163 = add nsw i64 %.sroa.speculated.i.i.i, %162 - %164 = icmp ult i64 %163, %162 - %165 = call i64 @llvm.umin.i64(i64 %163, i64 2305843009213693951) - %166 = select i1 %164, i64 2305843009213693951, i64 %165 - %.not.i.i.i = icmp eq i64 %166, 0 - br i1 %.not.i.i.i, label %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i, label %167 - -167: ; preds = %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i - %168 = shl nuw nsw i64 %166, 2 - %169 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %168) #24 - to label %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i unwind label %.loopexit124 - -_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i: ; preds = %167, %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i - %170 = phi ptr [ null, %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i ], [ %169, %167 ] - %171 = getelementptr inbounds i32, ptr %170, i64 %162 - %172 = load i32, ptr %26, align 4 - store i32 %172, ptr %171, align 4 - %173 = icmp sgt i64 %159, 0 - br i1 %173, label %174, label %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit16.i.i - -174: ; preds = %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %170, ptr align 4 %156, i64 %159, i1 false) +_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i: ; preds = %156 + %163 = ashr exact i64 %160, 2 + %.sroa.speculated.i.i.i = call i64 @llvm.umax.i64(i64 %163, i64 1) + %164 = add nsw i64 %.sroa.speculated.i.i.i, %163 + %165 = icmp ult i64 %164, %163 + %166 = call i64 @llvm.umin.i64(i64 %164, i64 2305843009213693951) + %167 = select i1 %165, i64 2305843009213693951, i64 %166 + %.not.i.i.i = icmp eq i64 %167, 0 + br i1 %.not.i.i.i, label %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i, label %168 + +168: ; preds = %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i + %169 = shl nuw nsw i64 %167, 2 + %170 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %169) #24 + to label %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i unwind label %.loopexit126 + +_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i: ; preds = %168, %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i + %171 = phi ptr [ null, %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i ], [ %170, %168 ] + %172 = getelementptr inbounds i32, ptr %171, i64 %163 + %173 = load i32, ptr %26, align 4 + store i32 %173, ptr %172, align 4 + %174 = icmp sgt i64 %160, 0 + br i1 %174, label %175, label %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit16.i.i + +175: ; preds = %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %171, ptr align 4 %157, i64 %160, i1 false) br label %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit16.i.i -_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit16.i.i: ; preds = %174, %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i - %175 = getelementptr inbounds i8, ptr %170, i64 %159 - %176 = getelementptr inbounds i8, ptr %175, i64 4 - %.not.i17.i.i = icmp eq ptr %156, null - br i1 %.not.i17.i.i, label %_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i, label %177 +_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit16.i.i: ; preds = %175, %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i + %176 = getelementptr inbounds i8, ptr %171, i64 %160 + %177 = getelementptr inbounds i8, ptr %176, i64 4 + %.not.i17.i.i = icmp eq ptr %157, null + br i1 %.not.i17.i.i, label %_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i, label %178 -177: ; preds = %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit16.i.i - call void @_ZdlPv(ptr noundef nonnull %156) #22 +178: ; preds = %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit16.i.i + call void @_ZdlPv(ptr noundef nonnull %157) #22 br label %_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i -_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i: ; preds = %177, %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit16.i.i - store ptr %170, ptr %146, align 8 - store ptr %176, ptr %147, align 8 - %178 = getelementptr inbounds i32, ptr %170, i64 %166 - store ptr %178, ptr %149, align 8 +_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i: ; preds = %178, %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit16.i.i + store ptr %171, ptr %147, align 8 + store ptr %177, ptr %148, align 8 + %179 = getelementptr inbounds i32, ptr %171, i64 %167 + store ptr %179, ptr %150, align 8 br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit -179: ; preds = %.noexc66 - %180 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN4LIEF7logging6Logger8instanceEv() - to label %.noexc73 unwind label %.loopexit.split-lp.loopexit +180: ; preds = %.noexc68 + %181 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN4LIEF7logging6Logger8instanceEv() + to label %.noexc75 unwind label %.loopexit.split-lp.loopexit -.noexc73: ; preds = %179 - %181 = load ptr, ptr %180, align 8 +.noexc75: ; preds = %180 + %182 = load ptr, ptr %181, align 8 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %4, i8 0, i64 24, i1 false) - invoke void @_ZN6spdlog6logger4log_IJRKmEEEvNS_10source_locENS_5level10level_enumEN3fmt2v917basic_string_viewIcEEDpOT_(ptr noundef nonnull align 8 dereferenceable(208) %181, ptr noundef nonnull byval(%"struct.spdlog::source_loc") align 8 %4, i32 noundef 3, ptr nonnull @.str.48, i64 24, ptr noundef nonnull align 8 dereferenceable(8) %25) + invoke void @_ZN6spdlog6logger4log_IJRKmEEEvNS_10source_locENS_5level10level_enumEN3fmt2v917basic_string_viewIcEEDpOT_(ptr noundef nonnull align 8 dereferenceable(208) %182, ptr noundef nonnull byval(%"struct.spdlog::source_loc") align 8 %4, i32 noundef 3, ptr nonnull @.str.48, i64 24, ptr noundef nonnull align 8 dereferenceable(8) %25) to label %_ZN4LIEF7logging6Logger4warnIJmEEEvPKcDpRKT_.exit unwind label %.loopexit.split-lp.loopexit -_ZN4LIEF7logging6Logger4warnIJmEEEvPKcDpRKT_.exit: ; preds = %.noexc73 +_ZN4LIEF7logging6Logger4warnIJmEEEvPKcDpRKT_.exit: ; preds = %.noexc75 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) br label %.loopexit -_ZNSt6vectorIjSaIjEE9push_backERKj.exit: ; preds = %_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i, %151 - %182 = load i64, ptr %25, align 8 - %183 = add i64 %182, 1 - store i64 %183, ptr %25, align 8 - %184 = icmp ult i64 %183, %131 - br i1 %184, label %.lr.ph, label %.loopexit, !llvm.loop !7 +_ZNSt6vectorIjSaIjEE9push_backERKj.exit: ; preds = %_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i, %152 + %183 = load i64, ptr %25, align 8 + %184 = add i64 %183, 1 + store i64 %184, ptr %25, align 8 + %185 = icmp ult i64 %184, %131 + br i1 %185, label %.lr.ph, label %.loopexit, !llvm.loop !7 .loopexit: ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit, %128, %_ZN4LIEF7logging6Logger4warnIJmEEEvPKcDpRKT_.exit call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #21 - br label %189 + br label %190 -185: ; preds = %85 +186: ; preds = %85 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) store ptr @.str.49, ptr %3, align 8 - %186 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN4LIEF7logging6Logger8instanceEv() - to label %.noexc75 unwind label %.loopexit125 + %187 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN4LIEF7logging6Logger8instanceEv() + to label %.noexc77 unwind label %.loopexit127 -.noexc75: ; preds = %185 - %187 = load ptr, ptr %186, align 8 - invoke void @_ZN6spdlog6logger3logIPKcEEvNS_5level10level_enumERKT_(ptr noundef nonnull align 8 dereferenceable(208) %187, i32 noundef 4, ptr noundef nonnull align 8 dereferenceable(8) %3) - to label %188 unwind label %.loopexit125 +.noexc77: ; preds = %186 + %188 = load ptr, ptr %187, align 8 + invoke void @_ZN6spdlog6logger3logIPKcEEvNS_5level10level_enumERKT_(ptr noundef nonnull align 8 dereferenceable(208) %188, i32 noundef 4, ptr noundef nonnull align 8 dereferenceable(8) %3) + to label %189 unwind label %.loopexit127 -188: ; preds = %.noexc75 +189: ; preds = %.noexc77 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) - br label %189 + br label %190 -189: ; preds = %.loopexit, %188 - %190 = load i8, ptr %29, align 8 - %191 = trunc i8 %190 to i1 - br i1 %191, label %192, label %_ZN2tl8expectedINSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEEE11lief_errorsED2Ev.exit +190: ; preds = %.loopexit, %189 + %191 = load i8, ptr %29, align 8 + %192 = trunc i8 %191 to i1 + br i1 %192, label %193, label %_ZN2tl8expectedINSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEEE11lief_errorsED2Ev.exit -192: ; preds = %189 - %193 = load ptr, ptr %23, align 8 - %194 = icmp eq ptr %193, %32 - br i1 %194, label %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.i.i.i.i.i.i.i.i.i - -_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i.i.i: ; preds = %192 - %195 = load i64, ptr %30, align 8 - %196 = icmp ult i64 %195, 8 - call void @llvm.assume(i1 %196) +193: ; preds = %190 + %194 = load ptr, ptr %23, align 8 + %195 = icmp eq ptr %194, %32 + br i1 %195, label %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.i.i.i.i.i.i.i.i.i + +_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i.i.i: ; preds = %193 + %196 = load i64, ptr %30, align 8 + %197 = icmp ult i64 %196, 8 + call void @llvm.assume(i1 %197) br label %_ZN2tl8expectedINSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEEE11lief_errorsED2Ev.exit -_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.i.i.i.i.i.i.i.i.i: ; preds = %192 - call void @_ZdlPv(ptr noundef %193) #22 +_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.i.i.i.i.i.i.i.i.i: ; preds = %193 + call void @_ZdlPv(ptr noundef %194) #22 br label %_ZN2tl8expectedINSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEEE11lief_errorsED2Ev.exit -_ZN2tl8expectedINSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEEE11lief_errorsED2Ev.exit: ; preds = %189, %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i.i.i, %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.i.i.i.i.i.i.i.i.i - %197 = load ptr, ptr %22, align 8 - %198 = icmp eq ptr %197, %27 - br i1 %198, label %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.i.i +_ZN2tl8expectedINSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEEE11lief_errorsED2Ev.exit: ; preds = %190, %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i.i.i, %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.i.i.i.i.i.i.i.i.i + %198 = load ptr, ptr %22, align 8 + %199 = icmp eq ptr %198, %27 + br i1 %199, label %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.i.i _ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.thread.i.i: ; preds = %_ZN2tl8expectedINSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEEE11lief_errorsED2Ev.exit - %199 = load i64, ptr %28, align 8 - %200 = icmp ult i64 %199, 8 - call void @llvm.assume(i1 %200) + %200 = load i64, ptr %28, align 8 + %201 = icmp ult i64 %200, 8 + call void @llvm.assume(i1 %201) br label %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEED2Ev.exit _ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.i.i: ; preds = %_ZN2tl8expectedINSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEEE11lief_errorsED2Ev.exit - call void @_ZdlPv(ptr noundef %197) #22 + call void @_ZdlPv(ptr noundef %198) #22 br label %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEED2Ev.exit _ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEED2Ev.exit: ; preds = %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.thread.i.i, %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.i.i - br i1 %87, label %33, label %213 + br i1 %87, label %33, label %214 -201: ; preds = %.loopexit125, %.loopexit.split-lp126, %.loopexit.split-lp - %.pn = phi { ptr, i32 } [ %lpad.phi, %.loopexit.split-lp ], [ %lpad.loopexit127, %.loopexit125 ], [ %lpad.loopexit.split-lp128, %.loopexit.split-lp126 ] - %202 = load i8, ptr %29, align 8 - %203 = trunc i8 %202 to i1 - br i1 %203, label %204, label %_ZN2tl8expectedINSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEEE11lief_errorsED2Ev.exit80 +202: ; preds = %.loopexit127, %.loopexit.split-lp128, %.loopexit.split-lp + %.pn = phi { ptr, i32 } [ %lpad.phi, %.loopexit.split-lp ], [ %lpad.loopexit129, %.loopexit127 ], [ %lpad.loopexit.split-lp130, %.loopexit.split-lp128 ] + %203 = load i8, ptr %29, align 8 + %204 = trunc i8 %203 to i1 + br i1 %204, label %205, label %_ZN2tl8expectedINSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEEE11lief_errorsED2Ev.exit82 -204: ; preds = %201 - %205 = load ptr, ptr %23, align 8 - %206 = icmp eq ptr %205, %32 - br i1 %206, label %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i.i.i79, label %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.i.i.i.i.i.i.i.i.i78 +205: ; preds = %202 + %206 = load ptr, ptr %23, align 8 + %207 = icmp eq ptr %206, %32 + br i1 %207, label %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i.i.i81, label %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.i.i.i.i.i.i.i.i.i80 -_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i.i.i79: ; preds = %204 - %207 = load i64, ptr %30, align 8 - %208 = icmp ult i64 %207, 8 - call void @llvm.assume(i1 %208) - br label %_ZN2tl8expectedINSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEEE11lief_errorsED2Ev.exit80 +_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i.i.i81: ; preds = %205 + %208 = load i64, ptr %30, align 8 + %209 = icmp ult i64 %208, 8 + call void @llvm.assume(i1 %209) + br label %_ZN2tl8expectedINSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEEE11lief_errorsED2Ev.exit82 -_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.i.i.i.i.i.i.i.i.i78: ; preds = %204 - call void @_ZdlPv(ptr noundef %205) #22 - br label %_ZN2tl8expectedINSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEEE11lief_errorsED2Ev.exit80 +_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.i.i.i.i.i.i.i.i.i80: ; preds = %205 + call void @_ZdlPv(ptr noundef %206) #22 + br label %_ZN2tl8expectedINSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEEE11lief_errorsED2Ev.exit82 -_ZN2tl8expectedINSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEEE11lief_errorsED2Ev.exit80: ; preds = %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.i.i.i.i.i.i.i.i.i78, %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i.i.i79, %201, %47 - %.pn.pn = phi { ptr, i32 } [ %48, %47 ], [ %.pn, %201 ], [ %.pn, %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i.i.i79 ], [ %.pn, %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.i.i.i.i.i.i.i.i.i78 ] - %209 = load ptr, ptr %22, align 8 - %210 = icmp eq ptr %209, %27 - br i1 %210, label %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.thread.i.i82, label %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.i.i81 +_ZN2tl8expectedINSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEEE11lief_errorsED2Ev.exit82: ; preds = %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.i.i.i.i.i.i.i.i.i80, %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i.i.i81, %202, %47 + %.pn.pn = phi { ptr, i32 } [ %48, %47 ], [ %.pn, %202 ], [ %.pn, %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i.i.i81 ], [ %.pn, %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.i.i.i.i.i.i.i.i.i80 ] + %210 = load ptr, ptr %22, align 8 + %211 = icmp eq ptr %210, %27 + br i1 %211, label %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.thread.i.i84, label %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.i.i83 -_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.thread.i.i82: ; preds = %_ZN2tl8expectedINSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEEE11lief_errorsED2Ev.exit80 - %211 = load i64, ptr %28, align 8 - %212 = icmp ult i64 %211, 8 - call void @llvm.assume(i1 %212) - br label %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEED2Ev.exit83 +_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.thread.i.i84: ; preds = %_ZN2tl8expectedINSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEEE11lief_errorsED2Ev.exit82 + %212 = load i64, ptr %28, align 8 + %213 = icmp ult i64 %212, 8 + call void @llvm.assume(i1 %213) + br label %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEED2Ev.exit85 -_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.i.i81: ; preds = %_ZN2tl8expectedINSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEEE11lief_errorsED2Ev.exit80 - call void @_ZdlPv(ptr noundef %209) #22 - br label %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEED2Ev.exit83 +_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.i.i83: ; preds = %_ZN2tl8expectedINSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEEE11lief_errorsED2Ev.exit82 + call void @_ZdlPv(ptr noundef %210) #22 + br label %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEED2Ev.exit85 -_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEED2Ev.exit83: ; preds = %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.thread.i.i82, %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.i.i81 +_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEED2Ev.exit85: ; preds = %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.thread.i.i84, %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.i.i83 resume { ptr, i32 } %.pn.pn -213: ; preds = %33, %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEED2Ev.exit - %.sroa.2104.2 = phi i64 [ 11, %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEED2Ev.exit ], [ 4294967307, %33 ] - ret i64 %.sroa.2104.2 +214: ; preds = %33, %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEED2Ev.exit + %.sroa.2106.2 = phi i64 [ 11, %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEED2Ev.exit ], [ 4294967307, %33 ] + ret i64 %.sroa.2106.2 } ; Function Attrs: mustprogress uwtable @@ -33158,9 +33163,9 @@ _ZN3fmt2v96detail12count_digitsILi3EmEEiT0_.exit: ; preds = %.preheader 349: ; preds = %346 %.not.i208 = icmp eq i32 %2, 0 - %350 = select i1 %.not.i208, i32 48, i32 12288 - %351 = or i32 %350, %2 - %352 = add i32 %351, 16777216 + %350 = or i32 %2, 12288 + %351 = add i32 %350, 16777216 + %352 = select i1 %.not.i208, i32 16777264, i32 %351 br label %_ZN3fmt2v96detail12count_digitsILi3EmEEiT0_.exit._crit_edge _ZN3fmt2v96detail12count_digitsILi3EmEEiT0_.exit._crit_edge: ; preds = %_ZN3fmt2v96detail12count_digitsILi3EmEEiT0_.exit, %349, %346 @@ -35866,9 +35871,9 @@ _ZN3fmt2v96detail12count_digitsILi3EoEEiT0_.exit: ; preds = %.preheader 359: ; preds = %356 %.not.i231 = icmp eq i32 %.sroa.28.0.copyload, 0 - %360 = select i1 %.not.i231, i32 48, i32 12288 - %361 = or i32 %360, %.sroa.28.0.copyload - %362 = add i32 %361, 16777216 + %360 = or i32 %.sroa.28.0.copyload, 12288 + %361 = add i32 %360, 16777216 + %362 = select i1 %.not.i231, i32 16777264, i32 %361 br label %_ZN3fmt2v96detail12count_digitsILi3EoEEiT0_.exit._crit_edge _ZN3fmt2v96detail12count_digitsILi3EoEEiT0_.exit._crit_edge: ; preds = %_ZN3fmt2v96detail12count_digitsILi3EoEEiT0_.exit, %359, %356 diff --git a/bench/linux/optimized/intel_cdclk.ll b/bench/linux/optimized/intel_cdclk.ll index 661b55dda5e..c85b0335ce6 100644 --- a/bench/linux/optimized/intel_cdclk.ll +++ b/bench/linux/optimized/intel_cdclk.ll @@ -2629,15 +2629,15 @@ define dso_local i32 @intel_read_rawclk(ptr noundef %0) local_unnamed_addr #0 al %7 = getelementptr inbounds i8, ptr %0, i64 7544 %8 = load ptr, ptr %7, align 8 tail call void %8(ptr noundef %6, i32 811524, i32 noundef 270864384, i1 noundef zeroext true) #15 - br label %56 + br label %53 9: ; preds = %1 %10 = icmp sgt i32 %3, 8 - br i1 %10, label %56, label %11 + br i1 %10, label %53, label %11 11: ; preds = %9 %12 = icmp sgt i32 %3, 4 - br i1 %12, label %13, label %34 + br i1 %12, label %13, label %31 13: ; preds = %11 %14 = getelementptr inbounds i8, ptr %0, i64 7368 @@ -2647,65 +2647,60 @@ define dso_local i32 @intel_read_rawclk(ptr noundef %0) local_unnamed_addr #0 al %18 = and i32 %17, 256 %19 = icmp eq i32 %18, 0 %20 = select i1 %19, i32 19000, i32 24000 - %.lhs.trunc = trunc nuw nsw i32 %20 to i16 - %21 = udiv i16 %.lhs.trunc, 1000 - %.zext = zext nneg i16 %21 to i32 - %22 = shl nuw nsw i32 %.zext, 16 - br i1 %19, label %23, label %28 + br i1 %19, label %21, label %25 -23: ; preds = %13 - %24 = load i32, ptr %2, align 8 - %25 = icmp sgt i32 %24, 5 - %26 = select i1 %25, i32 268437504, i32 268435456 - %27 = or disjoint i32 %26, %22 - br label %28 +21: ; preds = %13 + %22 = load i32, ptr %2, align 8 + %23 = icmp sgt i32 %22, 5 + %24 = select i1 %23, i32 269682688, i32 269680640 + br label %25 -28: ; preds = %23, %13 - %29 = phi i32 [ 200, %23 ], [ 0, %13 ] - %30 = phi i32 [ %27, %23 ], [ %22, %13 ] - %31 = getelementptr inbounds i8, ptr %0, i64 7544 - %32 = load ptr, ptr %31, align 8 - tail call void %32(ptr noundef %14, i32 811524, i32 noundef %30, i1 noundef zeroext true) #15 - %33 = add nuw nsw i32 %29, %20 - br label %56 +25: ; preds = %21, %13 + %26 = phi i32 [ 200, %21 ], [ 0, %13 ] + %27 = phi i32 [ %24, %21 ], [ 1572864, %13 ] + %28 = getelementptr inbounds i8, ptr %0, i64 7544 + %29 = load ptr, ptr %28, align 8 + tail call void %29(ptr noundef %14, i32 811524, i32 noundef %27, i1 noundef zeroext true) #15 + %30 = add nuw nsw i32 %26, %20 + br label %53 -34: ; preds = %11 - %35 = icmp eq i32 %3, 0 - br i1 %35, label %43, label %36 - -36: ; preds = %34 - %37 = getelementptr inbounds i8, ptr %0, i64 7368 - %38 = getelementptr inbounds i8, ptr %0, i64 7512 - %39 = load ptr, ptr %38, align 8 - %40 = tail call i32 %39(ptr noundef %37, i32 811524, i1 noundef zeroext true) #15 - %41 = and i32 %40, 1023 - %42 = mul nuw nsw i32 %41, 1000 - br label %56 +31: ; preds = %11 + %32 = icmp eq i32 %3, 0 + br i1 %32, label %40, label %33 -43: ; preds = %34 - %44 = getelementptr inbounds i8, ptr %0, i64 7184 - %45 = load i32, ptr %44, align 4 - %46 = and i32 %45, 18874368 - %47 = icmp eq i32 %46, 0 - br i1 %47, label %50, label %48 +33: ; preds = %31 + %34 = getelementptr inbounds i8, ptr %0, i64 7368 + %35 = getelementptr inbounds i8, ptr %0, i64 7512 + %36 = load ptr, ptr %35, align 8 + %37 = tail call i32 %36(ptr noundef %34, i32 811524, i1 noundef zeroext true) #15 + %38 = and i32 %37, 1023 + %39 = mul nuw nsw i32 %38, 1000 + br label %53 -48: ; preds = %43 - %49 = tail call i32 @vlv_get_cck_clock_hpll(ptr noundef %0, ptr noundef nonnull @.str.46, i32 noundef 108) #15 - br label %56 +40: ; preds = %31 + %41 = getelementptr inbounds i8, ptr %0, i64 7184 + %42 = load i32, ptr %41, align 4 + %43 = and i32 %42, 18874368 + %44 = icmp eq i32 %43, 0 + br i1 %44, label %47, label %45 -50: ; preds = %43 - %51 = getelementptr inbounds i8, ptr %0, i64 2632 - %52 = load i16, ptr %51, align 8 - %53 = icmp ugt i16 %52, 2 - br i1 %53, label %54, label %56 +45: ; preds = %40 + %46 = tail call i32 @vlv_get_cck_clock_hpll(ptr noundef %0, ptr noundef nonnull @.str.46, i32 noundef 108) #15 + br label %53 -54: ; preds = %50 - %55 = tail call fastcc i32 @i9xx_hrawclk(ptr noundef %0), !range !61 - br label %56 +47: ; preds = %40 + %48 = getelementptr inbounds i8, ptr %0, i64 2632 + %49 = load i16, ptr %48, align 8 + %50 = icmp ugt i16 %49, 2 + br i1 %50, label %51, label %53 -56: ; preds = %54, %50, %48, %36, %28, %9, %5 - %57 = phi i32 [ 0, %50 ], [ 38400, %5 ], [ %33, %28 ], [ %42, %36 ], [ %49, %48 ], [ %55, %54 ], [ 38400, %9 ] - ret i32 %57 +51: ; preds = %47 + %52 = tail call fastcc i32 @i9xx_hrawclk(ptr noundef %0), !range !61 + br label %53 + +53: ; preds = %51, %47, %45, %33, %25, %9, %5 + %54 = phi i32 [ 0, %47 ], [ 38400, %5 ], [ %30, %25 ], [ %39, %33 ], [ %46, %45 ], [ %52, %51 ], [ 38400, %9 ] + ret i32 %54 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid diff --git a/bench/linux/optimized/mmap.ll b/bench/linux/optimized/mmap.ll index 7fae116c305..c705ce9bf92 100644 --- a/bench/linux/optimized/mmap.ll +++ b/bench/linux/optimized/mmap.ll @@ -164,60 +164,54 @@ define dso_local void @arch_pick_mmap_layout(ptr nocapture noundef writeonly %0, %63 = xor i64 %62, -1 %64 = and i64 %60, %63 %65 = shl i64 %64, 12 - %.pre6 = load i32, ptr @sysctl_legacy_va_layout, align 4 + %.pre4 = load i32, ptr @sysctl_legacy_va_layout, align 4 br label %66 66: ; preds = %58, %52 - %67 = phi i32 [ %.pre6, %58 ], [ %29, %52 ] + %67 = phi i32 [ %.pre4, %58 ], [ %29, %52 ] %68 = phi i64 [ %65, %58 ], [ 0, %52 ] %69 = load i32, ptr %5, align 8 %70 = and i32 %69, 134217728 %71 = icmp eq i32 %70, 0 - %72 = select i1 %71, i64 4294959104, i64 3221225472 - %.lhs.trunc = trunc nuw i64 %72 to i32 - %73 = udiv i32 %.lhs.trunc, 3 - %narrow = add nuw nsw i32 %73, 4095 - %74 = and i32 %narrow, 2147479552 - %75 = zext nneg i32 %74 to i64 - %76 = add i64 %68, %75 - store i64 %76, ptr %54, align 8 - %77 = load i32, ptr %5, align 8 - %78 = and i32 %77, 2097152 - %79 = icmp eq i32 %78, 0 - %80 = icmp eq i32 %67, 0 - %81 = select i1 %79, i1 %80, i1 false - br i1 %81, label %82, label %105 - -82: ; preds = %66 - %83 = load i64, ptr %1, align 8 - %84 = load i32, ptr %16, align 4 - %85 = and i32 %84, 4194304 - %86 = icmp eq i32 %85, 0 - %87 = and i32 %77, 134217728 - %88 = icmp ne i32 %87, 0 - %89 = xor i1 %71, %88 - %90 = select i1 %89, i64 8384512, i64 17179865088 - %91 = select i1 %86, i64 0, i64 %90 - %92 = load i64, ptr @stack_guard_gap, align 8 - %93 = add i64 %92, %83 - %94 = add i64 %93, %91 - %95 = tail call i64 @llvm.umax.i64(i64 %94, i64 %83) - %96 = udiv i32 %.lhs.trunc, 6 - %.zext2 = zext nneg i32 %96 to i64 - %97 = mul nuw nsw i64 %.zext2, 5 - %98 = icmp ult i64 %95, 134217728 - %99 = tail call i64 @llvm.umin.i64(i64 %95, i64 %97) - %100 = select i1 %98, i64 134217728, i64 %99 - %101 = sub i64 %72, %68 - %102 = or disjoint i64 %101, 4095 - %103 = sub i64 %102, %100 - %104 = and i64 %103, -4096 - br label %105 - -105: ; preds = %82, %66 - %106 = phi i64 [ %104, %82 ], [ %76, %66 ] - %107 = getelementptr inbounds i8, ptr %0, i64 104 - store i64 %106, ptr %107, align 8 + %72 = select i1 %71, i64 1431654400, i64 1073741824 + %73 = add i64 %72, %68 + store i64 %73, ptr %54, align 8 + %74 = load i32, ptr %5, align 8 + %75 = and i32 %74, 2097152 + %76 = icmp eq i32 %75, 0 + %77 = icmp eq i32 %67, 0 + %78 = select i1 %76, i1 %77, i1 false + br i1 %78, label %79, label %102 + +79: ; preds = %66 + %80 = select i1 %71, i64 4294959104, i64 3221225472 + %81 = load i64, ptr %1, align 8 + %82 = load i32, ptr %16, align 4 + %83 = and i32 %82, 4194304 + %84 = icmp eq i32 %83, 0 + %85 = and i32 %74, 134217728 + %86 = icmp ne i32 %85, 0 + %87 = xor i1 %71, %86 + %88 = select i1 %87, i64 8384512, i64 17179865088 + %89 = select i1 %84, i64 0, i64 %88 + %90 = load i64, ptr @stack_guard_gap, align 8 + %91 = add i64 %90, %81 + %92 = add i64 %91, %89 + %93 = tail call i64 @llvm.umax.i64(i64 %92, i64 %81) + %94 = select i1 %71, i64 3579132585, i64 2684354560 + %95 = icmp ult i64 %93, 134217728 + %96 = tail call i64 @llvm.umin.i64(i64 %93, i64 %94) + %97 = select i1 %95, i64 134217728, i64 %96 + %98 = sub i64 %80, %68 + %99 = or disjoint i64 %98, 4095 + %100 = sub i64 %99, %97 + %101 = and i64 %100, -4096 + br label %102 + +102: ; preds = %79, %66 + %103 = phi i64 [ %101, %79 ], [ %73, %66 ] + %104 = getelementptr inbounds i8, ptr %0, i64 104 + store i64 %103, ptr %104, align 8 ret void } diff --git a/bench/oiio/optimized/CineonHeader.cpp.ll b/bench/oiio/optimized/CineonHeader.cpp.ll index f3fe5baa06f..67b87d26dcb 100644 --- a/bench/oiio/optimized/CineonHeader.cpp.ll +++ b/bench/oiio/optimized/CineonHeader.cpp.ll @@ -9616,16 +9616,16 @@ land.lhs.true67.i: ; preds = %_ZN3fmt2v86detail12 if.then71.i: ; preds = %land.lhs.true67.i %cmp.not.i263 = icmp eq i32 %arg.coerce1, 0 - %cond.i264 = select i1 %cmp.not.i263, i32 48, i32 12288 - %or.i265 = or i32 %cond.i264, %arg.coerce1 - %add4.i266 = add i32 %or.i265, 16777216 + %70 = or i32 %arg.coerce1, 12288 + %71 = add i32 %70, 16777216 + %add4.i266 = select i1 %cmp.not.i263, i32 16777264, i32 %71 br label %if.end72.i if.end72.i: ; preds = %_ZN3fmt2v86detail12count_digitsILi3EmEEiT0_.exit, %if.then71.i, %land.lhs.true67.i %prefix.i.2 = phi i32 [ %add4.i266, %if.then71.i ], [ %arg.coerce1, %land.lhs.true67.i ], [ %arg.coerce1, %_ZN3fmt2v86detail12count_digitsILi3EmEEiT0_.exit ] - %70 = load i32, ptr %specs, align 4 + %72 = load i32, ptr %specs, align 4 %add.i128 = add nsw i32 %.pre, 1 - %or.i129 = or i32 %add.i128, %70 + %or.i129 = or i32 %add.i128, %72 %cmp.i130 = icmp eq i32 %or.i129, 0 br i1 %cmp.i130, label %if.then.i133, label %if.end30.i131 @@ -9647,26 +9647,26 @@ for.body.i148.lr.ph: ; preds = %if.then5.i143 for.body.i148: ; preds = %for.body.i148.lr.ph, %_ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSEOc.exit279 %p.i118.0374 = phi i32 [ %and.i144, %for.body.i148.lr.ph ], [ %shr15.i154, %_ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSEOc.exit279 ] %conv8.i150 = trunc i32 %p.i118.0374 to i8 - %71 = load i64, ptr %size_.i.i268, align 8 - %add.i.i269 = add i64 %71, 1 - %72 = load i64, ptr %capacity_.i.i.i270, align 8 - %cmp.i.i.i271 = icmp ult i64 %72, %add.i.i269 + %73 = load i64, ptr %size_.i.i268, align 8 + %add.i.i269 = add i64 %73, 1 + %74 = load i64, ptr %capacity_.i.i.i270, align 8 + %cmp.i.i.i271 = icmp ult i64 %74, %add.i.i269 br i1 %cmp.i.i.i271, label %if.then.i.i.i275, label %_ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSEOc.exit279 if.then.i.i.i275: ; preds = %for.body.i148 %vtable.i.i.i276 = load ptr, ptr %out.coerce, align 8 - %73 = load ptr, ptr %vtable.i.i.i276, align 8 - tail call void %73(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i269) + %75 = load ptr, ptr %vtable.i.i.i276, align 8 + tail call void %75(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i269) %.pre.i.i277 = load i64, ptr %size_.i.i268, align 8 %.pre1.i.i278 = add i64 %.pre.i.i277, 1 br label %_ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSEOc.exit279 _ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSEOc.exit279: ; preds = %for.body.i148, %if.then.i.i.i275 %inc.pre-phi.i.i272 = phi i64 [ %add.i.i269, %for.body.i148 ], [ %.pre1.i.i278, %if.then.i.i.i275 ] - %74 = phi i64 [ %71, %for.body.i148 ], [ %.pre.i.i277, %if.then.i.i.i275 ] - %75 = load ptr, ptr %ptr_.i.i273, align 8 + %76 = phi i64 [ %73, %for.body.i148 ], [ %.pre.i.i277, %if.then.i.i.i275 ] + %77 = load ptr, ptr %ptr_.i.i273, align 8 store i64 %inc.pre-phi.i.i272, ptr %size_.i.i268, align 8 - %arrayidx.i.i274 = getelementptr inbounds i8, ptr %75, i64 %74 + %arrayidx.i.i274 = getelementptr inbounds i8, ptr %77, i64 %76 store i8 %conv8.i150, ptr %arrayidx.i.i274, align 1 %shr15.i154 = lshr i32 %p.i118.0374, 8 %cmp6.i146.not = icmp ult i32 %p.i118.0374, 256 @@ -9676,30 +9676,30 @@ if.end.i140: ; preds = %_ZNSt20back_insert_ call void @llvm.lifetime.start.p0(i64 22, ptr nonnull %buffer.i.i280) %conv.i.i281 = zext nneg i32 %inc.i.i260 to i64 %size_.i.i.i.i282 = getelementptr inbounds i8, ptr %out.coerce, i64 16 - %76 = load i64, ptr %size_.i.i.i.i282, align 8 + %78 = load i64, ptr %size_.i.i.i.i282, align 8 %capacity_.i.i.i.i283 = getelementptr inbounds i8, ptr %out.coerce, i64 24 - %77 = load i64, ptr %capacity_.i.i.i.i283, align 8 - %add.i.i.i284 = add i64 %76, %conv.i.i281 - %cmp.i.i.i285 = icmp ult i64 %77, %add.i.i.i284 + %79 = load i64, ptr %capacity_.i.i.i.i283, align 8 + %add.i.i.i284 = add i64 %78, %conv.i.i281 + %cmp.i.i.i285 = icmp ult i64 %79, %add.i.i.i284 br i1 %cmp.i.i.i285, label %if.end.i.i301, label %_ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i286 _ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i286: ; preds = %if.end.i140 store i64 %add.i.i.i284, ptr %size_.i.i.i.i282, align 8 %ptr_.i.i.i.i287 = getelementptr inbounds i8, ptr %out.coerce, i64 8 - %78 = load ptr, ptr %ptr_.i.i.i.i287, align 8 - %tobool.not.i.i288 = icmp eq ptr %78, null + %80 = load ptr, ptr %ptr_.i.i.i.i287, align 8 + %tobool.not.i.i288 = icmp eq ptr %80, null br i1 %tobool.not.i.i288, label %if.end.i.i301, label %if.then.i.i289 if.then.i.i289: ; preds = %_ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i286 - %add.ptr.i.i.i290 = getelementptr inbounds i8, ptr %78, i64 %76 + %add.ptr.i.i.i290 = getelementptr inbounds i8, ptr %80, i64 %78 %add.ptr.i7.i.i292 = getelementptr inbounds i8, ptr %add.ptr.i.i.i290, i64 %conv.i.i281 br label %do.body.i.i.i293 do.body.i.i.i293: ; preds = %do.body.i.i.i293, %if.then.i.i289 %value.addr.0.i.i.i294 = phi i64 [ %arg.coerce0, %if.then.i.i289 ], [ %shr.i.i.i299, %do.body.i.i.i293 ] %buffer.addr.0.i.i.i295 = phi ptr [ %add.ptr.i7.i.i292, %if.then.i.i289 ], [ %incdec.ptr.i.i.i298, %do.body.i.i.i293 ] - %79 = trunc i64 %value.addr.0.i.i.i294 to i8 - %conv.i.i.i296 = and i8 %79, 7 + %81 = trunc i64 %value.addr.0.i.i.i294 to i8 + %conv.i.i.i296 = and i8 %81, 7 %add.i8.i.i297 = or disjoint i8 %conv.i.i.i296, 48 %incdec.ptr.i.i.i298 = getelementptr inbounds i8, ptr %buffer.addr.0.i.i.i295, i64 -1 store i8 %add.i8.i.i297, ptr %incdec.ptr.i.i.i298, align 1 @@ -9708,15 +9708,15 @@ do.body.i.i.i293: ; preds = %do.body.i.i.i293, % br i1 %cmp.not.i.i.i300, label %_ZZN3fmt2v86detail9write_intIcNS0_8appenderEmEET0_S4_NS1_13write_int_argIT1_EERKNS0_18basic_format_specsIT_EENS1_10locale_refEENKUlS3_E2_clES3_.exit, label %do.body.i.i.i293, !llvm.loop !78 if.end.i.i301: ; preds = %_ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i286, %if.end.i140 - %.pre.i.i.i.i.i302 = phi i64 [ %76, %if.end.i140 ], [ %add.i.i.i284, %_ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i286 ] + %.pre.i.i.i.i.i302 = phi i64 [ %78, %if.end.i140 ], [ %add.i.i.i284, %_ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i286 ] %add.ptr.i10.i.i304 = getelementptr inbounds i8, ptr %buffer.i.i280, i64 %conv.i.i281 br label %do.body.i11.i.i305 do.body.i11.i.i305: ; preds = %do.body.i11.i.i305, %if.end.i.i301 %value.addr.0.i12.i.i306 = phi i64 [ %arg.coerce0, %if.end.i.i301 ], [ %shr.i17.i.i311, %do.body.i11.i.i305 ] %buffer.addr.0.i13.i.i307 = phi ptr [ %add.ptr.i10.i.i304, %if.end.i.i301 ], [ %incdec.ptr.i16.i.i310, %do.body.i11.i.i305 ] - %80 = trunc i64 %value.addr.0.i12.i.i306 to i8 - %conv.i14.i.i308 = and i8 %80, 7 + %82 = trunc i64 %value.addr.0.i12.i.i306 to i8 + %conv.i14.i.i308 = and i8 %82, 7 %add.i15.i.i309 = or disjoint i8 %conv.i14.i.i308, 48 %incdec.ptr.i16.i.i310 = getelementptr inbounds i8, ptr %buffer.addr.0.i13.i.i307, i64 -1 store i8 %add.i15.i.i309, ptr %incdec.ptr.i16.i.i310, align 1 @@ -9730,41 +9730,41 @@ while.body.lr.ph.i.i.i.i.i314: ; preds = %do.body.i11.i.i305 br label %while.body.i.i.i.i.i317 while.body.i.i.i.i.i317: ; preds = %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i330, %while.body.lr.ph.i.i.i.i.i314 - %81 = phi i64 [ %.pre.i.i.i.i.i302, %while.body.lr.ph.i.i.i.i.i314 ], [ %add8.i.i.i.i.i331, %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i330 ] + %83 = phi i64 [ %.pre.i.i.i.i.i302, %while.body.lr.ph.i.i.i.i.i314 ], [ %add8.i.i.i.i.i331, %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i330 ] %begin.addr.012.i.i.i.i.i318 = phi ptr [ %buffer.i.i280, %while.body.lr.ph.i.i.i.i.i314 ], [ %add.ptr9.i.i.i.i.i332, %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i330 ] %sub.ptr.rhs.cast.i.i.i.i.i319 = ptrtoint ptr %begin.addr.012.i.i.i.i.i318 to i64 %sub.ptr.sub.i.i.i.i.i320 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i315, %sub.ptr.rhs.cast.i.i.i.i.i319 - %add.i.i.i.i.i321 = add i64 %sub.ptr.sub.i.i.i.i.i320, %81 - %82 = load i64, ptr %capacity_.i.i.i.i283, align 8 - %cmp.i.i.i.i.i.i322 = icmp ult i64 %82, %add.i.i.i.i.i321 + %add.i.i.i.i.i321 = add i64 %sub.ptr.sub.i.i.i.i.i320, %83 + %84 = load i64, ptr %capacity_.i.i.i.i283, align 8 + %cmp.i.i.i.i.i.i322 = icmp ult i64 %84, %add.i.i.i.i.i321 br i1 %cmp.i.i.i.i.i.i322, label %if.then.i.i.i.i.i.i334, label %_ZN3fmt2v86detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i323 if.then.i.i.i.i.i.i334: ; preds = %while.body.i.i.i.i.i317 %vtable.i.i.i.i.i.i335 = load ptr, ptr %out.coerce, align 8 - %83 = load ptr, ptr %vtable.i.i.i.i.i.i335, align 8 - call void %83(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i.i.i.i321) + %85 = load ptr, ptr %vtable.i.i.i.i.i.i335, align 8 + call void %85(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i.i.i.i321) %.pre13.i.i.i.i.i336 = load i64, ptr %capacity_.i.i.i.i283, align 8 %.pre14.i.i.i.i.i337 = load i64, ptr %size_.i.i.i.i282, align 8 br label %_ZN3fmt2v86detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i323 _ZN3fmt2v86detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i323: ; preds = %if.then.i.i.i.i.i.i334, %while.body.i.i.i.i.i317 - %84 = phi i64 [ %81, %while.body.i.i.i.i.i317 ], [ %.pre14.i.i.i.i.i337, %if.then.i.i.i.i.i.i334 ] - %85 = phi i64 [ %82, %while.body.i.i.i.i.i317 ], [ %.pre13.i.i.i.i.i336, %if.then.i.i.i.i.i.i334 ] - %sub.i.i.i.i.i324 = sub i64 %85, %84 + %86 = phi i64 [ %83, %while.body.i.i.i.i.i317 ], [ %.pre14.i.i.i.i.i337, %if.then.i.i.i.i.i.i334 ] + %87 = phi i64 [ %84, %while.body.i.i.i.i.i317 ], [ %.pre13.i.i.i.i.i336, %if.then.i.i.i.i.i.i334 ] + %sub.i.i.i.i.i324 = sub i64 %87, %86 %spec.select.i.i.i.i.i325 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i324, i64 %sub.ptr.sub.i.i.i.i.i320) %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i.i326 = icmp eq i64 %spec.select.i.i.i.i.i325, 0 br i1 %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i.i326, label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i330, label %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i327 if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i327: ; preds = %_ZN3fmt2v86detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i323 - %86 = load ptr, ptr %ptr_.i.i.i.i.i316, align 8 - %add.ptr.i.i.i.i.i328 = getelementptr inbounds i8, ptr %86, i64 %84 + %88 = load ptr, ptr %ptr_.i.i.i.i.i316, align 8 + %add.ptr.i.i.i.i.i328 = getelementptr inbounds i8, ptr %88, i64 %86 call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr.i.i.i.i.i328, ptr align 1 %begin.addr.012.i.i.i.i.i318, i64 %spec.select.i.i.i.i.i325, i1 false) %.pre15.i.i.i.i.i329 = load i64, ptr %size_.i.i.i.i282, align 8 br label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i330 _ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i330: ; preds = %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i327, %_ZN3fmt2v86detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i323 - %87 = phi i64 [ %84, %_ZN3fmt2v86detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i323 ], [ %.pre15.i.i.i.i.i329, %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i327 ] - %add8.i.i.i.i.i331 = add i64 %87, %spec.select.i.i.i.i.i325 + %89 = phi i64 [ %86, %_ZN3fmt2v86detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i323 ], [ %.pre15.i.i.i.i.i329, %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i327 ] + %add8.i.i.i.i.i331 = add i64 %89, %spec.select.i.i.i.i.i325 store i64 %add8.i.i.i.i.i331, ptr %size_.i.i.i.i282, align 8 %add.ptr9.i.i.i.i.i332 = getelementptr inbounds i8, ptr %begin.addr.012.i.i.i.i.i318, i64 %spec.select.i.i.i.i.i325 %cmp.not.i.i.i.i.i333 = icmp eq ptr %add.ptr9.i.i.i.i.i332, %add.ptr.i10.i.i304 @@ -9783,11 +9783,11 @@ if.end30.i131: ; preds = %if.end72.i br i1 %cmp.i345, label %if.then.i354, label %if.else.i346 if.then.i354: ; preds = %if.end30.i131 - %cmp6.i355 = icmp ult i32 %add.i339, %70 + %cmp6.i355 = icmp ult i32 %add.i339, %72 br i1 %cmp6.i355, label %if.then7.i356, label %_ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit359 if.then7.i356: ; preds = %if.then.i354 - %conv4.i357 = zext i32 %70 to i64 + %conv4.i357 = zext i32 %72 to i64 %sub.i358 = sub nsw i64 %conv4.i357, %conv.i340 br label %_ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit359 @@ -9806,12 +9806,12 @@ _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit359: %data.i124.sroa.0.0 = phi i64 [ %conv4.i357, %if.then7.i356 ], [ %conv.i340, %if.then.i354 ], [ %conv19.i351, %if.then14.i349 ], [ %conv.i340, %if.else.i346 ] %data.i124.sroa.5.0 = phi i64 [ %sub.i358, %if.then7.i356 ], [ 0, %if.then.i354 ], [ %conv24.i353, %if.then14.i349 ], [ 0, %if.else.i346 ] store i32 %prefix.i.2, ptr %ref.tmp32.i126, align 8 - %88 = getelementptr inbounds i8, ptr %ref.tmp32.i126, i64 8 - store i64 %data.i124.sroa.0.0, ptr %88, align 8 + %90 = getelementptr inbounds i8, ptr %ref.tmp32.i126, i64 8 + store i64 %data.i124.sroa.0.0, ptr %90, align 8 %data.i124.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %ref.tmp32.i126, i64 16 store i64 %data.i124.sroa.5.0, ptr %data.i124.sroa.5.0..sroa_idx, align 8 - %89 = getelementptr inbounds i8, ptr %ref.tmp32.i126, i64 24 - store i64 %arg.coerce0, ptr %89, align 8 + %91 = getelementptr inbounds i8, ptr %ref.tmp32.i126, i64 24 + store i64 %arg.coerce0, ptr %91, align 8 %write_digits.i113.sroa.3.0..sroa_idx = getelementptr inbounds i8, ptr %ref.tmp32.i126, i64 32 store i32 %inc.i.i260, ptr %write_digits.i113.sroa.3.0..sroa_idx, align 8 %call.i360 = call ptr @_ZN3fmt2v86detail12write_paddedILNS0_5align4typeE2ENS0_8appenderEcRZNS1_9write_intIS5_cZNS1_9write_intIcS5_mEET0_S8_NS1_13write_int_argIT1_EERKNS0_18basic_format_specsIT_EENS1_10locale_refEEUlS5_E2_EESD_SD_ijRKNSC_IS8_EESA_EUlS5_E_EES8_S8_RKNSC_ISA_EEmmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(16) %specs, i64 noundef %data.i124.sroa.0.0, i64 noundef %data.i124.sroa.0.0, ptr noundef nonnull align 8 dereferenceable(40) %ref.tmp32.i126) @@ -12337,16 +12337,16 @@ land.lhs.true71.i: ; preds = %_ZN3fmt2v86detail12 if.then75.i: ; preds = %land.lhs.true71.i %cmp.not.i270 = icmp eq i32 %agg.tmp3.sroa.2.0.copyload, 0 - %cond.i271 = select i1 %cmp.not.i270, i32 48, i32 12288 - %or.i272 = or i32 %cond.i271, %agg.tmp3.sroa.2.0.copyload - %add4.i273 = add i32 %or.i272, 16777216 + %70 = or i32 %agg.tmp3.sroa.2.0.copyload, 12288 + %71 = add i32 %70, 16777216 + %add4.i273 = select i1 %cmp.not.i270, i32 16777264, i32 %71 br label %if.end76.i if.end76.i: ; preds = %_ZN3fmt2v86detail12count_digitsILi3EoEEiT0_.exit, %if.then75.i, %land.lhs.true71.i %prefix.i.2 = phi i32 [ %add4.i273, %if.then75.i ], [ %agg.tmp3.sroa.2.0.copyload, %land.lhs.true71.i ], [ %agg.tmp3.sroa.2.0.copyload, %_ZN3fmt2v86detail12count_digitsILi3EoEEiT0_.exit ] - %70 = load i32, ptr %specs, align 4 + %72 = load i32, ptr %specs, align 4 %add.i130 = add nsw i32 %.pre, 1 - %or.i131 = or i32 %add.i130, %70 + %or.i131 = or i32 %add.i130, %72 %cmp.i132 = icmp eq i32 %or.i131, 0 br i1 %cmp.i132, label %if.then.i135, label %if.end30.i133 @@ -12368,26 +12368,26 @@ for.body.i150.lr.ph: ; preds = %if.then5.i145 for.body.i150: ; preds = %for.body.i150.lr.ph, %_ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSEOc.exit286 %p.i120.0384 = phi i32 [ %and.i146, %for.body.i150.lr.ph ], [ %shr15.i156, %_ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSEOc.exit286 ] %conv8.i152 = trunc i32 %p.i120.0384 to i8 - %71 = load i64, ptr %size_.i.i275, align 8 - %add.i.i276 = add i64 %71, 1 - %72 = load i64, ptr %capacity_.i.i.i277, align 8 - %cmp.i.i.i278 = icmp ult i64 %72, %add.i.i276 + %73 = load i64, ptr %size_.i.i275, align 8 + %add.i.i276 = add i64 %73, 1 + %74 = load i64, ptr %capacity_.i.i.i277, align 8 + %cmp.i.i.i278 = icmp ult i64 %74, %add.i.i276 br i1 %cmp.i.i.i278, label %if.then.i.i.i282, label %_ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSEOc.exit286 if.then.i.i.i282: ; preds = %for.body.i150 %vtable.i.i.i283 = load ptr, ptr %out.coerce, align 8 - %73 = load ptr, ptr %vtable.i.i.i283, align 8 - tail call void %73(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i276) + %75 = load ptr, ptr %vtable.i.i.i283, align 8 + tail call void %75(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i276) %.pre.i.i284 = load i64, ptr %size_.i.i275, align 8 %.pre1.i.i285 = add i64 %.pre.i.i284, 1 br label %_ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSEOc.exit286 _ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSEOc.exit286: ; preds = %for.body.i150, %if.then.i.i.i282 %inc.pre-phi.i.i279 = phi i64 [ %add.i.i276, %for.body.i150 ], [ %.pre1.i.i285, %if.then.i.i.i282 ] - %74 = phi i64 [ %71, %for.body.i150 ], [ %.pre.i.i284, %if.then.i.i.i282 ] - %75 = load ptr, ptr %ptr_.i.i280, align 8 + %76 = phi i64 [ %73, %for.body.i150 ], [ %.pre.i.i284, %if.then.i.i.i282 ] + %77 = load ptr, ptr %ptr_.i.i280, align 8 store i64 %inc.pre-phi.i.i279, ptr %size_.i.i275, align 8 - %arrayidx.i.i281 = getelementptr inbounds i8, ptr %75, i64 %74 + %arrayidx.i.i281 = getelementptr inbounds i8, ptr %77, i64 %76 store i8 %conv8.i152, ptr %arrayidx.i.i281, align 1 %shr15.i156 = lshr i32 %p.i120.0384, 8 %cmp6.i148.not = icmp ult i32 %p.i120.0384, 256 @@ -12397,30 +12397,30 @@ if.end.i142: ; preds = %_ZNSt20back_insert_ call void @llvm.lifetime.start.p0(i64 43, ptr nonnull %buffer.i.i287) %conv.i.i288 = zext nneg i32 %inc.i.i267 to i64 %size_.i.i.i.i289 = getelementptr inbounds i8, ptr %out.coerce, i64 16 - %76 = load i64, ptr %size_.i.i.i.i289, align 8 + %78 = load i64, ptr %size_.i.i.i.i289, align 8 %capacity_.i.i.i.i290 = getelementptr inbounds i8, ptr %out.coerce, i64 24 - %77 = load i64, ptr %capacity_.i.i.i.i290, align 8 - %add.i.i.i291 = add i64 %76, %conv.i.i288 - %cmp.i.i.i292 = icmp ult i64 %77, %add.i.i.i291 + %79 = load i64, ptr %capacity_.i.i.i.i290, align 8 + %add.i.i.i291 = add i64 %78, %conv.i.i288 + %cmp.i.i.i292 = icmp ult i64 %79, %add.i.i.i291 br i1 %cmp.i.i.i292, label %if.end.i.i308, label %_ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i293 _ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i293: ; preds = %if.end.i142 store i64 %add.i.i.i291, ptr %size_.i.i.i.i289, align 8 %ptr_.i.i.i.i294 = getelementptr inbounds i8, ptr %out.coerce, i64 8 - %78 = load ptr, ptr %ptr_.i.i.i.i294, align 8 - %tobool.not.i.i295 = icmp eq ptr %78, null + %80 = load ptr, ptr %ptr_.i.i.i.i294, align 8 + %tobool.not.i.i295 = icmp eq ptr %80, null br i1 %tobool.not.i.i295, label %if.end.i.i308, label %if.then.i.i296 if.then.i.i296: ; preds = %_ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i293 - %add.ptr.i.i.i297 = getelementptr inbounds i8, ptr %78, i64 %76 + %add.ptr.i.i.i297 = getelementptr inbounds i8, ptr %80, i64 %78 %add.ptr.i7.i.i299 = getelementptr inbounds i8, ptr %add.ptr.i.i.i297, i64 %conv.i.i288 br label %do.body.i.i.i300 do.body.i.i.i300: ; preds = %do.body.i.i.i300, %if.then.i.i296 %value.addr.0.i.i.i301 = phi i128 [ %agg.tmp3.sroa.0.0.copyload, %if.then.i.i296 ], [ %shr.i.i.i306, %do.body.i.i.i300 ] %buffer.addr.0.i.i.i302 = phi ptr [ %add.ptr.i7.i.i299, %if.then.i.i296 ], [ %incdec.ptr.i.i.i305, %do.body.i.i.i300 ] - %79 = trunc i128 %value.addr.0.i.i.i301 to i8 - %conv.i.i.i303 = and i8 %79, 7 + %81 = trunc i128 %value.addr.0.i.i.i301 to i8 + %conv.i.i.i303 = and i8 %81, 7 %add.i8.i.i304 = or disjoint i8 %conv.i.i.i303, 48 %incdec.ptr.i.i.i305 = getelementptr inbounds i8, ptr %buffer.addr.0.i.i.i302, i64 -1 store i8 %add.i8.i.i304, ptr %incdec.ptr.i.i.i305, align 1 @@ -12429,15 +12429,15 @@ do.body.i.i.i300: ; preds = %do.body.i.i.i300, % br i1 %cmp.not.i.i.i307, label %_ZZN3fmt2v86detail9write_intIcNS0_8appenderEoEET0_S4_NS1_13write_int_argIT1_EERKNS0_18basic_format_specsIT_EENS1_10locale_refEENKUlS3_E2_clES3_.exit, label %do.body.i.i.i300, !llvm.loop !94 if.end.i.i308: ; preds = %_ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i293, %if.end.i142 - %.pre.i.i.i.i.i309 = phi i64 [ %76, %if.end.i142 ], [ %add.i.i.i291, %_ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i293 ] + %.pre.i.i.i.i.i309 = phi i64 [ %78, %if.end.i142 ], [ %add.i.i.i291, %_ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i293 ] %add.ptr.i14.i.i311 = getelementptr inbounds i8, ptr %buffer.i.i287, i64 %conv.i.i288 br label %do.body.i15.i.i312 do.body.i15.i.i312: ; preds = %do.body.i15.i.i312, %if.end.i.i308 %value.addr.0.i16.i.i313 = phi i128 [ %agg.tmp3.sroa.0.0.copyload, %if.end.i.i308 ], [ %shr.i21.i.i318, %do.body.i15.i.i312 ] %buffer.addr.0.i17.i.i314 = phi ptr [ %add.ptr.i14.i.i311, %if.end.i.i308 ], [ %incdec.ptr.i20.i.i317, %do.body.i15.i.i312 ] - %80 = trunc i128 %value.addr.0.i16.i.i313 to i8 - %conv.i18.i.i315 = and i8 %80, 7 + %82 = trunc i128 %value.addr.0.i16.i.i313 to i8 + %conv.i18.i.i315 = and i8 %82, 7 %add.i19.i.i316 = or disjoint i8 %conv.i18.i.i315, 48 %incdec.ptr.i20.i.i317 = getelementptr inbounds i8, ptr %buffer.addr.0.i17.i.i314, i64 -1 store i8 %add.i19.i.i316, ptr %incdec.ptr.i20.i.i317, align 1 @@ -12451,41 +12451,41 @@ while.body.lr.ph.i.i.i.i.i321: ; preds = %do.body.i15.i.i312 br label %while.body.i.i.i.i.i324 while.body.i.i.i.i.i324: ; preds = %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i337, %while.body.lr.ph.i.i.i.i.i321 - %81 = phi i64 [ %.pre.i.i.i.i.i309, %while.body.lr.ph.i.i.i.i.i321 ], [ %add8.i.i.i.i.i338, %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i337 ] + %83 = phi i64 [ %.pre.i.i.i.i.i309, %while.body.lr.ph.i.i.i.i.i321 ], [ %add8.i.i.i.i.i338, %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i337 ] %begin.addr.012.i.i.i.i.i325 = phi ptr [ %buffer.i.i287, %while.body.lr.ph.i.i.i.i.i321 ], [ %add.ptr9.i.i.i.i.i339, %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i337 ] %sub.ptr.rhs.cast.i.i.i.i.i326 = ptrtoint ptr %begin.addr.012.i.i.i.i.i325 to i64 %sub.ptr.sub.i.i.i.i.i327 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i322, %sub.ptr.rhs.cast.i.i.i.i.i326 - %add.i.i.i.i.i328 = add i64 %sub.ptr.sub.i.i.i.i.i327, %81 - %82 = load i64, ptr %capacity_.i.i.i.i290, align 8 - %cmp.i.i.i.i.i.i329 = icmp ult i64 %82, %add.i.i.i.i.i328 + %add.i.i.i.i.i328 = add i64 %sub.ptr.sub.i.i.i.i.i327, %83 + %84 = load i64, ptr %capacity_.i.i.i.i290, align 8 + %cmp.i.i.i.i.i.i329 = icmp ult i64 %84, %add.i.i.i.i.i328 br i1 %cmp.i.i.i.i.i.i329, label %if.then.i.i.i.i.i.i341, label %_ZN3fmt2v86detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i330 if.then.i.i.i.i.i.i341: ; preds = %while.body.i.i.i.i.i324 %vtable.i.i.i.i.i.i342 = load ptr, ptr %out.coerce, align 8 - %83 = load ptr, ptr %vtable.i.i.i.i.i.i342, align 8 - call void %83(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i.i.i.i328) + %85 = load ptr, ptr %vtable.i.i.i.i.i.i342, align 8 + call void %85(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i.i.i.i328) %.pre13.i.i.i.i.i343 = load i64, ptr %capacity_.i.i.i.i290, align 8 %.pre14.i.i.i.i.i344 = load i64, ptr %size_.i.i.i.i289, align 8 br label %_ZN3fmt2v86detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i330 _ZN3fmt2v86detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i330: ; preds = %if.then.i.i.i.i.i.i341, %while.body.i.i.i.i.i324 - %84 = phi i64 [ %81, %while.body.i.i.i.i.i324 ], [ %.pre14.i.i.i.i.i344, %if.then.i.i.i.i.i.i341 ] - %85 = phi i64 [ %82, %while.body.i.i.i.i.i324 ], [ %.pre13.i.i.i.i.i343, %if.then.i.i.i.i.i.i341 ] - %sub.i.i.i.i.i331 = sub i64 %85, %84 + %86 = phi i64 [ %83, %while.body.i.i.i.i.i324 ], [ %.pre14.i.i.i.i.i344, %if.then.i.i.i.i.i.i341 ] + %87 = phi i64 [ %84, %while.body.i.i.i.i.i324 ], [ %.pre13.i.i.i.i.i343, %if.then.i.i.i.i.i.i341 ] + %sub.i.i.i.i.i331 = sub i64 %87, %86 %spec.select.i.i.i.i.i332 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i331, i64 %sub.ptr.sub.i.i.i.i.i327) %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i.i333 = icmp eq i64 %spec.select.i.i.i.i.i332, 0 br i1 %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i.i333, label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i337, label %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i334 if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i334: ; preds = %_ZN3fmt2v86detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i330 - %86 = load ptr, ptr %ptr_.i.i.i.i.i323, align 8 - %add.ptr.i.i.i.i.i335 = getelementptr inbounds i8, ptr %86, i64 %84 + %88 = load ptr, ptr %ptr_.i.i.i.i.i323, align 8 + %add.ptr.i.i.i.i.i335 = getelementptr inbounds i8, ptr %88, i64 %86 call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr.i.i.i.i.i335, ptr align 1 %begin.addr.012.i.i.i.i.i325, i64 %spec.select.i.i.i.i.i332, i1 false) %.pre15.i.i.i.i.i336 = load i64, ptr %size_.i.i.i.i289, align 8 br label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i337 _ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i337: ; preds = %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i334, %_ZN3fmt2v86detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i330 - %87 = phi i64 [ %84, %_ZN3fmt2v86detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i330 ], [ %.pre15.i.i.i.i.i336, %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i334 ] - %add8.i.i.i.i.i338 = add i64 %87, %spec.select.i.i.i.i.i332 + %89 = phi i64 [ %86, %_ZN3fmt2v86detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i330 ], [ %.pre15.i.i.i.i.i336, %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i334 ] + %add8.i.i.i.i.i338 = add i64 %89, %spec.select.i.i.i.i.i332 store i64 %add8.i.i.i.i.i338, ptr %size_.i.i.i.i289, align 8 %add.ptr9.i.i.i.i.i339 = getelementptr inbounds i8, ptr %begin.addr.012.i.i.i.i.i325, i64 %spec.select.i.i.i.i.i332 %cmp.not.i.i.i.i.i340 = icmp eq ptr %add.ptr9.i.i.i.i.i339, %add.ptr.i14.i.i311 @@ -12504,11 +12504,11 @@ if.end30.i133: ; preds = %if.end76.i br i1 %cmp.i352, label %if.then.i361, label %if.else.i353 if.then.i361: ; preds = %if.end30.i133 - %cmp6.i362 = icmp ult i32 %add.i346, %70 + %cmp6.i362 = icmp ult i32 %add.i346, %72 br i1 %cmp6.i362, label %if.then7.i363, label %_ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit366 if.then7.i363: ; preds = %if.then.i361 - %conv4.i364 = zext i32 %70 to i64 + %conv4.i364 = zext i32 %72 to i64 %sub.i365 = sub nsw i64 %conv4.i364, %conv.i347 br label %_ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit366 @@ -12527,12 +12527,12 @@ _ZN3fmt2v86detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit366: %data.i126.sroa.0.0 = phi i64 [ %conv4.i364, %if.then7.i363 ], [ %conv.i347, %if.then.i361 ], [ %conv19.i358, %if.then14.i356 ], [ %conv.i347, %if.else.i353 ] %data.i126.sroa.5.0 = phi i64 [ %sub.i365, %if.then7.i363 ], [ 0, %if.then.i361 ], [ %conv24.i360, %if.then14.i356 ], [ 0, %if.else.i353 ] store i32 %prefix.i.2, ptr %ref.tmp32.i128, align 16 - %88 = getelementptr inbounds i8, ptr %ref.tmp32.i128, i64 8 - store i64 %data.i126.sroa.0.0, ptr %88, align 8 + %90 = getelementptr inbounds i8, ptr %ref.tmp32.i128, i64 8 + store i64 %data.i126.sroa.0.0, ptr %90, align 8 %data.i126.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %ref.tmp32.i128, i64 16 store i64 %data.i126.sroa.5.0, ptr %data.i126.sroa.5.0..sroa_idx, align 16 - %89 = getelementptr inbounds i8, ptr %ref.tmp32.i128, i64 32 - store i128 %agg.tmp3.sroa.0.0.copyload, ptr %89, align 16 + %91 = getelementptr inbounds i8, ptr %ref.tmp32.i128, i64 32 + store i128 %agg.tmp3.sroa.0.0.copyload, ptr %91, align 16 %agg.tmp78.i113.sroa.3.0..sroa_idx = getelementptr inbounds i8, ptr %ref.tmp32.i128, i64 48 store i32 %inc.i.i267, ptr %agg.tmp78.i113.sroa.3.0..sroa_idx, align 16 %call.i367 = call ptr @_ZN3fmt2v86detail12write_paddedILNS0_5align4typeE2ENS0_8appenderEcRZNS1_9write_intIS5_cZNS1_9write_intIcS5_oEET0_S8_NS1_13write_int_argIT1_EERKNS0_18basic_format_specsIT_EENS1_10locale_refEEUlS5_E2_EESD_SD_ijRKNSC_IS8_EESA_EUlS5_E_EES8_S8_RKNSC_ISA_EEmmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(16) %specs, i64 noundef %data.i126.sroa.0.0, i64 noundef %data.i126.sroa.0.0, ptr noundef nonnull align 16 dereferenceable(64) %ref.tmp32.i128) diff --git a/bench/spdlog/optimized/bundled_fmtlib_format.cpp.ll b/bench/spdlog/optimized/bundled_fmtlib_format.cpp.ll index 7ba2a199358..dd706dc2592 100644 --- a/bench/spdlog/optimized/bundled_fmtlib_format.cpp.ll +++ b/bench/spdlog/optimized/bundled_fmtlib_format.cpp.ll @@ -29133,16 +29133,16 @@ land.lhs.true67.i: ; preds = %_ZN3fmt2v96detail12 if.then71.i: ; preds = %land.lhs.true67.i %cmp.not.i259 = icmp eq i32 %arg.coerce1, 0 - %cond.i260 = select i1 %cmp.not.i259, i32 48, i32 12288 - %or.i261 = or i32 %cond.i260, %arg.coerce1 - %add4.i262 = add i32 %or.i261, 16777216 + %73 = or i32 %arg.coerce1, 12288 + %74 = add i32 %73, 16777216 + %add4.i262 = select i1 %cmp.not.i259, i32 16777264, i32 %74 br label %if.end72.i if.end72.i: ; preds = %_ZN3fmt2v96detail12count_digitsILi3EmEEiT0_.exit, %if.then71.i, %land.lhs.true67.i %prefix.i.2 = phi i32 [ %add4.i262, %if.then71.i ], [ %arg.coerce1, %land.lhs.true67.i ], [ %arg.coerce1, %_ZN3fmt2v96detail12count_digitsILi3EmEEiT0_.exit ] - %73 = load i32, ptr %specs, align 4 + %75 = load i32, ptr %specs, align 4 %add.i128 = add nsw i32 %.pre, 1 - %or.i129 = or i32 %add.i128, %73 + %or.i129 = or i32 %add.i128, %75 %cmp.i130 = icmp eq i32 %or.i129, 0 br i1 %cmp.i130, label %if.then.i133, label %if.end30.i131 @@ -29164,26 +29164,26 @@ for.body.i148.lr.ph: ; preds = %if.then5.i143 for.body.i148: ; preds = %for.body.i148.lr.ph, %_ZNSt20back_insert_iteratorIN3fmt2v96detail6bufferIcEEEaSEOc.exit275 %p.i118.0370 = phi i32 [ %and.i144, %for.body.i148.lr.ph ], [ %shr15.i154, %_ZNSt20back_insert_iteratorIN3fmt2v96detail6bufferIcEEEaSEOc.exit275 ] %conv8.i150 = trunc i32 %p.i118.0370 to i8 - %74 = load i64, ptr %size_.i.i264, align 8 - %add.i.i265 = add i64 %74, 1 - %75 = load i64, ptr %capacity_.i.i.i266, align 8 - %cmp.i.i.i267 = icmp ult i64 %75, %add.i.i265 + %76 = load i64, ptr %size_.i.i264, align 8 + %add.i.i265 = add i64 %76, 1 + %77 = load i64, ptr %capacity_.i.i.i266, align 8 + %cmp.i.i.i267 = icmp ult i64 %77, %add.i.i265 br i1 %cmp.i.i.i267, label %if.then.i.i.i271, label %_ZNSt20back_insert_iteratorIN3fmt2v96detail6bufferIcEEEaSEOc.exit275 if.then.i.i.i271: ; preds = %for.body.i148 %vtable.i.i.i272 = load ptr, ptr %out.coerce, align 8 - %76 = load ptr, ptr %vtable.i.i.i272, align 8 - tail call void %76(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i265) + %78 = load ptr, ptr %vtable.i.i.i272, align 8 + tail call void %78(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i265) %.pre.i.i273 = load i64, ptr %size_.i.i264, align 8 %.pre1.i.i274 = add i64 %.pre.i.i273, 1 br label %_ZNSt20back_insert_iteratorIN3fmt2v96detail6bufferIcEEEaSEOc.exit275 _ZNSt20back_insert_iteratorIN3fmt2v96detail6bufferIcEEEaSEOc.exit275: ; preds = %for.body.i148, %if.then.i.i.i271 %inc.pre-phi.i.i268 = phi i64 [ %add.i.i265, %for.body.i148 ], [ %.pre1.i.i274, %if.then.i.i.i271 ] - %77 = phi i64 [ %74, %for.body.i148 ], [ %.pre.i.i273, %if.then.i.i.i271 ] - %78 = load ptr, ptr %ptr_.i.i269, align 8 + %79 = phi i64 [ %76, %for.body.i148 ], [ %.pre.i.i273, %if.then.i.i.i271 ] + %80 = load ptr, ptr %ptr_.i.i269, align 8 store i64 %inc.pre-phi.i.i268, ptr %size_.i.i264, align 8 - %arrayidx.i.i270 = getelementptr inbounds i8, ptr %78, i64 %77 + %arrayidx.i.i270 = getelementptr inbounds i8, ptr %80, i64 %79 store i8 %conv8.i150, ptr %arrayidx.i.i270, align 1 %shr15.i154 = lshr i32 %p.i118.0370, 8 %cmp6.i146.not = icmp ult i32 %p.i118.0370, 256 @@ -29193,30 +29193,30 @@ if.end.i140: ; preds = %_ZNSt20back_insert_ call void @llvm.lifetime.start.p0(i64 22, ptr nonnull %buffer.i.i276) %conv.i.i277 = zext nneg i32 %inc.i.i256 to i64 %size_.i.i.i.i278 = getelementptr inbounds i8, ptr %out.coerce, i64 16 - %79 = load i64, ptr %size_.i.i.i.i278, align 8 + %81 = load i64, ptr %size_.i.i.i.i278, align 8 %capacity_.i.i.i.i279 = getelementptr inbounds i8, ptr %out.coerce, i64 24 - %80 = load i64, ptr %capacity_.i.i.i.i279, align 8 - %add.i.i.i280 = add i64 %79, %conv.i.i277 - %cmp.i.i.i281 = icmp ult i64 %80, %add.i.i.i280 + %82 = load i64, ptr %capacity_.i.i.i.i279, align 8 + %add.i.i.i280 = add i64 %81, %conv.i.i277 + %cmp.i.i.i281 = icmp ult i64 %82, %add.i.i.i280 br i1 %cmp.i.i.i281, label %if.end.i.i297, label %_ZN3fmt2v96detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i282 _ZN3fmt2v96detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i282: ; preds = %if.end.i140 store i64 %add.i.i.i280, ptr %size_.i.i.i.i278, align 8 %ptr_.i.i.i.i283 = getelementptr inbounds i8, ptr %out.coerce, i64 8 - %81 = load ptr, ptr %ptr_.i.i.i.i283, align 8 - %tobool.not.i.i284 = icmp eq ptr %81, null + %83 = load ptr, ptr %ptr_.i.i.i.i283, align 8 + %tobool.not.i.i284 = icmp eq ptr %83, null br i1 %tobool.not.i.i284, label %if.end.i.i297, label %if.then.i.i285 if.then.i.i285: ; preds = %_ZN3fmt2v96detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i282 - %add.ptr.i.i.i286 = getelementptr inbounds i8, ptr %81, i64 %79 + %add.ptr.i.i.i286 = getelementptr inbounds i8, ptr %83, i64 %81 %add.ptr.i7.i.i288 = getelementptr inbounds i8, ptr %add.ptr.i.i.i286, i64 %conv.i.i277 br label %do.body.i.i.i289 do.body.i.i.i289: ; preds = %do.body.i.i.i289, %if.then.i.i285 %value.addr.0.i.i.i290 = phi i64 [ %arg.coerce0, %if.then.i.i285 ], [ %shr.i.i.i295, %do.body.i.i.i289 ] %buffer.addr.0.i.i.i291 = phi ptr [ %add.ptr.i7.i.i288, %if.then.i.i285 ], [ %incdec.ptr.i.i.i294, %do.body.i.i.i289 ] - %82 = trunc i64 %value.addr.0.i.i.i290 to i8 - %conv.i.i.i292 = and i8 %82, 7 + %84 = trunc i64 %value.addr.0.i.i.i290 to i8 + %conv.i.i.i292 = and i8 %84, 7 %add.i8.i.i293 = or disjoint i8 %conv.i.i.i292, 48 %incdec.ptr.i.i.i294 = getelementptr inbounds i8, ptr %buffer.addr.0.i.i.i291, i64 -1 store i8 %add.i8.i.i293, ptr %incdec.ptr.i.i.i294, align 1 @@ -29225,15 +29225,15 @@ do.body.i.i.i289: ; preds = %do.body.i.i.i289, % br i1 %cmp.not.i.i.i296, label %_ZZN3fmt2v96detail9write_intIcNS0_8appenderEmEET0_S4_NS1_13write_int_argIT1_EERKNS0_18basic_format_specsIT_EENS1_10locale_refEENKUlS3_E2_clES3_.exit, label %do.body.i.i.i289, !llvm.loop !220 if.end.i.i297: ; preds = %_ZN3fmt2v96detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i282, %if.end.i140 - %.pre.i.i.i.i.i298 = phi i64 [ %79, %if.end.i140 ], [ %add.i.i.i280, %_ZN3fmt2v96detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i282 ] + %.pre.i.i.i.i.i298 = phi i64 [ %81, %if.end.i140 ], [ %add.i.i.i280, %_ZN3fmt2v96detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i282 ] %add.ptr.i10.i.i300 = getelementptr inbounds i8, ptr %buffer.i.i276, i64 %conv.i.i277 br label %do.body.i11.i.i301 do.body.i11.i.i301: ; preds = %do.body.i11.i.i301, %if.end.i.i297 %value.addr.0.i12.i.i302 = phi i64 [ %arg.coerce0, %if.end.i.i297 ], [ %shr.i17.i.i307, %do.body.i11.i.i301 ] %buffer.addr.0.i13.i.i303 = phi ptr [ %add.ptr.i10.i.i300, %if.end.i.i297 ], [ %incdec.ptr.i16.i.i306, %do.body.i11.i.i301 ] - %83 = trunc i64 %value.addr.0.i12.i.i302 to i8 - %conv.i14.i.i304 = and i8 %83, 7 + %85 = trunc i64 %value.addr.0.i12.i.i302 to i8 + %conv.i14.i.i304 = and i8 %85, 7 %add.i15.i.i305 = or disjoint i8 %conv.i14.i.i304, 48 %incdec.ptr.i16.i.i306 = getelementptr inbounds i8, ptr %buffer.addr.0.i13.i.i303, i64 -1 store i8 %add.i15.i.i305, ptr %incdec.ptr.i16.i.i306, align 1 @@ -29247,41 +29247,41 @@ while.body.lr.ph.i.i.i.i.i310: ; preds = %do.body.i11.i.i301 br label %while.body.i.i.i.i.i313 while.body.i.i.i.i.i313: ; preds = %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i326, %while.body.lr.ph.i.i.i.i.i310 - %84 = phi i64 [ %.pre.i.i.i.i.i298, %while.body.lr.ph.i.i.i.i.i310 ], [ %add8.i.i.i.i.i327, %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i326 ] + %86 = phi i64 [ %.pre.i.i.i.i.i298, %while.body.lr.ph.i.i.i.i.i310 ], [ %add8.i.i.i.i.i327, %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i326 ] %begin.addr.012.i.i.i.i.i314 = phi ptr [ %buffer.i.i276, %while.body.lr.ph.i.i.i.i.i310 ], [ %add.ptr9.i.i.i.i.i328, %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i326 ] %sub.ptr.rhs.cast.i.i.i.i.i315 = ptrtoint ptr %begin.addr.012.i.i.i.i.i314 to i64 %sub.ptr.sub.i.i.i.i.i316 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i311, %sub.ptr.rhs.cast.i.i.i.i.i315 - %add.i.i.i.i.i317 = add i64 %sub.ptr.sub.i.i.i.i.i316, %84 - %85 = load i64, ptr %capacity_.i.i.i.i279, align 8 - %cmp.i.i.i.i.i.i318 = icmp ult i64 %85, %add.i.i.i.i.i317 + %add.i.i.i.i.i317 = add i64 %sub.ptr.sub.i.i.i.i.i316, %86 + %87 = load i64, ptr %capacity_.i.i.i.i279, align 8 + %cmp.i.i.i.i.i.i318 = icmp ult i64 %87, %add.i.i.i.i.i317 br i1 %cmp.i.i.i.i.i.i318, label %if.then.i.i.i.i.i.i330, label %_ZN3fmt2v96detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i319 if.then.i.i.i.i.i.i330: ; preds = %while.body.i.i.i.i.i313 %vtable.i.i.i.i.i.i331 = load ptr, ptr %out.coerce, align 8 - %86 = load ptr, ptr %vtable.i.i.i.i.i.i331, align 8 - call void %86(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i.i.i.i317) + %88 = load ptr, ptr %vtable.i.i.i.i.i.i331, align 8 + call void %88(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i.i.i.i317) %.pre13.i.i.i.i.i332 = load i64, ptr %capacity_.i.i.i.i279, align 8 %.pre14.i.i.i.i.i333 = load i64, ptr %size_.i.i.i.i278, align 8 br label %_ZN3fmt2v96detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i319 _ZN3fmt2v96detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i319: ; preds = %if.then.i.i.i.i.i.i330, %while.body.i.i.i.i.i313 - %87 = phi i64 [ %84, %while.body.i.i.i.i.i313 ], [ %.pre14.i.i.i.i.i333, %if.then.i.i.i.i.i.i330 ] - %88 = phi i64 [ %85, %while.body.i.i.i.i.i313 ], [ %.pre13.i.i.i.i.i332, %if.then.i.i.i.i.i.i330 ] - %sub.i.i.i.i.i320 = sub i64 %88, %87 + %89 = phi i64 [ %86, %while.body.i.i.i.i.i313 ], [ %.pre14.i.i.i.i.i333, %if.then.i.i.i.i.i.i330 ] + %90 = phi i64 [ %87, %while.body.i.i.i.i.i313 ], [ %.pre13.i.i.i.i.i332, %if.then.i.i.i.i.i.i330 ] + %sub.i.i.i.i.i320 = sub i64 %90, %89 %spec.select.i.i.i.i.i321 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i320, i64 %sub.ptr.sub.i.i.i.i.i316) %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i.i322 = icmp eq i64 %spec.select.i.i.i.i.i321, 0 br i1 %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i.i322, label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i326, label %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i323 if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i323: ; preds = %_ZN3fmt2v96detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i319 - %89 = load ptr, ptr %ptr_.i.i.i.i.i312, align 8 - %add.ptr.i.i.i.i.i324 = getelementptr inbounds i8, ptr %89, i64 %87 + %91 = load ptr, ptr %ptr_.i.i.i.i.i312, align 8 + %add.ptr.i.i.i.i.i324 = getelementptr inbounds i8, ptr %91, i64 %89 call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr.i.i.i.i.i324, ptr align 1 %begin.addr.012.i.i.i.i.i314, i64 %spec.select.i.i.i.i.i321, i1 false) %.pre15.i.i.i.i.i325 = load i64, ptr %size_.i.i.i.i278, align 8 br label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i326 _ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i326: ; preds = %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i323, %_ZN3fmt2v96detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i319 - %90 = phi i64 [ %87, %_ZN3fmt2v96detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i319 ], [ %.pre15.i.i.i.i.i325, %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i323 ] - %add8.i.i.i.i.i327 = add i64 %90, %spec.select.i.i.i.i.i321 + %92 = phi i64 [ %89, %_ZN3fmt2v96detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i319 ], [ %.pre15.i.i.i.i.i325, %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i323 ] + %add8.i.i.i.i.i327 = add i64 %92, %spec.select.i.i.i.i.i321 store i64 %add8.i.i.i.i.i327, ptr %size_.i.i.i.i278, align 8 %add.ptr9.i.i.i.i.i328 = getelementptr inbounds i8, ptr %begin.addr.012.i.i.i.i.i314, i64 %spec.select.i.i.i.i.i321 %cmp.not.i.i.i.i.i329 = icmp eq ptr %add.ptr9.i.i.i.i.i328, %add.ptr.i10.i.i300 @@ -29295,16 +29295,16 @@ if.end30.i131: ; preds = %if.end72.i %shr.i334 = lshr i32 %prefix.i.2, 24 %add.i335 = add nuw i32 %shr.i334, %inc.i.i256 %conv.i336 = zext i32 %add.i335 to i64 - %91 = and i16 %bf.load63.i, 15 - %cmp.i340 = icmp eq i16 %91, 4 + %93 = and i16 %bf.load63.i, 15 + %cmp.i340 = icmp eq i16 %93, 4 br i1 %cmp.i340, label %if.then.i349, label %if.else.i341 if.then.i349: ; preds = %if.end30.i131 - %cmp7.i350 = icmp ult i32 %add.i335, %73 + %cmp7.i350 = icmp ult i32 %add.i335, %75 br i1 %cmp7.i350, label %if.then8.i351, label %_ZN3fmt2v96detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit354 if.then8.i351: ; preds = %if.then.i349 - %conv5.i352 = zext i32 %73 to i64 + %conv5.i352 = zext i32 %75 to i64 %sub.i353 = sub nsw i64 %conv5.i352, %conv.i336 br label %_ZN3fmt2v96detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit354 @@ -29323,12 +29323,12 @@ _ZN3fmt2v96detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit354: %data.i124.sroa.0.0 = phi i64 [ %conv5.i352, %if.then8.i351 ], [ %conv.i336, %if.then.i349 ], [ %conv20.i346, %if.then15.i344 ], [ %conv.i336, %if.else.i341 ] %data.i124.sroa.5.0 = phi i64 [ %sub.i353, %if.then8.i351 ], [ 0, %if.then.i349 ], [ %conv25.i348, %if.then15.i344 ], [ 0, %if.else.i341 ] store i32 %prefix.i.2, ptr %ref.tmp32.i126, align 8 - %92 = getelementptr inbounds i8, ptr %ref.tmp32.i126, i64 8 - store i64 %data.i124.sroa.0.0, ptr %92, align 8 + %94 = getelementptr inbounds i8, ptr %ref.tmp32.i126, i64 8 + store i64 %data.i124.sroa.0.0, ptr %94, align 8 %data.i124.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %ref.tmp32.i126, i64 16 store i64 %data.i124.sroa.5.0, ptr %data.i124.sroa.5.0..sroa_idx, align 8 - %93 = getelementptr inbounds i8, ptr %ref.tmp32.i126, i64 24 - store i64 %arg.coerce0, ptr %93, align 8 + %95 = getelementptr inbounds i8, ptr %ref.tmp32.i126, i64 24 + store i64 %arg.coerce0, ptr %95, align 8 %write_digits.i113.sroa.3.0..sroa_idx = getelementptr inbounds i8, ptr %ref.tmp32.i126, i64 32 store i32 %inc.i.i256, ptr %write_digits.i113.sroa.3.0..sroa_idx, align 8 %call.i355 = call ptr @_ZN3fmt2v96detail12write_paddedILNS0_5align4typeE2ENS0_8appenderEcRZNS1_9write_intIS5_cZNS1_9write_intIcS5_mEET0_S8_NS1_13write_int_argIT1_EERKNS0_18basic_format_specsIT_EENS1_10locale_refEEUlS5_E2_EESD_SD_ijRKNSC_IS8_EESA_EUlS5_E_EES8_S8_RKNSC_ISA_EEmmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(16) %specs, i64 noundef %data.i124.sroa.0.0, i64 noundef %data.i124.sroa.0.0, ptr noundef nonnull align 8 dereferenceable(40) %ref.tmp32.i126) @@ -29338,8 +29338,8 @@ sw.bb80.i: ; preds = %entry %conv82.i = trunc i64 %arg.coerce0 to i8 call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %ref.tmp.i356) store i8 0, ptr %ref.tmp.i356, align 1 - %94 = getelementptr inbounds i8, ptr %ref.tmp.i356, i64 1 - store i8 %conv82.i, ptr %94, align 1 + %96 = getelementptr inbounds i8, ptr %ref.tmp.i356, i64 1 + store i8 %conv82.i, ptr %96, align 1 %call.i.i = call ptr @_ZN3fmt2v96detail12write_paddedILNS0_5align4typeE1ENS0_8appenderEcRZNS1_10write_charIcS5_EET0_S7_T_RKNS0_18basic_format_specsIS8_EEEUlS5_E_EES7_S7_RKNS9_IT1_EEmmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(16) %specs, i64 noundef 1, i64 noundef 1, ptr noundef nonnull align 1 dereferenceable(2) %ref.tmp.i356) call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %ref.tmp.i356) br label %_ZN3fmt2v96detail9write_intIcNS0_8appenderEmEET0_S4_NS1_13write_int_argIT1_EERKNS0_18basic_format_specsIT_EENS1_10locale_refE.exit @@ -31850,16 +31850,16 @@ land.lhs.true71.i: ; preds = %_ZN3fmt2v96detail12 if.then75.i: ; preds = %land.lhs.true71.i %cmp.not.i267 = icmp eq i32 %agg.tmp3.sroa.2.0.copyload, 0 - %cond.i268 = select i1 %cmp.not.i267, i32 48, i32 12288 - %or.i269 = or i32 %cond.i268, %agg.tmp3.sroa.2.0.copyload - %add4.i270 = add i32 %or.i269, 16777216 + %73 = or i32 %agg.tmp3.sroa.2.0.copyload, 12288 + %74 = add i32 %73, 16777216 + %add4.i270 = select i1 %cmp.not.i267, i32 16777264, i32 %74 br label %if.end76.i if.end76.i: ; preds = %_ZN3fmt2v96detail12count_digitsILi3EoEEiT0_.exit, %if.then75.i, %land.lhs.true71.i %prefix.i.2 = phi i32 [ %add4.i270, %if.then75.i ], [ %agg.tmp3.sroa.2.0.copyload, %land.lhs.true71.i ], [ %agg.tmp3.sroa.2.0.copyload, %_ZN3fmt2v96detail12count_digitsILi3EoEEiT0_.exit ] - %73 = load i32, ptr %specs, align 4 + %75 = load i32, ptr %specs, align 4 %add.i130 = add nsw i32 %.pre, 1 - %or.i131 = or i32 %add.i130, %73 + %or.i131 = or i32 %add.i130, %75 %cmp.i132 = icmp eq i32 %or.i131, 0 br i1 %cmp.i132, label %if.then.i135, label %if.end30.i133 @@ -31881,26 +31881,26 @@ for.body.i150.lr.ph: ; preds = %if.then5.i145 for.body.i150: ; preds = %for.body.i150.lr.ph, %_ZNSt20back_insert_iteratorIN3fmt2v96detail6bufferIcEEEaSEOc.exit283 %p.i120.0382 = phi i32 [ %and.i146, %for.body.i150.lr.ph ], [ %shr15.i156, %_ZNSt20back_insert_iteratorIN3fmt2v96detail6bufferIcEEEaSEOc.exit283 ] %conv8.i152 = trunc i32 %p.i120.0382 to i8 - %74 = load i64, ptr %size_.i.i272, align 8 - %add.i.i273 = add i64 %74, 1 - %75 = load i64, ptr %capacity_.i.i.i274, align 8 - %cmp.i.i.i275 = icmp ult i64 %75, %add.i.i273 + %76 = load i64, ptr %size_.i.i272, align 8 + %add.i.i273 = add i64 %76, 1 + %77 = load i64, ptr %capacity_.i.i.i274, align 8 + %cmp.i.i.i275 = icmp ult i64 %77, %add.i.i273 br i1 %cmp.i.i.i275, label %if.then.i.i.i279, label %_ZNSt20back_insert_iteratorIN3fmt2v96detail6bufferIcEEEaSEOc.exit283 if.then.i.i.i279: ; preds = %for.body.i150 %vtable.i.i.i280 = load ptr, ptr %out.coerce, align 8 - %76 = load ptr, ptr %vtable.i.i.i280, align 8 - tail call void %76(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i273) + %78 = load ptr, ptr %vtable.i.i.i280, align 8 + tail call void %78(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i273) %.pre.i.i281 = load i64, ptr %size_.i.i272, align 8 %.pre1.i.i282 = add i64 %.pre.i.i281, 1 br label %_ZNSt20back_insert_iteratorIN3fmt2v96detail6bufferIcEEEaSEOc.exit283 _ZNSt20back_insert_iteratorIN3fmt2v96detail6bufferIcEEEaSEOc.exit283: ; preds = %for.body.i150, %if.then.i.i.i279 %inc.pre-phi.i.i276 = phi i64 [ %add.i.i273, %for.body.i150 ], [ %.pre1.i.i282, %if.then.i.i.i279 ] - %77 = phi i64 [ %74, %for.body.i150 ], [ %.pre.i.i281, %if.then.i.i.i279 ] - %78 = load ptr, ptr %ptr_.i.i277, align 8 + %79 = phi i64 [ %76, %for.body.i150 ], [ %.pre.i.i281, %if.then.i.i.i279 ] + %80 = load ptr, ptr %ptr_.i.i277, align 8 store i64 %inc.pre-phi.i.i276, ptr %size_.i.i272, align 8 - %arrayidx.i.i278 = getelementptr inbounds i8, ptr %78, i64 %77 + %arrayidx.i.i278 = getelementptr inbounds i8, ptr %80, i64 %79 store i8 %conv8.i152, ptr %arrayidx.i.i278, align 1 %shr15.i156 = lshr i32 %p.i120.0382, 8 %cmp6.i148.not = icmp ult i32 %p.i120.0382, 256 @@ -31910,30 +31910,30 @@ if.end.i142: ; preds = %_ZNSt20back_insert_ call void @llvm.lifetime.start.p0(i64 43, ptr nonnull %buffer.i.i284) %conv.i.i285 = zext nneg i32 %inc.i.i264 to i64 %size_.i.i.i.i286 = getelementptr inbounds i8, ptr %out.coerce, i64 16 - %79 = load i64, ptr %size_.i.i.i.i286, align 8 + %81 = load i64, ptr %size_.i.i.i.i286, align 8 %capacity_.i.i.i.i287 = getelementptr inbounds i8, ptr %out.coerce, i64 24 - %80 = load i64, ptr %capacity_.i.i.i.i287, align 8 - %add.i.i.i288 = add i64 %79, %conv.i.i285 - %cmp.i.i.i289 = icmp ult i64 %80, %add.i.i.i288 + %82 = load i64, ptr %capacity_.i.i.i.i287, align 8 + %add.i.i.i288 = add i64 %81, %conv.i.i285 + %cmp.i.i.i289 = icmp ult i64 %82, %add.i.i.i288 br i1 %cmp.i.i.i289, label %if.end.i.i305, label %_ZN3fmt2v96detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i290 _ZN3fmt2v96detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i290: ; preds = %if.end.i142 store i64 %add.i.i.i288, ptr %size_.i.i.i.i286, align 8 %ptr_.i.i.i.i291 = getelementptr inbounds i8, ptr %out.coerce, i64 8 - %81 = load ptr, ptr %ptr_.i.i.i.i291, align 8 - %tobool.not.i.i292 = icmp eq ptr %81, null + %83 = load ptr, ptr %ptr_.i.i.i.i291, align 8 + %tobool.not.i.i292 = icmp eq ptr %83, null br i1 %tobool.not.i.i292, label %if.end.i.i305, label %if.then.i.i293 if.then.i.i293: ; preds = %_ZN3fmt2v96detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i290 - %add.ptr.i.i.i294 = getelementptr inbounds i8, ptr %81, i64 %79 + %add.ptr.i.i.i294 = getelementptr inbounds i8, ptr %83, i64 %81 %add.ptr.i7.i.i296 = getelementptr inbounds i8, ptr %add.ptr.i.i.i294, i64 %conv.i.i285 br label %do.body.i.i.i297 do.body.i.i.i297: ; preds = %do.body.i.i.i297, %if.then.i.i293 %value.addr.0.i.i.i298 = phi i128 [ %agg.tmp3.sroa.0.0.copyload, %if.then.i.i293 ], [ %shr.i.i.i303, %do.body.i.i.i297 ] %buffer.addr.0.i.i.i299 = phi ptr [ %add.ptr.i7.i.i296, %if.then.i.i293 ], [ %incdec.ptr.i.i.i302, %do.body.i.i.i297 ] - %82 = trunc i128 %value.addr.0.i.i.i298 to i8 - %conv.i.i.i300 = and i8 %82, 7 + %84 = trunc i128 %value.addr.0.i.i.i298 to i8 + %conv.i.i.i300 = and i8 %84, 7 %add.i8.i.i301 = or disjoint i8 %conv.i.i.i300, 48 %incdec.ptr.i.i.i302 = getelementptr inbounds i8, ptr %buffer.addr.0.i.i.i299, i64 -1 store i8 %add.i8.i.i301, ptr %incdec.ptr.i.i.i302, align 1 @@ -31942,15 +31942,15 @@ do.body.i.i.i297: ; preds = %do.body.i.i.i297, % br i1 %cmp.not.i.i.i304, label %_ZZN3fmt2v96detail9write_intIcNS0_8appenderEoEET0_S4_NS1_13write_int_argIT1_EERKNS0_18basic_format_specsIT_EENS1_10locale_refEENKUlS3_E2_clES3_.exit, label %do.body.i.i.i297, !llvm.loop !233 if.end.i.i305: ; preds = %_ZN3fmt2v96detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i290, %if.end.i142 - %.pre.i.i.i.i.i306 = phi i64 [ %79, %if.end.i142 ], [ %add.i.i.i288, %_ZN3fmt2v96detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i290 ] + %.pre.i.i.i.i.i306 = phi i64 [ %81, %if.end.i142 ], [ %add.i.i.i288, %_ZN3fmt2v96detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valueENS0_8appenderESt20back_insert_iteratorINS1_6bufferIS3_EEEE4typeEm.exit.i.i290 ] %add.ptr.i14.i.i308 = getelementptr inbounds i8, ptr %buffer.i.i284, i64 %conv.i.i285 br label %do.body.i15.i.i309 do.body.i15.i.i309: ; preds = %do.body.i15.i.i309, %if.end.i.i305 %value.addr.0.i16.i.i310 = phi i128 [ %agg.tmp3.sroa.0.0.copyload, %if.end.i.i305 ], [ %shr.i21.i.i315, %do.body.i15.i.i309 ] %buffer.addr.0.i17.i.i311 = phi ptr [ %add.ptr.i14.i.i308, %if.end.i.i305 ], [ %incdec.ptr.i20.i.i314, %do.body.i15.i.i309 ] - %83 = trunc i128 %value.addr.0.i16.i.i310 to i8 - %conv.i18.i.i312 = and i8 %83, 7 + %85 = trunc i128 %value.addr.0.i16.i.i310 to i8 + %conv.i18.i.i312 = and i8 %85, 7 %add.i19.i.i313 = or disjoint i8 %conv.i18.i.i312, 48 %incdec.ptr.i20.i.i314 = getelementptr inbounds i8, ptr %buffer.addr.0.i17.i.i311, i64 -1 store i8 %add.i19.i.i313, ptr %incdec.ptr.i20.i.i314, align 1 @@ -31964,41 +31964,41 @@ while.body.lr.ph.i.i.i.i.i318: ; preds = %do.body.i15.i.i309 br label %while.body.i.i.i.i.i321 while.body.i.i.i.i.i321: ; preds = %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i334, %while.body.lr.ph.i.i.i.i.i318 - %84 = phi i64 [ %.pre.i.i.i.i.i306, %while.body.lr.ph.i.i.i.i.i318 ], [ %add8.i.i.i.i.i335, %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i334 ] + %86 = phi i64 [ %.pre.i.i.i.i.i306, %while.body.lr.ph.i.i.i.i.i318 ], [ %add8.i.i.i.i.i335, %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i334 ] %begin.addr.012.i.i.i.i.i322 = phi ptr [ %buffer.i.i284, %while.body.lr.ph.i.i.i.i.i318 ], [ %add.ptr9.i.i.i.i.i336, %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i334 ] %sub.ptr.rhs.cast.i.i.i.i.i323 = ptrtoint ptr %begin.addr.012.i.i.i.i.i322 to i64 %sub.ptr.sub.i.i.i.i.i324 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i319, %sub.ptr.rhs.cast.i.i.i.i.i323 - %add.i.i.i.i.i325 = add i64 %sub.ptr.sub.i.i.i.i.i324, %84 - %85 = load i64, ptr %capacity_.i.i.i.i287, align 8 - %cmp.i.i.i.i.i.i326 = icmp ult i64 %85, %add.i.i.i.i.i325 + %add.i.i.i.i.i325 = add i64 %sub.ptr.sub.i.i.i.i.i324, %86 + %87 = load i64, ptr %capacity_.i.i.i.i287, align 8 + %cmp.i.i.i.i.i.i326 = icmp ult i64 %87, %add.i.i.i.i.i325 br i1 %cmp.i.i.i.i.i.i326, label %if.then.i.i.i.i.i.i338, label %_ZN3fmt2v96detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i327 if.then.i.i.i.i.i.i338: ; preds = %while.body.i.i.i.i.i321 %vtable.i.i.i.i.i.i339 = load ptr, ptr %out.coerce, align 8 - %86 = load ptr, ptr %vtable.i.i.i.i.i.i339, align 8 - call void %86(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i.i.i.i325) + %88 = load ptr, ptr %vtable.i.i.i.i.i.i339, align 8 + call void %88(ptr noundef nonnull align 8 dereferenceable(32) %out.coerce, i64 noundef %add.i.i.i.i.i325) %.pre13.i.i.i.i.i340 = load i64, ptr %capacity_.i.i.i.i287, align 8 %.pre14.i.i.i.i.i341 = load i64, ptr %size_.i.i.i.i286, align 8 br label %_ZN3fmt2v96detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i327 _ZN3fmt2v96detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i327: ; preds = %if.then.i.i.i.i.i.i338, %while.body.i.i.i.i.i321 - %87 = phi i64 [ %84, %while.body.i.i.i.i.i321 ], [ %.pre14.i.i.i.i.i341, %if.then.i.i.i.i.i.i338 ] - %88 = phi i64 [ %85, %while.body.i.i.i.i.i321 ], [ %.pre13.i.i.i.i.i340, %if.then.i.i.i.i.i.i338 ] - %sub.i.i.i.i.i328 = sub i64 %88, %87 + %89 = phi i64 [ %86, %while.body.i.i.i.i.i321 ], [ %.pre14.i.i.i.i.i341, %if.then.i.i.i.i.i.i338 ] + %90 = phi i64 [ %87, %while.body.i.i.i.i.i321 ], [ %.pre13.i.i.i.i.i340, %if.then.i.i.i.i.i.i338 ] + %sub.i.i.i.i.i328 = sub i64 %90, %89 %spec.select.i.i.i.i.i329 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i328, i64 %sub.ptr.sub.i.i.i.i.i324) %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i.i330 = icmp eq i64 %spec.select.i.i.i.i.i329, 0 br i1 %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i.i330, label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i334, label %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i331 if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i331: ; preds = %_ZN3fmt2v96detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i327 - %89 = load ptr, ptr %ptr_.i.i.i.i.i320, align 8 - %add.ptr.i.i.i.i.i332 = getelementptr inbounds i8, ptr %89, i64 %87 + %91 = load ptr, ptr %ptr_.i.i.i.i.i320, align 8 + %add.ptr.i.i.i.i.i332 = getelementptr inbounds i8, ptr %91, i64 %89 call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr.i.i.i.i.i332, ptr align 1 %begin.addr.012.i.i.i.i.i322, i64 %spec.select.i.i.i.i.i329, i1 false) %.pre15.i.i.i.i.i333 = load i64, ptr %size_.i.i.i.i286, align 8 br label %_ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i334 _ZSt20uninitialized_copy_nIPKcmPcET1_T_T0_S3_.exit.i.i.i.i.i334: ; preds = %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i331, %_ZN3fmt2v96detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i327 - %90 = phi i64 [ %87, %_ZN3fmt2v96detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i327 ], [ %.pre15.i.i.i.i.i333, %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i331 ] - %add8.i.i.i.i.i335 = add i64 %90, %spec.select.i.i.i.i.i329 + %92 = phi i64 [ %89, %_ZN3fmt2v96detail6bufferIcE11try_reserveEm.exit.i.i.i.i.i327 ], [ %.pre15.i.i.i.i.i333, %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i331 ] + %add8.i.i.i.i.i335 = add i64 %92, %spec.select.i.i.i.i.i329 store i64 %add8.i.i.i.i.i335, ptr %size_.i.i.i.i286, align 8 %add.ptr9.i.i.i.i.i336 = getelementptr inbounds i8, ptr %begin.addr.012.i.i.i.i.i322, i64 %spec.select.i.i.i.i.i329 %cmp.not.i.i.i.i.i337 = icmp eq ptr %add.ptr9.i.i.i.i.i336, %add.ptr.i14.i.i308 @@ -32012,16 +32012,16 @@ if.end30.i133: ; preds = %if.end76.i %shr.i342 = lshr i32 %prefix.i.2, 24 %add.i343 = add nuw i32 %shr.i342, %inc.i.i264 %conv.i344 = zext i32 %add.i343 to i64 - %91 = and i16 %bf.load67.i, 15 - %cmp.i348 = icmp eq i16 %91, 4 + %93 = and i16 %bf.load67.i, 15 + %cmp.i348 = icmp eq i16 %93, 4 br i1 %cmp.i348, label %if.then.i357, label %if.else.i349 if.then.i357: ; preds = %if.end30.i133 - %cmp7.i358 = icmp ult i32 %add.i343, %73 + %cmp7.i358 = icmp ult i32 %add.i343, %75 br i1 %cmp7.i358, label %if.then8.i359, label %_ZN3fmt2v96detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit362 if.then8.i359: ; preds = %if.then.i357 - %conv5.i360 = zext i32 %73 to i64 + %conv5.i360 = zext i32 %75 to i64 %sub.i361 = sub nsw i64 %conv5.i360, %conv.i344 br label %_ZN3fmt2v96detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit362 @@ -32040,12 +32040,12 @@ _ZN3fmt2v96detail14write_int_dataIcEC2EijRKNS0_18basic_format_specsIcEE.exit362: %data.i126.sroa.0.0 = phi i64 [ %conv5.i360, %if.then8.i359 ], [ %conv.i344, %if.then.i357 ], [ %conv20.i354, %if.then15.i352 ], [ %conv.i344, %if.else.i349 ] %data.i126.sroa.5.0 = phi i64 [ %sub.i361, %if.then8.i359 ], [ 0, %if.then.i357 ], [ %conv25.i356, %if.then15.i352 ], [ 0, %if.else.i349 ] store i32 %prefix.i.2, ptr %ref.tmp32.i128, align 16 - %92 = getelementptr inbounds i8, ptr %ref.tmp32.i128, i64 8 - store i64 %data.i126.sroa.0.0, ptr %92, align 8 + %94 = getelementptr inbounds i8, ptr %ref.tmp32.i128, i64 8 + store i64 %data.i126.sroa.0.0, ptr %94, align 8 %data.i126.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %ref.tmp32.i128, i64 16 store i64 %data.i126.sroa.5.0, ptr %data.i126.sroa.5.0..sroa_idx, align 16 - %93 = getelementptr inbounds i8, ptr %ref.tmp32.i128, i64 32 - store i128 %agg.tmp3.sroa.0.0.copyload, ptr %93, align 16 + %95 = getelementptr inbounds i8, ptr %ref.tmp32.i128, i64 32 + store i128 %agg.tmp3.sroa.0.0.copyload, ptr %95, align 16 %agg.tmp78.i113.sroa.3.0..sroa_idx = getelementptr inbounds i8, ptr %ref.tmp32.i128, i64 48 store i32 %inc.i.i264, ptr %agg.tmp78.i113.sroa.3.0..sroa_idx, align 16 %call.i363 = call ptr @_ZN3fmt2v96detail12write_paddedILNS0_5align4typeE2ENS0_8appenderEcRZNS1_9write_intIS5_cZNS1_9write_intIcS5_oEET0_S8_NS1_13write_int_argIT1_EERKNS0_18basic_format_specsIT_EENS1_10locale_refEEUlS5_E2_EESD_SD_ijRKNSC_IS8_EESA_EUlS5_E_EES8_S8_RKNSC_ISA_EEmmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(16) %specs, i64 noundef %data.i126.sroa.0.0, i64 noundef %data.i126.sroa.0.0, ptr noundef nonnull align 16 dereferenceable(64) %ref.tmp32.i128) @@ -32055,8 +32055,8 @@ sw.bb84.i: ; preds = %entry %conv86.i = trunc i128 %agg.tmp3.sroa.0.0.copyload to i8 call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %ref.tmp.i364) store i8 0, ptr %ref.tmp.i364, align 1 - %94 = getelementptr inbounds i8, ptr %ref.tmp.i364, i64 1 - store i8 %conv86.i, ptr %94, align 1 + %96 = getelementptr inbounds i8, ptr %ref.tmp.i364, i64 1 + store i8 %conv86.i, ptr %96, align 1 %call.i.i = call ptr @_ZN3fmt2v96detail12write_paddedILNS0_5align4typeE1ENS0_8appenderEcRZNS1_10write_charIcS5_EET0_S7_T_RKNS0_18basic_format_specsIS8_EEEUlS5_E_EES7_S7_RKNS9_IT1_EEmmOT2_(ptr %out.coerce, ptr noundef nonnull align 4 dereferenceable(16) %specs, i64 noundef 1, i64 noundef 1, ptr noundef nonnull align 1 dereferenceable(2) %ref.tmp.i364) call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %ref.tmp.i364) br label %_ZN3fmt2v96detail9write_intIcNS0_8appenderEoEET0_S4_NS1_13write_int_argIT1_EERKNS0_18basic_format_specsIT_EENS1_10locale_refE.exit diff --git a/bench/sqlite/optimized/sqlite3.ll b/bench/sqlite/optimized/sqlite3.ll index 44cbc38d17d..e7e344a002b 100644 --- a/bench/sqlite/optimized/sqlite3.ll +++ b/bench/sqlite/optimized/sqlite3.ll @@ -64897,11 +64897,11 @@ sqlite3_malloc64.exit.i: ; preds = %218 %267 = load ptr, ptr %237, align 8 %268 = getelementptr inbounds ptr, ptr %267, i64 %265 store ptr %258, ptr %268, align 8 - %269 = select i1 %256, i64 136, i64 0 - %270 = getelementptr inbounds i8, ptr %258, i64 %269 - %271 = getelementptr inbounds i8, ptr %227, i64 %269 - %272 = sub nuw nsw i64 32768, %269 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %270, ptr noundef nonnull align 4 dereferenceable(1) %271, i64 %272, i1 false) + %269 = select i1 %256, i64 34, i64 0 + %270 = getelementptr inbounds i32, ptr %258, i64 %269 + %271 = getelementptr inbounds i32, ptr %227, i64 %269 + %272 = select i1 %256, i64 32632, i64 32768 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(32632) %270, ptr noundef nonnull align 4 dereferenceable(32632) %271, i64 %272, i1 false) br label %244 .lr.ph.preheader.i: ; preds = %260 @@ -64927,11 +64927,11 @@ sqlite3_malloc64.exit.i: ; preds = %218 %283 = load ptr, ptr %237, align 8 %284 = getelementptr inbounds ptr, ptr %283, i64 %265 store ptr %258, ptr %284, align 8 - %285 = select i1 %256, i64 136, i64 0 - %286 = getelementptr inbounds i8, ptr %258, i64 %285 - %287 = getelementptr inbounds i8, ptr %227, i64 %285 - %288 = sub nuw nsw i64 32768, %285 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %286, ptr noundef nonnull align 4 dereferenceable(1) %287, i64 %288, i1 false) + %285 = select i1 %256, i64 34, i64 0 + %286 = getelementptr inbounds i32, ptr %258, i64 %285 + %287 = getelementptr inbounds i32, ptr %227, i64 %285 + %288 = select i1 %256, i64 32632, i64 32768 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(32632) %286, ptr noundef nonnull align 4 dereferenceable(32632) %287, i64 %288, i1 false) call void @sqlite3_free(ptr noundef nonnull %223) br label %sqlite3_malloc64.exit.thread.i @@ -64987,11 +64987,11 @@ sqlite3_malloc64.exit.i: ; preds = %218 %308 = load ptr, ptr %237, align 8 %309 = getelementptr inbounds ptr, ptr %308, i64 %265 store ptr %258, ptr %309, align 8 - %310 = select i1 %256, i64 136, i64 0 - %311 = getelementptr inbounds i8, ptr %258, i64 %310 - %312 = getelementptr inbounds i8, ptr %227, i64 %310 - %313 = sub nuw nsw i64 32768, %310 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %311, ptr noundef nonnull align 4 dereferenceable(1) %312, i64 %313, i1 false) + %310 = select i1 %256, i64 34, i64 0 + %311 = getelementptr inbounds i32, ptr %258, i64 %310 + %312 = getelementptr inbounds i32, ptr %227, i64 %310 + %313 = select i1 %256, i64 32632, i64 32768 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(32632) %311, ptr noundef nonnull align 4 dereferenceable(32632) %312, i64 %313, i1 false) br i1 %.not144.lcssa.i, label %244, label %314 314: ; preds = %._crit_edge.i, %247, %244 diff --git a/bench/z3/optimized/arith_solver.cpp.ll b/bench/z3/optimized/arith_solver.cpp.ll index ccbfb837a7c..7733d75af15 100644 --- a/bench/z3/optimized/arith_solver.cpp.ll +++ b/bench/z3/optimized/arith_solver.cpp.ll @@ -10412,59 +10412,59 @@ if.end18: ; preds = %for.body %tobool.i = trunc i8 %39 to i1 %cond.i24 = select i1 %tobool.i, i32 2, i32 -2 %40 = load i8, ptr %m_strict.i, align 1 - %41 = and i8 %40, 1 - %div.i = zext nneg i8 %41 to i32 - %spec.select.i = ashr exact i32 %cond.i24, %div.i + %tobool2.i = trunc i8 %40 to i1 + %div.i = select i1 %tobool.i, i32 1, i32 -1 + %spec.select.i = select i1 %tobool2.i, i32 %div.i, i32 %cond.i24 %call20 = tail call i32 @_ZNK5arith6solver16is_bound_impliedEN2lp16lconstraint_kindERK8rationalRKN6lp_api5boundIN3sat7literalEEE(ptr nonnull align 8 poison, i32 noundef %spec.select.i, ptr noundef nonnull align 8 dereferenceable(32) %be, ptr noundef nonnull align 8 dereferenceable(68) %35) %.b = load i1, ptr @_ZN3satL12null_literalE.0, align 4 - %42 = select i1 %.b, i32 -2, i32 0 - %cmp.i25 = icmp eq i32 %call20, %42 + %41 = select i1 %.b, i32 -2, i32 0 + %cmp.i25 = icmp eq i32 %call20, %41 br i1 %cmp.i25, label %for.inc, label %if.end24 if.end24: ; preds = %if.end18 - %43 = load ptr, ptr %m_solver.i, align 8 - %call26 = tail call noundef nonnull align 8 dereferenceable(299) ptr @_ZN2lp10lar_solver8settingsEv(ptr noundef nonnull align 8 dereferenceable(1888) %43) + %42 = load ptr, ptr %m_solver.i, align 8 + %call26 = tail call noundef nonnull align 8 dereferenceable(299) ptr @_ZN2lp10lar_solver8settingsEv(ptr noundef nonnull align 8 dereferenceable(1888) %42) %m_num_of_implied_bounds = getelementptr inbounds i8, ptr %call26, i64 80 - %44 = load i32, ptr %m_num_of_implied_bounds, align 8 - %inc = add i32 %44, 1 + %43 = load i32, ptr %m_num_of_implied_bounds, align 8 + %inc = add i32 %43, 1 store i32 %inc, ptr %m_num_of_implied_bounds, align 8 %tobool = trunc nuw i8 %first.0 to i1 br i1 %tobool, label %if.then28, label %if.end30 if.then28: ; preds = %if.end24 - %45 = load ptr, ptr %m_core.i, align 8 - %tobool.not.i.i = icmp eq ptr %45, null + %44 = load ptr, ptr %m_core.i, align 8 + %tobool.not.i.i = icmp eq ptr %44, null br i1 %tobool.not.i.i, label %_ZN6vectorIN3sat7literalELb0EjE5resetEv.exit.i, label %if.then.i.i27 if.then.i.i27: ; preds = %if.then28 - %arrayidx.i.i28 = getelementptr inbounds i8, ptr %45, i64 -4 + %arrayidx.i.i28 = getelementptr inbounds i8, ptr %44, i64 -4 store i32 0, ptr %arrayidx.i.i28, align 4 br label %_ZN6vectorIN3sat7literalELb0EjE5resetEv.exit.i _ZN6vectorIN3sat7literalELb0EjE5resetEv.exit.i: ; preds = %if.then.i.i27, %if.then28 - %46 = load ptr, ptr %m_eqs.i, align 8 - %tobool.not.i1.i = icmp eq ptr %46, null + %45 = load ptr, ptr %m_eqs.i, align 8 + %tobool.not.i1.i = icmp eq ptr %45, null br i1 %tobool.not.i1.i, label %_ZN6vectorISt4pairIPN3euf5enodeES3_ELb0EjE5resetEv.exit.i, label %if.then.i2.i if.then.i2.i: ; preds = %_ZN6vectorIN3sat7literalELb0EjE5resetEv.exit.i - %arrayidx.i3.i = getelementptr inbounds i8, ptr %46, i64 -4 + %arrayidx.i3.i = getelementptr inbounds i8, ptr %45, i64 -4 store i32 0, ptr %arrayidx.i3.i, align 4 br label %_ZN6vectorISt4pairIPN3euf5enodeES3_ELb0EjE5resetEv.exit.i _ZN6vectorISt4pairIPN3euf5enodeES3_ELb0EjE5resetEv.exit.i: ; preds = %if.then.i2.i, %_ZN6vectorIN3sat7literalELb0EjE5resetEv.exit.i - %47 = load ptr, ptr %m_params.i, align 8 - %tobool.not.i4.i = icmp eq ptr %47, null + %46 = load ptr, ptr %m_params.i, align 8 + %tobool.not.i4.i = icmp eq ptr %46, null br i1 %tobool.not.i4.i, label %_ZN5arith6solver14reset_evidenceEv.exit, label %_ZNK6vectorI9parameterLb1EjE4sizeEv.exit.i.i.i _ZNK6vectorI9parameterLb1EjE4sizeEv.exit.i.i.i: ; preds = %_ZN6vectorISt4pairIPN3euf5enodeES3_ELb0EjE5resetEv.exit.i - %arrayidx.i.i.i.i = getelementptr inbounds i8, ptr %47, i64 -4 - %48 = load i32, ptr %arrayidx.i.i.i.i, align 4 - %cmp.not4.i.i.i.i.i.i = icmp eq i32 %48, 0 + %arrayidx.i.i.i.i = getelementptr inbounds i8, ptr %46, i64 -4 + %47 = load i32, ptr %arrayidx.i.i.i.i, align 4 + %cmp.not4.i.i.i.i.i.i = icmp eq i32 %47, 0 br i1 %cmp.not4.i.i.i.i.i.i, label %_ZN6vectorI9parameterLb1EjE16destroy_elementsEv.exit.i.i, label %for.body.i.i.i.i.i.i for.body.i.i.i.i.i.i: ; preds = %_ZNK6vectorI9parameterLb1EjE4sizeEv.exit.i.i.i, %for.body.i.i.i.i.i.i - %__count.addr.06.i.i.i.i.i.i = phi i32 [ %dec.i.i.i.i.i.i, %for.body.i.i.i.i.i.i ], [ %48, %_ZNK6vectorI9parameterLb1EjE4sizeEv.exit.i.i.i ] - %__first.addr.05.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %for.body.i.i.i.i.i.i ], [ %47, %_ZNK6vectorI9parameterLb1EjE4sizeEv.exit.i.i.i ] + %__count.addr.06.i.i.i.i.i.i = phi i32 [ %dec.i.i.i.i.i.i, %for.body.i.i.i.i.i.i ], [ %47, %_ZNK6vectorI9parameterLb1EjE4sizeEv.exit.i.i.i ] + %__first.addr.05.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %for.body.i.i.i.i.i.i ], [ %46, %_ZNK6vectorI9parameterLb1EjE4sizeEv.exit.i.i.i ] tail call void @_ZN9parameterD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %__first.addr.05.i.i.i.i.i.i) #23 %incdec.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.05.i.i.i.i.i.i, i64 16 %dec.i.i.i.i.i.i = add i32 %__count.addr.06.i.i.i.i.i.i, -1 @@ -10476,25 +10476,25 @@ _ZN6vectorI9parameterLb1EjE16destroy_elementsEv.exit.loopexit.i.i: ; preds = %fo br label %_ZN6vectorI9parameterLb1EjE16destroy_elementsEv.exit.i.i _ZN6vectorI9parameterLb1EjE16destroy_elementsEv.exit.i.i: ; preds = %_ZN6vectorI9parameterLb1EjE16destroy_elementsEv.exit.loopexit.i.i, %_ZNK6vectorI9parameterLb1EjE4sizeEv.exit.i.i.i - %49 = phi ptr [ %.pre.i.i29, %_ZN6vectorI9parameterLb1EjE16destroy_elementsEv.exit.loopexit.i.i ], [ %47, %_ZNK6vectorI9parameterLb1EjE4sizeEv.exit.i.i.i ] - %arrayidx.i5.i = getelementptr inbounds i8, ptr %49, i64 -4 + %48 = phi ptr [ %.pre.i.i29, %_ZN6vectorI9parameterLb1EjE16destroy_elementsEv.exit.loopexit.i.i ], [ %46, %_ZNK6vectorI9parameterLb1EjE4sizeEv.exit.i.i.i ] + %arrayidx.i5.i = getelementptr inbounds i8, ptr %48, i64 -4 store i32 0, ptr %arrayidx.i5.i, align 4 br label %_ZN5arith6solver14reset_evidenceEv.exit _ZN5arith6solver14reset_evidenceEv.exit: ; preds = %_ZN6vectorISt4pairIPN3euf5enodeES3_ELb0EjE5resetEv.exit.i, %_ZN6vectorI9parameterLb1EjE16destroy_elementsEv.exit.i.i tail call void @_ZN2lp11explanation5clearEv(ptr noundef nonnull align 8 dereferenceable(32) %m_explanation) - %50 = load ptr, ptr %m_solver.i, align 8 - tail call void @_ZN2lp10lar_solver21explain_implied_boundIN5arith6solverEEEvRKNS_13implied_boundERNS_19lp_bound_propagatorIT_EE(ptr noundef nonnull align 8 dereferenceable(1888) %50, ptr noundef nonnull align 8 dereferenceable(72) %be, ptr noundef nonnull align 8 dereferenceable(152) %m_bp) + %49 = load ptr, ptr %m_solver.i, align 8 + tail call void @_ZN2lp10lar_solver21explain_implied_boundIN5arith6solverEEEvRKNS_13implied_boundERNS_19lp_bound_propagatorIT_EE(ptr noundef nonnull align 8 dereferenceable(1888) %49, ptr noundef nonnull align 8 dereferenceable(72) %be, ptr noundef nonnull align 8 dereferenceable(152) %m_bp) br label %if.end30 if.end30: ; preds = %_ZN5arith6solver14reset_evidenceEv.exit, %if.end24 %first.1 = phi i8 [ 0, %_ZN5arith6solver14reset_evidenceEv.exit ], [ %first.0, %if.end24 ] - %51 = load ptr, ptr %ctx.i, align 8 - %52 = load ptr, ptr %m_unassigned_bounds.i, align 8 - %arrayidx.i.i.i32 = getelementptr inbounds i32, ptr %52, i64 %idxprom.i - %53 = load i32, ptr %arrayidx.i.i.i32, align 4 - %m_trail.i.i = getelementptr inbounds i8, ptr %51, i64 2192 - %m_region.i.i.i = getelementptr inbounds i8, ptr %51, i64 2208 + %50 = load ptr, ptr %ctx.i, align 8 + %51 = load ptr, ptr %m_unassigned_bounds.i, align 8 + %arrayidx.i.i.i32 = getelementptr inbounds i32, ptr %51, i64 %idxprom.i + %52 = load i32, ptr %arrayidx.i.i.i32, align 4 + %m_trail.i.i = getelementptr inbounds i8, ptr %50, i64 2192 + %m_region.i.i.i = getelementptr inbounds i8, ptr %50, i64 2208 %call.i.i.i2.i = tail call noundef ptr @_ZN6region8allocateEm(ptr noundef nonnull align 8 dereferenceable(40) %m_region.i.i.i, i64 noundef 24) store ptr getelementptr inbounds (i8, ptr @_ZTV18vector_value_trailIjLb0EE, i64 16), ptr %call.i.i.i2.i, align 8 %m_vector.i.i.i.i = getelementptr inbounds i8, ptr %call.i.i.i2.i, i64 8 @@ -10502,17 +10502,17 @@ if.end30: ; preds = %_ZN5arith6solver14r %ref.tmp.sroa.3.8.m_vector.i.i.i.sroa_idx.i = getelementptr inbounds i8, ptr %call.i.i.i2.i, i64 16 store i32 %8, ptr %ref.tmp.sroa.3.8.m_vector.i.i.i.sroa_idx.i, align 8 %ref.tmp.sroa.4.8.m_vector.i.i.i.sroa_idx.i = getelementptr inbounds i8, ptr %call.i.i.i2.i, i64 20 - store i32 %53, ptr %ref.tmp.sroa.4.8.m_vector.i.i.i.sroa_idx.i, align 4 - %54 = load ptr, ptr %m_trail.i.i, align 8 - %cmp.i.i.i.i = icmp eq ptr %54, null + store i32 %52, ptr %ref.tmp.sroa.4.8.m_vector.i.i.i.sroa_idx.i, align 4 + %53 = load ptr, ptr %m_trail.i.i, align 8 + %cmp.i.i.i.i = icmp eq ptr %53, null br i1 %cmp.i.i.i.i, label %if.then.i.i.i.i, label %lor.lhs.false.i.i.i.i lor.lhs.false.i.i.i.i: ; preds = %if.end30 - %arrayidx.i.i.i.i33 = getelementptr inbounds i8, ptr %54, i64 -4 - %55 = load i32, ptr %arrayidx.i.i.i.i33, align 4 - %arrayidx4.i.i.i.i = getelementptr inbounds i8, ptr %54, i64 -8 - %56 = load i32, ptr %arrayidx4.i.i.i.i, align 4 - %cmp5.i.i.i.i = icmp eq i32 %55, %56 + %arrayidx.i.i.i.i33 = getelementptr inbounds i8, ptr %53, i64 -4 + %54 = load i32, ptr %arrayidx.i.i.i.i33, align 4 + %arrayidx4.i.i.i.i = getelementptr inbounds i8, ptr %53, i64 -8 + %55 = load i32, ptr %arrayidx4.i.i.i.i, align 4 + %cmp5.i.i.i.i = icmp eq i32 %54, %55 br i1 %cmp5.i.i.i.i, label %if.then.i.i.i.i, label %_ZN5arith6solver22updt_unassigned_boundsEii.exit if.then.i.i.i.i: ; preds = %lor.lhs.false.i.i.i.i, %if.end30 @@ -10523,23 +10523,23 @@ if.then.i.i.i.i: ; preds = %lor.lhs.false.i.i.i br label %_ZN5arith6solver22updt_unassigned_boundsEii.exit _ZN5arith6solver22updt_unassigned_boundsEii.exit: ; preds = %lor.lhs.false.i.i.i.i, %if.then.i.i.i.i - %57 = phi i32 [ %.pre1.i.i.i.i, %if.then.i.i.i.i ], [ %55, %lor.lhs.false.i.i.i.i ] - %58 = phi ptr [ %.pre.i.i.i.i, %if.then.i.i.i.i ], [ %54, %lor.lhs.false.i.i.i.i ] - %idx.ext.i.i.i.i = zext i32 %57 to i64 - %add.ptr.i.i.i.i = getelementptr inbounds ptr, ptr %58, i64 %idx.ext.i.i.i.i + %56 = phi i32 [ %.pre1.i.i.i.i, %if.then.i.i.i.i ], [ %54, %lor.lhs.false.i.i.i.i ] + %57 = phi ptr [ %.pre.i.i.i.i, %if.then.i.i.i.i ], [ %53, %lor.lhs.false.i.i.i.i ] + %idx.ext.i.i.i.i = zext i32 %56 to i64 + %add.ptr.i.i.i.i = getelementptr inbounds ptr, ptr %57, i64 %idx.ext.i.i.i.i store ptr %call.i.i.i2.i, ptr %add.ptr.i.i.i.i, align 8 - %59 = load ptr, ptr %m_trail.i.i, align 8 - %arrayidx10.i.i.i.i = getelementptr inbounds i8, ptr %59, i64 -4 - %60 = load i32, ptr %arrayidx10.i.i.i.i, align 4 - %inc.i.i.i.i = add i32 %60, 1 + %58 = load ptr, ptr %m_trail.i.i, align 8 + %arrayidx10.i.i.i.i = getelementptr inbounds i8, ptr %58, i64 -4 + %59 = load i32, ptr %arrayidx10.i.i.i.i, align 4 + %inc.i.i.i.i = add i32 %59, 1 store i32 %inc.i.i.i.i, ptr %arrayidx10.i.i.i.i, align 4 - %61 = load ptr, ptr %m_unassigned_bounds.i, align 8 - %arrayidx.i.i34 = getelementptr inbounds i32, ptr %61, i64 %idxprom.i - %62 = load i32, ptr %arrayidx.i.i34, align 4 - %add.i = add i32 %62, -1 + %60 = load ptr, ptr %m_unassigned_bounds.i, align 8 + %arrayidx.i.i34 = getelementptr inbounds i32, ptr %60, i64 %idxprom.i + %61 = load i32, ptr %arrayidx.i.i34, align 4 + %add.i = add i32 %61, -1 store i32 %add.i, ptr %arrayidx.i.i34, align 4 - %63 = load i32, ptr %m_bound_propagations1, align 4 - %inc31 = add i32 %63, 1 + %62 = load i32, ptr %m_bound_propagations1, align 4 + %inc31 = add i32 %62, 1 store i32 %inc31, ptr %m_bound_propagations1, align 4 %call35 = tail call noundef ptr @_ZN5arith6solver7explainENS_9hint_typeEN3sat7literalE(ptr noundef nonnull align 8 dereferenceable(1144) %this, i32 noundef 1, i32 %call20) tail call void @_ZN5arith6solver6assignEN3sat7literalERK7svectorIS2_jERKS3_ISt4pairIPN3euf5enodeESA_EjEPKNS8_13th_proof_hintE(ptr noundef nonnull align 8 dereferenceable(1144) %this, i32 %call20, ptr noundef nonnull align 8 dereferenceable(8) %m_core.i, ptr noundef nonnull align 8 dereferenceable(8) %m_eqs.i, ptr noundef %call35) @@ -10552,27 +10552,27 @@ for.inc: ; preds = %if.end18, %for.body for.end: ; preds = %_ZNK6vectorIPN6lp_api5boundIN3sat7literalEEELb0EjE4sizeEv.exit %m_num_conflicts.i.i35 = getelementptr inbounds i8, ptr %this, i64 496 - %64 = load i32, ptr %m_num_conflicts.i.i35, align 8 + %63 = load i32, ptr %m_num_conflicts.i.i35, align 8 %call.i.i36 = tail call noundef nonnull align 8 dereferenceable(800) ptr @_ZNK3euf13th_euf_solver10get_configEv(ptr noundef nonnull align 8 dereferenceable(108) %this) %m_arith_propagation_threshold.i.i37 = getelementptr inbounds i8, ptr %call.i.i36, i64 344 - %65 = load i32, ptr %m_arith_propagation_threshold.i.i37, align 8 - %cmp.i.i38 = icmp ult i32 %64, %65 + %64 = load i32, ptr %m_arith_propagation_threshold.i.i37, align 8 + %cmp.i.i38 = icmp ult i32 %63, %64 br i1 %cmp.i.i38, label %_ZNK5arith6solver16propagation_modeEv.exit.i39, label %if.end42 _ZNK5arith6solver16propagation_modeEv.exit.i39: ; preds = %for.end %call2.i.i40 = tail call noundef nonnull align 8 dereferenceable(800) ptr @_ZNK3euf13th_euf_solver10get_configEv(ptr noundef nonnull align 8 dereferenceable(108) %this) %m_arith_bound_prop.i.i41 = getelementptr inbounds i8, ptr %call2.i.i40, i64 268 - %66 = load i32, ptr %m_arith_bound_prop.i.i41, align 4 - %cmp.i42 = icmp eq i32 %66, 2 + %65 = load i32, ptr %m_arith_bound_prop.i.i41, align 4 + %cmp.i42 = icmp eq i32 %65, 2 br i1 %cmp.i42, label %_ZNK5arith6solver20should_refine_boundsEv.exit48, label %if.end42 _ZNK5arith6solver20should_refine_boundsEv.exit48: ; preds = %_ZNK5arith6solver16propagation_modeEv.exit.i39 - %67 = load ptr, ptr %m_solver.i22, align 8 - %m_scope_lvl.i.i45 = getelementptr inbounds i8, ptr %67, i64 3756 - %68 = load i32, ptr %m_scope_lvl.i.i45, align 4 - %m_search_lvl.i.i46 = getelementptr inbounds i8, ptr %67, i64 3760 - %69 = load i32, ptr %m_search_lvl.i.i46, align 8 - %cmp.i1.i47 = icmp eq i32 %68, %69 + %66 = load ptr, ptr %m_solver.i22, align 8 + %m_scope_lvl.i.i45 = getelementptr inbounds i8, ptr %66, i64 3756 + %67 = load i32, ptr %m_scope_lvl.i.i45, align 4 + %m_search_lvl.i.i46 = getelementptr inbounds i8, ptr %66, i64 3760 + %68 = load i32, ptr %m_search_lvl.i.i46, align 8 + %cmp.i1.i47 = icmp eq i32 %67, %68 br i1 %cmp.i1.i47, label %land.lhs.true39, label %if.end42 land.lhs.true39: ; preds = %_ZNK5arith6solver20should_refine_boundsEv.exit48 @@ -11489,49 +11489,49 @@ if.end18: ; preds = %land.rhs.i.i, %_ZN7 %cond.i = select i1 %tobool.i30, i32 2, i32 -2 %m_strict.i = getelementptr inbounds i8, ptr %be, i64 37 %20 = load i8, ptr %m_strict.i, align 1 - %21 = and i8 %20, 1 - %div.i = zext nneg i8 %21 to i32 - %spec.select.i = ashr exact i32 %cond.i, %div.i + %tobool2.i = trunc i8 %20 to i1 + %div.i = select i1 %tobool.i30, i32 1, i32 -1 + %spec.select.i = select i1 %tobool2.i, i32 %div.i, i32 %cond.i switch i32 %spec.select.i, label %sw.epilog [ i32 -2, label %sw.bb i32 2, label %sw.bb79 ] sw.bb: ; preds = %if.end18 - %22 = load ptr, ptr %m_var2enode.i.i, align 8 - %arrayidx.i.i.i33 = getelementptr inbounds ptr, ptr %22, i64 %idxprom.i.i.i - %23 = load ptr, ptr %arrayidx.i.i.i33, align 8 - %24 = load ptr, ptr %23, align 8 - %call.i.i.i34 = invoke noundef ptr @_ZNK4expr8get_sortEv(ptr noundef nonnull align 4 dereferenceable(16) %24) + %21 = load ptr, ptr %m_var2enode.i.i, align 8 + %arrayidx.i.i.i33 = getelementptr inbounds ptr, ptr %21, i64 %idxprom.i.i.i + %22 = load ptr, ptr %arrayidx.i.i.i33, align 8 + %23 = load ptr, ptr %22, align 8 + %call.i.i.i34 = invoke noundef ptr @_ZNK4expr8get_sortEv(ptr noundef nonnull align 4 dereferenceable(16) %23) to label %call.i.i.i.noexc unwind label %lpad call.i.i.i.noexc: ; preds = %sw.bb %m_info.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %call.i.i.i34, i64 24 - %25 = load ptr, ptr %m_info.i.i.i.i.i.i.i, align 8 - %cmp.i.i.i.i.i.i.i = icmp eq ptr %25, null + %24 = load ptr, ptr %m_info.i.i.i.i.i.i.i, align 8 + %cmp.i.i.i.i.i.i.i = icmp eq ptr %24, null br i1 %cmp.i.i.i.i.i.i.i, label %if.end51, label %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i _ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i: ; preds = %call.i.i.i.noexc - %26 = load i32, ptr %25, align 8 - %cmp6.i.i.i.i.i.i = icmp eq i32 %26, 5 + %25 = load i32, ptr %24, align 8 + %cmp6.i.i.i.i.i.i = icmp eq i32 %25, 5 br i1 %cmp6.i.i.i.i.i.i, label %invoke.cont21, label %if.end51 invoke.cont21: ; preds = %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i - %m_kind.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %25, i64 4 - %27 = load i32, ptr %m_kind.i.i.i.i.i.i.i.i, align 4 - %cmp3.i.i.i.i.i.i = icmp eq i32 %27, 1 + %m_kind.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %24, i64 4 + %26 = load i32, ptr %m_kind.i.i.i.i.i.i.i.i, align 4 + %cmp3.i.i.i.i.i.i = icmp eq i32 %26, 1 br i1 %cmp3.i.i.i.i.i.i, label %invoke.cont25, label %if.end51 invoke.cont25: ; preds = %invoke.cont21 %m_solver.i = getelementptr inbounds i8, ptr %this, i64 592 - %28 = load ptr, ptr %m_solver.i, align 8 - %m_column_types.i.i = getelementptr inbounds i8, ptr %28, i64 896 - %29 = load ptr, ptr %m_column_types.i.i, align 8 - %30 = load ptr, ptr %29, align 8 + %27 = load ptr, ptr %m_solver.i, align 8 + %m_column_types.i.i = getelementptr inbounds i8, ptr %27, i64 896 + %28 = load ptr, ptr %m_column_types.i.i, align 8 + %29 = load ptr, ptr %28, align 8 %idxprom.i.i.i35 = zext nneg i32 %0 to i64 - %arrayidx.i.i.i36 = getelementptr inbounds i32, ptr %30, i64 %idxprom.i.i.i35 - %31 = load i32, ptr %arrayidx.i.i.i36, align 4 - %or.cond = icmp eq i32 %31, 2 + %arrayidx.i.i.i36 = getelementptr inbounds i32, ptr %29, i64 %idxprom.i.i.i35 + %30 = load i32, ptr %arrayidx.i.i.i36, align 4 + %or.cond = icmp eq i32 %30, 2 br i1 %or.cond, label %if.end51, label %if.then32 if.then32: ; preds = %invoke.cont25 @@ -11544,29 +11544,29 @@ invoke.cont38: ; preds = %if.then32 call.i.noexc: ; preds = %invoke.cont38 %m_info.i.i.i.i.i41 = getelementptr inbounds i8, ptr %call.i44, i64 24 - %32 = load ptr, ptr %m_info.i.i.i.i.i41, align 8 - %cmp.i.i.i.i.i42 = icmp eq ptr %32, null + %31 = load ptr, ptr %m_info.i.i.i.i.i41, align 8 + %cmp.i.i.i.i.i42 = icmp eq ptr %31, null br i1 %cmp.i.i.i.i.i42, label %invoke.cont43, label %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i _ZNK4decl13get_family_idEv.exit.thread.i.i.i.i: ; preds = %call.i.noexc - %33 = load i32, ptr %32, align 8 - %cmp6.i.i.i.i = icmp eq i32 %33, 5 + %32 = load i32, ptr %31, align 8 + %cmp6.i.i.i.i = icmp eq i32 %32, 5 br i1 %cmp6.i.i.i.i, label %cond.false.i3.i.i.i.i, label %invoke.cont43 cond.false.i3.i.i.i.i: ; preds = %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i - %m_kind.i.i.i.i.i.i43 = getelementptr inbounds i8, ptr %32, i64 4 - %34 = load i32, ptr %m_kind.i.i.i.i.i.i43, align 4 - %cmp3.i.i.i.i = icmp eq i32 %34, 1 + %m_kind.i.i.i.i.i.i43 = getelementptr inbounds i8, ptr %31, i64 4 + %33 = load i32, ptr %m_kind.i.i.i.i.i.i43, align 4 + %cmp3.i.i.i.i = icmp eq i32 %33, 1 br label %invoke.cont43 invoke.cont43: ; preds = %cond.false.i3.i.i.i.i, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i, %call.i.noexc - %35 = phi i1 [ %cmp3.i.i.i.i, %cond.false.i3.i.i.i.i ], [ false, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i ], [ false, %call.i.noexc ] - %call46 = invoke noundef ptr @_ZNK10arith_util10mk_numeralERK8rationalb(ptr noundef nonnull align 8 dereferenceable(16) %a, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp37, i1 noundef zeroext %35) + %34 = phi i1 [ %cmp3.i.i.i.i, %cond.false.i3.i.i.i.i ], [ false, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i ], [ false, %call.i.noexc ] + %call46 = invoke noundef ptr @_ZNK10arith_util10mk_numeralERK8rationalb(ptr noundef nonnull align 8 dereferenceable(16) %a, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp37, i1 noundef zeroext %34) to label %invoke.cont45 unwind label %lpad40 invoke.cont45: ; preds = %invoke.cont43 - %36 = load ptr, ptr %a, align 8 - %call.i46 = invoke noundef ptr @_ZN11ast_manager6mk_appEiiP4exprS1_(ptr noundef nonnull align 8 dereferenceable(976) %36, i32 noundef 5, i32 noundef 2, ptr noundef nonnull %3, ptr noundef %call46) + %35 = load ptr, ptr %a, align 8 + %call.i46 = invoke noundef ptr @_ZN11ast_manager6mk_appEiiP4exprS1_(ptr noundef nonnull align 8 dereferenceable(976) %35, i32 noundef 5, i32 noundef 2, ptr noundef nonnull %3, ptr noundef %call46) to label %invoke.cont47 unwind label %lpad40 invoke.cont47: ; preds = %invoke.cont45 @@ -11578,47 +11578,47 @@ invoke.cont49: ; preds = %invoke.cont47 br label %if.end51 lpad40: ; preds = %invoke.cont45, %invoke.cont38, %invoke.cont47, %invoke.cont43 - %37 = landingpad { ptr, i32 } + %36 = landingpad { ptr, i32 } cleanup call void @_ZN8rationalD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp37) #23 br label %ehcleanup if.end51: ; preds = %invoke.cont25, %call.i.i.i.noexc, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i, %invoke.cont49, %invoke.cont21 %bound.sroa.0.0 = phi i32 [ %call50, %invoke.cont49 ], [ %18, %invoke.cont21 ], [ %18, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i ], [ %18, %call.i.i.i.noexc ], [ %18, %invoke.cont25 ] - %38 = load ptr, ptr %m_var2enode.i.i, align 8 - %arrayidx.i.i.i49 = getelementptr inbounds ptr, ptr %38, i64 %idxprom.i.i.i - %39 = load ptr, ptr %arrayidx.i.i.i49, align 8 - %40 = load ptr, ptr %39, align 8 - %call.i.i.i58 = invoke noundef ptr @_ZNK4expr8get_sortEv(ptr noundef nonnull align 4 dereferenceable(16) %40) + %37 = load ptr, ptr %m_var2enode.i.i, align 8 + %arrayidx.i.i.i49 = getelementptr inbounds ptr, ptr %37, i64 %idxprom.i.i.i + %38 = load ptr, ptr %arrayidx.i.i.i49, align 8 + %39 = load ptr, ptr %38, align 8 + %call.i.i.i58 = invoke noundef ptr @_ZNK4expr8get_sortEv(ptr noundef nonnull align 4 dereferenceable(16) %39) to label %call.i.i.i.noexc57 unwind label %lpad call.i.i.i.noexc57: ; preds = %if.end51 %m_info.i.i.i.i.i.i.i50 = getelementptr inbounds i8, ptr %call.i.i.i58, i64 24 - %41 = load ptr, ptr %m_info.i.i.i.i.i.i.i50, align 8 - %cmp.i.i.i.i.i.i.i51 = icmp eq ptr %41, null + %40 = load ptr, ptr %m_info.i.i.i.i.i.i.i50, align 8 + %cmp.i.i.i.i.i.i.i51 = icmp eq ptr %40, null br i1 %cmp.i.i.i.i.i.i.i51, label %sw.epilog, label %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i52 _ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i52: ; preds = %call.i.i.i.noexc57 - %42 = load i32, ptr %41, align 8 - %cmp6.i.i.i.i.i.i53 = icmp eq i32 %42, 5 + %41 = load i32, ptr %40, align 8 + %cmp6.i.i.i.i.i.i53 = icmp eq i32 %41, 5 br i1 %cmp6.i.i.i.i.i.i53, label %invoke.cont52, label %sw.epilog invoke.cont52: ; preds = %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i52 - %m_kind.i.i.i.i.i.i.i.i55 = getelementptr inbounds i8, ptr %41, i64 4 - %43 = load i32, ptr %m_kind.i.i.i.i.i.i.i.i55, align 4 - %cmp3.i.i.i.i.i.i56 = icmp eq i32 %43, 0 + %m_kind.i.i.i.i.i.i.i.i55 = getelementptr inbounds i8, ptr %40, i64 4 + %42 = load i32, ptr %m_kind.i.i.i.i.i.i.i.i55, align 4 + %cmp3.i.i.i.i.i.i56 = icmp eq i32 %42, 0 br i1 %cmp3.i.i.i.i.i.i56, label %invoke.cont57, label %sw.epilog invoke.cont57: ; preds = %invoke.cont52 %m_solver.i59 = getelementptr inbounds i8, ptr %this, i64 592 - %44 = load ptr, ptr %m_solver.i59, align 8 - %m_column_types.i.i60 = getelementptr inbounds i8, ptr %44, i64 896 - %45 = load ptr, ptr %m_column_types.i.i60, align 8 - %46 = load ptr, ptr %45, align 8 + %43 = load ptr, ptr %m_solver.i59, align 8 + %m_column_types.i.i60 = getelementptr inbounds i8, ptr %43, i64 896 + %44 = load ptr, ptr %m_column_types.i.i60, align 8 + %45 = load ptr, ptr %44, align 8 %idxprom.i.i.i61 = zext nneg i32 %0 to i64 - %arrayidx.i.i.i62 = getelementptr inbounds i32, ptr %46, i64 %idxprom.i.i.i61 - %47 = load i32, ptr %arrayidx.i.i.i62, align 4 - %switch.i.i63 = icmp ugt i32 %47, 1 + %arrayidx.i.i.i62 = getelementptr inbounds i32, ptr %45, i64 %idxprom.i.i.i61 + %46 = load i32, ptr %arrayidx.i.i.i62, align 4 + %switch.i.i63 = icmp ugt i32 %46, 1 br i1 %switch.i.i63, label %sw.epilog, label %if.then59 if.then59: ; preds = %invoke.cont57 @@ -11627,61 +11627,61 @@ if.then59: ; preds = %invoke.cont57 call.i.noexc71: ; preds = %if.then59 %m_info.i.i.i.i.i64 = getelementptr inbounds i8, ptr %call.i72, i64 24 - %48 = load ptr, ptr %m_info.i.i.i.i.i64, align 8 - %cmp.i.i.i.i.i65 = icmp eq ptr %48, null + %47 = load ptr, ptr %m_info.i.i.i.i.i64, align 8 + %cmp.i.i.i.i.i65 = icmp eq ptr %47, null br i1 %cmp.i.i.i.i.i65, label %invoke.cont69, label %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i66 _ZNK4decl13get_family_idEv.exit.thread.i.i.i.i66: ; preds = %call.i.noexc71 - %49 = load i32, ptr %48, align 8 - %cmp6.i.i.i.i67 = icmp eq i32 %49, 5 + %48 = load i32, ptr %47, align 8 + %cmp6.i.i.i.i67 = icmp eq i32 %48, 5 br i1 %cmp6.i.i.i.i67, label %cond.false.i3.i.i.i.i68, label %invoke.cont69 cond.false.i3.i.i.i.i68: ; preds = %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i66 - %m_kind.i.i.i.i.i.i69 = getelementptr inbounds i8, ptr %48, i64 4 - %50 = load i32, ptr %m_kind.i.i.i.i.i.i69, align 4 - %cmp3.i.i.i.i70 = icmp eq i32 %50, 1 + %m_kind.i.i.i.i.i.i69 = getelementptr inbounds i8, ptr %47, i64 4 + %49 = load i32, ptr %m_kind.i.i.i.i.i.i69, align 4 + %cmp3.i.i.i.i70 = icmp eq i32 %49, 1 br label %invoke.cont69 invoke.cont69: ; preds = %cond.false.i3.i.i.i.i68, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i66, %call.i.noexc71 - %51 = phi i1 [ %cmp3.i.i.i.i70, %cond.false.i3.i.i.i.i68 ], [ false, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i66 ], [ false, %call.i.noexc71 ] - %call72 = invoke noundef ptr @_ZNK10arith_util10mk_numeralERK8rationalb(ptr noundef nonnull align 8 dereferenceable(16) %a, ptr noundef nonnull align 8 dereferenceable(32) %be, i1 noundef zeroext %51) + %50 = phi i1 [ %cmp3.i.i.i.i70, %cond.false.i3.i.i.i.i68 ], [ false, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i66 ], [ false, %call.i.noexc71 ] + %call72 = invoke noundef ptr @_ZNK10arith_util10mk_numeralERK8rationalb(ptr noundef nonnull align 8 dereferenceable(16) %a, ptr noundef nonnull align 8 dereferenceable(32) %be, i1 noundef zeroext %50) to label %invoke.cont134.invoke unwind label %lpad sw.bb79: ; preds = %if.end18 - %52 = load ptr, ptr %m_var2enode.i.i, align 8 - %arrayidx.i.i.i79 = getelementptr inbounds ptr, ptr %52, i64 %idxprom.i.i.i - %53 = load ptr, ptr %arrayidx.i.i.i79, align 8 - %54 = load ptr, ptr %53, align 8 - %call.i.i.i88 = invoke noundef ptr @_ZNK4expr8get_sortEv(ptr noundef nonnull align 4 dereferenceable(16) %54) + %51 = load ptr, ptr %m_var2enode.i.i, align 8 + %arrayidx.i.i.i79 = getelementptr inbounds ptr, ptr %51, i64 %idxprom.i.i.i + %52 = load ptr, ptr %arrayidx.i.i.i79, align 8 + %53 = load ptr, ptr %52, align 8 + %call.i.i.i88 = invoke noundef ptr @_ZNK4expr8get_sortEv(ptr noundef nonnull align 4 dereferenceable(16) %53) to label %call.i.i.i.noexc87 unwind label %lpad call.i.i.i.noexc87: ; preds = %sw.bb79 %m_info.i.i.i.i.i.i.i80 = getelementptr inbounds i8, ptr %call.i.i.i88, i64 24 - %55 = load ptr, ptr %m_info.i.i.i.i.i.i.i80, align 8 - %cmp.i.i.i.i.i.i.i81 = icmp eq ptr %55, null + %54 = load ptr, ptr %m_info.i.i.i.i.i.i.i80, align 8 + %cmp.i.i.i.i.i.i.i81 = icmp eq ptr %54, null br i1 %cmp.i.i.i.i.i.i.i81, label %if.end114, label %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i82 _ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i82: ; preds = %call.i.i.i.noexc87 - %56 = load i32, ptr %55, align 8 - %cmp6.i.i.i.i.i.i83 = icmp eq i32 %56, 5 + %55 = load i32, ptr %54, align 8 + %cmp6.i.i.i.i.i.i83 = icmp eq i32 %55, 5 br i1 %cmp6.i.i.i.i.i.i83, label %invoke.cont80, label %if.end114 invoke.cont80: ; preds = %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i82 - %m_kind.i.i.i.i.i.i.i.i85 = getelementptr inbounds i8, ptr %55, i64 4 - %57 = load i32, ptr %m_kind.i.i.i.i.i.i.i.i85, align 4 - %cmp3.i.i.i.i.i.i86 = icmp eq i32 %57, 1 + %m_kind.i.i.i.i.i.i.i.i85 = getelementptr inbounds i8, ptr %54, i64 4 + %56 = load i32, ptr %m_kind.i.i.i.i.i.i.i.i85, align 4 + %cmp3.i.i.i.i.i.i86 = icmp eq i32 %56, 1 br i1 %cmp3.i.i.i.i.i.i86, label %invoke.cont85, label %if.end114 invoke.cont85: ; preds = %invoke.cont80 %m_solver.i90 = getelementptr inbounds i8, ptr %this, i64 592 - %58 = load ptr, ptr %m_solver.i90, align 8 - %m_column_types.i.i91 = getelementptr inbounds i8, ptr %58, i64 896 - %59 = load ptr, ptr %m_column_types.i.i91, align 8 - %60 = load ptr, ptr %59, align 8 + %57 = load ptr, ptr %m_solver.i90, align 8 + %m_column_types.i.i91 = getelementptr inbounds i8, ptr %57, i64 896 + %58 = load ptr, ptr %m_column_types.i.i91, align 8 + %59 = load ptr, ptr %58, align 8 %idxprom.i.i.i92 = zext nneg i32 %0 to i64 - %arrayidx.i.i.i93 = getelementptr inbounds i32, ptr %60, i64 %idxprom.i.i.i92 - %61 = load i32, ptr %arrayidx.i.i.i93, align 4 - %or.cond154 = icmp eq i32 %61, 1 + %arrayidx.i.i.i93 = getelementptr inbounds i32, ptr %59, i64 %idxprom.i.i.i92 + %60 = load i32, ptr %arrayidx.i.i.i93, align 4 + %or.cond154 = icmp eq i32 %60, 1 br i1 %or.cond154, label %if.end114, label %if.then92 if.then92: ; preds = %invoke.cont85 @@ -11694,29 +11694,29 @@ invoke.cont100: ; preds = %if.then92 call.i.noexc108: ; preds = %invoke.cont100 %m_info.i.i.i.i.i101 = getelementptr inbounds i8, ptr %call.i109, i64 24 - %62 = load ptr, ptr %m_info.i.i.i.i.i101, align 8 - %cmp.i.i.i.i.i102 = icmp eq ptr %62, null + %61 = load ptr, ptr %m_info.i.i.i.i.i101, align 8 + %cmp.i.i.i.i.i102 = icmp eq ptr %61, null br i1 %cmp.i.i.i.i.i102, label %invoke.cont105, label %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i103 _ZNK4decl13get_family_idEv.exit.thread.i.i.i.i103: ; preds = %call.i.noexc108 - %63 = load i32, ptr %62, align 8 - %cmp6.i.i.i.i104 = icmp eq i32 %63, 5 + %62 = load i32, ptr %61, align 8 + %cmp6.i.i.i.i104 = icmp eq i32 %62, 5 br i1 %cmp6.i.i.i.i104, label %cond.false.i3.i.i.i.i105, label %invoke.cont105 cond.false.i3.i.i.i.i105: ; preds = %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i103 - %m_kind.i.i.i.i.i.i106 = getelementptr inbounds i8, ptr %62, i64 4 - %64 = load i32, ptr %m_kind.i.i.i.i.i.i106, align 4 - %cmp3.i.i.i.i107 = icmp eq i32 %64, 1 + %m_kind.i.i.i.i.i.i106 = getelementptr inbounds i8, ptr %61, i64 4 + %63 = load i32, ptr %m_kind.i.i.i.i.i.i106, align 4 + %cmp3.i.i.i.i107 = icmp eq i32 %63, 1 br label %invoke.cont105 invoke.cont105: ; preds = %cond.false.i3.i.i.i.i105, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i103, %call.i.noexc108 - %65 = phi i1 [ %cmp3.i.i.i.i107, %cond.false.i3.i.i.i.i105 ], [ false, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i103 ], [ false, %call.i.noexc108 ] - %call108 = invoke noundef ptr @_ZNK10arith_util10mk_numeralERK8rationalb(ptr noundef nonnull align 8 dereferenceable(16) %a, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp98, i1 noundef zeroext %65) + %64 = phi i1 [ %cmp3.i.i.i.i107, %cond.false.i3.i.i.i.i105 ], [ false, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i103 ], [ false, %call.i.noexc108 ] + %call108 = invoke noundef ptr @_ZNK10arith_util10mk_numeralERK8rationalb(ptr noundef nonnull align 8 dereferenceable(16) %a, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp98, i1 noundef zeroext %64) to label %invoke.cont107 unwind label %lpad102 invoke.cont107: ; preds = %invoke.cont105 - %66 = load ptr, ptr %a, align 8 - %call.i112 = invoke noundef ptr @_ZN11ast_manager6mk_appEiiP4exprS1_(ptr noundef nonnull align 8 dereferenceable(976) %66, i32 noundef 5, i32 noundef 3, ptr noundef nonnull %3, ptr noundef %call108) + %65 = load ptr, ptr %a, align 8 + %call.i112 = invoke noundef ptr @_ZN11ast_manager6mk_appEiiP4exprS1_(ptr noundef nonnull align 8 dereferenceable(976) %65, i32 noundef 5, i32 noundef 3, ptr noundef nonnull %3, ptr noundef %call108) to label %invoke.cont109 unwind label %lpad102 invoke.cont109: ; preds = %invoke.cont107 @@ -11728,47 +11728,47 @@ invoke.cont111: ; preds = %invoke.cont109 br label %if.end114 lpad102: ; preds = %invoke.cont107, %invoke.cont100, %invoke.cont109, %invoke.cont105 - %67 = landingpad { ptr, i32 } + %66 = landingpad { ptr, i32 } cleanup call void @_ZN8rationalD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp98) #23 br label %ehcleanup if.end114: ; preds = %invoke.cont85, %call.i.i.i.noexc87, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i82, %invoke.cont111, %invoke.cont80 %bound.sroa.0.1 = phi i32 [ %call112, %invoke.cont111 ], [ %18, %invoke.cont80 ], [ %18, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i82 ], [ %18, %call.i.i.i.noexc87 ], [ %18, %invoke.cont85 ] - %68 = load ptr, ptr %m_var2enode.i.i, align 8 - %arrayidx.i.i.i115 = getelementptr inbounds ptr, ptr %68, i64 %idxprom.i.i.i - %69 = load ptr, ptr %arrayidx.i.i.i115, align 8 - %70 = load ptr, ptr %69, align 8 - %call.i.i.i124 = invoke noundef ptr @_ZNK4expr8get_sortEv(ptr noundef nonnull align 4 dereferenceable(16) %70) + %67 = load ptr, ptr %m_var2enode.i.i, align 8 + %arrayidx.i.i.i115 = getelementptr inbounds ptr, ptr %67, i64 %idxprom.i.i.i + %68 = load ptr, ptr %arrayidx.i.i.i115, align 8 + %69 = load ptr, ptr %68, align 8 + %call.i.i.i124 = invoke noundef ptr @_ZNK4expr8get_sortEv(ptr noundef nonnull align 4 dereferenceable(16) %69) to label %call.i.i.i.noexc123 unwind label %lpad call.i.i.i.noexc123: ; preds = %if.end114 %m_info.i.i.i.i.i.i.i116 = getelementptr inbounds i8, ptr %call.i.i.i124, i64 24 - %71 = load ptr, ptr %m_info.i.i.i.i.i.i.i116, align 8 - %cmp.i.i.i.i.i.i.i117 = icmp eq ptr %71, null + %70 = load ptr, ptr %m_info.i.i.i.i.i.i.i116, align 8 + %cmp.i.i.i.i.i.i.i117 = icmp eq ptr %70, null br i1 %cmp.i.i.i.i.i.i.i117, label %sw.epilog, label %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i118 _ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i118: ; preds = %call.i.i.i.noexc123 - %72 = load i32, ptr %71, align 8 - %cmp6.i.i.i.i.i.i119 = icmp eq i32 %72, 5 + %71 = load i32, ptr %70, align 8 + %cmp6.i.i.i.i.i.i119 = icmp eq i32 %71, 5 br i1 %cmp6.i.i.i.i.i.i119, label %invoke.cont115, label %sw.epilog invoke.cont115: ; preds = %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i118 - %m_kind.i.i.i.i.i.i.i.i121 = getelementptr inbounds i8, ptr %71, i64 4 - %73 = load i32, ptr %m_kind.i.i.i.i.i.i.i.i121, align 4 - %cmp3.i.i.i.i.i.i122 = icmp eq i32 %73, 0 + %m_kind.i.i.i.i.i.i.i.i121 = getelementptr inbounds i8, ptr %70, i64 4 + %72 = load i32, ptr %m_kind.i.i.i.i.i.i.i.i121, align 4 + %cmp3.i.i.i.i.i.i122 = icmp eq i32 %72, 0 br i1 %cmp3.i.i.i.i.i.i122, label %invoke.cont120, label %sw.epilog invoke.cont120: ; preds = %invoke.cont115 %m_solver.i126 = getelementptr inbounds i8, ptr %this, i64 592 - %74 = load ptr, ptr %m_solver.i126, align 8 - %m_column_types.i.i127 = getelementptr inbounds i8, ptr %74, i64 896 - %75 = load ptr, ptr %m_column_types.i.i127, align 8 - %76 = load ptr, ptr %75, align 8 + %73 = load ptr, ptr %m_solver.i126, align 8 + %m_column_types.i.i127 = getelementptr inbounds i8, ptr %73, i64 896 + %74 = load ptr, ptr %m_column_types.i.i127, align 8 + %75 = load ptr, ptr %74, align 8 %idxprom.i.i.i128 = zext nneg i32 %0 to i64 - %arrayidx.i.i.i129 = getelementptr inbounds i32, ptr %76, i64 %idxprom.i.i.i128 - %77 = load i32, ptr %arrayidx.i.i.i129, align 4 - %switch.and.i.i130 = and i32 %77, -3 + %arrayidx.i.i.i129 = getelementptr inbounds i32, ptr %75, i64 %idxprom.i.i.i128 + %76 = load i32, ptr %arrayidx.i.i.i129, align 4 + %switch.and.i.i130 = and i32 %76, -3 %switch.selectcmp.i.i131.not = icmp eq i32 %switch.and.i.i130, 0 br i1 %switch.selectcmp.i.i131.not, label %if.then122, label %sw.epilog @@ -11778,59 +11778,59 @@ if.then122: ; preds = %invoke.cont120 call.i.noexc139: ; preds = %if.then122 %m_info.i.i.i.i.i132 = getelementptr inbounds i8, ptr %call.i140, i64 24 - %78 = load ptr, ptr %m_info.i.i.i.i.i132, align 8 - %cmp.i.i.i.i.i133 = icmp eq ptr %78, null + %77 = load ptr, ptr %m_info.i.i.i.i.i132, align 8 + %cmp.i.i.i.i.i133 = icmp eq ptr %77, null br i1 %cmp.i.i.i.i.i133, label %invoke.cont132, label %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i134 _ZNK4decl13get_family_idEv.exit.thread.i.i.i.i134: ; preds = %call.i.noexc139 - %79 = load i32, ptr %78, align 8 - %cmp6.i.i.i.i135 = icmp eq i32 %79, 5 + %78 = load i32, ptr %77, align 8 + %cmp6.i.i.i.i135 = icmp eq i32 %78, 5 br i1 %cmp6.i.i.i.i135, label %cond.false.i3.i.i.i.i136, label %invoke.cont132 cond.false.i3.i.i.i.i136: ; preds = %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i134 - %m_kind.i.i.i.i.i.i137 = getelementptr inbounds i8, ptr %78, i64 4 - %80 = load i32, ptr %m_kind.i.i.i.i.i.i137, align 4 - %cmp3.i.i.i.i138 = icmp eq i32 %80, 1 + %m_kind.i.i.i.i.i.i137 = getelementptr inbounds i8, ptr %77, i64 4 + %79 = load i32, ptr %m_kind.i.i.i.i.i.i137, align 4 + %cmp3.i.i.i.i138 = icmp eq i32 %79, 1 br label %invoke.cont132 invoke.cont132: ; preds = %cond.false.i3.i.i.i.i136, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i134, %call.i.noexc139 - %81 = phi i1 [ %cmp3.i.i.i.i138, %cond.false.i3.i.i.i.i136 ], [ false, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i134 ], [ false, %call.i.noexc139 ] - %call135 = invoke noundef ptr @_ZNK10arith_util10mk_numeralERK8rationalb(ptr noundef nonnull align 8 dereferenceable(16) %a, ptr noundef nonnull align 8 dereferenceable(32) %be, i1 noundef zeroext %81) + %80 = phi i1 [ %cmp3.i.i.i.i138, %cond.false.i3.i.i.i.i136 ], [ false, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i134 ], [ false, %call.i.noexc139 ] + %call135 = invoke noundef ptr @_ZNK10arith_util10mk_numeralERK8rationalb(ptr noundef nonnull align 8 dereferenceable(16) %a, ptr noundef nonnull align 8 dereferenceable(32) %be, i1 noundef zeroext %80) to label %invoke.cont134.invoke unwind label %lpad invoke.cont134.invoke: ; preds = %invoke.cont132, %invoke.cont69 - %82 = phi i32 [ 2, %invoke.cont69 ], [ 3, %invoke.cont132 ] - %83 = phi ptr [ %call72, %invoke.cont69 ], [ %call135, %invoke.cont132 ] - %84 = load ptr, ptr %a, align 8 - %85 = invoke noundef ptr @_ZN11ast_manager6mk_appEiiP4exprS1_(ptr noundef nonnull align 8 dereferenceable(976) %84, i32 noundef 5, i32 noundef %82, ptr noundef nonnull %3, ptr noundef %83) + %81 = phi i32 [ 2, %invoke.cont69 ], [ 3, %invoke.cont132 ] + %82 = phi ptr [ %call72, %invoke.cont69 ], [ %call135, %invoke.cont132 ] + %83 = load ptr, ptr %a, align 8 + %84 = invoke noundef ptr @_ZN11ast_manager6mk_appEiiP4exprS1_(ptr noundef nonnull align 8 dereferenceable(976) %83, i32 noundef 5, i32 noundef %81, ptr noundef nonnull %3, ptr noundef %82) to label %invoke.cont136.invoke unwind label %lpad invoke.cont136.invoke: ; preds = %invoke.cont134.invoke - %86 = invoke i32 @_ZNK3euf13th_euf_solver10mk_literalEP4expr(ptr noundef nonnull align 8 dereferenceable(108) %this, ptr noundef %85) + %85 = invoke i32 @_ZNK3euf13th_euf_solver10mk_literalEP4expr(ptr noundef nonnull align 8 dereferenceable(108) %this, ptr noundef %84) to label %sw.epilog unwind label %lpad sw.epilog: ; preds = %invoke.cont136.invoke, %call.i.i.i.noexc123, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i118, %call.i.i.i.noexc57, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i52, %if.end18, %invoke.cont115, %invoke.cont120, %invoke.cont52, %invoke.cont57 - %bound.sroa.0.2 = phi i32 [ %18, %if.end18 ], [ %bound.sroa.0.1, %invoke.cont120 ], [ %bound.sroa.0.1, %invoke.cont115 ], [ %bound.sroa.0.0, %invoke.cont57 ], [ %bound.sroa.0.0, %invoke.cont52 ], [ %bound.sroa.0.0, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i52 ], [ %bound.sroa.0.0, %call.i.i.i.noexc57 ], [ %bound.sroa.0.1, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i118 ], [ %bound.sroa.0.1, %call.i.i.i.noexc123 ], [ %86, %invoke.cont136.invoke ] + %bound.sroa.0.2 = phi i32 [ %18, %if.end18 ], [ %bound.sroa.0.1, %invoke.cont120 ], [ %bound.sroa.0.1, %invoke.cont115 ], [ %bound.sroa.0.0, %invoke.cont57 ], [ %bound.sroa.0.0, %invoke.cont52 ], [ %bound.sroa.0.0, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i52 ], [ %bound.sroa.0.0, %call.i.i.i.noexc57 ], [ %bound.sroa.0.1, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i118 ], [ %bound.sroa.0.1, %call.i.i.i.noexc123 ], [ %85, %invoke.cont136.invoke ] %.b = load i1, ptr @_ZN3satL12null_literalE.0, align 4 - %87 = select i1 %.b, i32 -2, i32 0 - %cmp.i = icmp eq i32 %bound.sroa.0.2, %87 + %86 = select i1 %.b, i32 -2, i32 0 + %cmp.i = icmp eq i32 %bound.sroa.0.2, %86 br i1 %cmp.i, label %if.then.i.i.i, label %invoke.cont149 invoke.cont149: ; preds = %sw.epilog %m_solver.i145 = getelementptr inbounds i8, ptr %this, i64 24 - %88 = load ptr, ptr %m_solver.i145, align 8 - %m_assignment.i = getelementptr inbounds i8, ptr %88, i64 3440 - %89 = load ptr, ptr %m_assignment.i, align 8 + %87 = load ptr, ptr %m_solver.i145, align 8 + %m_assignment.i = getelementptr inbounds i8, ptr %87, i64 3440 + %88 = load ptr, ptr %m_assignment.i, align 8 %idxprom.i.i = zext i32 %bound.sroa.0.2 to i64 - %arrayidx.i.i = getelementptr inbounds i32, ptr %89, i64 %idxprom.i.i - %90 = load i32, ptr %arrayidx.i.i, align 4 - %cmp = icmp eq i32 %90, 1 + %arrayidx.i.i = getelementptr inbounds i32, ptr %88, i64 %idxprom.i.i + %89 = load i32, ptr %arrayidx.i.i, align 4 + %cmp = icmp eq i32 %89, 1 br i1 %cmp, label %if.then.i.i.i, label %if.end152 if.end152: ; preds = %invoke.cont149 %m_bound_propagations1 = getelementptr inbounds i8, ptr %this, i64 532 - %91 = load i32, ptr %m_bound_propagations1, align 4 - %inc = add i32 %91, 1 + %90 = load i32, ptr %m_bound_propagations1, align 4 + %inc = add i32 %90, 1 store i32 %inc, ptr %m_bound_propagations1, align 4 call void @_ZN5arith6solver14reset_evidenceEv(ptr noundef nonnull align 8 dereferenceable(1144) %this) %m_explanation = getelementptr inbounds i8, ptr %this, i64 816 @@ -11839,9 +11839,9 @@ if.end152: ; preds = %invoke.cont149 invoke.cont155: ; preds = %if.end152 %m_solver.i146 = getelementptr inbounds i8, ptr %this, i64 592 - %92 = load ptr, ptr %m_solver.i146, align 8 + %91 = load ptr, ptr %m_solver.i146, align 8 %m_bp = getelementptr inbounds i8, ptr %this, i64 656 - invoke void @_ZN2lp10lar_solver21explain_implied_boundIN5arith6solverEEEvRKNS_13implied_boundERNS_19lp_bound_propagatorIT_EE(ptr noundef nonnull align 8 dereferenceable(1888) %92, ptr noundef nonnull align 8 dereferenceable(72) %be, ptr noundef nonnull align 8 dereferenceable(152) %m_bp) + invoke void @_ZN2lp10lar_solver21explain_implied_boundIN5arith6solverEEEvRKNS_13implied_boundERNS_19lp_bound_propagatorIT_EE(ptr noundef nonnull align 8 dereferenceable(1888) %91, ptr noundef nonnull align 8 dereferenceable(72) %be, ptr noundef nonnull align 8 dereferenceable(152) %m_bp) to label %invoke.cont157 unwind label %lpad invoke.cont157: ; preds = %invoke.cont155 @@ -11856,8 +11856,8 @@ invoke.cont161: ; preds = %invoke.cont157 if.then.i.i.i: ; preds = %invoke.cont15, %invoke.cont9, %invoke.cont4, %sw.epilog, %invoke.cont149, %invoke.cont161 %m_ref_count.i.i.i.i148 = getelementptr inbounds i8, ptr %3, i64 8 - %93 = load i32, ptr %m_ref_count.i.i.i.i148, align 4 - %dec.i.i.i.i = add i32 %93, -1 + %92 = load i32, ptr %m_ref_count.i.i.i.i148, align 4 + %dec.i.i.i.i = add i32 %92, -1 store i32 %dec.i.i.i.i, ptr %m_ref_count.i.i.i.i148, align 4 %cmp.i.i.i149 = icmp eq i32 %dec.i.i.i.i, 0 br i1 %cmp.i.i.i149, label %if.then2.i.i.i, label %cleanup.cont @@ -11867,17 +11867,17 @@ if.then2.i.i.i: ; preds = %if.then.i.i.i to label %cleanup.cont unwind label %terminate.lpad.i terminate.lpad.i: ; preds = %if.then2.i.i.i - %94 = landingpad { ptr, i32 } + %93 = landingpad { ptr, i32 } catch ptr null - %95 = extractvalue { ptr, i32 } %94, 0 - call void @__clang_call_terminate(ptr %95) #24 + %94 = extractvalue { ptr, i32 } %93, 0 + call void @__clang_call_terminate(ptr %94) #24 unreachable cleanup.cont: ; preds = %if.then2.i.i.i, %if.then.i.i.i, %entry ret void ehcleanup: ; preds = %lpad102, %lpad40, %lpad - %.pn = phi { ptr, i32 } [ %17, %lpad ], [ %67, %lpad102 ], [ %37, %lpad40 ] + %.pn = phi { ptr, i32 } [ %17, %lpad ], [ %66, %lpad102 ], [ %36, %lpad40 ] call void @_ZN7obj_refI4expr11ast_managerED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %w) #23 resume { ptr, i32 } %.pn } @@ -34301,8 +34301,8 @@ entry: %1 = load ptr, ptr %m_solver.i.i, align 8 %call3 = tail call noundef i32 @_ZNK2lp10lar_solver24column_to_reported_indexEj(ptr noundef nonnull align 8 dereferenceable(1888) %1, i32 noundef %j) %cond = select i1 %is_low, i32 2, i32 -2 - %div = zext i1 %strict to i32 - %spec.select = ashr exact i32 %cond, %div + %div = select i1 %is_low, i32 1, i32 -1 + %spec.select = select i1 %strict, i32 %div, i32 %cond %2 = load ptr, ptr %m_imp.i, align 8 %call5 = tail call noundef zeroext i1 @_ZNK5arith6solver20bound_is_interestingEjN2lp16lconstraint_kindERK8rational(ptr noundef nonnull align 8 dereferenceable(1144) %2, i32 noundef %call3, i32 noundef %spec.select, ptr noundef nonnull align 8 dereferenceable(32) %v) br i1 %call5, label %if.end7, label %if.end87 diff --git a/bench/z3/optimized/lar_solver.cpp.ll b/bench/z3/optimized/lar_solver.cpp.ll index 31176cae0d4..ee79c72b0a1 100644 --- a/bench/z3/optimized/lar_solver.cpp.ll +++ b/bench/z3/optimized/lar_solver.cpp.ll @@ -3108,9 +3108,9 @@ if.end: ; preds = %invoke.cont, %if.th %cond.i = select i1 %tobool.i14, i32 2, i32 -2 %m_strict.i = getelementptr inbounds i8, ptr %be, i64 37 %7 = load i8, ptr %m_strict.i, align 1 - %8 = and i8 %7, 1 - %div.i = zext nneg i8 %8 to i32 - %spec.select.i = ashr exact i32 %cond.i, %div.i + %tobool2.i = trunc i8 %7 to i1 + %div.i = select i1 %tobool.i14, i32 1, i32 -1 + %spec.select.i = select i1 %tobool2.i, i32 %div.i, i32 %cond.i call void @_ZN2lp23lconstraint_kind_stringB5cxx11ENS_16lconstraint_kindE(ptr nonnull sret(%"class.std::__cxx11::basic_string") align 8 %ref.tmp13, i32 noundef %spec.select.i) %call17 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %call12, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp13) to label %invoke.cont16 unwind label %lpad15 @@ -3121,8 +3121,8 @@ invoke.cont16: ; preds = %if.end invoke.cont18: ; preds = %invoke.cont16 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i) - %9 = load ptr, ptr @_ZN8rational13g_mpq_managerE, align 8 - invoke void @_ZNK11mpq_managerILb1EE9to_stringB5cxx11ERK3mpq(ptr nonnull sret(%"class.std::__cxx11::basic_string") align 8 %ref.tmp.i, ptr noundef nonnull align 8 dereferenceable(728) %9, ptr noundef nonnull align 8 dereferenceable(32) %be) + %8 = load ptr, ptr @_ZN8rational13g_mpq_managerE, align 8 + invoke void @_ZNK11mpq_managerILb1EE9to_stringB5cxx11ERK3mpq(ptr nonnull sret(%"class.std::__cxx11::basic_string") align 8 %ref.tmp.i, ptr noundef nonnull align 8 dereferenceable(728) %8, ptr noundef nonnull align 8 dereferenceable(32) %be) to label %.noexc unwind label %lpad15 .noexc: ; preds = %invoke.cont18 @@ -3130,7 +3130,7 @@ invoke.cont18: ; preds = %invoke.cont16 to label %invoke.cont20 unwind label %lpad.i lpad.i: ; preds = %.noexc - %10 = landingpad { ptr, i32 } + %9 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp.i) #26 br label %eh.resume @@ -3148,13 +3148,13 @@ invoke.cont22: ; preds = %invoke.cont20 ret ptr %out lpad15: ; preds = %invoke.cont18, %invoke.cont20, %invoke.cont16, %if.end - %11 = landingpad { ptr, i32 } + %10 = landingpad { ptr, i32 } cleanup br label %eh.resume eh.resume: ; preds = %lpad15, %lpad.i, %lpad %ref.tmp13.sink = phi ptr [ %ref.tmp, %lpad ], [ %ref.tmp13, %lpad.i ], [ %ref.tmp13, %lpad15 ] - %.pn = phi { ptr, i32 } [ %5, %lpad ], [ %10, %lpad.i ], [ %11, %lpad15 ] + %.pn = phi { ptr, i32 } [ %5, %lpad ], [ %9, %lpad.i ], [ %10, %lpad15 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp13.sink) #26 resume { ptr, i32 } %.pn } @@ -4831,14 +4831,14 @@ if.end180: ; preds = %.noexc.i124, %_ZN8r %cond.i = select i1 %tobool.i316, i32 2, i32 -2 %m_strict.i = getelementptr inbounds i8, ptr %be, i64 37 %116 = load i8, ptr %m_strict.i, align 1 - %117 = and i8 %116, 1 - %div.i = zext nneg i8 %117 to i32 - %spec.select.i = ashr exact i32 %cond.i, %div.i + %tobool2.i = trunc i8 %116 to i1 + %div.i = select i1 %tobool.i316, i32 1, i32 -1 + %spec.select.i = select i1 %tobool2.i, i32 %div.i, i32 %cond.i %cmp183 = icmp eq i32 %kind38.4, %spec.select.i br i1 %cmp183, label %land.rhs, label %cleanup186 land.rhs: ; preds = %if.end180 - %118 = load ptr, ptr @_ZN8rational13g_mpq_managerE, align 8 + %117 = load ptr, ptr @_ZN8rational13g_mpq_managerE, align 8 %bf.load.i.i.i.i.i318 = load i8, ptr %m_kind.i.i.i.i, align 4 %bf.clear.i.i.i.i.i319 = and i8 %bf.load.i.i.i.i.i318, 1 %cmp.i.i.i.i.i320 = icmp eq i8 %bf.clear.i.i.i.i.i319, 0 @@ -4852,13 +4852,13 @@ land.lhs.true.i.i.i.i329: ; preds = %land.rhs br i1 %cmp.i8.i.i.i.i333, label %if.then.i.i.i.i334, label %_ZN11mpq_managerILb1EE2eqERK3mpzS3_.exit.i.i if.then.i.i.i.i334: ; preds = %land.lhs.true.i.i.i.i329 - %119 = load i32, ptr %rs_of_evidence, align 8 - %120 = load i32, ptr %be, align 8 - %cmp.i.i.i.i335 = icmp eq i32 %119, %120 + %118 = load i32, ptr %rs_of_evidence, align 8 + %119 = load i32, ptr %be, align 8 + %cmp.i.i.i.i335 = icmp eq i32 %118, %119 br i1 %cmp.i.i.i.i335, label %land.rhs.i.i, label %cleanup186 _ZN11mpq_managerILb1EE2eqERK3mpzS3_.exit.i.i: ; preds = %land.lhs.true.i.i.i.i329, %land.rhs - %call4.i.i.i.i337 = invoke noundef i32 @_ZN11mpz_managerILb1EE11big_compareERK3mpzS3_(ptr noundef nonnull align 8 dereferenceable(600) %118, ptr noundef nonnull align 8 dereferenceable(16) %rs_of_evidence, ptr noundef nonnull align 8 dereferenceable(16) %be) + %call4.i.i.i.i337 = invoke noundef i32 @_ZN11mpz_managerILb1EE11big_compareERK3mpzS3_(ptr noundef nonnull align 8 dereferenceable(600) %117, ptr noundef nonnull align 8 dereferenceable(16) %rs_of_evidence, ptr noundef nonnull align 8 dereferenceable(16) %be) to label %call4.i.i.i.i.noexc336 unwind label %lpad2.loopexit.split-lp call4.i.i.i.i.noexc336: ; preds = %_ZN11mpq_managerILb1EE2eqERK3mpzS3_.exit.i.i @@ -4880,13 +4880,13 @@ land.lhs.true.i.i11.i.i: ; preds = %land.rhs.i.i br i1 %cmp.i8.i.i15.i.i, label %if.then.i.i16.i.i, label %if.else.i.i7.i.i328 if.then.i.i16.i.i: ; preds = %land.lhs.true.i.i11.i.i - %121 = load i32, ptr %m_den.i.i.i, align 8 - %122 = load i32, ptr %m_den3.i.i323, align 8 - %cmp.i.i17.i.i = icmp eq i32 %121, %122 + %120 = load i32, ptr %m_den.i.i.i, align 8 + %121 = load i32, ptr %m_den3.i.i323, align 8 + %cmp.i.i17.i.i = icmp eq i32 %120, %121 br label %cleanup186 if.else.i.i7.i.i328: ; preds = %land.lhs.true.i.i11.i.i, %land.rhs.i.i - %call4.i.i8.i.i338 = invoke noundef i32 @_ZN11mpz_managerILb1EE11big_compareERK3mpzS3_(ptr noundef nonnull align 8 dereferenceable(600) %118, ptr noundef nonnull align 8 dereferenceable(16) %m_den.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %m_den3.i.i323) + %call4.i.i8.i.i338 = invoke noundef i32 @_ZN11mpz_managerILb1EE11big_compareERK3mpzS3_(ptr noundef nonnull align 8 dereferenceable(600) %117, ptr noundef nonnull align 8 dereferenceable(16) %m_den.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %m_den3.i.i323) to label %call4.i.i8.i.i.noexc unwind label %lpad2.loopexit.split-lp call4.i.i8.i.i.noexc: ; preds = %if.else.i.i7.i.i328 @@ -4895,63 +4895,63 @@ call4.i.i8.i.i.noexc: ; preds = %if.else.i.i7.i.i328 cleanup186: ; preds = %if.end3.i.i.i.i, %lor.lhs.false.i.i.i.i, %if.end3.i.i.i.i141, %lor.lhs.false.i.i.i.i144, %for.cond.i.i154, %if.end15.i.i132, %if.end15.i.i, %call4.i.i8.i.i.noexc, %if.then.i.i16.i.i, %call4.i.i.i.i.noexc336, %if.then.i.i.i.i334, %if.end180, %if.then50, %_ZN8rationalD2Ev.exit315 %retval.1 = phi i1 [ false, %_ZN8rationalD2Ev.exit315 ], [ false, %if.then50 ], [ false, %if.end180 ], [ false, %call4.i.i.i.i.noexc336 ], [ false, %if.then.i.i.i.i334 ], [ %cmp.i.i17.i.i, %if.then.i.i16.i.i ], [ %cmp5.i.i9.i.i, %call4.i.i8.i.i.noexc ], [ false, %if.end15.i.i ], [ false, %if.end15.i.i132 ], [ false, %for.cond.i.i154 ], [ false, %lor.lhs.false.i.i.i.i144 ], [ false, %if.end3.i.i.i.i141 ], [ false, %lor.lhs.false.i.i.i.i ], [ false, %if.end3.i.i.i.i ] - %123 = load ptr, ptr @_ZN8rational13g_mpq_managerE, align 8 - invoke void @_ZN11mpz_managerILb1EE3delEPS0_R3mpz(ptr noundef %123, ptr noundef nonnull align 8 dereferenceable(16) %rs_of_evidence) + %122 = load ptr, ptr @_ZN8rational13g_mpq_managerE, align 8 + invoke void @_ZN11mpz_managerILb1EE3delEPS0_R3mpz(ptr noundef %122, ptr noundef nonnull align 8 dereferenceable(16) %rs_of_evidence) to label %.noexc.i340 unwind label %terminate.lpad.i339 .noexc.i340: ; preds = %cleanup186 - invoke void @_ZN11mpz_managerILb1EE3delEPS0_R3mpz(ptr noundef %123, ptr noundef nonnull align 8 dereferenceable(16) %m_den.i.i.i) + invoke void @_ZN11mpz_managerILb1EE3delEPS0_R3mpz(ptr noundef %122, ptr noundef nonnull align 8 dereferenceable(16) %m_den.i.i.i) to label %_ZN8rationalD2Ev.exit342 unwind label %terminate.lpad.i339 terminate.lpad.i339: ; preds = %.noexc.i340, %cleanup186 - %124 = landingpad { ptr, i32 } + %123 = landingpad { ptr, i32 } catch ptr null - %125 = extractvalue { ptr, i32 } %124, 0 - call void @__clang_call_terminate(ptr %125) #27 + %124 = extractvalue { ptr, i32 } %123, 0 + call void @__clang_call_terminate(ptr %124) #27 unreachable _ZN8rationalD2Ev.exit342: ; preds = %.noexc.i340 - %126 = load ptr, ptr %_M_before_begin.i.i, align 8 - %tobool.not3.i.i.i.i = icmp eq ptr %126, null + %125 = load ptr, ptr %_M_before_begin.i.i, align 8 + %tobool.not3.i.i.i.i = icmp eq ptr %125, null br i1 %tobool.not3.i.i.i.i, label %_ZNSt10_HashtableIjSt4pairIKj8rationalESaIS3_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE5clearEv.exit.i.i, label %while.body.i.i.i.i344 while.body.i.i.i.i344: ; preds = %_ZN8rationalD2Ev.exit342, %_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKj8rationalELb0EEEEE18_M_deallocate_nodeEPS6_.exit.i.i.i.i - %__n.addr.04.i.i.i.i = phi ptr [ %127, %_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKj8rationalELb0EEEEE18_M_deallocate_nodeEPS6_.exit.i.i.i.i ], [ %126, %_ZN8rationalD2Ev.exit342 ] - %127 = load ptr, ptr %__n.addr.04.i.i.i.i, align 8 + %__n.addr.04.i.i.i.i = phi ptr [ %126, %_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKj8rationalELb0EEEEE18_M_deallocate_nodeEPS6_.exit.i.i.i.i ], [ %125, %_ZN8rationalD2Ev.exit342 ] + %126 = load ptr, ptr %__n.addr.04.i.i.i.i, align 8 %second.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__n.addr.04.i.i.i.i, i64 16 - %128 = load ptr, ptr @_ZN8rational13g_mpq_managerE, align 8 - invoke void @_ZN11mpz_managerILb1EE3delEPS0_R3mpz(ptr noundef %128, ptr noundef nonnull align 8 dereferenceable(16) %second.i.i.i.i.i.i.i.i) + %127 = load ptr, ptr @_ZN8rational13g_mpq_managerE, align 8 + invoke void @_ZN11mpz_managerILb1EE3delEPS0_R3mpz(ptr noundef %127, ptr noundef nonnull align 8 dereferenceable(16) %second.i.i.i.i.i.i.i.i) to label %.noexc.i.i.i.i.i.i.i.i.i unwind label %terminate.lpad.i.i.i.i.i.i.i.i.i .noexc.i.i.i.i.i.i.i.i.i: ; preds = %while.body.i.i.i.i344 %m_den.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__n.addr.04.i.i.i.i, i64 32 - invoke void @_ZN11mpz_managerILb1EE3delEPS0_R3mpz(ptr noundef %128, ptr noundef nonnull align 8 dereferenceable(16) %m_den.i.i.i.i.i.i.i.i.i.i) + invoke void @_ZN11mpz_managerILb1EE3delEPS0_R3mpz(ptr noundef %127, ptr noundef nonnull align 8 dereferenceable(16) %m_den.i.i.i.i.i.i.i.i.i.i) to label %_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKj8rationalELb0EEEEE18_M_deallocate_nodeEPS6_.exit.i.i.i.i unwind label %terminate.lpad.i.i.i.i.i.i.i.i.i terminate.lpad.i.i.i.i.i.i.i.i.i: ; preds = %.noexc.i.i.i.i.i.i.i.i.i, %while.body.i.i.i.i344 - %129 = landingpad { ptr, i32 } + %128 = landingpad { ptr, i32 } catch ptr null - %130 = extractvalue { ptr, i32 } %129, 0 - call void @__clang_call_terminate(ptr %130) #27 + %129 = extractvalue { ptr, i32 } %128, 0 + call void @__clang_call_terminate(ptr %129) #27 unreachable _ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKj8rationalELb0EEEEE18_M_deallocate_nodeEPS6_.exit.i.i.i.i: ; preds = %.noexc.i.i.i.i.i.i.i.i.i call void @_ZdlPv(ptr noundef nonnull %__n.addr.04.i.i.i.i) #28 - %tobool.not.i.i.i.i345 = icmp eq ptr %127, null + %tobool.not.i.i.i.i345 = icmp eq ptr %126, null br i1 %tobool.not.i.i.i.i345, label %_ZNSt10_HashtableIjSt4pairIKj8rationalESaIS3_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE5clearEv.exit.i.i, label %while.body.i.i.i.i344, !llvm.loop !27 _ZNSt10_HashtableIjSt4pairIKj8rationalESaIS3_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE5clearEv.exit.i.i: ; preds = %_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKj8rationalELb0EEEEE18_M_deallocate_nodeEPS6_.exit.i.i.i.i, %_ZN8rationalD2Ev.exit342 - %131 = load ptr, ptr %coeff_map, align 8 - %132 = load i64, ptr %_M_bucket_count.i.i, align 8 - %mul.i.i.i = shl i64 %132, 3 - call void @llvm.memset.p0.i64(ptr align 8 %131, i8 0, i64 %mul.i.i.i, i1 false) + %130 = load ptr, ptr %coeff_map, align 8 + %131 = load i64, ptr %_M_bucket_count.i.i, align 8 + %mul.i.i.i = shl i64 %131, 3 + call void @llvm.memset.p0.i64(ptr align 8 %130, i8 0, i64 %mul.i.i.i, i1 false) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %_M_before_begin.i.i, i8 0, i64 16, i1 false) - %133 = load ptr, ptr %coeff_map, align 8 - %cmp.i.i.i.i.i347 = icmp eq ptr %_M_single_bucket.i.i, %133 + %132 = load ptr, ptr %coeff_map, align 8 + %cmp.i.i.i.i.i347 = icmp eq ptr %_M_single_bucket.i.i, %132 br i1 %cmp.i.i.i.i.i347, label %_ZNSt13unordered_mapIj8rationalSt4hashIjESt8equal_toIjESaISt4pairIKjS0_EEED2Ev.exit, label %if.end.i.i.i.i348 if.end.i.i.i.i348: ; preds = %_ZNSt10_HashtableIjSt4pairIKj8rationalESaIS3_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE5clearEv.exit.i.i - call void @_ZdlPv(ptr noundef %133) #28 + call void @_ZdlPv(ptr noundef %132) #28 br label %_ZNSt13unordered_mapIj8rationalSt4hashIjESt8equal_toIjESaISt4pairIKjS0_EEED2Ev.exit _ZNSt13unordered_mapIj8rationalSt4hashIjESt8equal_toIjESaISt4pairIKjS0_EEED2Ev.exit: ; preds = %_ZNSt10_HashtableIjSt4pairIKj8rationalESaIS3_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE5clearEv.exit.i.i, %if.end.i.i.i.i348 diff --git a/bench/z3/optimized/theory_lra.cpp.ll b/bench/z3/optimized/theory_lra.cpp.ll index 9b7038c4982..70df2576217 100644 --- a/bench/z3/optimized/theory_lra.cpp.ll +++ b/bench/z3/optimized/theory_lra.cpp.ll @@ -9664,8 +9664,8 @@ entry: %1 = load ptr, ptr %m_solver.i.i, align 8 %call3 = tail call noundef i32 @_ZNK2lp10lar_solver24column_to_reported_indexEj(ptr noundef nonnull align 8 dereferenceable(1888) %1, i32 noundef %j) %cond = select i1 %is_low, i32 2, i32 -2 - %div = zext i1 %strict to i32 - %spec.select = ashr exact i32 %cond, %div + %div = select i1 %is_low, i32 1, i32 -1 + %spec.select = select i1 %strict, i32 %div, i32 %cond %2 = load ptr, ptr %m_imp.i, align 8 %call5 = tail call noundef zeroext i1 @_ZNK3smt10theory_lra3imp20bound_is_interestingEjN2lp16lconstraint_kindERK8rational(ptr noundef nonnull align 8 dereferenceable(960) %2, i32 noundef %call3, i32 noundef %spec.select, ptr noundef nonnull align 8 dereferenceable(32) %v) br i1 %call5, label %if.end7, label %if.end87 @@ -49054,60 +49054,60 @@ if.end18: ; preds = %for.body %tobool.i = trunc i8 %41 to i1 %cond.i24 = select i1 %tobool.i, i32 2, i32 -2 %42 = load i8, ptr %m_strict.i, align 1 - %43 = and i8 %42, 1 - %div.i = zext nneg i8 %43 to i32 - %spec.select.i = ashr exact i32 %cond.i24, %div.i + %tobool2.i = trunc i8 %42 to i1 + %div.i = select i1 %tobool.i, i32 1, i32 -1 + %spec.select.i = select i1 %tobool2.i, i32 %div.i, i32 %cond.i24 %call20 = tail call i32 @_ZNK3smt10theory_lra3imp16is_bound_impliedEN2lp16lconstraint_kindERK8rationalRKN6lp_api5boundIN3sat7literalEEE(ptr noundef nonnull align 8 dereferenceable(960) %this, i32 noundef %spec.select.i, ptr noundef nonnull align 8 dereferenceable(32) %be, ptr noundef nonnull align 8 dereferenceable(68) %38) %.b = load i1, ptr @_ZN3smtL12null_literalE.0, align 4 - %44 = select i1 %.b, i32 -2, i32 0 - %cmp.i25 = icmp eq i32 %call20, %44 + %43 = select i1 %.b, i32 -2, i32 0 + %cmp.i25 = icmp eq i32 %call20, %43 br i1 %cmp.i25, label %for.inc, label %if.end24 if.end24: ; preds = %if.end18 %inc = add i32 %count.0, 1 - %45 = load ptr, ptr %m_solver.i, align 8 - %call26 = tail call noundef nonnull align 8 dereferenceable(299) ptr @_ZN2lp10lar_solver8settingsEv(ptr noundef nonnull align 8 dereferenceable(1888) %45) + %44 = load ptr, ptr %m_solver.i, align 8 + %call26 = tail call noundef nonnull align 8 dereferenceable(299) ptr @_ZN2lp10lar_solver8settingsEv(ptr noundef nonnull align 8 dereferenceable(1888) %44) %m_num_of_implied_bounds = getelementptr inbounds i8, ptr %call26, i64 80 - %46 = load i32, ptr %m_num_of_implied_bounds, align 8 - %inc28 = add i32 %46, 1 + %45 = load i32, ptr %m_num_of_implied_bounds, align 8 + %inc28 = add i32 %45, 1 store i32 %inc28, ptr %m_num_of_implied_bounds, align 8 %tobool = trunc nuw i8 %first.0 to i1 br i1 %tobool, label %if.then29, label %if.end31 if.then29: ; preds = %if.end24 - %47 = load ptr, ptr %m_core.i, align 8 - %tobool.not.i.i = icmp eq ptr %47, null + %46 = load ptr, ptr %m_core.i, align 8 + %tobool.not.i.i = icmp eq ptr %46, null br i1 %tobool.not.i.i, label %_ZN6vectorIN3sat7literalELb0EjE5resetEv.exit.i, label %if.then.i.i27 if.then.i.i27: ; preds = %if.then29 - %arrayidx.i.i28 = getelementptr inbounds i8, ptr %47, i64 -4 + %arrayidx.i.i28 = getelementptr inbounds i8, ptr %46, i64 -4 store i32 0, ptr %arrayidx.i.i28, align 4 br label %_ZN6vectorIN3sat7literalELb0EjE5resetEv.exit.i _ZN6vectorIN3sat7literalELb0EjE5resetEv.exit.i: ; preds = %if.then.i.i27, %if.then29 - %48 = load ptr, ptr %m_eqs.i, align 8 - %tobool.not.i1.i = icmp eq ptr %48, null + %47 = load ptr, ptr %m_eqs.i, align 8 + %tobool.not.i1.i = icmp eq ptr %47, null br i1 %tobool.not.i1.i, label %_ZN6vectorISt4pairIPN3smt5enodeES3_ELb0EjE5resetEv.exit.i, label %if.then.i2.i if.then.i2.i: ; preds = %_ZN6vectorIN3sat7literalELb0EjE5resetEv.exit.i - %arrayidx.i3.i = getelementptr inbounds i8, ptr %48, i64 -4 + %arrayidx.i3.i = getelementptr inbounds i8, ptr %47, i64 -4 store i32 0, ptr %arrayidx.i3.i, align 4 br label %_ZN6vectorISt4pairIPN3smt5enodeES3_ELb0EjE5resetEv.exit.i _ZN6vectorISt4pairIPN3smt5enodeES3_ELb0EjE5resetEv.exit.i: ; preds = %if.then.i2.i, %_ZN6vectorIN3sat7literalELb0EjE5resetEv.exit.i - %49 = load ptr, ptr %m_params.i, align 8 - %tobool.not.i4.i = icmp eq ptr %49, null + %48 = load ptr, ptr %m_params.i, align 8 + %tobool.not.i4.i = icmp eq ptr %48, null br i1 %tobool.not.i4.i, label %_ZN3smt10theory_lra3imp14reset_evidenceEv.exit, label %_ZNK6vectorI9parameterLb1EjE4sizeEv.exit.i.i.i _ZNK6vectorI9parameterLb1EjE4sizeEv.exit.i.i.i: ; preds = %_ZN6vectorISt4pairIPN3smt5enodeES3_ELb0EjE5resetEv.exit.i - %arrayidx.i.i.i.i = getelementptr inbounds i8, ptr %49, i64 -4 - %50 = load i32, ptr %arrayidx.i.i.i.i, align 4 - %cmp.not4.i.i.i.i.i.i = icmp eq i32 %50, 0 + %arrayidx.i.i.i.i = getelementptr inbounds i8, ptr %48, i64 -4 + %49 = load i32, ptr %arrayidx.i.i.i.i, align 4 + %cmp.not4.i.i.i.i.i.i = icmp eq i32 %49, 0 br i1 %cmp.not4.i.i.i.i.i.i, label %_ZN6vectorI9parameterLb1EjE16destroy_elementsEv.exit.i.i, label %for.body.i.i.i.i.i.i for.body.i.i.i.i.i.i: ; preds = %_ZNK6vectorI9parameterLb1EjE4sizeEv.exit.i.i.i, %for.body.i.i.i.i.i.i - %__count.addr.06.i.i.i.i.i.i = phi i32 [ %dec.i.i.i.i.i.i, %for.body.i.i.i.i.i.i ], [ %50, %_ZNK6vectorI9parameterLb1EjE4sizeEv.exit.i.i.i ] - %__first.addr.05.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %for.body.i.i.i.i.i.i ], [ %49, %_ZNK6vectorI9parameterLb1EjE4sizeEv.exit.i.i.i ] + %__count.addr.06.i.i.i.i.i.i = phi i32 [ %dec.i.i.i.i.i.i, %for.body.i.i.i.i.i.i ], [ %49, %_ZNK6vectorI9parameterLb1EjE4sizeEv.exit.i.i.i ] + %__first.addr.05.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %for.body.i.i.i.i.i.i ], [ %48, %_ZNK6vectorI9parameterLb1EjE4sizeEv.exit.i.i.i ] tail call void @_ZN9parameterD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %__first.addr.05.i.i.i.i.i.i) #23 %incdec.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.05.i.i.i.i.i.i, i64 16 %dec.i.i.i.i.i.i = add i32 %__count.addr.06.i.i.i.i.i.i, -1 @@ -49119,27 +49119,27 @@ _ZN6vectorI9parameterLb1EjE16destroy_elementsEv.exit.loopexit.i.i: ; preds = %fo br label %_ZN6vectorI9parameterLb1EjE16destroy_elementsEv.exit.i.i _ZN6vectorI9parameterLb1EjE16destroy_elementsEv.exit.i.i: ; preds = %_ZN6vectorI9parameterLb1EjE16destroy_elementsEv.exit.loopexit.i.i, %_ZNK6vectorI9parameterLb1EjE4sizeEv.exit.i.i.i - %51 = phi ptr [ %.pre.i.i29, %_ZN6vectorI9parameterLb1EjE16destroy_elementsEv.exit.loopexit.i.i ], [ %49, %_ZNK6vectorI9parameterLb1EjE4sizeEv.exit.i.i.i ] - %arrayidx.i5.i = getelementptr inbounds i8, ptr %51, i64 -4 + %50 = phi ptr [ %.pre.i.i29, %_ZN6vectorI9parameterLb1EjE16destroy_elementsEv.exit.loopexit.i.i ], [ %48, %_ZNK6vectorI9parameterLb1EjE4sizeEv.exit.i.i.i ] + %arrayidx.i5.i = getelementptr inbounds i8, ptr %50, i64 -4 store i32 0, ptr %arrayidx.i5.i, align 4 br label %_ZN3smt10theory_lra3imp14reset_evidenceEv.exit _ZN3smt10theory_lra3imp14reset_evidenceEv.exit: ; preds = %_ZN6vectorISt4pairIPN3smt5enodeES3_ELb0EjE5resetEv.exit.i, %_ZN6vectorI9parameterLb1EjE16destroy_elementsEv.exit.i.i tail call void @_ZN2lp11explanation5clearEv(ptr noundef nonnull align 8 dereferenceable(32) %m_explanation) - %52 = load ptr, ptr %m_solver.i, align 8 - tail call void @_ZN2lp10lar_solver21explain_implied_boundIN3smt10theory_lra3impEEEvRKNS_13implied_boundERNS_19lp_bound_propagatorIT_EE(ptr noundef nonnull align 8 dereferenceable(1888) %52, ptr noundef nonnull align 8 dereferenceable(72) %be, ptr noundef nonnull align 8 dereferenceable(152) %m_bp) + %51 = load ptr, ptr %m_solver.i, align 8 + tail call void @_ZN2lp10lar_solver21explain_implied_boundIN3smt10theory_lra3impEEEvRKNS_13implied_boundERNS_19lp_bound_propagatorIT_EE(ptr noundef nonnull align 8 dereferenceable(1888) %51, ptr noundef nonnull align 8 dereferenceable(72) %be, ptr noundef nonnull align 8 dereferenceable(152) %m_bp) br label %if.end31 if.end31: ; preds = %_ZN3smt10theory_lra3imp14reset_evidenceEv.exit, %if.end24 %first.1 = phi i8 [ 0, %_ZN3smt10theory_lra3imp14reset_evidenceEv.exit ], [ %first.0, %if.end24 ] - %53 = load ptr, ptr %this, align 8 - %ctx.i.i.i = getelementptr inbounds i8, ptr %53, i64 16 - %54 = load ptr, ptr %ctx.i.i.i, align 8 - %55 = load ptr, ptr %m_unassigned_bounds.i, align 8 - %arrayidx.i.i.i33 = getelementptr inbounds i32, ptr %55, i64 %idxprom.i - %56 = load i32, ptr %arrayidx.i.i.i33, align 4 - %m_trail_stack.i.i = getelementptr inbounds i8, ptr %54, i64 10008 - %m_region.i.i = getelementptr inbounds i8, ptr %54, i64 8952 + %52 = load ptr, ptr %this, align 8 + %ctx.i.i.i = getelementptr inbounds i8, ptr %52, i64 16 + %53 = load ptr, ptr %ctx.i.i.i, align 8 + %54 = load ptr, ptr %m_unassigned_bounds.i, align 8 + %arrayidx.i.i.i33 = getelementptr inbounds i32, ptr %54, i64 %idxprom.i + %55 = load i32, ptr %arrayidx.i.i.i33, align 4 + %m_trail_stack.i.i = getelementptr inbounds i8, ptr %53, i64 10008 + %m_region.i.i = getelementptr inbounds i8, ptr %53, i64 8952 %call.i.i3.i = tail call noundef ptr @_ZN6region8allocateEm(ptr noundef nonnull align 8 dereferenceable(40) %m_region.i.i, i64 noundef 24) store ptr getelementptr inbounds (i8, ptr @_ZTV18vector_value_trailIjLb0EE, i64 16), ptr %call.i.i3.i, align 8 %m_vector.i.i.i = getelementptr inbounds i8, ptr %call.i.i3.i, i64 8 @@ -49147,17 +49147,17 @@ if.end31: ; preds = %_ZN3smt10theory_lra %ref.tmp.sroa.3.8.m_vector.i.i.sroa_idx.i = getelementptr inbounds i8, ptr %call.i.i3.i, i64 16 store i32 %8, ptr %ref.tmp.sroa.3.8.m_vector.i.i.sroa_idx.i, align 8 %ref.tmp.sroa.4.8.m_vector.i.i.sroa_idx.i = getelementptr inbounds i8, ptr %call.i.i3.i, i64 20 - store i32 %56, ptr %ref.tmp.sroa.4.8.m_vector.i.i.sroa_idx.i, align 4 - %57 = load ptr, ptr %m_trail_stack.i.i, align 8 - %cmp.i.i.i34 = icmp eq ptr %57, null + store i32 %55, ptr %ref.tmp.sroa.4.8.m_vector.i.i.sroa_idx.i, align 4 + %56 = load ptr, ptr %m_trail_stack.i.i, align 8 + %cmp.i.i.i34 = icmp eq ptr %56, null br i1 %cmp.i.i.i34, label %if.then.i.i.i, label %lor.lhs.false.i.i.i lor.lhs.false.i.i.i: ; preds = %if.end31 - %arrayidx.i.i2.i = getelementptr inbounds i8, ptr %57, i64 -4 - %58 = load i32, ptr %arrayidx.i.i2.i, align 4 - %arrayidx4.i.i.i = getelementptr inbounds i8, ptr %57, i64 -8 - %59 = load i32, ptr %arrayidx4.i.i.i, align 4 - %cmp5.i.i.i = icmp eq i32 %58, %59 + %arrayidx.i.i2.i = getelementptr inbounds i8, ptr %56, i64 -4 + %57 = load i32, ptr %arrayidx.i.i2.i, align 4 + %arrayidx4.i.i.i = getelementptr inbounds i8, ptr %56, i64 -8 + %58 = load i32, ptr %arrayidx4.i.i.i, align 4 + %cmp5.i.i.i = icmp eq i32 %57, %58 br i1 %cmp5.i.i.i, label %if.then.i.i.i, label %_ZN3smt10theory_lra3imp22updt_unassigned_boundsEii.exit if.then.i.i.i: ; preds = %lor.lhs.false.i.i.i, %if.end31 @@ -49168,23 +49168,23 @@ if.then.i.i.i: ; preds = %lor.lhs.false.i.i.i br label %_ZN3smt10theory_lra3imp22updt_unassigned_boundsEii.exit _ZN3smt10theory_lra3imp22updt_unassigned_boundsEii.exit: ; preds = %lor.lhs.false.i.i.i, %if.then.i.i.i - %60 = phi i32 [ %.pre1.i.i.i, %if.then.i.i.i ], [ %58, %lor.lhs.false.i.i.i ] - %61 = phi ptr [ %.pre.i.i.i, %if.then.i.i.i ], [ %57, %lor.lhs.false.i.i.i ] - %idx.ext.i.i.i = zext i32 %60 to i64 - %add.ptr.i.i.i = getelementptr inbounds ptr, ptr %61, i64 %idx.ext.i.i.i + %59 = phi i32 [ %.pre1.i.i.i, %if.then.i.i.i ], [ %57, %lor.lhs.false.i.i.i ] + %60 = phi ptr [ %.pre.i.i.i, %if.then.i.i.i ], [ %56, %lor.lhs.false.i.i.i ] + %idx.ext.i.i.i = zext i32 %59 to i64 + %add.ptr.i.i.i = getelementptr inbounds ptr, ptr %60, i64 %idx.ext.i.i.i store ptr %call.i.i3.i, ptr %add.ptr.i.i.i, align 8 - %62 = load ptr, ptr %m_trail_stack.i.i, align 8 - %arrayidx10.i.i.i = getelementptr inbounds i8, ptr %62, i64 -4 - %63 = load i32, ptr %arrayidx10.i.i.i, align 4 - %inc.i.i.i = add i32 %63, 1 + %61 = load ptr, ptr %m_trail_stack.i.i, align 8 + %arrayidx10.i.i.i = getelementptr inbounds i8, ptr %61, i64 -4 + %62 = load i32, ptr %arrayidx10.i.i.i, align 4 + %inc.i.i.i = add i32 %62, 1 store i32 %inc.i.i.i, ptr %arrayidx10.i.i.i, align 4 - %64 = load ptr, ptr %m_unassigned_bounds.i, align 8 - %arrayidx.i.i35 = getelementptr inbounds i32, ptr %64, i64 %idxprom.i - %65 = load i32, ptr %arrayidx.i.i35, align 4 - %add.i = add i32 %65, -1 + %63 = load ptr, ptr %m_unassigned_bounds.i, align 8 + %arrayidx.i.i35 = getelementptr inbounds i32, ptr %63, i64 %idxprom.i + %64 = load i32, ptr %arrayidx.i.i35, align 4 + %add.i = add i32 %64, -1 store i32 %add.i, ptr %arrayidx.i.i35, align 4 - %66 = load i32, ptr %m_bound_propagations1, align 8 - %inc32 = add i32 %66, 1 + %65 = load i32, ptr %m_bound_propagations1, align 8 + %inc32 = add i32 %65, 1 store i32 %inc32, ptr %m_bound_propagations1, align 8 tail call void @_ZN3smt10theory_lra3imp6assignEN3sat7literalERK7svectorIS3_jERKS4_ISt4pairIPNS_5enodeESA_EjERK6vectorI9parameterLb1EjE(ptr noundef nonnull align 8 dereferenceable(960) %this, i32 %call20, ptr noundef nonnull align 8 dereferenceable(8) %m_core.i, ptr noundef nonnull align 8 dereferenceable(8) %m_eqs.i, ptr noundef nonnull align 8 dereferenceable(8) %m_params.i) br label %for.inc @@ -49197,26 +49197,26 @@ for.inc: ; preds = %if.end18, %for.body for.end: ; preds = %_ZNK6vectorIPN6lp_api5boundIN3sat7literalEEELb0EjE4sizeEv.exit %m_num_conflicts.i.i36 = getelementptr inbounds i8, ptr %this, i64 312 - %67 = load i32, ptr %m_num_conflicts.i.i36, align 8 + %66 = load i32, ptr %m_num_conflicts.i.i36, align 8 %m_fparams.i.i.i.i38 = getelementptr inbounds i8, ptr %37, i64 112 - %68 = load ptr, ptr %m_fparams.i.i.i.i38, align 8 - %m_arith_propagation_threshold.i.i39 = getelementptr inbounds i8, ptr %68, i64 344 - %69 = load i32, ptr %m_arith_propagation_threshold.i.i39, align 8 - %cmp.i.i40 = icmp ult i32 %67, %69 + %67 = load ptr, ptr %m_fparams.i.i.i.i38, align 8 + %m_arith_propagation_threshold.i.i39 = getelementptr inbounds i8, ptr %67, i64 344 + %68 = load i32, ptr %m_arith_propagation_threshold.i.i39, align 8 + %cmp.i.i40 = icmp ult i32 %66, %68 br i1 %cmp.i.i40, label %_ZNK3smt10theory_lra3imp16propagation_modeEv.exit.i41, label %return _ZNK3smt10theory_lra3imp16propagation_modeEv.exit.i41: ; preds = %for.end - %m_arith_bound_prop.i.i42 = getelementptr inbounds i8, ptr %68, i64 268 - %70 = load i32, ptr %m_arith_bound_prop.i.i42, align 4 - %cmp.i43 = icmp eq i32 %70, 2 + %m_arith_bound_prop.i.i42 = getelementptr inbounds i8, ptr %67, i64 268 + %69 = load i32, ptr %m_arith_bound_prop.i.i42, align 4 + %cmp.i43 = icmp eq i32 %69, 2 br i1 %cmp.i43, label %_ZNK3smt10theory_lra3imp20should_refine_boundsEv.exit48, label %return _ZNK3smt10theory_lra3imp20should_refine_boundsEv.exit48: ; preds = %_ZNK3smt10theory_lra3imp16propagation_modeEv.exit.i41 %m_scope_lvl.i.i45 = getelementptr inbounds i8, ptr %37, i64 10016 - %71 = load i32, ptr %m_scope_lvl.i.i45, align 8 + %70 = load i32, ptr %m_scope_lvl.i.i45, align 8 %m_search_lvl.i.i46 = getelementptr inbounds i8, ptr %37, i64 10024 - %72 = load i32, ptr %m_search_lvl.i.i46, align 8 - %cmp.i1.i47 = icmp eq i32 %71, %72 + %71 = load i32, ptr %m_search_lvl.i.i46, align 8 + %cmp.i1.i47 = icmp eq i32 %70, %71 br i1 %cmp.i1.i47, label %land.lhs.true37, label %return land.lhs.true37: ; preds = %_ZNK3smt10theory_lra3imp20should_refine_boundsEv.exit48 @@ -50188,51 +50188,51 @@ if.end16: ; preds = %land.rhs.i.i, %_ZN7 %cond.i = select i1 %tobool.i30, i32 2, i32 -2 %m_strict.i = getelementptr inbounds i8, ptr %be, i64 37 %21 = load i8, ptr %m_strict.i, align 1 - %22 = and i8 %21, 1 - %div.i = zext nneg i8 %22 to i32 - %spec.select.i = ashr exact i32 %cond.i, %div.i + %tobool2.i = trunc i8 %21 to i1 + %div.i = select i1 %tobool.i30, i32 1, i32 -1 + %spec.select.i = select i1 %tobool2.i, i32 %div.i, i32 %cond.i switch i32 %spec.select.i, label %sw.epilog [ i32 -2, label %sw.bb i32 2, label %sw.bb72 ] sw.bb: ; preds = %if.end16 - %23 = load ptr, ptr %this, align 8 - %m_var2enode.i.i.i = getelementptr inbounds i8, ptr %23, i64 32 - %24 = load ptr, ptr %m_var2enode.i.i.i, align 8 - %arrayidx.i.i.i.i = getelementptr inbounds ptr, ptr %24, i64 %idxprom.i.i.i - %25 = load ptr, ptr %arrayidx.i.i.i.i, align 8 - %26 = load ptr, ptr %25, align 8 - %call.i.i.i31 = invoke noundef ptr @_ZNK4expr8get_sortEv(ptr noundef nonnull align 4 dereferenceable(16) %26) + %22 = load ptr, ptr %this, align 8 + %m_var2enode.i.i.i = getelementptr inbounds i8, ptr %22, i64 32 + %23 = load ptr, ptr %m_var2enode.i.i.i, align 8 + %arrayidx.i.i.i.i = getelementptr inbounds ptr, ptr %23, i64 %idxprom.i.i.i + %24 = load ptr, ptr %arrayidx.i.i.i.i, align 8 + %25 = load ptr, ptr %24, align 8 + %call.i.i.i31 = invoke noundef ptr @_ZNK4expr8get_sortEv(ptr noundef nonnull align 4 dereferenceable(16) %25) to label %call.i.i.i.noexc unwind label %lpad call.i.i.i.noexc: ; preds = %sw.bb %m_info.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %call.i.i.i31, i64 24 - %27 = load ptr, ptr %m_info.i.i.i.i.i.i.i, align 8 - %cmp.i.i.i.i.i.i.i = icmp eq ptr %27, null + %26 = load ptr, ptr %m_info.i.i.i.i.i.i.i, align 8 + %cmp.i.i.i.i.i.i.i = icmp eq ptr %26, null br i1 %cmp.i.i.i.i.i.i.i, label %if.end46, label %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i _ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i: ; preds = %call.i.i.i.noexc - %28 = load i32, ptr %27, align 8 - %cmp6.i.i.i.i.i.i = icmp eq i32 %28, 5 + %27 = load i32, ptr %26, align 8 + %cmp6.i.i.i.i.i.i = icmp eq i32 %27, 5 br i1 %cmp6.i.i.i.i.i.i, label %invoke.cont18, label %if.end46 invoke.cont18: ; preds = %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i - %m_kind.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %27, i64 4 - %29 = load i32, ptr %m_kind.i.i.i.i.i.i.i.i, align 4 - %cmp3.i.i.i.i.i.i = icmp eq i32 %29, 1 + %m_kind.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %26, i64 4 + %28 = load i32, ptr %m_kind.i.i.i.i.i.i.i.i, align 4 + %cmp3.i.i.i.i.i.i = icmp eq i32 %28, 1 br i1 %cmp3.i.i.i.i.i.i, label %invoke.cont22, label %if.end46 invoke.cont22: ; preds = %invoke.cont18 %m_solver.i = getelementptr inbounds i8, ptr %this, i64 456 - %30 = load ptr, ptr %m_solver.i, align 8 - %m_column_types.i.i = getelementptr inbounds i8, ptr %30, i64 896 - %31 = load ptr, ptr %m_column_types.i.i, align 8 - %32 = load ptr, ptr %31, align 8 + %29 = load ptr, ptr %m_solver.i, align 8 + %m_column_types.i.i = getelementptr inbounds i8, ptr %29, i64 896 + %30 = load ptr, ptr %m_column_types.i.i, align 8 + %31 = load ptr, ptr %30, align 8 %idxprom.i.i.i32 = zext nneg i32 %0 to i64 - %arrayidx.i.i.i33 = getelementptr inbounds i32, ptr %32, i64 %idxprom.i.i.i32 - %33 = load i32, ptr %arrayidx.i.i.i33, align 4 - %or.cond = icmp eq i32 %33, 2 + %arrayidx.i.i.i33 = getelementptr inbounds i32, ptr %31, i64 %idxprom.i.i.i32 + %32 = load i32, ptr %arrayidx.i.i.i33, align 4 + %or.cond = icmp eq i32 %32, 2 br i1 %or.cond, label %if.end46, label %if.then29 if.then29: ; preds = %invoke.cont22 @@ -50245,29 +50245,29 @@ invoke.cont34: ; preds = %if.then29 call.i.noexc: ; preds = %invoke.cont34 %m_info.i.i.i.i.i38 = getelementptr inbounds i8, ptr %call.i41, i64 24 - %34 = load ptr, ptr %m_info.i.i.i.i.i38, align 8 - %cmp.i.i.i.i.i39 = icmp eq ptr %34, null + %33 = load ptr, ptr %m_info.i.i.i.i.i38, align 8 + %cmp.i.i.i.i.i39 = icmp eq ptr %33, null br i1 %cmp.i.i.i.i.i39, label %invoke.cont38, label %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i _ZNK4decl13get_family_idEv.exit.thread.i.i.i.i: ; preds = %call.i.noexc - %35 = load i32, ptr %34, align 8 - %cmp6.i.i.i.i = icmp eq i32 %35, 5 + %34 = load i32, ptr %33, align 8 + %cmp6.i.i.i.i = icmp eq i32 %34, 5 br i1 %cmp6.i.i.i.i, label %cond.false.i3.i.i.i.i, label %invoke.cont38 cond.false.i3.i.i.i.i: ; preds = %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i - %m_kind.i.i.i.i.i.i40 = getelementptr inbounds i8, ptr %34, i64 4 - %36 = load i32, ptr %m_kind.i.i.i.i.i.i40, align 4 - %cmp3.i.i.i.i = icmp eq i32 %36, 1 + %m_kind.i.i.i.i.i.i40 = getelementptr inbounds i8, ptr %33, i64 4 + %35 = load i32, ptr %m_kind.i.i.i.i.i.i40, align 4 + %cmp3.i.i.i.i = icmp eq i32 %35, 1 br label %invoke.cont38 invoke.cont38: ; preds = %cond.false.i3.i.i.i.i, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i, %call.i.noexc - %37 = phi i1 [ %cmp3.i.i.i.i, %cond.false.i3.i.i.i.i ], [ false, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i ], [ false, %call.i.noexc ] - %call41 = invoke noundef ptr @_ZNK10arith_util10mk_numeralERK8rationalb(ptr noundef nonnull align 8 dereferenceable(16) %a, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp33, i1 noundef zeroext %37) + %36 = phi i1 [ %cmp3.i.i.i.i, %cond.false.i3.i.i.i.i ], [ false, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i ], [ false, %call.i.noexc ] + %call41 = invoke noundef ptr @_ZNK10arith_util10mk_numeralERK8rationalb(ptr noundef nonnull align 8 dereferenceable(16) %a, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp33, i1 noundef zeroext %36) to label %invoke.cont40 unwind label %lpad37 invoke.cont40: ; preds = %invoke.cont38 - %38 = load ptr, ptr %a, align 8 - %call.i43 = invoke noundef ptr @_ZN11ast_manager6mk_appEiiP4exprS1_(ptr noundef nonnull align 8 dereferenceable(976) %38, i32 noundef 5, i32 noundef 2, ptr noundef nonnull %4, ptr noundef %call41) + %37 = load ptr, ptr %a, align 8 + %call.i43 = invoke noundef ptr @_ZN11ast_manager6mk_appEiiP4exprS1_(ptr noundef nonnull align 8 dereferenceable(976) %37, i32 noundef 5, i32 noundef 2, ptr noundef nonnull %4, ptr noundef %call41) to label %invoke.cont42 unwind label %lpad37 invoke.cont42: ; preds = %invoke.cont40 @@ -50279,49 +50279,49 @@ invoke.cont44: ; preds = %invoke.cont42 br label %if.end46 lpad37: ; preds = %invoke.cont40, %invoke.cont34, %invoke.cont42, %invoke.cont38 - %39 = landingpad { ptr, i32 } + %38 = landingpad { ptr, i32 } cleanup call void @_ZN8rationalD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp33) #23 br label %ehcleanup if.end46: ; preds = %invoke.cont22, %call.i.i.i.noexc, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i, %invoke.cont44, %invoke.cont18 %bound.sroa.0.0 = phi i32 [ %call45, %invoke.cont44 ], [ %19, %invoke.cont18 ], [ %19, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i ], [ %19, %call.i.i.i.noexc ], [ %19, %invoke.cont22 ] - %40 = load ptr, ptr %this, align 8 - %m_var2enode.i.i.i44 = getelementptr inbounds i8, ptr %40, i64 32 - %41 = load ptr, ptr %m_var2enode.i.i.i44, align 8 - %arrayidx.i.i.i.i46 = getelementptr inbounds ptr, ptr %41, i64 %idxprom.i.i.i - %42 = load ptr, ptr %arrayidx.i.i.i.i46, align 8 - %43 = load ptr, ptr %42, align 8 - %call.i.i.i55 = invoke noundef ptr @_ZNK4expr8get_sortEv(ptr noundef nonnull align 4 dereferenceable(16) %43) + %39 = load ptr, ptr %this, align 8 + %m_var2enode.i.i.i44 = getelementptr inbounds i8, ptr %39, i64 32 + %40 = load ptr, ptr %m_var2enode.i.i.i44, align 8 + %arrayidx.i.i.i.i46 = getelementptr inbounds ptr, ptr %40, i64 %idxprom.i.i.i + %41 = load ptr, ptr %arrayidx.i.i.i.i46, align 8 + %42 = load ptr, ptr %41, align 8 + %call.i.i.i55 = invoke noundef ptr @_ZNK4expr8get_sortEv(ptr noundef nonnull align 4 dereferenceable(16) %42) to label %call.i.i.i.noexc54 unwind label %lpad call.i.i.i.noexc54: ; preds = %if.end46 %m_info.i.i.i.i.i.i.i47 = getelementptr inbounds i8, ptr %call.i.i.i55, i64 24 - %44 = load ptr, ptr %m_info.i.i.i.i.i.i.i47, align 8 - %cmp.i.i.i.i.i.i.i48 = icmp eq ptr %44, null + %43 = load ptr, ptr %m_info.i.i.i.i.i.i.i47, align 8 + %cmp.i.i.i.i.i.i.i48 = icmp eq ptr %43, null br i1 %cmp.i.i.i.i.i.i.i48, label %sw.epilog, label %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i49 _ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i49: ; preds = %call.i.i.i.noexc54 - %45 = load i32, ptr %44, align 8 - %cmp6.i.i.i.i.i.i50 = icmp eq i32 %45, 5 + %44 = load i32, ptr %43, align 8 + %cmp6.i.i.i.i.i.i50 = icmp eq i32 %44, 5 br i1 %cmp6.i.i.i.i.i.i50, label %invoke.cont47, label %sw.epilog invoke.cont47: ; preds = %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i49 - %m_kind.i.i.i.i.i.i.i.i52 = getelementptr inbounds i8, ptr %44, i64 4 - %46 = load i32, ptr %m_kind.i.i.i.i.i.i.i.i52, align 4 - %cmp3.i.i.i.i.i.i53 = icmp eq i32 %46, 0 + %m_kind.i.i.i.i.i.i.i.i52 = getelementptr inbounds i8, ptr %43, i64 4 + %45 = load i32, ptr %m_kind.i.i.i.i.i.i.i.i52, align 4 + %cmp3.i.i.i.i.i.i53 = icmp eq i32 %45, 0 br i1 %cmp3.i.i.i.i.i.i53, label %invoke.cont52, label %sw.epilog invoke.cont52: ; preds = %invoke.cont47 %m_solver.i56 = getelementptr inbounds i8, ptr %this, i64 456 - %47 = load ptr, ptr %m_solver.i56, align 8 - %m_column_types.i.i57 = getelementptr inbounds i8, ptr %47, i64 896 - %48 = load ptr, ptr %m_column_types.i.i57, align 8 - %49 = load ptr, ptr %48, align 8 + %46 = load ptr, ptr %m_solver.i56, align 8 + %m_column_types.i.i57 = getelementptr inbounds i8, ptr %46, i64 896 + %47 = load ptr, ptr %m_column_types.i.i57, align 8 + %48 = load ptr, ptr %47, align 8 %idxprom.i.i.i58 = zext nneg i32 %0 to i64 - %arrayidx.i.i.i59 = getelementptr inbounds i32, ptr %49, i64 %idxprom.i.i.i58 - %50 = load i32, ptr %arrayidx.i.i.i59, align 4 - %switch.i.i60 = icmp ugt i32 %50, 1 + %arrayidx.i.i.i59 = getelementptr inbounds i32, ptr %48, i64 %idxprom.i.i.i58 + %49 = load i32, ptr %arrayidx.i.i.i59, align 4 + %switch.i.i60 = icmp ugt i32 %49, 1 br i1 %switch.i.i60, label %sw.epilog, label %if.then54 if.then54: ; preds = %invoke.cont52 @@ -50330,63 +50330,63 @@ if.then54: ; preds = %invoke.cont52 call.i.noexc68: ; preds = %if.then54 %m_info.i.i.i.i.i61 = getelementptr inbounds i8, ptr %call.i69, i64 24 - %51 = load ptr, ptr %m_info.i.i.i.i.i61, align 8 - %cmp.i.i.i.i.i62 = icmp eq ptr %51, null + %50 = load ptr, ptr %m_info.i.i.i.i.i61, align 8 + %cmp.i.i.i.i.i62 = icmp eq ptr %50, null br i1 %cmp.i.i.i.i.i62, label %invoke.cont62, label %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i63 _ZNK4decl13get_family_idEv.exit.thread.i.i.i.i63: ; preds = %call.i.noexc68 - %52 = load i32, ptr %51, align 8 - %cmp6.i.i.i.i64 = icmp eq i32 %52, 5 + %51 = load i32, ptr %50, align 8 + %cmp6.i.i.i.i64 = icmp eq i32 %51, 5 br i1 %cmp6.i.i.i.i64, label %cond.false.i3.i.i.i.i65, label %invoke.cont62 cond.false.i3.i.i.i.i65: ; preds = %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i63 - %m_kind.i.i.i.i.i.i66 = getelementptr inbounds i8, ptr %51, i64 4 - %53 = load i32, ptr %m_kind.i.i.i.i.i.i66, align 4 - %cmp3.i.i.i.i67 = icmp eq i32 %53, 1 + %m_kind.i.i.i.i.i.i66 = getelementptr inbounds i8, ptr %50, i64 4 + %52 = load i32, ptr %m_kind.i.i.i.i.i.i66, align 4 + %cmp3.i.i.i.i67 = icmp eq i32 %52, 1 br label %invoke.cont62 invoke.cont62: ; preds = %cond.false.i3.i.i.i.i65, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i63, %call.i.noexc68 - %54 = phi i1 [ %cmp3.i.i.i.i67, %cond.false.i3.i.i.i.i65 ], [ false, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i63 ], [ false, %call.i.noexc68 ] - %call65 = invoke noundef ptr @_ZNK10arith_util10mk_numeralERK8rationalb(ptr noundef nonnull align 8 dereferenceable(16) %a, ptr noundef nonnull align 8 dereferenceable(32) %be, i1 noundef zeroext %54) + %53 = phi i1 [ %cmp3.i.i.i.i67, %cond.false.i3.i.i.i.i65 ], [ false, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i63 ], [ false, %call.i.noexc68 ] + %call65 = invoke noundef ptr @_ZNK10arith_util10mk_numeralERK8rationalb(ptr noundef nonnull align 8 dereferenceable(16) %a, ptr noundef nonnull align 8 dereferenceable(32) %be, i1 noundef zeroext %53) to label %invoke.cont123.invoke unwind label %lpad sw.bb72: ; preds = %if.end16 - %55 = load ptr, ptr %this, align 8 - %m_var2enode.i.i.i74 = getelementptr inbounds i8, ptr %55, i64 32 - %56 = load ptr, ptr %m_var2enode.i.i.i74, align 8 - %arrayidx.i.i.i.i76 = getelementptr inbounds ptr, ptr %56, i64 %idxprom.i.i.i - %57 = load ptr, ptr %arrayidx.i.i.i.i76, align 8 - %58 = load ptr, ptr %57, align 8 - %call.i.i.i85 = invoke noundef ptr @_ZNK4expr8get_sortEv(ptr noundef nonnull align 4 dereferenceable(16) %58) + %54 = load ptr, ptr %this, align 8 + %m_var2enode.i.i.i74 = getelementptr inbounds i8, ptr %54, i64 32 + %55 = load ptr, ptr %m_var2enode.i.i.i74, align 8 + %arrayidx.i.i.i.i76 = getelementptr inbounds ptr, ptr %55, i64 %idxprom.i.i.i + %56 = load ptr, ptr %arrayidx.i.i.i.i76, align 8 + %57 = load ptr, ptr %56, align 8 + %call.i.i.i85 = invoke noundef ptr @_ZNK4expr8get_sortEv(ptr noundef nonnull align 4 dereferenceable(16) %57) to label %call.i.i.i.noexc84 unwind label %lpad call.i.i.i.noexc84: ; preds = %sw.bb72 %m_info.i.i.i.i.i.i.i77 = getelementptr inbounds i8, ptr %call.i.i.i85, i64 24 - %59 = load ptr, ptr %m_info.i.i.i.i.i.i.i77, align 8 - %cmp.i.i.i.i.i.i.i78 = icmp eq ptr %59, null + %58 = load ptr, ptr %m_info.i.i.i.i.i.i.i77, align 8 + %cmp.i.i.i.i.i.i.i78 = icmp eq ptr %58, null br i1 %cmp.i.i.i.i.i.i.i78, label %if.end105, label %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i79 _ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i79: ; preds = %call.i.i.i.noexc84 - %60 = load i32, ptr %59, align 8 - %cmp6.i.i.i.i.i.i80 = icmp eq i32 %60, 5 + %59 = load i32, ptr %58, align 8 + %cmp6.i.i.i.i.i.i80 = icmp eq i32 %59, 5 br i1 %cmp6.i.i.i.i.i.i80, label %invoke.cont73, label %if.end105 invoke.cont73: ; preds = %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i79 - %m_kind.i.i.i.i.i.i.i.i82 = getelementptr inbounds i8, ptr %59, i64 4 - %61 = load i32, ptr %m_kind.i.i.i.i.i.i.i.i82, align 4 - %cmp3.i.i.i.i.i.i83 = icmp eq i32 %61, 1 + %m_kind.i.i.i.i.i.i.i.i82 = getelementptr inbounds i8, ptr %58, i64 4 + %60 = load i32, ptr %m_kind.i.i.i.i.i.i.i.i82, align 4 + %cmp3.i.i.i.i.i.i83 = icmp eq i32 %60, 1 br i1 %cmp3.i.i.i.i.i.i83, label %invoke.cont78, label %if.end105 invoke.cont78: ; preds = %invoke.cont73 %m_solver.i87 = getelementptr inbounds i8, ptr %this, i64 456 - %62 = load ptr, ptr %m_solver.i87, align 8 - %m_column_types.i.i88 = getelementptr inbounds i8, ptr %62, i64 896 - %63 = load ptr, ptr %m_column_types.i.i88, align 8 - %64 = load ptr, ptr %63, align 8 + %61 = load ptr, ptr %m_solver.i87, align 8 + %m_column_types.i.i88 = getelementptr inbounds i8, ptr %61, i64 896 + %62 = load ptr, ptr %m_column_types.i.i88, align 8 + %63 = load ptr, ptr %62, align 8 %idxprom.i.i.i89 = zext nneg i32 %0 to i64 - %arrayidx.i.i.i90 = getelementptr inbounds i32, ptr %64, i64 %idxprom.i.i.i89 - %65 = load i32, ptr %arrayidx.i.i.i90, align 4 - %or.cond157 = icmp eq i32 %65, 1 + %arrayidx.i.i.i90 = getelementptr inbounds i32, ptr %63, i64 %idxprom.i.i.i89 + %64 = load i32, ptr %arrayidx.i.i.i90, align 4 + %or.cond157 = icmp eq i32 %64, 1 br i1 %or.cond157, label %if.end105, label %if.then85 if.then85: ; preds = %invoke.cont78 @@ -50399,29 +50399,29 @@ invoke.cont92: ; preds = %if.then85 call.i.noexc105: ; preds = %invoke.cont92 %m_info.i.i.i.i.i98 = getelementptr inbounds i8, ptr %call.i106, i64 24 - %66 = load ptr, ptr %m_info.i.i.i.i.i98, align 8 - %cmp.i.i.i.i.i99 = icmp eq ptr %66, null + %65 = load ptr, ptr %m_info.i.i.i.i.i98, align 8 + %cmp.i.i.i.i.i99 = icmp eq ptr %65, null br i1 %cmp.i.i.i.i.i99, label %invoke.cont96, label %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i100 _ZNK4decl13get_family_idEv.exit.thread.i.i.i.i100: ; preds = %call.i.noexc105 - %67 = load i32, ptr %66, align 8 - %cmp6.i.i.i.i101 = icmp eq i32 %67, 5 + %66 = load i32, ptr %65, align 8 + %cmp6.i.i.i.i101 = icmp eq i32 %66, 5 br i1 %cmp6.i.i.i.i101, label %cond.false.i3.i.i.i.i102, label %invoke.cont96 cond.false.i3.i.i.i.i102: ; preds = %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i100 - %m_kind.i.i.i.i.i.i103 = getelementptr inbounds i8, ptr %66, i64 4 - %68 = load i32, ptr %m_kind.i.i.i.i.i.i103, align 4 - %cmp3.i.i.i.i104 = icmp eq i32 %68, 1 + %m_kind.i.i.i.i.i.i103 = getelementptr inbounds i8, ptr %65, i64 4 + %67 = load i32, ptr %m_kind.i.i.i.i.i.i103, align 4 + %cmp3.i.i.i.i104 = icmp eq i32 %67, 1 br label %invoke.cont96 invoke.cont96: ; preds = %cond.false.i3.i.i.i.i102, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i100, %call.i.noexc105 - %69 = phi i1 [ %cmp3.i.i.i.i104, %cond.false.i3.i.i.i.i102 ], [ false, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i100 ], [ false, %call.i.noexc105 ] - %call99 = invoke noundef ptr @_ZNK10arith_util10mk_numeralERK8rationalb(ptr noundef nonnull align 8 dereferenceable(16) %a, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp90, i1 noundef zeroext %69) + %68 = phi i1 [ %cmp3.i.i.i.i104, %cond.false.i3.i.i.i.i102 ], [ false, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i100 ], [ false, %call.i.noexc105 ] + %call99 = invoke noundef ptr @_ZNK10arith_util10mk_numeralERK8rationalb(ptr noundef nonnull align 8 dereferenceable(16) %a, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp90, i1 noundef zeroext %68) to label %invoke.cont98 unwind label %lpad95 invoke.cont98: ; preds = %invoke.cont96 - %70 = load ptr, ptr %a, align 8 - %call.i109 = invoke noundef ptr @_ZN11ast_manager6mk_appEiiP4exprS1_(ptr noundef nonnull align 8 dereferenceable(976) %70, i32 noundef 5, i32 noundef 3, ptr noundef nonnull %4, ptr noundef %call99) + %69 = load ptr, ptr %a, align 8 + %call.i109 = invoke noundef ptr @_ZN11ast_manager6mk_appEiiP4exprS1_(ptr noundef nonnull align 8 dereferenceable(976) %69, i32 noundef 5, i32 noundef 3, ptr noundef nonnull %4, ptr noundef %call99) to label %invoke.cont100 unwind label %lpad95 invoke.cont100: ; preds = %invoke.cont98 @@ -50433,49 +50433,49 @@ invoke.cont102: ; preds = %invoke.cont100 br label %if.end105 lpad95: ; preds = %invoke.cont98, %invoke.cont92, %invoke.cont100, %invoke.cont96 - %71 = landingpad { ptr, i32 } + %70 = landingpad { ptr, i32 } cleanup call void @_ZN8rationalD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp90) #23 br label %ehcleanup if.end105: ; preds = %invoke.cont78, %call.i.i.i.noexc84, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i79, %invoke.cont102, %invoke.cont73 %bound.sroa.0.1 = phi i32 [ %call103, %invoke.cont102 ], [ %19, %invoke.cont73 ], [ %19, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i79 ], [ %19, %call.i.i.i.noexc84 ], [ %19, %invoke.cont78 ] - %72 = load ptr, ptr %this, align 8 - %m_var2enode.i.i.i110 = getelementptr inbounds i8, ptr %72, i64 32 - %73 = load ptr, ptr %m_var2enode.i.i.i110, align 8 - %arrayidx.i.i.i.i112 = getelementptr inbounds ptr, ptr %73, i64 %idxprom.i.i.i - %74 = load ptr, ptr %arrayidx.i.i.i.i112, align 8 - %75 = load ptr, ptr %74, align 8 - %call.i.i.i121 = invoke noundef ptr @_ZNK4expr8get_sortEv(ptr noundef nonnull align 4 dereferenceable(16) %75) + %71 = load ptr, ptr %this, align 8 + %m_var2enode.i.i.i110 = getelementptr inbounds i8, ptr %71, i64 32 + %72 = load ptr, ptr %m_var2enode.i.i.i110, align 8 + %arrayidx.i.i.i.i112 = getelementptr inbounds ptr, ptr %72, i64 %idxprom.i.i.i + %73 = load ptr, ptr %arrayidx.i.i.i.i112, align 8 + %74 = load ptr, ptr %73, align 8 + %call.i.i.i121 = invoke noundef ptr @_ZNK4expr8get_sortEv(ptr noundef nonnull align 4 dereferenceable(16) %74) to label %call.i.i.i.noexc120 unwind label %lpad call.i.i.i.noexc120: ; preds = %if.end105 %m_info.i.i.i.i.i.i.i113 = getelementptr inbounds i8, ptr %call.i.i.i121, i64 24 - %76 = load ptr, ptr %m_info.i.i.i.i.i.i.i113, align 8 - %cmp.i.i.i.i.i.i.i114 = icmp eq ptr %76, null + %75 = load ptr, ptr %m_info.i.i.i.i.i.i.i113, align 8 + %cmp.i.i.i.i.i.i.i114 = icmp eq ptr %75, null br i1 %cmp.i.i.i.i.i.i.i114, label %sw.epilog, label %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i115 _ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i115: ; preds = %call.i.i.i.noexc120 - %77 = load i32, ptr %76, align 8 - %cmp6.i.i.i.i.i.i116 = icmp eq i32 %77, 5 + %76 = load i32, ptr %75, align 8 + %cmp6.i.i.i.i.i.i116 = icmp eq i32 %76, 5 br i1 %cmp6.i.i.i.i.i.i116, label %invoke.cont106, label %sw.epilog invoke.cont106: ; preds = %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i115 - %m_kind.i.i.i.i.i.i.i.i118 = getelementptr inbounds i8, ptr %76, i64 4 - %78 = load i32, ptr %m_kind.i.i.i.i.i.i.i.i118, align 4 - %cmp3.i.i.i.i.i.i119 = icmp eq i32 %78, 0 + %m_kind.i.i.i.i.i.i.i.i118 = getelementptr inbounds i8, ptr %75, i64 4 + %77 = load i32, ptr %m_kind.i.i.i.i.i.i.i.i118, align 4 + %cmp3.i.i.i.i.i.i119 = icmp eq i32 %77, 0 br i1 %cmp3.i.i.i.i.i.i119, label %invoke.cont111, label %sw.epilog invoke.cont111: ; preds = %invoke.cont106 %m_solver.i123 = getelementptr inbounds i8, ptr %this, i64 456 - %79 = load ptr, ptr %m_solver.i123, align 8 - %m_column_types.i.i124 = getelementptr inbounds i8, ptr %79, i64 896 - %80 = load ptr, ptr %m_column_types.i.i124, align 8 - %81 = load ptr, ptr %80, align 8 + %78 = load ptr, ptr %m_solver.i123, align 8 + %m_column_types.i.i124 = getelementptr inbounds i8, ptr %78, i64 896 + %79 = load ptr, ptr %m_column_types.i.i124, align 8 + %80 = load ptr, ptr %79, align 8 %idxprom.i.i.i125 = zext nneg i32 %0 to i64 - %arrayidx.i.i.i126 = getelementptr inbounds i32, ptr %81, i64 %idxprom.i.i.i125 - %82 = load i32, ptr %arrayidx.i.i.i126, align 4 - %switch.and.i.i127 = and i32 %82, -3 + %arrayidx.i.i.i126 = getelementptr inbounds i32, ptr %80, i64 %idxprom.i.i.i125 + %81 = load i32, ptr %arrayidx.i.i.i126, align 4 + %switch.and.i.i127 = and i32 %81, -3 %switch.selectcmp.i.i128.not = icmp eq i32 %switch.and.i.i127, 0 br i1 %switch.selectcmp.i.i128.not, label %if.then113, label %sw.epilog @@ -50485,60 +50485,60 @@ if.then113: ; preds = %invoke.cont111 call.i.noexc136: ; preds = %if.then113 %m_info.i.i.i.i.i129 = getelementptr inbounds i8, ptr %call.i137, i64 24 - %83 = load ptr, ptr %m_info.i.i.i.i.i129, align 8 - %cmp.i.i.i.i.i130 = icmp eq ptr %83, null + %82 = load ptr, ptr %m_info.i.i.i.i.i129, align 8 + %cmp.i.i.i.i.i130 = icmp eq ptr %82, null br i1 %cmp.i.i.i.i.i130, label %invoke.cont121, label %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i131 _ZNK4decl13get_family_idEv.exit.thread.i.i.i.i131: ; preds = %call.i.noexc136 - %84 = load i32, ptr %83, align 8 - %cmp6.i.i.i.i132 = icmp eq i32 %84, 5 + %83 = load i32, ptr %82, align 8 + %cmp6.i.i.i.i132 = icmp eq i32 %83, 5 br i1 %cmp6.i.i.i.i132, label %cond.false.i3.i.i.i.i133, label %invoke.cont121 cond.false.i3.i.i.i.i133: ; preds = %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i131 - %m_kind.i.i.i.i.i.i134 = getelementptr inbounds i8, ptr %83, i64 4 - %85 = load i32, ptr %m_kind.i.i.i.i.i.i134, align 4 - %cmp3.i.i.i.i135 = icmp eq i32 %85, 1 + %m_kind.i.i.i.i.i.i134 = getelementptr inbounds i8, ptr %82, i64 4 + %84 = load i32, ptr %m_kind.i.i.i.i.i.i134, align 4 + %cmp3.i.i.i.i135 = icmp eq i32 %84, 1 br label %invoke.cont121 invoke.cont121: ; preds = %cond.false.i3.i.i.i.i133, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i131, %call.i.noexc136 - %86 = phi i1 [ %cmp3.i.i.i.i135, %cond.false.i3.i.i.i.i133 ], [ false, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i131 ], [ false, %call.i.noexc136 ] - %call124 = invoke noundef ptr @_ZNK10arith_util10mk_numeralERK8rationalb(ptr noundef nonnull align 8 dereferenceable(16) %a, ptr noundef nonnull align 8 dereferenceable(32) %be, i1 noundef zeroext %86) + %85 = phi i1 [ %cmp3.i.i.i.i135, %cond.false.i3.i.i.i.i133 ], [ false, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i131 ], [ false, %call.i.noexc136 ] + %call124 = invoke noundef ptr @_ZNK10arith_util10mk_numeralERK8rationalb(ptr noundef nonnull align 8 dereferenceable(16) %a, ptr noundef nonnull align 8 dereferenceable(32) %be, i1 noundef zeroext %85) to label %invoke.cont123.invoke unwind label %lpad invoke.cont123.invoke: ; preds = %invoke.cont121, %invoke.cont62 - %87 = phi i32 [ 2, %invoke.cont62 ], [ 3, %invoke.cont121 ] - %88 = phi ptr [ %call65, %invoke.cont62 ], [ %call124, %invoke.cont121 ] - %89 = load ptr, ptr %a, align 8 - %90 = invoke noundef ptr @_ZN11ast_manager6mk_appEiiP4exprS1_(ptr noundef nonnull align 8 dereferenceable(976) %89, i32 noundef 5, i32 noundef %87, ptr noundef nonnull %4, ptr noundef %88) + %86 = phi i32 [ 2, %invoke.cont62 ], [ 3, %invoke.cont121 ] + %87 = phi ptr [ %call65, %invoke.cont62 ], [ %call124, %invoke.cont121 ] + %88 = load ptr, ptr %a, align 8 + %89 = invoke noundef ptr @_ZN11ast_manager6mk_appEiiP4exprS1_(ptr noundef nonnull align 8 dereferenceable(976) %88, i32 noundef 5, i32 noundef %86, ptr noundef nonnull %4, ptr noundef %87) to label %invoke.cont125.invoke unwind label %lpad invoke.cont125.invoke: ; preds = %invoke.cont123.invoke - %91 = invoke i32 @_ZN3smt10theory_lra3imp10mk_literalEP4expr(ptr noundef nonnull align 8 dereferenceable(960) %this, ptr noundef %90) + %90 = invoke i32 @_ZN3smt10theory_lra3imp10mk_literalEP4expr(ptr noundef nonnull align 8 dereferenceable(960) %this, ptr noundef %89) to label %sw.epilog unwind label %lpad sw.epilog: ; preds = %invoke.cont125.invoke, %call.i.i.i.noexc120, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i115, %call.i.i.i.noexc54, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i49, %if.end16, %invoke.cont106, %invoke.cont111, %invoke.cont47, %invoke.cont52 - %bound.sroa.0.2 = phi i32 [ %19, %if.end16 ], [ %bound.sroa.0.1, %invoke.cont111 ], [ %bound.sroa.0.1, %invoke.cont106 ], [ %bound.sroa.0.0, %invoke.cont52 ], [ %bound.sroa.0.0, %invoke.cont47 ], [ %bound.sroa.0.0, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i49 ], [ %bound.sroa.0.0, %call.i.i.i.noexc54 ], [ %bound.sroa.0.1, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i115 ], [ %bound.sroa.0.1, %call.i.i.i.noexc120 ], [ %91, %invoke.cont125.invoke ] + %bound.sroa.0.2 = phi i32 [ %19, %if.end16 ], [ %bound.sroa.0.1, %invoke.cont111 ], [ %bound.sroa.0.1, %invoke.cont106 ], [ %bound.sroa.0.0, %invoke.cont52 ], [ %bound.sroa.0.0, %invoke.cont47 ], [ %bound.sroa.0.0, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i49 ], [ %bound.sroa.0.0, %call.i.i.i.noexc54 ], [ %bound.sroa.0.1, %_ZNK4decl13get_family_idEv.exit.thread.i.i.i.i.i.i115 ], [ %bound.sroa.0.1, %call.i.i.i.noexc120 ], [ %90, %invoke.cont125.invoke ] %.b = load i1, ptr @_ZN3smtL12null_literalE.0, align 4 - %92 = select i1 %.b, i32 -2, i32 0 - %cmp.i = icmp eq i32 %bound.sroa.0.2, %92 + %91 = select i1 %.b, i32 -2, i32 0 + %cmp.i = icmp eq i32 %bound.sroa.0.2, %91 br i1 %cmp.i, label %if.then.i.i.i, label %invoke.cont137 invoke.cont137: ; preds = %sw.epilog - %93 = load ptr, ptr %this, align 8 - %ctx.i.i = getelementptr inbounds i8, ptr %93, i64 16 - %94 = load ptr, ptr %ctx.i.i, align 8 - %m_assignment.i.i = getelementptr inbounds i8, ptr %94, i64 9392 - %95 = load ptr, ptr %m_assignment.i.i, align 8 + %92 = load ptr, ptr %this, align 8 + %ctx.i.i = getelementptr inbounds i8, ptr %92, i64 16 + %93 = load ptr, ptr %ctx.i.i, align 8 + %m_assignment.i.i = getelementptr inbounds i8, ptr %93, i64 9392 + %94 = load ptr, ptr %m_assignment.i.i, align 8 %idxprom.i.i.i142 = zext i32 %bound.sroa.0.2 to i64 - %arrayidx.i.i.i143 = getelementptr inbounds i8, ptr %95, i64 %idxprom.i.i.i142 - %96 = load i8, ptr %arrayidx.i.i.i143, align 1 - %cmp = icmp eq i8 %96, 1 + %arrayidx.i.i.i143 = getelementptr inbounds i8, ptr %94, i64 %idxprom.i.i.i142 + %95 = load i8, ptr %arrayidx.i.i.i143, align 1 + %cmp = icmp eq i8 %95, 1 br i1 %cmp, label %if.then.i.i.i, label %if.end140 if.end140: ; preds = %invoke.cont137 %m_bound_propagations1 = getelementptr inbounds i8, ptr %this, i64 416 - %97 = load i32, ptr %m_bound_propagations1, align 8 - %inc = add i32 %97, 1 + %96 = load i32, ptr %m_bound_propagations1, align 8 + %inc = add i32 %96, 1 store i32 %inc, ptr %m_bound_propagations1, align 8 invoke void @_ZN3smt10theory_lra3imp14reset_evidenceEv(ptr noundef nonnull align 8 dereferenceable(960) %this) to label %invoke.cont141 unwind label %lpad @@ -50550,35 +50550,35 @@ invoke.cont141: ; preds = %if.end140 invoke.cont142: ; preds = %invoke.cont141 %m_solver.i144 = getelementptr inbounds i8, ptr %this, i64 456 - %98 = load ptr, ptr %m_solver.i144, align 8 + %97 = load ptr, ptr %m_solver.i144, align 8 %m_bp = getelementptr inbounds i8, ptr %this, i64 528 - invoke void @_ZN2lp10lar_solver21explain_implied_boundIN3smt10theory_lra3impEEEvRKNS_13implied_boundERNS_19lp_bound_propagatorIT_EE(ptr noundef nonnull align 8 dereferenceable(1888) %98, ptr noundef nonnull align 8 dereferenceable(72) %be, ptr noundef nonnull align 8 dereferenceable(152) %m_bp) + invoke void @_ZN2lp10lar_solver21explain_implied_boundIN3smt10theory_lra3impEEEvRKNS_13implied_boundERNS_19lp_bound_propagatorIT_EE(ptr noundef nonnull align 8 dereferenceable(1888) %97, ptr noundef nonnull align 8 dereferenceable(72) %be, ptr noundef nonnull align 8 dereferenceable(152) %m_bp) to label %invoke.cont146 unwind label %lpad invoke.cont146: ; preds = %invoke.cont142 - %99 = load ptr, ptr %this, align 8 - %ctx.i.i145 = getelementptr inbounds i8, ptr %99, i64 16 - %100 = load ptr, ptr %ctx.i.i145, align 8 + %98 = load ptr, ptr %this, align 8 + %ctx.i.i145 = getelementptr inbounds i8, ptr %98, i64 16 + %99 = load ptr, ptr %ctx.i.i145, align 8 %shr.i.i = lshr i32 %bound.sroa.0.2, 1 - %m_bool_var2expr.i.i.i = getelementptr inbounds i8, ptr %100, i64 9384 - %101 = load ptr, ptr %m_bool_var2expr.i.i.i, align 8 + %m_bool_var2expr.i.i.i = getelementptr inbounds i8, ptr %99, i64 9384 + %100 = load ptr, ptr %m_bool_var2expr.i.i.i, align 8 %idxprom.i.i.i.i146 = zext nneg i32 %shr.i.i to i64 - %arrayidx.i.i.i.i147 = getelementptr inbounds ptr, ptr %101, i64 %idxprom.i.i.i.i146 - %102 = load ptr, ptr %arrayidx.i.i.i.i147, align 8 - %m_relevancy_propagator.i.i.i = getelementptr inbounds i8, ptr %100, i64 7512 - %103 = load ptr, ptr %m_relevancy_propagator.i.i.i, align 8 - %vtable.i.i.i = load ptr, ptr %103, align 8 + %arrayidx.i.i.i.i147 = getelementptr inbounds ptr, ptr %100, i64 %idxprom.i.i.i.i146 + %101 = load ptr, ptr %arrayidx.i.i.i.i147, align 8 + %m_relevancy_propagator.i.i.i = getelementptr inbounds i8, ptr %99, i64 7512 + %102 = load ptr, ptr %m_relevancy_propagator.i.i.i, align 8 + %vtable.i.i.i = load ptr, ptr %102, align 8 %vfn.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i, i64 48 - %104 = load ptr, ptr %vfn.i.i.i, align 8 - invoke void %104(ptr noundef nonnull align 8 dereferenceable(16) %103, ptr noundef %102) + %103 = load ptr, ptr %vfn.i.i.i, align 8 + invoke void %103(ptr noundef nonnull align 8 dereferenceable(16) %102, ptr noundef %101) to label %.noexc unwind label %lpad .noexc: ; preds = %invoke.cont146 - %105 = load ptr, ptr %m_relevancy_propagator.i.i.i, align 8 - %vtable4.i.i.i = load ptr, ptr %105, align 8 + %104 = load ptr, ptr %m_relevancy_propagator.i.i.i, align 8 + %vtable4.i.i.i = load ptr, ptr %104, align 8 %vfn5.i.i.i = getelementptr inbounds i8, ptr %vtable4.i.i.i, i64 64 - %106 = load ptr, ptr %vfn5.i.i.i, align 8 - invoke void %106(ptr noundef nonnull align 8 dereferenceable(16) %105) + %105 = load ptr, ptr %vfn5.i.i.i, align 8 + invoke void %105(ptr noundef nonnull align 8 dereferenceable(16) %104) to label %invoke.cont150 unwind label %lpad invoke.cont150: ; preds = %.noexc @@ -50590,8 +50590,8 @@ invoke.cont150: ; preds = %.noexc if.then.i.i.i: ; preds = %invoke.cont13, %invoke.cont8, %invoke.cont, %sw.epilog, %invoke.cont137, %invoke.cont150 %m_ref_count.i.i.i.i150 = getelementptr inbounds i8, ptr %4, i64 8 - %107 = load i32, ptr %m_ref_count.i.i.i.i150, align 4 - %dec.i.i.i.i = add i32 %107, -1 + %106 = load i32, ptr %m_ref_count.i.i.i.i150, align 4 + %dec.i.i.i.i = add i32 %106, -1 store i32 %dec.i.i.i.i, ptr %m_ref_count.i.i.i.i150, align 4 %cmp.i.i.i151 = icmp eq i32 %dec.i.i.i.i, 0 br i1 %cmp.i.i.i151, label %if.then2.i.i.i, label %cleanup.cont @@ -50601,17 +50601,17 @@ if.then2.i.i.i: ; preds = %if.then.i.i.i to label %cleanup.cont unwind label %terminate.lpad.i terminate.lpad.i: ; preds = %if.then2.i.i.i - %108 = landingpad { ptr, i32 } + %107 = landingpad { ptr, i32 } catch ptr null - %109 = extractvalue { ptr, i32 } %108, 0 - call void @__clang_call_terminate(ptr %109) #24 + %108 = extractvalue { ptr, i32 } %107, 0 + call void @__clang_call_terminate(ptr %108) #24 unreachable cleanup.cont: ; preds = %if.then2.i.i.i, %if.then.i.i.i, %entry ret void ehcleanup: ; preds = %lpad95, %lpad37, %lpad - %.pn = phi { ptr, i32 } [ %18, %lpad ], [ %71, %lpad95 ], [ %39, %lpad37 ] + %.pn = phi { ptr, i32 } [ %18, %lpad ], [ %70, %lpad95 ], [ %38, %lpad37 ] call void @_ZN7obj_refI4expr11ast_managerED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %w) #23 resume { ptr, i32 } %.pn } diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index d8d993d1b31..1b49c53ba43 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/84696" # Please rebase manually # git fetch origin