diff --git a/bench/abc/optimized/FxchMan.ll b/bench/abc/optimized/FxchMan.ll index 999d3ba7738..66b9adaecad 100644 --- a/bench/abc/optimized/FxchMan.ll +++ b/bench/abc/optimized/FxchMan.ll @@ -1299,7 +1299,7 @@ Vec_QueGrow.exit.i: ; preds = %.Vec_QueGrow.exit.i 72: ; preds = %Vec_QueGrow.exit.i %73 = shl nsw i32 %71, 1 - %74 = trunc i64 %indvars.iv to i32 + %74 = trunc nsw i64 %indvars.iv to i32 %75 = add nsw i32 %74, 1 %76 = tail call noundef i32 @llvm.smax.i32(i32 %75, i32 %73) %77 = getelementptr inbounds nuw i8, ptr %31, i64 8 diff --git a/bench/arrow/optimized/compare.ll b/bench/arrow/optimized/compare.ll index b1acb8aeb49..e04bf5b5f59 100644 --- a/bench/arrow/optimized/compare.ll +++ b/bench/arrow/optimized/compare.ll @@ -18874,20 +18874,19 @@ _ZN5arrow8internal19BaseSetBitRunReaderILb0EE14FindCurrentRunEv.exit: ; preds = %54 = and i64 %.0..0..0..0..0..0..0..0..i.i, %53 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) %55 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %56 = trunc i64 %.pr to i32 + %56 = trunc nuw nsw i64 %.pr to i32 %57 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %54, i1 false) - %58 = trunc nuw nsw i64 %57 to i32 - %.sroa.speculated.i = tail call i32 @llvm.umin.i32(i32 %58, i32 %56) - %59 = zext nneg i32 %.sroa.speculated.i to i64 - %60 = lshr i64 %54, %59 - store i64 %60, ptr %55, align 8, !tbaa !987 - %61 = sub nsw i32 %56, %.sroa.speculated.i - store i32 %61, ptr %4, align 8, !tbaa !988 - %62 = sub nsw i64 %.pr, %59 + %.sroa.speculated13.i = tail call i64 @llvm.umin.i64(i64 %57, i64 %.pr) + %.sroa.speculated.i = trunc nuw nsw i64 %.sroa.speculated13.i to i32 + %58 = lshr i64 %54, %.sroa.speculated13.i + store i64 %58, ptr %55, align 8, !tbaa !987 + %59 = sub nsw i32 %56, %.sroa.speculated.i + store i32 %59, ptr %4, align 8, !tbaa !988 + %60 = sub nsw i64 %.pr, %.sroa.speculated13.i br label %.sink.split.i .sink.split.i: ; preds = %45, %.thread.i - %.sink.i = phi i64 [ %40, %.thread.i ], [ %62, %45 ] + %.sink.i = phi i64 [ %40, %.thread.i ], [ %60, %45 ] store i64 %.sink.i, ptr %28, align 8, !tbaa !986 br label %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE13SkipNextZerosEv.exit @@ -18904,21 +18903,21 @@ _ZN5arrow8internal19BaseSetBitRunReaderILb0EE13SkipNextZerosEv.exit: ; preds = % 69: ; preds = %27 %.not28 = icmp eq i32 %5, %24 - br i1 %.not28, label %70, label %91 + br i1 %.not28, label %72, label %91 -70: ; preds = %69 - %71 = icmp sgt i64 %26, 63 - br i1 %71, label %72, label %75, !prof !96 +72: ; preds = %67 + %69 = icmp sgt i64 %26, 63 + br i1 %69, label %70, label %73, !prof !96 -72: ; preds = %70 - %73 = load ptr, ptr %0, align 8, !tbaa !989 - %.0.copyload.i = load i64, ptr %73, align 1 - %74 = getelementptr inbounds nuw i8, ptr %73, i64 8 - store ptr %74, ptr %0, align 8, !tbaa !989 +70:; preds = %68 + %71 = load ptr, ptr %0, align 8, !tbaa !989 + %.0.copyload.i = load i64, ptr %71, align 1 + %72 = getelementptr inbounds nuw i8, ptr %71, i64 8 + store ptr %72, ptr %0, align 8, !tbaa !989 store i64 %.0.copyload.i, ptr %7, align 8, !tbaa !987 br label %88 -75: ; preds = %70 +75: ; preds = %72 %76 = icmp sgt i64 %26, 0 br i1 %76, label %77, label %94 @@ -18940,12 +18939,12 @@ _ZN5arrow8internal19BaseSetBitRunReaderILb0EE13SkipNextZerosEv.exit: ; preds = % %86 = and i64 %.0..0..0..0..0..0..i, %85 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) store i64 %86, ptr %7, align 8, !tbaa !987 - %87 = trunc i64 %26 to i32 + %87 = trunc nuw nsw i64 %26 to i32 br label %88 -88: ; preds = %77, %72 - %89 = phi i64 [ %86, %77 ], [ %.0.copyload.i, %72 ] - %storemerge = phi i32 [ %87, %77 ], [ 64, %72 ] +88: ; preds = %77, %70 + %89 = phi i64 [ %86, %77 ], [ %.0.copyload.i, %70 ] + %storemerge = phi i32 [ %87, %77 ], [ 64, %70 ] store i32 %storemerge, ptr %4, align 8, !tbaa !988 %90 = and i64 %89, 1 %.not29 = icmp eq i64 %90, 0 @@ -19061,7 +19060,7 @@ define linkonce_odr noundef i64 @_ZN5arrow8internal19BaseSetBitRunReaderILb0EE13 %47 = xor i64 %notmask.i.i, -1 %48 = and i64 %.0..0..0..0..0..0..i, %47 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) - %49 = trunc i64 %25 to i32 + %49 = trunc nuw nsw i64 %25 to i32 %50 = getelementptr inbounds nuw i8, ptr %0, i64 32 %51 = xor i64 %48, -1 %52 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %51, i1 true) @@ -21846,7 +21845,7 @@ declare i64 @llvm.usub.sat.i64(i64, i64) #23 declare i32 @llvm.smin.i32(i32, i32) #23 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umin.i32(i32, i32) #23 +declare i64 @llvm.umin.i64(i64, i64) #23 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.smin.i64(i64, i64) #23 diff --git a/bench/arrow/optimized/int_util.ll b/bench/arrow/optimized/int_util.ll index 93e20dd1880..72b6bc2de9e 100644 --- a/bench/arrow/optimized/int_util.ll +++ b/bench/arrow/optimized/int_util.ll @@ -19971,20 +19971,19 @@ _ZN5arrow8internal19BaseSetBitRunReaderILb0EE14FindCurrentRunEv.exit: ; preds = %54 = and i64 %.0..0..0..0..0..0..0..0..i.i, %53 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) %55 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %56 = trunc i64 %.pr to i32 + %56 = trunc nuw nsw i64 %.pr to i32 %57 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %54, i1 false) - %58 = trunc nuw nsw i64 %57 to i32 - %.sroa.speculated.i = tail call i32 @llvm.umin.i32(i32 %58, i32 %56) - %59 = zext nneg i32 %.sroa.speculated.i to i64 - %60 = lshr i64 %54, %59 - store i64 %60, ptr %55, align 8, !tbaa !1223 - %61 = sub nsw i32 %56, %.sroa.speculated.i - store i32 %61, ptr %4, align 8, !tbaa !1224 - %62 = sub nsw i64 %.pr, %59 + %.sroa.speculated13.i = tail call i64 @llvm.umin.i64(i64 %57, i64 %.pr) + %.sroa.speculated.i = trunc nuw nsw i64 %.sroa.speculated13.i to i32 + %58 = lshr i64 %54, %.sroa.speculated13.i + store i64 %58, ptr %55, align 8, !tbaa !1223 + %59 = sub nsw i32 %56, %.sroa.speculated.i + store i32 %59, ptr %4, align 8, !tbaa !1224 + %60 = sub nsw i64 %.pr, %.sroa.speculated13.i br label %.sink.split.i .sink.split.i: ; preds = %45, %.thread.i - %.sink.i = phi i64 [ %40, %.thread.i ], [ %62, %45 ] + %.sink.i = phi i64 [ %40, %.thread.i ], [ %60, %45 ] store i64 %.sink.i, ptr %28, align 8, !tbaa !1222 br label %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE13SkipNextZerosEv.exit @@ -20037,7 +20036,7 @@ _ZN5arrow8internal19BaseSetBitRunReaderILb0EE13SkipNextZerosEv.exit: ; preds = % %86 = and i64 %.0..0..0..0..0..0..i, %85 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) store i64 %86, ptr %7, align 8, !tbaa !1223 - %87 = trunc i64 %26 to i32 + %87 = trunc nuw nsw i64 %26 to i32 br label %88 88: ; preds = %77, %72 @@ -20252,7 +20251,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i.i: ; preds = %32, %30, %26, %22, br label %_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.exit.i.i 72: ; preds = %._crit_edge.i.i.i - %73 = trunc nuw i32 %.0.lcssa.i.i.i to i8 + %73 = trunc nuw nsw i32 %.0.lcssa.i.i.i to i8 %74 = or disjoint i8 %73, 48 br label %_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.exit.i.i @@ -20438,7 +20437,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i.i19: ; preds = %121, %119, %115, % br label %._crit_edge.loopexit48 161: ; preds = %._crit_edge.i.i.i21 - %162 = trunc nuw i32 %.0.lcssa.i.i.i22 to i8 + %162 = trunc nuw nsw i32 %.0.lcssa.i.i.i22 to i8 %163 = or disjoint i8 %162, 48 br label %._crit_edge.loopexit48 @@ -20631,7 +20630,7 @@ define linkonce_odr noundef i64 @_ZN5arrow8internal19BaseSetBitRunReaderILb0EE13 %47 = xor i64 %notmask.i.i, -1 %48 = and i64 %.0..0..0..0..0..0..i, %47 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) - %49 = trunc i64 %25 to i32 + %49 = trunc nuw nsw i64 %25 to i32 %50 = getelementptr inbounds nuw i8, ptr %0, i64 32 %51 = xor i64 %48, -1 %52 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %51, i1 true) @@ -20822,7 +20821,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i.i: ; preds = %32, %30, %26, %22, br label %_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.exit.i.i 72: ; preds = %._crit_edge.i.i.i - %73 = trunc nuw i32 %.0.lcssa.i.i.i to i8 + %73 = trunc nuw nsw i32 %.0.lcssa.i.i.i to i8 %74 = or disjoint i8 %73, 48 br label %_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.exit.i.i @@ -21008,7 +21007,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i.i19: ; preds = %121, %119, %115, % br label %._crit_edge.loopexit48 161: ; preds = %._crit_edge.i.i.i21 - %162 = trunc nuw i32 %.0.lcssa.i.i.i22 to i8 + %162 = trunc nuw nsw i32 %.0.lcssa.i.i.i22 to i8 %163 = or disjoint i8 %162, 48 br label %._crit_edge.loopexit48 @@ -21198,7 +21197,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i.i: ; preds = %31, %29, %25, %21, br label %_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.exit.i.i 71: ; preds = %._crit_edge.i.i.i - %72 = trunc nuw i32 %.0.lcssa.i.i.i to i8 + %72 = trunc nuw nsw i32 %.0.lcssa.i.i.i to i8 %73 = or disjoint i8 %72, 48 br label %_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.exit.i.i @@ -21384,7 +21383,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i.i19: ; preds = %120, %118, %114, % br label %._crit_edge.loopexit48 160: ; preds = %._crit_edge.i.i.i21 - %161 = trunc nuw i32 %.0.lcssa.i.i.i22 to i8 + %161 = trunc nuw nsw i32 %.0.lcssa.i.i.i22 to i8 %162 = or disjoint i8 %161, 48 br label %._crit_edge.loopexit48 @@ -21570,7 +21569,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i.i: ; preds = %31, %29, %25, %21, br label %_ZNSt8__detail18__to_chars_10_implImEEvPcjT_.exit.i.i 67: ; preds = %._crit_edge.i.i.i - %68 = trunc nuw i64 %.0.lcssa.i.i.i to i8 + %68 = trunc nuw nsw i64 %.0.lcssa.i.i.i to i8 %69 = or disjoint i8 %68, 48 br label %_ZNSt8__detail18__to_chars_10_implImEEvPcjT_.exit.i.i @@ -21752,7 +21751,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i.i19: ; preds = %116, %114, %110, % br label %._crit_edge.loopexit48 152: ; preds = %._crit_edge.i.i.i21 - %153 = trunc nuw i64 %.0.lcssa.i.i.i22 to i8 + %153 = trunc nuw nsw i64 %.0.lcssa.i.i.i22 to i8 %154 = or disjoint i8 %153, 48 br label %._crit_edge.loopexit48 @@ -22241,7 +22240,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i.i: ; preds = %17, %15, %.lr.ph.i. br label %_ZSt12__to_chars_iItENSt9enable_ifIXsr5__or_ISt5__or_IJSt7is_sameINSt9remove_cvIT_E4typeEaES2_IS6_sES2_IS6_iES2_IS6_lES2_IS6_xEEES1_IJS2_IS6_hES2_IS6_tES2_IS6_jES2_IS6_mES2_IS6_yEEES2_IcS6_EEE5valueESt15to_chars_resultE4typeEPcSN_S4_i.exit.._crit_edge_crit_edge 56: ; preds = %._crit_edge.i.i.i - %57 = trunc nuw i32 %.0.lcssa.i.i.i to i8 + %57 = trunc nuw nsw i32 %.0.lcssa.i.i.i to i8 %58 = or disjoint i8 %57, 48 br label %_ZSt12__to_chars_iItENSt9enable_ifIXsr5__or_ISt5__or_IJSt7is_sameINSt9remove_cvIT_E4typeEaES2_IS6_sES2_IS6_iES2_IS6_lES2_IS6_xEEES1_IJS2_IS6_hES2_IS6_tES2_IS6_jES2_IS6_mES2_IS6_yEEES2_IcS6_EEE5valueESt15to_chars_resultE4typeEPcSN_S4_i.exit.._crit_edge_crit_edge @@ -22364,7 +22363,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEm.exit.us38: ; pred br i1 %111, label %.lr.ph.i9.i.i28.us, label %._crit_edge.i.i.i18.loopexit.us, !llvm.loop !1233 112: ; preds = %._crit_edge.i.i.i18.loopexit.us - %113 = trunc nuw i32 %97 to i8 + %113 = trunc nuw nsw i32 %97 to i8 %114 = or disjoint i8 %113, 48 br label %._crit_edge.loopexit52 @@ -22393,7 +22392,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEm.exit.us38: ; pred .lr.ph.split.split: ; preds = %.lr.ph.split %127 = icmp ult i16 %1, 10 %128 = icmp samesign ugt i16 %1, 9 - %129 = trunc nuw i16 %1 to i8 + %129 = trunc nuw nsw i16 %1 to i8 %130 = or disjoint i8 %129, 48 %131 = shl nuw nsw i32 %8, 1 %132 = or disjoint i32 %131, 1 @@ -22621,7 +22620,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i.i: ; preds = %24, %22, %18, %14, br label %_ZSt12__to_chars_iIjENSt9enable_ifIXsr5__or_ISt5__or_IJSt7is_sameINSt9remove_cvIT_E4typeEaES2_IS6_sES2_IS6_iES2_IS6_lES2_IS6_xEEES1_IJS2_IS6_hES2_IS6_tES2_IS6_jES2_IS6_mES2_IS6_yEEES2_IcS6_EEE5valueESt15to_chars_resultE4typeEPcSN_S4_i.exit.._crit_edge_crit_edge 64: ; preds = %._crit_edge.i.i.i - %65 = trunc nuw i32 %.0.lcssa.i.i.i to i8 + %65 = trunc nuw nsw i32 %.0.lcssa.i.i.i to i8 %66 = or disjoint i8 %65, 48 br label %_ZSt12__to_chars_iIjENSt9enable_ifIXsr5__or_ISt5__or_IJSt7is_sameINSt9remove_cvIT_E4typeEaES2_IS6_sES2_IS6_iES2_IS6_lES2_IS6_xEEES1_IJS2_IS6_hES2_IS6_tES2_IS6_jES2_IS6_mES2_IS6_yEEES2_IcS6_EEE5valueESt15to_chars_resultE4typeEPcSN_S4_i.exit.._crit_edge_crit_edge @@ -22793,7 +22792,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i.i17: ; preds = %109, %107, %103, % br label %._crit_edge.loopexit47 148: ; preds = %._crit_edge.i.i.i19 - %149 = trunc nuw i32 %.0.lcssa.i.i.i20 to i8 + %149 = trunc nuw nsw i32 %.0.lcssa.i.i.i20 to i8 %150 = or disjoint i8 %149, 48 br label %._crit_edge.loopexit47 @@ -22962,7 +22961,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i.i: ; preds = %24, %22, %18, %14, br label %_ZSt12__to_chars_iImENSt9enable_ifIXsr5__or_ISt5__or_IJSt7is_sameINSt9remove_cvIT_E4typeEaES2_IS6_sES2_IS6_iES2_IS6_lES2_IS6_xEEES1_IJS2_IS6_hES2_IS6_tES2_IS6_jES2_IS6_mES2_IS6_yEEES2_IcS6_EEE5valueESt15to_chars_resultE4typeEPcSN_S4_i.exit.._crit_edge_crit_edge 60: ; preds = %._crit_edge.i.i.i - %61 = trunc nuw i64 %.0.lcssa.i.i.i to i8 + %61 = trunc nuw nsw i64 %.0.lcssa.i.i.i to i8 %62 = or disjoint i8 %61, 48 br label %_ZSt12__to_chars_iImENSt9enable_ifIXsr5__or_ISt5__or_IJSt7is_sameINSt9remove_cvIT_E4typeEaES2_IS6_sES2_IS6_iES2_IS6_lES2_IS6_xEEES1_IJS2_IS6_hES2_IS6_tES2_IS6_jES2_IS6_mES2_IS6_yEEES2_IcS6_EEE5valueESt15to_chars_resultE4typeEPcSN_S4_i.exit.._crit_edge_crit_edge @@ -23130,7 +23129,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i.i17: ; preds = %105, %103, %99, %9 br label %._crit_edge.loopexit47 140: ; preds = %._crit_edge.i.i.i19 - %141 = trunc nuw i64 %.0.lcssa.i.i.i20 to i8 + %141 = trunc nuw nsw i64 %.0.lcssa.i.i.i20 to i8 %142 = or disjoint i8 %141, 48 br label %._crit_edge.loopexit47 @@ -26485,7 +26484,7 @@ declare void @llvm.experimental.noalias.scope.decl(metadata) #18 declare i32 @llvm.smin.i32(i32, i32) #19 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umin.i32(i32, i32) #19 +declare i64 @llvm.umin.i64(i64, i64) #19 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.fshr.i64(i64, i64, i64) #19 diff --git a/bench/arrow/optimized/interfaces.ll b/bench/arrow/optimized/interfaces.ll index 04a60c42227..8c512910906 100644 --- a/bench/arrow/optimized/interfaces.ll +++ b/bench/arrow/optimized/interfaces.ll @@ -7199,9 +7199,9 @@ _ZZN9__gnu_cxx6__stoaIlicJiEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD br label %52 52: ; preds = %51, %49 - %53 = trunc i64 %31 to i32 + %53 = trunc nsw i64 %31 to i32 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %1) #33 - %54 = icmp slt i32 %53, 1 + %54 = icmp slt i64 %31, 1 br i1 %54, label %.thread, label %73 .thread: ; preds = %_ZZN9__gnu_cxx6__stoaIlicJiEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD2Ev.exit.i.i, %52 @@ -7259,6 +7259,7 @@ _ZN5arrow4util12ArrowLogBaselsIA87_cEERS1_RKT_.exit: ; preds = %.noexc24, %.noex 73: ; preds = %52, %_ZN5arrow4util12ArrowLogBaselsIA87_cEERS1_RKT_.exit, %22 %.113 = phi i32 [ 0, %22 ], [ %.2142, %_ZN5arrow4util12ArrowLogBaselsIA87_cEERS1_RKT_.exit ], [ %53, %52 ] + %.113.fr = freeze i32 %.113 %74 = load ptr, ptr %3, align 8, !tbaa !115 %75 = icmp eq ptr %74, %12 br i1 %75, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i @@ -7300,8 +7301,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit29: ; preds = %_ZN 87: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #33 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) #33 - %88 = icmp sgt i32 %.113, 0 - %spec.select = select i1 %88, i32 %.113, i32 8 + %88 = icmp sgt i32 %.113.fr, 0 + %spec.select = select i1 %88, i32 %.113.fr, i32 8 br label %89 89: ; preds = %87, %.thread3 diff --git a/bench/arrow/optimized/vector_selection_filter_internal.ll b/bench/arrow/optimized/vector_selection_filter_internal.ll index f718bc37cdf..4b965d11031 100644 --- a/bench/arrow/optimized/vector_selection_filter_internal.ll +++ b/bench/arrow/optimized/vector_selection_filter_internal.ll @@ -19697,20 +19697,19 @@ _ZN5arrow8internal19BaseSetBitRunReaderILb0EE14FindCurrentRunEv.exit: ; preds = %54 = and i64 %.0..0..0..0..0..0..0..0..i.i, %53 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) %55 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %56 = trunc i64 %.pr to i32 + %56 = trunc nuw nsw i64 %.pr to i32 %57 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %54, i1 false) - %58 = trunc nuw nsw i64 %57 to i32 - %.sroa.speculated.i = tail call i32 @llvm.umin.i32(i32 %58, i32 %56) - %59 = zext nneg i32 %.sroa.speculated.i to i64 - %60 = lshr i64 %54, %59 - store i64 %60, ptr %55, align 8, !tbaa !751 - %61 = sub nsw i32 %56, %.sroa.speculated.i - store i32 %61, ptr %4, align 8, !tbaa !752 - %62 = sub nsw i64 %.pr, %59 + %.sroa.speculated13.i = tail call i64 @llvm.umin.i64(i64 %57, i64 %.pr) + %.sroa.speculated.i = trunc nuw nsw i64 %.sroa.speculated13.i to i32 + %58 = lshr i64 %54, %.sroa.speculated13.i + store i64 %58, ptr %55, align 8, !tbaa !751 + %59 = sub nsw i32 %56, %.sroa.speculated.i + store i32 %59, ptr %4, align 8, !tbaa !752 + %60 = sub nsw i64 %.pr, %.sroa.speculated13.i br label %.sink.split.i .sink.split.i: ; preds = %45, %.thread.i - %.sink.i = phi i64 [ %40, %.thread.i ], [ %62, %45 ] + %.sink.i = phi i64 [ %40, %.thread.i ], [ %60, %45 ] store i64 %.sink.i, ptr %28, align 8, !tbaa !750 br label %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE13SkipNextZerosEv.exit @@ -19763,7 +19762,7 @@ _ZN5arrow8internal19BaseSetBitRunReaderILb0EE13SkipNextZerosEv.exit: ; preds = % %86 = and i64 %.0..0..0..0..0..0..i, %85 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) store i64 %86, ptr %7, align 8, !tbaa !751 - %87 = trunc i64 %26 to i32 + %87 = trunc nuw nsw i64 %26 to i32 br label %88 88: ; preds = %77, %72 @@ -19879,7 +19878,7 @@ define linkonce_odr noundef i64 @_ZN5arrow8internal19BaseSetBitRunReaderILb0EE13 %47 = xor i64 %notmask.i.i, -1 %48 = and i64 %.0..0..0..0..0..0..i, %47 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) - %49 = trunc i64 %25 to i32 + %49 = trunc nuw nsw i64 %25 to i32 %50 = getelementptr inbounds nuw i8, ptr %0, i64 32 %51 = xor i64 %48, -1 %52 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %51, i1 true) @@ -35142,14 +35141,11 @@ declare i64 @llvm.smin.i64(i64, i64) #24 declare i32 @llvm.smin.i32(i32, i32) #24 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umin.i32(i32, i32) #24 +declare i64 @llvm.umin.i64(i64, i64) #24 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) declare void @llvm.experimental.noalias.scope.decl(metadata) #25 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umin.i64(i64, i64) #24 - ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umax.i64(i64, i64) #24 diff --git a/bench/assimp/optimized/FBXConverter.ll b/bench/assimp/optimized/FBXConverter.ll index 549229150ef..dda3442bc85 100644 --- a/bench/assimp/optimized/FBXConverter.ll +++ b/bench/assimp/optimized/FBXConverter.ll @@ -2037,7 +2037,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKS %24 = load ptr, ptr %6, align 8 %25 = getelementptr inbounds nuw i8, ptr %24, i64 8 %26 = load ptr, ptr %25, align 8 - %27 = trunc nuw i64 %21 to i32 + %27 = trunc nuw nsw i64 %21 to i32 store i32 %27, ptr %26, align 4 %28 = getelementptr inbounds nuw i8, ptr %26, i64 4 %29 = load ptr, ptr %2, align 8 @@ -2526,7 +2526,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit24: ; preds = %_ZN br i1 %145, label %_ZN8aiString3SetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, label %146 146: ; preds = %144 - %147 = trunc nuw i64 %143 to i32 + %147 = trunc nuw nsw i64 %143 to i32 store i32 %147, ptr %7, align 4 %148 = getelementptr inbounds nuw i8, ptr %7, i64 4 %149 = load ptr, ptr %8, align 8 @@ -2746,7 +2746,7 @@ _ZN10aiMetadata5AllocEj.exit: ; preds = %47 71: ; preds = %69 %72 = getelementptr inbounds nuw i8, ptr %56, i64 8 %73 = load ptr, ptr %72, align 8 - %74 = trunc nuw i64 %67 to i32 + %74 = trunc nuw nsw i64 %67 to i32 store i32 %74, ptr %73, align 4 %75 = getelementptr inbounds nuw i8, ptr %73, i64 4 %76 = load ptr, ptr %6, align 8 @@ -2841,7 +2841,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKS %112 = getelementptr inbounds nuw i8, ptr %96, i64 8 %113 = load ptr, ptr %112, align 8 %114 = getelementptr inbounds nuw i8, ptr %113, i64 1028 - %115 = trunc nuw i64 %107 to i32 + %115 = trunc nuw nsw i64 %107 to i32 store i32 %115, ptr %114, align 4 %116 = getelementptr inbounds nuw i8, ptr %113, i64 1032 %117 = load ptr, ptr %7, align 8 @@ -2938,7 +2938,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit77: ; preds = %_ZN %155 = getelementptr inbounds nuw i8, ptr %139, i64 8 %156 = load ptr, ptr %155, align 8 %157 = getelementptr inbounds nuw i8, ptr %156, i64 2056 - %158 = trunc nuw i64 %150 to i32 + %158 = trunc nuw nsw i64 %150 to i32 store i32 %158, ptr %157, align 4 %159 = getelementptr inbounds nuw i8, ptr %156, i64 2060 %160 = load ptr, ptr %8, align 8 @@ -3035,7 +3035,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit92: ; preds = %_ZN %198 = getelementptr inbounds nuw i8, ptr %182, i64 8 %199 = load ptr, ptr %198, align 8 %200 = getelementptr inbounds nuw i8, ptr %199, i64 3084 - %201 = trunc nuw i64 %193 to i32 + %201 = trunc nuw nsw i64 %193 to i32 store i32 %201, ptr %200, align 4 %202 = getelementptr inbounds nuw i8, ptr %199, i64 3088 %203 = load ptr, ptr %9, align 8 @@ -3132,7 +3132,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit107: ; preds = %_Z %241 = getelementptr inbounds nuw i8, ptr %225, i64 8 %242 = load ptr, ptr %241, align 8 %243 = getelementptr inbounds nuw i8, ptr %242, i64 4112 - %244 = trunc nuw i64 %236 to i32 + %244 = trunc nuw nsw i64 %236 to i32 store i32 %244, ptr %243, align 4 %245 = getelementptr inbounds nuw i8, ptr %242, i64 4116 %246 = load ptr, ptr %10, align 8 @@ -3229,7 +3229,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit122: ; preds = %_Z %284 = getelementptr inbounds nuw i8, ptr %268, i64 8 %285 = load ptr, ptr %284, align 8 %286 = getelementptr inbounds nuw i8, ptr %285, i64 5140 - %287 = trunc nuw i64 %279 to i32 + %287 = trunc nuw nsw i64 %279 to i32 store i32 %287, ptr %286, align 4 %288 = getelementptr inbounds nuw i8, ptr %285, i64 5144 %289 = load ptr, ptr %11, align 8 @@ -3326,7 +3326,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit137: ; preds = %_Z %327 = getelementptr inbounds nuw i8, ptr %311, i64 8 %328 = load ptr, ptr %327, align 8 %329 = getelementptr inbounds nuw i8, ptr %328, i64 6168 - %330 = trunc nuw i64 %322 to i32 + %330 = trunc nuw nsw i64 %322 to i32 store i32 %330, ptr %329, align 4 %331 = getelementptr inbounds nuw i8, ptr %328, i64 6172 %332 = load ptr, ptr %12, align 8 @@ -3434,7 +3434,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit152: ; preds = %_Z %373 = getelementptr inbounds nuw i8, ptr %354, i64 8 %374 = load ptr, ptr %373, align 8 %375 = getelementptr inbounds nuw i8, ptr %374, i64 7196 - %376 = trunc nuw i64 %368 to i32 + %376 = trunc nuw nsw i64 %368 to i32 store i32 %376, ptr %375, align 4 %377 = getelementptr inbounds nuw i8, ptr %374, i64 7200 %378 = load ptr, ptr %13, align 8 @@ -3531,7 +3531,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit167: ; preds = %_Z %416 = getelementptr inbounds nuw i8, ptr %400, i64 8 %417 = load ptr, ptr %416, align 8 %418 = getelementptr inbounds nuw i8, ptr %417, i64 8224 - %419 = trunc nuw i64 %411 to i32 + %419 = trunc nuw nsw i64 %411 to i32 store i32 %419, ptr %418, align 4 %420 = getelementptr inbounds nuw i8, ptr %417, i64 8228 %421 = load ptr, ptr %14, align 8 @@ -3639,7 +3639,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit181: ; preds = %_Z %462 = getelementptr inbounds nuw i8, ptr %443, i64 8 %463 = load ptr, ptr %462, align 8 %464 = getelementptr inbounds nuw i8, ptr %463, i64 9252 - %465 = trunc nuw i64 %457 to i32 + %465 = trunc nuw nsw i64 %457 to i32 store i32 %465, ptr %464, align 4 %466 = getelementptr inbounds nuw i8, ptr %463, i64 9256 %467 = load ptr, ptr %15, align 8 @@ -3738,7 +3738,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit196: ; preds = %_Z %505 = getelementptr inbounds nuw i8, ptr %489, i64 8 %506 = load ptr, ptr %505, align 8 %507 = getelementptr inbounds nuw i8, ptr %506, i64 10280 - %508 = trunc nuw i64 %500 to i32 + %508 = trunc nuw nsw i64 %500 to i32 store i32 %508, ptr %507, align 4 %509 = getelementptr inbounds nuw i8, ptr %506, i64 10284 %510 = load ptr, ptr %16, align 8 @@ -3829,7 +3829,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit209: ; preds = %_Z %544 = getelementptr inbounds nuw i8, ptr %528, i64 8 %545 = load ptr, ptr %544, align 8 %546 = getelementptr inbounds nuw i8, ptr %545, i64 11308 - %547 = trunc nuw i64 %539 to i32 + %547 = trunc nuw nsw i64 %539 to i32 store i32 %547, ptr %546, align 4 %548 = getelementptr inbounds nuw i8, ptr %545, i64 11312 %549 = load ptr, ptr %17, align 8 @@ -3926,7 +3926,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit224: ; preds = %_Z %587 = getelementptr inbounds nuw i8, ptr %571, i64 8 %588 = load ptr, ptr %587, align 8 %589 = getelementptr inbounds nuw i8, ptr %588, i64 12336 - %590 = trunc nuw i64 %582 to i32 + %590 = trunc nuw nsw i64 %582 to i32 store i32 %590, ptr %589, align 4 %591 = getelementptr inbounds nuw i8, ptr %588, i64 12340 %592 = load ptr, ptr %18, align 8 @@ -4023,7 +4023,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit238: ; preds = %_Z %630 = getelementptr inbounds nuw i8, ptr %614, i64 8 %631 = load ptr, ptr %630, align 8 %632 = getelementptr inbounds nuw i8, ptr %631, i64 13364 - %633 = trunc nuw i64 %625 to i32 + %633 = trunc nuw nsw i64 %625 to i32 store i32 %633, ptr %632, align 4 %634 = getelementptr inbounds nuw i8, ptr %631, i64 13368 %635 = load ptr, ptr %19, align 8 @@ -4120,7 +4120,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit253: ; preds = %_Z %673 = getelementptr inbounds nuw i8, ptr %657, i64 8 %674 = load ptr, ptr %673, align 8 %675 = getelementptr inbounds nuw i8, ptr %674, i64 14392 - %676 = trunc nuw i64 %668 to i32 + %676 = trunc nuw nsw i64 %668 to i32 store i32 %676, ptr %675, align 4 %677 = getelementptr inbounds nuw i8, ptr %674, i64 14396 %678 = load ptr, ptr %20, align 8 @@ -4244,7 +4244,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit268: ; preds = %_Z %726 = getelementptr inbounds nuw i8, ptr %700, i64 8 %727 = load ptr, ptr %726, align 8 %728 = getelementptr inbounds nuw i8, ptr %727, i64 15420 - %729 = trunc nuw i64 %721 to i32 + %729 = trunc nuw nsw i64 %721 to i32 store i32 %729, ptr %728, align 4 %730 = getelementptr inbounds nuw i8, ptr %727, i64 15424 %731 = load ptr, ptr %21, align 8 @@ -4398,7 +4398,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit286: ; preds = %_Z %790 = getelementptr inbounds nuw i8, ptr %766, i64 8 %791 = load ptr, ptr %790, align 8 %792 = getelementptr inbounds nuw i8, ptr %791, i64 16448 - %793 = trunc nuw i64 %785 to i32 + %793 = trunc nuw nsw i64 %785 to i32 store i32 %793, ptr %792, align 4 %794 = getelementptr inbounds nuw i8, ptr %791, i64 16452 %795 = load ptr, ptr %24, align 8 @@ -9666,7 +9666,7 @@ _ZN6Assimp3FBX12FBXConverter13PotentialNodeC2Ev.exit: ; preds = %600 br i1 %606, label %_ZN8aiString3SetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, label %607 607: ; preds = %604 - %608 = trunc nuw i64 %605 to i32 + %608 = trunc nuw nsw i64 %605 to i32 store i32 %608, ptr %601, align 4 %609 = getelementptr inbounds nuw i8, ptr %601, i64 4 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %609, ptr align 1 %.pre, i64 %605, i1 false) @@ -9799,7 +9799,7 @@ _ZN6Assimp3FBX12FBXConverter13PotentialNodeC2Ev.exit579: ; preds = %647 br i1 %654, label %_ZN8aiString3SetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit580, label %655 655: ; preds = %_ZN6Assimp3FBX12FBXConverter13PotentialNodeC2Ev.exit579 - %656 = trunc nuw i64 %653 to i32 + %656 = trunc nuw nsw i64 %653 to i32 store i32 %656, ptr %648, align 4 %657 = getelementptr inbounds nuw i8, ptr %648, i64 4 %658 = load ptr, ptr %2, align 8 @@ -10179,7 +10179,7 @@ _ZN10aiMetadata5AllocEj.exit: ; preds = %36, %3 62: ; preds = %60 %63 = getelementptr inbounds nuw i8, ptr %.0.i, i64 8 %64 = load ptr, ptr %63, align 8 - %65 = trunc nuw i64 %58 to i32 + %65 = trunc nuw nsw i64 %58 to i32 store i32 %65, ptr %64, align 4 %66 = getelementptr inbounds nuw i8, ptr %64, i64 4 %67 = load ptr, ptr %5, align 8 @@ -10338,7 +10338,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit143: ; preds = %_Z %123 = getelementptr inbounds nuw i8, ptr %.0.i, i64 8 %124 = load ptr, ptr %123, align 8 %125 = getelementptr inbounds nuw i8, ptr %124, i64 1028 - %126 = trunc nuw i64 %118 to i32 + %126 = trunc nuw nsw i64 %118 to i32 store i32 %126, ptr %125, align 4 %127 = getelementptr inbounds nuw i8, ptr %124, i64 1032 %128 = load ptr, ptr %10, align 8 @@ -10563,7 +10563,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit171: ; preds = %_Z 210: ; preds = %207 %211 = load ptr, ptr %147, align 8 %212 = getelementptr inbounds nuw %struct.aiString, ptr %211, i64 %208 - %213 = trunc nuw i64 %205 to i32 + %213 = trunc nuw nsw i64 %205 to i32 store i32 %213, ptr %212, align 4 %214 = getelementptr inbounds nuw i8, ptr %212, i64 4 %215 = load ptr, ptr %195, align 8 @@ -10628,7 +10628,7 @@ _ZN8aiStringaSERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i174: 241: ; preds = %238 %242 = load ptr, ptr %147, align 8 %243 = getelementptr inbounds nuw %struct.aiString, ptr %242, i64 %239 - %244 = trunc nuw i64 %236 to i32 + %244 = trunc nuw nsw i64 %236 to i32 store i32 %244, ptr %243, align 4 %245 = getelementptr inbounds nuw i8, ptr %243, i64 4 %246 = load ptr, ptr %195, align 8 @@ -10704,7 +10704,7 @@ _ZN8aiStringaSERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i181: 277: ; preds = %274 %278 = load ptr, ptr %147, align 8 %279 = getelementptr inbounds nuw %struct.aiString, ptr %278, i64 %275 - %280 = trunc nuw i64 %272 to i32 + %280 = trunc nuw nsw i64 %272 to i32 store i32 %280, ptr %279, align 4 %281 = getelementptr inbounds nuw i8, ptr %279, i64 4 %282 = load ptr, ptr %195, align 8 @@ -10780,7 +10780,7 @@ _ZN8aiStringaSERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i188: 313: ; preds = %310 %314 = load ptr, ptr %147, align 8 %315 = getelementptr inbounds nuw %struct.aiString, ptr %314, i64 %311 - %316 = trunc nuw i64 %308 to i32 + %316 = trunc nuw nsw i64 %308 to i32 store i32 %316, ptr %315, align 4 %317 = getelementptr inbounds nuw i8, ptr %315, i64 4 %318 = load ptr, ptr %195, align 8 @@ -10856,7 +10856,7 @@ _ZN8aiStringaSERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i195: 349: ; preds = %346 %350 = load ptr, ptr %147, align 8 %351 = getelementptr inbounds nuw %struct.aiString, ptr %350, i64 %347 - %352 = trunc nuw i64 %344 to i32 + %352 = trunc nuw nsw i64 %344 to i32 store i32 %352, ptr %351, align 4 %353 = getelementptr inbounds nuw i8, ptr %351, i64 4 %354 = load ptr, ptr %195, align 8 @@ -10932,7 +10932,7 @@ _ZN8aiStringaSERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i202: 385: ; preds = %382 %386 = load ptr, ptr %147, align 8 %387 = getelementptr inbounds nuw %struct.aiString, ptr %386, i64 %383 - %388 = trunc nuw i64 %380 to i32 + %388 = trunc nuw nsw i64 %380 to i32 store i32 %388, ptr %387, align 4 %389 = getelementptr inbounds nuw i8, ptr %387, i64 4 %390 = load ptr, ptr %195, align 8 @@ -11022,7 +11022,7 @@ _ZN8aiStringaSERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i209: 428: ; preds = %425 %429 = load ptr, ptr %147, align 8 %430 = getelementptr inbounds nuw %struct.aiString, ptr %429, i64 %426 - %431 = trunc nuw i64 %423 to i32 + %431 = trunc nuw nsw i64 %423 to i32 store i32 %431, ptr %430, align 4 %432 = getelementptr inbounds nuw i8, ptr %430, i64 4 %433 = load ptr, ptr %195, align 8 @@ -11115,7 +11115,7 @@ _ZN10aiMetadata3SetI8aiStringEEbjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcE 469: ; preds = %466 %470 = load ptr, ptr %147, align 8 %471 = getelementptr inbounds nuw %struct.aiString, ptr %470, i64 %467 - %472 = trunc nuw i64 %464 to i32 + %472 = trunc nuw nsw i64 %464 to i32 store i32 %472, ptr %471, align 4 %473 = getelementptr inbounds nuw i8, ptr %471, i64 4 %474 = load ptr, ptr %195, align 8 @@ -11868,7 +11868,7 @@ _ZNSt6vectorIP7aiLightSaIS1_EE9push_backEOS1_.exit: ; preds = %23, %_ZNSt6vector br i1 %50, label %_ZN8aiString3SetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, label %51 51: ; preds = %_ZNSt6vectorIP7aiLightSaIS1_EE9push_backEOS1_.exit - %52 = trunc nuw i64 %49 to i32 + %52 = trunc nuw nsw i64 %49 to i32 store i32 %52, ptr %47, align 4 %53 = getelementptr inbounds nuw i8, ptr %47, i64 4 %54 = load ptr, ptr %2, align 8 @@ -12180,7 +12180,7 @@ _ZNSt6vectorIP8aiCameraSaIS1_EE9push_backEOS1_.exit: ; preds = %22, %_ZNSt6vecto br i1 %49, label %_ZN8aiString3SetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, label %50 50: ; preds = %_ZNSt6vectorIP8aiCameraSaIS1_EE9push_backEOS1_.exit - %51 = trunc nuw i64 %48 to i32 + %51 = trunc nuw nsw i64 %48 to i32 store i32 %51, ptr %46, align 4 %52 = getelementptr inbounds nuw i8, ptr %46, i64 4 %53 = load ptr, ptr %2, align 8 @@ -15394,7 +15394,7 @@ _ZSt4copyIN9__gnu_cxx17__normal_iteratorIPK10aiVector3tIfESt6vectorIS3_SaIS3_EEE ._crit_edge: ; preds = %.lr.ph, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPK10aiVector3tIfESt6vectorIS3_SaIS3_EEEEPS3_ET0_T_SC_SB_.exit %.059.lcssa = phi i32 [ 0, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPK10aiVector3tIfESt6vectorIS3_SaIS3_EEEEPS3_ET0_T_SC_SB_.exit ], [ %spec.select, %.lr.ph ] - %54 = trunc i64 %53 to i32 + %54 = trunc nuw i64 %53 to i32 %55 = sub i32 %54, %.059.lcssa %56 = getelementptr inbounds nuw i8, ptr %22, i64 8 store i32 %55, ptr %56, align 8 @@ -15436,8 +15436,7 @@ _ZSt4copyIN9__gnu_cxx17__normal_iteratorIPK10aiVector3tIfESt6vectorIS3_SaIS3_EEE .loopexit: ; preds = %72, %._crit_edge %77 = getelementptr inbounds nuw i8, ptr %22, i64 208 store ptr %61, ptr %77, align 8 - %.not86 = icmp eq i32 %54, 0 - br i1 %.not86, label %._crit_edge85.thread, label %.lr.ph84 + br i1 %.not, label %._crit_edge85.thread, label %.lr.ph84.preheader ._crit_edge85.thread: ; preds = %.loopexit %78 = getelementptr inbounds nuw i8, ptr %1, i64 8 @@ -15453,6 +15452,11 @@ _ZSt4copyIN9__gnu_cxx17__normal_iteratorIPK10aiVector3tIfESt6vectorIS3_SaIS3_EEE %88 = getelementptr inbounds nuw i8, ptr %0, i64 8 br label %102 +.lr.ph84.preheader: ; preds = %.loopexit + %umax = tail call i32 @llvm.umax.i32(i32 %54, i32 1) + %wide.trip.count = zext i32 %umax to i64 + br label %.lr.ph84 + ._crit_edge85: ; preds = %147 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %0, i64 8 %.pre = load ptr, ptr %.phi.trans.insert, align 8 @@ -15536,9 +15540,9 @@ _ZNSt6vectorIjSaIjEE17_M_realloc_insertIJjEEEvN9__gnu_cxx17__normal_iteratorIPjS store ptr %125, ptr %106, align 8 br label %_ZN6Assimp12LogFunctionsINS_11FBXImporterEE7LogWarnIJRA22_KcRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEvDpOT_.exit -.lr.ph84: ; preds = %.loopexit, %147 - %indvars.iv = phi i64 [ %indvars.iv.next.pre-phi, %147 ], [ 0, %.loopexit ] - %.05281 = phi ptr [ %.153, %147 ], [ %61, %.loopexit ] +.lr.ph84: ; preds = %.lr.ph84.preheader, %147 + %indvars.iv = phi i64 [ 0, %.lr.ph84.preheader ], [ %indvars.iv.next.pre-phi, %147 ] + %.05281 = phi ptr [ %61, %.lr.ph84.preheader ], [ %.153, %147 ] %126 = load ptr, ptr %7, align 8 %127 = getelementptr inbounds nuw i32, ptr %126, i64 %indvars.iv %128 = load i32, ptr %127, align 4 @@ -15578,7 +15582,7 @@ _ZNSt6vectorIjSaIjEE17_M_realloc_insertIJjEEEvN9__gnu_cxx17__normal_iteratorIPjS 147: ; preds = %.lr.ph84._crit_edge, %132 %indvars.iv.next.pre-phi = phi i64 [ %.pre91, %.lr.ph84._crit_edge ], [ %138, %132 ] %.153 = phi ptr [ %.05281, %.lr.ph84._crit_edge ], [ %133, %132 ] - %exitcond.not = icmp eq i64 %indvars.iv.next.pre-phi, %53 + %exitcond.not = icmp eq i64 %indvars.iv.next.pre-phi, %wide.trip.count br i1 %exitcond.not, label %._crit_edge85, label %.lr.ph84, !llvm.loop !69 148: ; preds = %130 @@ -17468,7 +17472,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit: ; preds = %6 br i1 %679, label %_ZN8aiString3SetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, label %680 680: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit - %681 = trunc nuw i64 %678 to i32 + %681 = trunc nuw nsw i64 %678 to i32 store i32 %681, ptr %544, align 4 %682 = getelementptr inbounds nuw i8, ptr %544, i64 4 %683 = load ptr, ptr %16, align 8 @@ -18366,7 +18370,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit14: ; preds = %_ZN 190: ; preds = %188 %191 = getelementptr inbounds nuw i8, ptr %12, i64 236 - %192 = trunc nuw i64 %187 to i32 + %192 = trunc nuw nsw i64 %187 to i32 store i32 %192, ptr %191, align 4 %193 = getelementptr inbounds nuw i8, ptr %12, i64 240 %194 = load ptr, ptr %9, align 8 @@ -20869,7 +20873,7 @@ _ZN6Assimp3FBX12FBXConverter15FixAnimMeshNameERKNSt7__cxx1112basic_stringIcSt11c 415: ; preds = %_ZN6Assimp3FBX12FBXConverter15FixAnimMeshNameERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.thread, %_ZN6Assimp3FBX12FBXConverter15FixAnimMeshNameERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit %416 = phi i64 [ 8, %_ZN6Assimp3FBX12FBXConverter15FixAnimMeshNameERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.thread ], [ %.pr, %_ZN6Assimp3FBX12FBXConverter15FixAnimMeshNameERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit ] - %417 = trunc nuw i64 %416 to i32 + %417 = trunc nuw nsw i64 %416 to i32 store i32 %417, ptr %370, align 4 %418 = getelementptr inbounds nuw i8, ptr %370, i64 4 %419 = load ptr, ptr %12, align 8 @@ -25872,7 +25876,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit206: ; preds = %_Z 180: ; preds = %176 %181 = getelementptr inbounds nuw i8, ptr %175, i64 112 - %182 = trunc nuw i64 %178 to i32 + %182 = trunc nuw nsw i64 %178 to i32 store i32 %182, ptr %19, align 4 %183 = load ptr, ptr %181, align 8 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %48, ptr align 1 %183, i64 %178, i1 false) @@ -31690,7 +31694,7 @@ define hidden void @_ZN6Assimp3FBX12FBXConverter14GetTexturePathEPKNS0_7TextureE 8: ; preds = %3 %9 = getelementptr inbounds nuw i8, ptr %2, i64 112 - %10 = trunc nuw i64 %6 to i32 + %10 = trunc nuw nsw i64 %6 to i32 store i32 %10, ptr %0, align 4 %11 = getelementptr inbounds nuw i8, ptr %0, i64 4 %12 = load ptr, ptr %9, align 8 @@ -35149,7 +35153,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit199: ; preds = %_Z br i1 %240, label %_ZN8aiString3SetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, label %241 241: ; preds = %238 - %242 = trunc nuw i64 %239 to i32 + %242 = trunc nuw nsw i64 %239 to i32 store i32 %242, ptr %34, align 4 %243 = getelementptr inbounds nuw i8, ptr %34, i64 4 %244 = load ptr, ptr %14, align 8 @@ -36042,7 +36046,7 @@ _ZSt11swap_rangesIN9__gnu_cxx17__normal_iteratorIPP10aiNodeAnimSt6vectorIS3_SaIS br i1 %553, label %_ZN8aiString3SetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit234, label %554 554: ; preds = %549 - %555 = trunc nuw i64 %552 to i32 + %555 = trunc nuw nsw i64 %552 to i32 store i32 %555, ptr %548, align 4 %556 = getelementptr inbounds nuw i8, ptr %548, i64 4 %557 = load ptr, ptr %543, align 8 @@ -40400,7 +40404,7 @@ define hidden noundef ptr @_ZN6Assimp3FBX12FBXConverter22GenerateSimpleNodeAnimE br i1 %35, label %_ZN8aiString3SetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, label %36 36: ; preds = %9 - %37 = trunc nuw i64 %34 to i32 + %37 = trunc nuw nsw i64 %34 to i32 store i32 %37, ptr %29, align 4 %38 = getelementptr inbounds nuw i8, ptr %29, i64 4 %39 = load ptr, ptr %1, align 8 @@ -42502,7 +42506,7 @@ define hidden noundef nonnull ptr @_ZN6Assimp3FBX12FBXConverter24GenerateRotatio br i1 %17, label %_ZN8aiString3SetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, label %18 18: ; preds = %9 - %19 = trunc nuw i64 %16 to i32 + %19 = trunc nuw nsw i64 %16 to i32 store i32 %19, ptr %11, align 4 %20 = getelementptr inbounds nuw i8, ptr %11, i64 4 %21 = load ptr, ptr %1, align 8 @@ -42576,7 +42580,7 @@ define hidden noundef nonnull ptr @_ZN6Assimp3FBX12FBXConverter27GenerateTransla br i1 %18, label %_ZN8aiString3SetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, label %19 19: ; preds = %10 - %20 = trunc nuw i64 %17 to i32 + %20 = trunc nuw nsw i64 %17 to i32 store i32 %20, ptr %12, align 4 %21 = getelementptr inbounds nuw i8, ptr %12, i64 4 %22 = load ptr, ptr %1, align 8 @@ -42687,7 +42691,7 @@ define hidden noundef nonnull ptr @_ZN6Assimp3FBX12FBXConverter23GenerateScaling br i1 %17, label %_ZN8aiString3SetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, label %18 18: ; preds = %9 - %19 = trunc nuw i64 %16 to i32 + %19 = trunc nuw nsw i64 %16 to i32 store i32 %19, ptr %11, align 4 %20 = getelementptr inbounds nuw i8, ptr %11, i64 4 %21 = load ptr, ptr %1, align 8 @@ -61121,6 +61125,9 @@ declare i32 @llvm.umin.i32(i32, i32) #25 ; Function Attrs: nofree nounwind willreturn memory(argmem: read) declare i32 @bcmp(ptr captures(none), ptr captures(none), i64) local_unnamed_addr #27 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.umax.i32(i32, i32) #25 + attributes #0 = { mustprogress uwtable "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 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } attributes #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } diff --git a/bench/bdwgc/optimized/gc.ll b/bench/bdwgc/optimized/gc.ll index 7237fc96546..ae1be5402d6 100644 --- a/bench/bdwgc/optimized/gc.ll +++ b/bench/bdwgc/optimized/gc.ll @@ -2433,7 +2433,7 @@ GC_find_starting_hblk.exit: ; preds = %GC_find_header.exit .thread: ; preds = %75 %77 = trunc i64 %5 to i16 %.lhs.trunc = and i16 %77, 4095 - %.rhs.trunc = trunc nuw i64 %69 to i16 + %.rhs.trunc = trunc nuw nsw i64 %69 to i16 %78 = urem i16 %.lhs.trunc, %.rhs.trunc %.zext = zext nneg i16 %78 to i64 %79 = sub nsw i64 0, %.zext @@ -13854,7 +13854,7 @@ GC_find_header.exit140: ; preds = %239 br i1 %252, label %257, label %253 253: ; preds = %GC_find_header.exit140 - %.rhs.trunc.i = trunc nuw i64 %251 to i16 + %.rhs.trunc.i = trunc nuw nsw i64 %251 to i16 %254 = urem i16 4096, %.rhs.trunc.i %narrow.i = sub nuw nsw i16 4096, %254 %255 = lshr i16 %narrow.i, 4 @@ -14701,7 +14701,7 @@ GC_disclaim_and_reclaim.exit: ; preds = %58, %41, %88, %77, br i1 %110, label %115, label %111 111: ; preds = %107 - %.rhs.trunc.i = trunc nuw i64 %109 to i16 + %.rhs.trunc.i = trunc nuw nsw i64 %109 to i16 %112 = urem i16 4096, %.rhs.trunc.i %narrow.i = sub nuw nsw i16 4096, %112 %113 = lshr i16 %narrow.i, 4 @@ -17129,7 +17129,7 @@ define hidden i32 @GC_n_set_marks(ptr noundef readonly captures(none) %0) local_ br i1 %5, label %.lr.ph, label %6 6: ; preds = %1 - %.rhs.trunc = trunc nuw i64 %3 to i16 + %.rhs.trunc = trunc nuw nsw i64 %3 to i16 %7 = urem i16 4096, %.rhs.trunc %narrow = sub nuw nsw i16 4096, %7 %8 = lshr i16 %narrow, 4 @@ -17188,7 +17188,7 @@ GC_find_header.exit: ; preds = %7 br i1 %21, label %.lr.ph.i, label %22 22: ; preds = %GC_find_header.exit - %.rhs.trunc.i = trunc nuw i64 %19 to i16 + %.rhs.trunc.i = trunc nuw nsw i64 %19 to i16 %23 = urem i16 4096, %.rhs.trunc.i %narrow.i = sub nuw nsw i16 4096, %23 %24 = lshr i16 %narrow.i, 4 @@ -17284,7 +17284,7 @@ GC_find_header.exit.i: ; preds = %21 br i1 %35, label %.lr.ph.i.i, label %36 36: ; preds = %GC_find_header.exit.i - %.rhs.trunc.i.i = trunc nuw i64 %33 to i16 + %.rhs.trunc.i.i = trunc nuw nsw i64 %33 to i16 %37 = urem i16 4096, %.rhs.trunc.i.i %narrow.i.i = sub nuw nsw i16 4096, %37 %38 = lshr i16 %narrow.i.i, 4 @@ -19830,7 +19830,7 @@ define internal fastcc void @set_incremental_mode_on() unnamed_addr #2 { 56: ; preds = %54 %57 = getelementptr inbounds nuw i8, ptr %52, i64 1 %58 = call i64 @strtoul(ptr noundef nonnull %57, ptr noundef nonnull %2, i32 noundef 10) #47 - %59 = trunc i64 %58 to i32 + %59 = trunc nuw nsw i64 %58 to i32 %or.cond18.i.i.i.i = icmp ult i64 %58, 2147483648 br i1 %or.cond18.i.i.i.i, label %GC_parse_version.exit.i.i.i, label %ensure_min_linux_ver.exit.thread22.i.i @@ -20738,7 +20738,7 @@ GC_stop_init.exit: ; preds = %149 175: ; preds = %173 %176 = getelementptr inbounds nuw i8, ptr %171, i64 1 %177 = call i64 @strtoul(ptr noundef nonnull %176, ptr noundef nonnull %1, i32 noundef 10) #47 - %178 = trunc i64 %177 to i32 + %178 = trunc nuw nsw i64 %177 to i32 %or.cond18.i.i = icmp ult i64 %177, 2147483648 br i1 %or.cond18.i.i, label %GC_parse_version.exit.i, label %.thread.i @@ -20755,7 +20755,7 @@ GC_parse_version.exit.i: ; preds = %175, %173 180: ; preds = %GC_parse_version.exit.i %181 = icmp eq i32 %168, 2 %182 = icmp sgt i32 %.1.i, 18 - %or.cond.i24 = and i1 %181, %182 + %or.cond.i24 = select i1 %181, i1 %182, i1 false br i1 %or.cond.i24, label %183, label %setup_mark_lock.exit 183: ; preds = %180, %GC_parse_version.exit.i @@ -40952,7 +40952,7 @@ GC_find_header.exit.i32: ; preds = %90 br i1 %103, label %108, label %104 104: ; preds = %GC_find_header.exit.i32 - %.rhs.trunc.i.i = trunc nuw i64 %102 to i16 + %.rhs.trunc.i.i = trunc nuw nsw i64 %102 to i16 %105 = urem i16 4096, %.rhs.trunc.i.i %narrow.i.i = sub nuw nsw i16 4096, %105 %106 = lshr i16 %narrow.i.i, 4 @@ -42366,7 +42366,7 @@ define internal fastcc signext range(i8 0, 2) i8 @setup_header(ptr noundef initi br i1 %.not20.i, label %48, label %45, !prof !13 45: ; preds = %43 - %46 = trunc nuw i64 %spec.store.select.i to i32 + %46 = trunc nuw nsw i64 %spec.store.select.i to i32 %47 = shl nuw nsw i32 %46, 4 tail call void (ptr, ...) @GC_log_printf(ptr noundef nonnull @.str.216, i32 noundef %46, i32 noundef %47) br label %48 diff --git a/bench/boost/optimized/ext.ll b/bench/boost/optimized/ext.ll index bfa66711b18..d7f497a8419 100644 --- a/bench/boost/optimized/ext.ll +++ b/bench/boost/optimized/ext.ll @@ -32563,13 +32563,16 @@ _ZSt8_DestroyIPN5boost7process2v211environment14key_value_pairES4_EvT_S6_RSaIT0_ br label %_ZNSt6vectorIN5boost7process2v211environment14key_value_pairESaIS4_EE15_M_erase_at_endEPS4_.exit 61: ; preds = %40 - %62 = trunc i64 %45 to i32 - %.not1.i.i = icmp eq i32 %62, 0 + %.not1.i.i = icmp eq ptr %42, %13 br i1 %.not1.i.i, label %_ZSt4copyIN5boost7process2v211environment12current_view8iteratorEPNS3_14key_value_pairEET0_T_S9_S8_.exit27, label %.lr.ph.i.i19 -.lr.ph.i.i19: ; preds = %61, %.lr.ph.i.i19 - %63 = phi ptr [ %65, %.lr.ph.i.i19 ], [ %1, %61 ] - %.02.i.i = phi i32 [ %64, %.lr.ph.i.i19 ], [ %62, %61 ] +.lr.ph.i.i19: ; preds = %61 + %62 = trunc nuw i64 %45 to i32 + br label %.lr.ph.i.i19 + +.lr.ph.i.i19: ; preds = %.lr.ph.i.i19.preheader, %.lr.ph.i.i19 + %63 = phi ptr [ %65, %.lr.ph.i.i19 ], [ %1, %.lr.ph.i.i19.preheader ] + %.02.i.i = phi i32 [ %64, %.lr.ph.i.i19 ], [ %62, %.lr.ph.i.i19.preheader ] %64 = add nsw i32 %.02.i.i, -1 %65 = tail call noundef ptr @_ZN5boost7process2v211environment6detail4nextEPKPKc(ptr noundef %63) %.not.i.i20 = icmp eq i32 %64, 0 diff --git a/bench/brotli/optimized/backward_references_hq.ll b/bench/brotli/optimized/backward_references_hq.ll index ce33cabf76c..ccb363b9aa3 100644 --- a/bench/brotli/optimized/backward_references_hq.ll +++ b/bench/brotli/optimized/backward_references_hq.ll @@ -192,7 +192,7 @@ PrefixEncodeCopyDistance.exit: ; preds = %72, %74 113: ; preds = %111 %114 = add nsw i64 %.055, -2 - %115 = trunc i64 %114 to i32 + %115 = trunc nuw nsw i64 %114 to i32 %116 = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %115, i1 true) %117 = sub nuw nsw i32 30, %116 %118 = shl nuw nsw i32 %117, 1 @@ -200,7 +200,7 @@ PrefixEncodeCopyDistance.exit: ; preds = %72, %74 %120 = zext nneg i32 %117 to i64 %121 = lshr i64 %114, %120 %122 = add nuw nsw i64 %121, %119 - %123 = trunc i64 %122 to i16 + %123 = trunc nuw nsw i64 %122 to i16 %124 = add nuw nsw i16 %123, 2 br label %GetInsertLengthCode.exit @@ -230,7 +230,7 @@ GetInsertLengthCode.exit: ; preds = %109, %113, %127, %1 br i1 %136, label %137, label %140 137: ; preds = %GetInsertLengthCode.exit - %138 = trunc nuw i32 %49 to i16 + %138 = trunc nuw nsw i32 %49 to i16 %139 = add nsw i16 %138, -2 br label %GetCopyLengthCode.exit @@ -2117,7 +2117,7 @@ ComputeMinimumCopyLength.exit: ; preds = %.lr.ph.i, %53, %13 85: ; preds = %83 %86 = add nsw i64 %79, -2 - %87 = trunc i64 %86 to i32 + %87 = trunc nuw nsw i64 %86 to i32 %88 = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %87, i1 true) %89 = sub nuw nsw i32 30, %88 %90 = shl nuw nsw i32 %89, 1 @@ -2125,7 +2125,7 @@ ComputeMinimumCopyLength.exit: ; preds = %.lr.ph.i, %53, %13 %92 = zext nneg i32 %89 to i64 %93 = lshr i64 %86, %92 %94 = add nuw nsw i64 %93, %91 - %95 = trunc i64 %94 to i16 + %95 = trunc nuw nsw i64 %94 to i16 %96 = add nuw nsw i16 %95, 2 br label %GetInsertLengthCode.exit @@ -2134,7 +2134,7 @@ ComputeMinimumCopyLength.exit: ; preds = %.lr.ph.i, %53, %13 br i1 %98, label %99, label %105 99: ; preds = %97 - %100 = trunc nuw i64 %79 to i32 + %100 = trunc nuw nsw i64 %79 to i32 %101 = add nsw i32 %100, -66 %102 = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %101, i1 true) %103 = trunc nuw nsw i32 %102 to i16 @@ -2414,7 +2414,7 @@ FindMatchLengthWithLimit.exit: ; preds = %.critedge.i256, %20 br i1 %238, label %239, label %242 239: ; preds = %237 - %240 = trunc nuw i64 %.0219343 to i16 + %240 = trunc nuw nsw i64 %.0219343 to i16 %241 = add nsw i16 %240, -2 br label %GetCopyLengthCode.exit @@ -2424,7 +2424,7 @@ FindMatchLengthWithLimit.exit: ; preds = %.critedge.i256, %20 244: ; preds = %242 %245 = add nsw i64 %.2208341, -5 - %246 = trunc i64 %245 to i32 + %246 = trunc nuw nsw i64 %245 to i32 %247 = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %246, i1 true) %248 = sub nsw i32 30, %247 %249 = shl nuw nsw i32 %248, 1 @@ -2432,7 +2432,7 @@ FindMatchLengthWithLimit.exit: ; preds = %.critedge.i256, %20 %251 = zext nneg i32 %248 to i64 %252 = lshr i64 %245, %251 %253 = add nuw nsw i64 %252, %250 - %254 = trunc i64 %253 to i16 + %254 = trunc nuw nsw i64 %253 to i16 %255 = add nuw nsw i16 %254, 4 br label %GetCopyLengthCode.exit @@ -2622,7 +2622,7 @@ BackwardMatchLengthCode.exit: ; preds = %BackwardMatchLength br i1 %365, label %366, label %369 366: ; preds = %BackwardMatchLengthCode.exit - %367 = trunc nuw i64 %364 to i16 + %367 = trunc nuw nsw i64 %364 to i16 %368 = add nsw i16 %367, -2 br label %GetCopyLengthCode.exit241 @@ -2632,7 +2632,7 @@ BackwardMatchLengthCode.exit: ; preds = %BackwardMatchLength 371: ; preds = %369 %372 = add nsw i64 %364, -6 - %373 = trunc i64 %372 to i32 + %373 = trunc nuw nsw i64 %372 to i32 %374 = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %373, i1 true) %375 = sub nuw nsw i32 30, %374 %376 = shl nuw nsw i32 %375, 1 @@ -2640,7 +2640,7 @@ BackwardMatchLengthCode.exit: ; preds = %BackwardMatchLength %378 = zext nneg i32 %375 to i64 %379 = lshr i64 %372, %378 %380 = add nuw nsw i64 %379, %377 - %381 = trunc i64 %380 to i16 + %381 = trunc nuw nsw i64 %380 to i16 %382 = add nuw nsw i16 %381, 4 br label %GetCopyLengthCode.exit241 @@ -2649,7 +2649,7 @@ BackwardMatchLengthCode.exit: ; preds = %BackwardMatchLength br i1 %384, label %385, label %GetCopyLengthCode.exit241 385: ; preds = %383 - %386 = trunc nuw i64 %364 to i32 + %386 = trunc nuw nsw i64 %364 to i32 %387 = add nsw i32 %386, -70 %388 = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %387, i1 true) %389 = trunc nuw nsw i32 %388 to i16 diff --git a/bench/brotli/optimized/bit_cost.ll b/bench/brotli/optimized/bit_cost.ll index bb7c1dd2674..24d3ec6f630 100644 --- a/bench/brotli/optimized/bit_cost.ll +++ b/bench/brotli/optimized/bit_cost.ll @@ -559,7 +559,7 @@ FastLog2.exit112: ; preds = %83, %86 br i1 %93, label %.lr.ph127.preheader, label %.critedge.thread .lr.ph127.preheader: ; preds = %.preheader - %94 = trunc nuw i64 %.3100135 to i32 + %94 = trunc nuw nsw i64 %.3100135 to i32 %95 = sub nuw nsw i32 704, %94 br label %.lr.ph127 @@ -935,7 +935,7 @@ FastLog2.exit112: ; preds = %83, %86 br i1 %93, label %.lr.ph127.preheader, label %.critedge.thread .lr.ph127.preheader: ; preds = %.preheader - %94 = trunc nuw i64 %.3100135 to i32 + %94 = trunc nuw nsw i64 %.3100135 to i32 %95 = sub nuw nsw i32 544, %94 br label %.lr.ph127 diff --git a/bench/brotli/optimized/encode.ll b/bench/brotli/optimized/encode.ll index bf3b951d577..768252f94f3 100644 --- a/bench/brotli/optimized/encode.ll +++ b/bench/brotli/optimized/encode.ll @@ -509,7 +509,7 @@ BrotliEncoderIsFinished.exit.thread: ; preds = %BrotliEncoderSetPar 96: ; preds = %74 %97 = lshr i32 %86, 24 - %98 = trunc nuw i32 %97 to i8 + %98 = trunc nuw nsw i32 %97 to i8 %99 = add i64 %.04548.i, 4 %100 = getelementptr inbounds nuw i8, ptr %6, i64 %94 store i8 %98, ptr %100, align 1, !tbaa !70 @@ -4731,7 +4731,7 @@ ChooseContextMode.exit: ; preds = %1513, %1518 1601: ; preds = %1599 %1602 = add nsw i64 %1584, -2 - %1603 = trunc nuw i64 %1602 to i32 + %1603 = trunc nuw nsw i64 %1602 to i32 %1604 = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %1603, i1 true) %1605 = sub nuw nsw i32 30, %1604 %1606 = shl nuw nsw i32 %1605, 1 @@ -4739,7 +4739,7 @@ ChooseContextMode.exit: ; preds = %1513, %1518 %1608 = zext nneg i32 %1605 to i64 %1609 = lshr i64 %1602, %1608 %1610 = add nuw nsw i64 %1609, %1607 - %1611 = trunc i64 %1610 to i16 + %1611 = trunc nuw nsw i64 %1610 to i16 %1612 = add nuw nsw i16 %1611, 2 br label %GetInsertLengthCode.exit @@ -4776,7 +4776,7 @@ GetInsertLengthCode.exit: ; preds = %1597, %1601, %1615, %1631 = lshr i32 5377344, %1628 %1632 = and i32 %1631, 192 %1633 = add nuw nsw i32 %1630, %1632 - %1634 = trunc i32 %1633 to i16 + %1634 = trunc nuw nsw i32 %1633 to i16 %1635 = or disjoint i16 %1625, %1634 %1636 = or disjoint i16 %1635, 2 store i16 %1636, ptr %1595, align 2, !tbaa !80 @@ -6343,7 +6343,7 @@ CommandRestoreDistanceCode.exit: ; preds = %3, %38 br i1 %150, label %151, label %153 151: ; preds = %.critedge - %152 = trunc nuw i32 %140 to i16 + %152 = trunc nuw nsw i32 %140 to i16 br label %GetInsertLengthCode.exit 153: ; preds = %.critedge @@ -6352,7 +6352,7 @@ CommandRestoreDistanceCode.exit: ; preds = %3, %38 155: ; preds = %153 %156 = add nsw i64 %141, -2 - %157 = trunc nuw i64 %156 to i32 + %157 = trunc nuw nsw i64 %156 to i32 %158 = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %157, i1 true) %159 = sub nsw i32 30, %158 %160 = shl nuw nsw i32 %159, 1 @@ -6360,7 +6360,7 @@ CommandRestoreDistanceCode.exit: ; preds = %3, %38 %162 = zext nneg i32 %159 to i64 %163 = lshr i64 %156, %162 %164 = add nuw nsw i64 %163, %161 - %165 = trunc i64 %164 to i16 + %165 = trunc nuw nsw i64 %164 to i16 %166 = add nuw nsw i16 %165, 2 br label %GetInsertLengthCode.exit @@ -6390,7 +6390,7 @@ GetInsertLengthCode.exit: ; preds = %151, %155, %169, %1 br i1 %178, label %179, label %182 179: ; preds = %GetInsertLengthCode.exit - %180 = trunc nuw i32 %145 to i16 + %180 = trunc nuw nsw i32 %145 to i16 %181 = add nsw i16 %180, -2 br label %GetCopyLengthCode.exit @@ -6408,7 +6408,7 @@ GetInsertLengthCode.exit: ; preds = %151, %155, %169, %1 %191 = zext nneg i32 %188 to i64 %192 = lshr i64 %185, %191 %193 = add nuw nsw i64 %192, %190 - %194 = trunc i64 %193 to i16 + %194 = trunc nuw nsw i64 %193 to i16 %195 = add nuw nsw i16 %194, 4 br label %GetCopyLengthCode.exit diff --git a/bench/c3c/optimized/lexer.ll b/bench/c3c/optimized/lexer.ll index bcc740286b5..b9c33603767 100644 --- a/bench/c3c/optimized/lexer.ll +++ b/bench/c3c/optimized/lexer.ll @@ -2981,7 +2981,7 @@ backtrack.exit68: ; preds = %.loopexit, %47 br i1 %221, label %222, label %226 222: ; preds = %220 - %223 = trunc nuw i32 %.083.in.i to i8 + %223 = trunc nuw nsw i32 %.083.in.i to i8 %224 = add i64 %.0107, 1 %225 = getelementptr inbounds i8, ptr %16, i64 %.0107 store i8 %223, ptr %225, align 1, !alias.scope !23, !noalias !26 @@ -2993,7 +2993,7 @@ backtrack.exit68: ; preds = %.loopexit, %47 228: ; preds = %226 %229 = lshr i32 %.083.in.i, 6 - %230 = trunc nuw i32 %229 to i8 + %230 = trunc nuw nsw i32 %229 to i8 %231 = or disjoint i8 %230, -64 %232 = getelementptr inbounds i8, ptr %16, i64 %.0107 store i8 %231, ptr %232, align 1, !alias.scope !23, !noalias !26 @@ -3014,7 +3014,7 @@ backtrack.exit68: ; preds = %.loopexit, %47 243: ; preds = %238 %244 = lshr i32 %.083.in.i, 12 - %245 = trunc nuw i32 %244 to i8 + %245 = trunc nuw nsw i32 %244 to i8 %246 = or disjoint i8 %245, -32 store i8 %246, ptr %240, align 1, !alias.scope !23, !noalias !26 %247 = lshr i32 %.083.in.i, 6 diff --git a/bench/clamav/optimized/bytecode_api.ll b/bench/clamav/optimized/bytecode_api.ll index 792efeb0591..6be95033326 100644 --- a/bench/clamav/optimized/bytecode_api.ll +++ b/bench/clamav/optimized/bytecode_api.ll @@ -979,7 +979,7 @@ fmap_readn.exit.us: ; preds = %47, %37 %50 = icmp ult i64 %.0.i.us, %9 %51 = icmp eq i64 %.0.i.us, -1 %or.cond8.us = or i1 %50, %51 - %52 = trunc i64 %.0.i.us to i32 + %52 = trunc nuw nsw i64 %.0.i.us to i32 %53 = add i32 %.045.us, %52 br i1 %or.cond8.us, label %.thread, label %.split.us @@ -1036,7 +1036,7 @@ fmap_readn.exit.us78: ; preds = %72, %62 br i1 %or.cond8.us80, label %.thread, label %cli_memmem.exit.us cli_memmem.exit.us: ; preds = %fmap_readn.exit.us78 - %77 = trunc i64 %.0.i.us79 to i32 + %77 = trunc nuw nsw i64 %.0.i.us79 to i32 %78 = load i8, ptr %1, align 1, !tbaa !42 %79 = zext i8 %78 to i32 %80 = call ptr @memchr(ptr noundef nonnull %5, i32 noundef %79, i64 noundef %.0.i.us79) #29 @@ -1093,15 +1093,14 @@ fmap_readn.exit: ; preds = %89, %99 br i1 %or.cond8, label %.thread, label %.preheader.i .preheader.i: ; preds = %fmap_readn.exit - %104 = trunc i64 %.0.i to i32 + %104 = trunc nuw nsw i64 %.0.i to i32 %105 = load i8, ptr %1, align 1, !tbaa !42 %106 = zext i8 %105 to i32 - %.not3135.i = icmp ugt i32 %2, %104 - br i1 %.not3135.i, label %cli_memmem.exit.thread, label %.lr.ph.i + br label %107 -.lr.ph.i: ; preds = %.preheader.i, %112 - %.02537.i = phi ptr [ %111, %112 ], [ %5, %.preheader.i ] - %.02636.i = phi i32 [ %116, %112 ], [ %104, %.preheader.i ] +.lr.ph.i: ; preds = %113, %.preheader.i + %.02537.i = phi ptr [ %5, %.preheader.i ], [ %112, %113 ] + %.02636.i = phi i32 [ %104, %.preheader.i ], [ %117, %113 ] %reass.sub = sub i32 %.02636.i, %2 %107 = add i32 %reass.sub, 1 %108 = zext i32 %107 to i64 @@ -1134,7 +1133,7 @@ cli_memmem.exit.thread61: ; preds = %110, %cli_memmem.ex %121 = add i32 %.04572, %120 br label %.thread -cli_memmem.exit.thread: ; preds = %112, %.lr.ph.i, %.preheader.i +cli_memmem.exit.thread: ; preds = %.lr.ph.i, %113 %122 = add i32 %.045, %104 br label %.split.split diff --git a/bench/clamav/optimized/pe.ll b/bench/clamav/optimized/pe.ll index 365cc65eced..ae53cd2a4c6 100644 --- a/bench/clamav/optimized/pe.ll +++ b/bench/clamav/optimized/pe.ll @@ -5973,7 +5973,7 @@ cli_rawaddr.exit2939: ; preds = %1627 br label %.thread3000 2378: ; preds = %2372 - %2379 = trunc i64 %45 to i32 + %2379 = trunc nsw i64 %45 to i32 %2380 = load ptr, ptr %13, align 8, !tbaa !23 %2381 = load i16, ptr %82, align 8, !tbaa !24 %2382 = zext i16 %2381 to i32 @@ -6308,7 +6308,7 @@ cli_rawaddr.exit2939: ; preds = %1627 br label %.thread3000 2546: ; preds = %2540 - %2547 = trunc i64 %45 to i32 + %2547 = trunc nsw i64 %45 to i32 %2548 = load ptr, ptr %13, align 8, !tbaa !23 %2549 = load i16, ptr %82, align 8, !tbaa !24 %2550 = zext i16 %2549 to i32 @@ -6574,7 +6574,7 @@ cli_rawaddr.exit2939: ; preds = %1627 ._crit_edge3305.loopexit: ; preds = %2663, %2653, %2655, %._crit_edge3421 %.pre3423 = phi i16 [ %2672, %._crit_edge3421 ], [ %2648, %2655 ], [ %2648, %2653 ], [ %.pre3423.pre, %2663 ] %.92100.lcssa.ph.in = phi i64 [ %indvars.iv.next3389, %._crit_edge3421 ], [ %indvars.iv3388, %2655 ], [ %indvars.iv3388, %2653 ], [ %indvars.iv3388, %2663 ] - %.92100.lcssa.ph = trunc i64 %.92100.lcssa.ph.in to i32 + %.92100.lcssa.ph = trunc nuw i64 %.92100.lcssa.ph.in to i32 %2678 = add i32 %.92100.lcssa.ph, 1 br label %._crit_edge3305 @@ -6918,9 +6918,8 @@ cli_rawaddr.exit2939: ; preds = %1627 ._crit_edge3321: ; preds = %._crit_edge3425, %2818, %2816, %2826 %.pre3427 = phi i16 [ %2835, %._crit_edge3425 ], [ %2811, %2818 ], [ %2811, %2816 ], [ %.pre3427.pre, %2826 ] %.112102.lcssa.ph.in = phi i64 [ %indvars.iv.next3398, %._crit_edge3425 ], [ %indvars.iv3397, %2818 ], [ %indvars.iv3397, %2816 ], [ %indvars.iv3397, %2826 ] - %.112102.lcssa.ph = trunc i64 %.112102.lcssa.ph.in to i32 - %2839 = zext i16 %.pre3427 to i32 - %.not2785 = icmp eq i32 %.112102.lcssa.ph, %2839 + %2839 = zext i16 %.pre3427 to i64 + %.not2785 = icmp eq i64 %.112102.lcssa.ph.in, %2839 br i1 %.not2785, label %._crit_edge3321.thread, label %2840 2840: ; preds = %._crit_edge3321 @@ -10607,7 +10606,7 @@ define i32 @cli_check_auth_header(ptr noundef %0, ptr noundef %1) local_unnamed_ br i1 %63, label %64, label %69 64: ; preds = %61 - %65 = trunc i64 %52 to i32 + %65 = trunc nuw i64 %52 to i32 %66 = sub i32 %24, %65 %67 = getelementptr inbounds nuw i8, ptr %40, i64 16 store i32 %65, ptr %67, align 4, !tbaa !129 diff --git a/bench/cpp-httplib/optimized/httplib.ll b/bench/cpp-httplib/optimized/httplib.ll index ec7d91dec55..b98850ad7af 100644 --- a/bench/cpp-httplib/optimized/httplib.ll +++ b/bench/cpp-httplib/optimized/httplib.ll @@ -2553,7 +2553,7 @@ define noundef range(i64 0, 5) i64 @_ZN7httplib6detail7to_utf8EiPc(i32 noundef % 9: ; preds = %7 %10 = lshr i32 %0, 6 - %11 = trunc nuw i32 %10 to i8 + %11 = trunc nuw nsw i32 %10 to i8 %12 = or disjoint i8 %11, -64 store i8 %12, ptr %1, align 1, !tbaa !14 %13 = trunc i32 %0 to i8 @@ -2569,7 +2569,7 @@ define noundef range(i64 0, 5) i64 @_ZN7httplib6detail7to_utf8EiPc(i32 noundef % 19: ; preds = %17 %20 = lshr i32 %0, 12 - %21 = trunc nuw i32 %20 to i8 + %21 = trunc nuw nsw i32 %20 to i8 %22 = or disjoint i8 %21, -32 store i8 %22, ptr %1, align 1, !tbaa !14 %23 = lshr i32 %0, 6 @@ -2595,7 +2595,7 @@ define noundef range(i64 0, 5) i64 @_ZN7httplib6detail7to_utf8EiPc(i32 noundef % 36: ; preds = %34 %37 = lshr i32 %0, 12 - %38 = trunc nuw i32 %37 to i8 + %38 = trunc nuw nsw i32 %37 to i8 %39 = or disjoint i8 %38, -32 store i8 %39, ptr %1, align 1, !tbaa !14 %40 = lshr i32 %0, 6 @@ -2617,7 +2617,7 @@ define noundef range(i64 0, 5) i64 @_ZN7httplib6detail7to_utf8EiPc(i32 noundef % 51: ; preds = %49 %52 = lshr i32 %0, 18 - %53 = trunc nuw i32 %52 to i8 + %53 = trunc nuw nsw i32 %52 to i8 %54 = or disjoint i8 %53, -16 store i8 %54, ptr %1, align 1, !tbaa !14 %55 = lshr i32 %0, 12 @@ -3663,7 +3663,7 @@ _ZN7httplib6detail13from_hex_to_iERKNSt7__cxx1112basic_stringIcSt11char_traitsIc 52: ; preds = %50 %53 = lshr i32 %43, 6 - %54 = trunc nuw i32 %53 to i8 + %54 = trunc nuw nsw i32 %53 to i8 %55 = or disjoint i8 %54, -64 store i8 %55, ptr %4, align 1, !tbaa !14 %56 = trunc i32 %43 to i8 @@ -3678,7 +3678,7 @@ _ZN7httplib6detail13from_hex_to_iERKNSt7__cxx1112basic_stringIcSt11char_traitsIc 61: ; preds = %59 %62 = lshr i32 %43, 12 - %63 = trunc nuw i32 %62 to i8 + %63 = trunc nuw nsw i32 %62 to i8 %64 = or disjoint i8 %63, -32 store i8 %64, ptr %4, align 1, !tbaa !14 %65 = lshr i32 %43, 6 @@ -3702,7 +3702,7 @@ _ZN7httplib6detail13from_hex_to_iERKNSt7__cxx1112basic_stringIcSt11char_traitsIc 76: ; preds = %74 %77 = lshr i32 %43, 12 - %78 = trunc nuw i32 %77 to i8 + %78 = trunc nuw nsw i32 %77 to i8 %79 = or disjoint i8 %78, -32 store i8 %79, ptr %4, align 1, !tbaa !14 %80 = lshr i32 %43, 6 @@ -3722,7 +3722,7 @@ _ZN7httplib6detail13from_hex_to_iERKNSt7__cxx1112basic_stringIcSt11char_traitsIc 89: ; preds = %87 %90 = lshr i32 %43, 18 - %91 = trunc nuw i32 %90 to i8 + %91 = trunc nuw nsw i32 %90 to i8 %92 = or disjoint i8 %91, -16 store i8 %92, ptr %4, align 1, !tbaa !14 %93 = lshr i32 %43, 12 @@ -7213,7 +7213,7 @@ _ZNSt8functionIFviEEC2EOS1_.exit: ; preds = %15, %42 _ZSt4copyIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES2_ET0_T_SB_SA_.exit.i: ; preds = %62, %.noexc %64 = getelementptr inbounds nuw i8, ptr %20, i64 24 store ptr %22, ptr %64, align 8, !tbaa !156 - %65 = trunc nuw i64 %49 to i32 + %65 = trunc nuw nsw i64 %49 to i32 %66 = add nuw nsw i32 %65, 2 %67 = getelementptr inbounds nuw i8, ptr %20, i64 16 store i32 %66, ptr %67, align 8, !tbaa !157 @@ -7409,7 +7409,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i.i: ; br label %_ZNSt7__cxx119to_stringEi.exit.i 150: ; preds = %._crit_edge.i.i.i - %151 = trunc nuw i32 %.0.lcssa.i.i.i to i8 + %151 = trunc nuw nsw i32 %.0.lcssa.i.i.i to i8 %152 = or disjoint i8 %151, 48 br label %_ZNSt7__cxx119to_stringEi.exit.i @@ -11595,7 +11595,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i: ; p br label %_ZNSt7__cxx119to_stringEi.exit 60: ; preds = %._crit_edge.i.i8 - %61 = trunc nuw i32 %.0.lcssa.i.i to i8 + %61 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %62 = or disjoint i8 %61, 48 br label %_ZNSt7__cxx119to_stringEi.exit @@ -15322,7 +15322,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i: ; preds = %26, %24, %20, %16, br label %65 62: ; preds = %._crit_edge.i.i20 - %63 = trunc nuw i64 %.0.lcssa.i.i to i8 + %63 = trunc nuw nsw i64 %.0.lcssa.i.i to i8 %64 = or disjoint i8 %63, 48 br label %65 @@ -15472,7 +15472,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i29: ; preds = %95, %93, %89, %85, br label %134 131: ; preds = %._crit_edge.i.i31 - %132 = trunc nuw i64 %.0.lcssa.i.i32 to i8 + %132 = trunc nuw nsw i64 %.0.lcssa.i.i32 to i8 %133 = or disjoint i8 %132, 48 br label %134 @@ -15629,7 +15629,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i54: ; preds = %164, %162, %158, %1 br label %203 200: ; preds = %._crit_edge.i.i56 - %201 = trunc nuw i64 %.0.lcssa.i.i57 to i8 + %201 = trunc nuw nsw i64 %.0.lcssa.i.i57 to i8 %202 = or disjoint i8 %201, 48 br label %203 @@ -26559,7 +26559,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i: ; preds = %50, %48, %44, %40, br label %88 85: ; preds = %._crit_edge.i.i29 - %86 = trunc nuw i64 %.0.lcssa.i.i to i8 + %86 = trunc nuw nsw i64 %.0.lcssa.i.i to i8 %87 = or disjoint i8 %86, 48 br label %88 @@ -26780,7 +26780,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i40: ; preds = %143, %141, %137, %1 br label %181 178: ; preds = %._crit_edge.i.i43 - %179 = trunc nuw i64 %.0.lcssa.i.i44 to i8 + %179 = trunc nuw nsw i64 %.0.lcssa.i.i44 to i8 %180 = or disjoint i8 %179, 48 br label %181 @@ -37348,7 +37348,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i: ; preds = %140, %138, %134, %1 br label %179 176: ; preds = %._crit_edge.i.i211 - %177 = trunc nuw i64 %.0.lcssa.i.i to i8 + %177 = trunc nuw nsw i64 %.0.lcssa.i.i to i8 %178 = or disjoint i8 %177, 48 br label %179 @@ -37508,7 +37508,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i223: ; preds = %213, %211, %207, %2 br label %252 249: ; preds = %._crit_edge.i.i225 - %250 = trunc nuw i64 %.0.lcssa.i.i226 to i8 + %250 = trunc nuw nsw i64 %.0.lcssa.i.i226 to i8 %251 = or disjoint i8 %250, 48 br label %252 @@ -39199,7 +39199,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i: ; preds = %267, %265, %261, %2 br label %306 303: ; preds = %._crit_edge.i.i176 - %304 = trunc nuw i64 %.0.lcssa.i.i to i8 + %304 = trunc nuw nsw i64 %.0.lcssa.i.i to i8 %305 = or disjoint i8 %304, 48 br label %306 @@ -40411,7 +40411,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i317: ; preds = %704, %702, %698, %6 br label %_ZNSt7__cxx119to_stringEm.exit326 740: ; preds = %._crit_edge.i.i319 - %741 = trunc nuw i64 %.0.lcssa.i.i320 to i8 + %741 = trunc nuw nsw i64 %.0.lcssa.i.i320 to i8 %742 = or disjoint i8 %741, 48 br label %_ZNSt7__cxx119to_stringEm.exit326 @@ -45051,7 +45051,7 @@ define noundef i32 @_ZNK7httplib6Server20create_server_socketERKNSt7__cxx1112bas _ZSt4copyIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES2_ET0_T_SB_SA_.exit.i: ; preds = %52, %.noexc %54 = getelementptr inbounds nuw i8, ptr %10, i64 24 store ptr %12, ptr %54, align 8, !tbaa !156 - %55 = trunc nuw i64 %39 to i32 + %55 = trunc nuw nsw i64 %39 to i32 %56 = add nuw nsw i32 %55, 2 %57 = getelementptr inbounds nuw i8, ptr %10, i64 16 store i32 %56, ptr %57, align 8, !tbaa !157 @@ -45250,7 +45250,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i.i: ; br label %_ZNSt7__cxx119to_stringEi.exit.i 139: ; preds = %._crit_edge.i.i.i - %140 = trunc nuw i32 %.0.lcssa.i.i.i to i8 + %140 = trunc nuw nsw i32 %.0.lcssa.i.i.i to i8 %141 = or disjoint i8 %140, 48 br label %_ZNSt7__cxx119to_stringEi.exit.i @@ -47444,7 +47444,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i: ; p br label %_ZNSt7__cxx119to_stringEi.exit 385: ; preds = %._crit_edge.i.i207 - %386 = trunc nuw i32 %.0.lcssa.i.i to i8 + %386 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %387 = or disjoint i8 %386, 48 br label %_ZNSt7__cxx119to_stringEi.exit @@ -47645,7 +47645,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i233: br label %_ZNSt7__cxx119to_stringEi.exit241 472: ; preds = %._crit_edge.i.i234 - %473 = trunc nuw i32 %.0.lcssa.i.i235 to i8 + %473 = trunc nuw nsw i32 %.0.lcssa.i.i235 to i8 %474 = or disjoint i8 %473, 48 br label %_ZNSt7__cxx119to_stringEi.exit241 @@ -50272,7 +50272,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i: ; p br label %_ZNSt7__cxx119to_stringEi.exit 87: ; preds = %._crit_edge.i.i - %88 = trunc nuw i32 %.0.lcssa.i.i to i8 + %88 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %89 = or disjoint i8 %88, 48 br label %_ZNSt7__cxx119to_stringEi.exit @@ -52777,7 +52777,7 @@ _ZZN9__gnu_cxx6__stoaIlicJiEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD br label %196 196: ; preds = %195, %193 - %197 = trunc i64 %174 to i32 + %197 = trunc nsw i64 %174 to i32 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #47 %198 = getelementptr inbounds nuw i8, ptr %3, i64 32 store i32 %197, ptr %198, align 8, !tbaa !310 @@ -53419,7 +53419,7 @@ _ZZN9__gnu_cxx6__stoaIlicJiEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD br label %446 446: ; preds = %445, %443 - %447 = trunc i64 %425 to i32 + %447 = trunc nsw i64 %425 to i32 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #47 store i32 %447, ptr %198, align 8, !tbaa !310 %448 = load ptr, ptr %20, align 8, !tbaa !13 @@ -58986,7 +58986,7 @@ _ZZN9__gnu_cxx6__stoaIlicJiEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD br label %_ZNSt7__cxx114stoiERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEPmi.exit _ZNSt7__cxx114stoiERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEPmi.exit: ; preds = %360, %362 - %363 = trunc i64 %344 to i32 + %363 = trunc nsw i64 %344 to i32 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #47 br label %381 @@ -62184,7 +62184,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i: ; preds = %455, %453, %449, %4 br label %_ZNSt7__cxx119to_stringEm.exit 491: ; preds = %._crit_edge.i.i359 - %492 = trunc nuw i64 %.0.lcssa.i.i to i8 + %492 = trunc nuw nsw i64 %.0.lcssa.i.i to i8 %493 = or disjoint i8 %492, 48 br label %_ZNSt7__cxx119to_stringEm.exit @@ -62708,7 +62708,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i443: ; preds = %653, %651, %647, %6 br label %_ZNSt7__cxx119to_stringEm.exit452 689: ; preds = %._crit_edge.i.i445 - %690 = trunc nuw i64 %.0.lcssa.i.i446 to i8 + %690 = trunc nuw nsw i64 %.0.lcssa.i.i446 to i8 %691 = or disjoint i8 %690, 48 br label %_ZNSt7__cxx119to_stringEm.exit452 @@ -84514,7 +84514,7 @@ _ZZN9__gnu_cxx6__stoaIlicJiEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD br label %_ZNSt7__cxx114stoiERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEPmi.exit _ZNSt7__cxx114stoiERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEPmi.exit: ; preds = %294, %296 - %297 = trunc i64 %278 to i32 + %297 = trunc nsw i64 %278 to i32 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #47 br label %301 @@ -128478,22 +128478,23 @@ _ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i: ; preds = %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE6_M_strISA_EENSt9enable_ifIXsr8__detail20__is_contiguous_iterIT_EE5valueENSB_13__string_viewEE4typeEv.exit9.i.i %bcmp.i = tail call i32 @bcmp(ptr %.sroa.0.2.i.i.i, ptr %.sroa.0.2.i2.i.i, i64 %.sroa.speculated.i.i.i) - %.not14.i.i.i = icmp eq i32 %bcmp.i, 0 - br i1 %.not14.i.i.i, label %select.unfold.i.i.i, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit - -select.unfold.i.i.i: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i, %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE6_M_strISA_EENSt9enable_ifIXsr8__detail20__is_contiguous_iterIT_EE5valueENSB_13__string_viewEE4typeEv.exit9.i.i + %.not14.i.i.i = icmp ne i32 %bcmp.i, 0 %63 = sub i64 %.sroa.4.2.i.i.i, %.sroa.4.2.i3.i.i %64 = icmp sgt i64 %63, 2147483647 - br i1 %64, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit, label %65 + %or.cond.i = select i1 %.not14.i.i.i, i1 true, i1 %64 + br i1 %or.cond.i, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit, label %65 + +select.unfold.i.i.i: ; preds = %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE6_M_strISA_EENSt9enable_ifIXsr8__detail20__is_contiguous_iterIT_EE5valueENSB_13__string_viewEE4typeEv.exit9.i.i + %.old.i = sub i64 %.sroa.4.2.i.i.i, %.sroa.4.2.i3.i.i + %.old2.i = icmp sgt i64 %.old.i, 2147483647 + br i1 %.old2.i, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit, label %65 -65: ; preds = %select.unfold.i.i.i - %spec.select1522.i.i.i = tail call i64 @llvm.smax.i64(i64 %63, i64 -2147483648) - %66 = and i64 %spec.select1522.i.i.i, 4294967295 - %67 = icmp eq i64 %66, 0 +65: ; preds = %select.unfold.i.i.i, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i + %66 = icmp eq i64 %.sroa.4.2.i.i.i, %.sroa.4.2.i3.i.i br label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit _ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit: ; preds = %65, %select.unfold.i.i.i, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i, %9, %11, %15, %21, %2 - %.0 = phi i1 [ true, %2 ], [ false, %21 ], [ false, %15 ], [ false, %11 ], [ false, %9 ], [ false, %select.unfold.i.i.i ], [ %67, %65 ], [ false, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i ] + %.0 = phi i1 [ true, %2 ], [ false, %21 ], [ false, %15 ], [ false, %11 ], [ false, %9 ], [ false, %select.unfold.i.i.i ], [ %66, %65 ], [ false, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i ] ret i1 %.0 } diff --git a/bench/cvc5/optimized/cardinality_extension.ll b/bench/cvc5/optimized/cardinality_extension.ll index 009f201cfef..308a9f6c9f1 100644 --- a/bench/cvc5/optimized/cardinality_extension.ll +++ b/bench/cvc5/optimized/cardinality_extension.ll @@ -14782,6 +14782,7 @@ _ZNSt6vectorIN4cvc58internal12NodeTemplateILb1EEESaIS3_EE8pop_backEv.exit: ; pre .preheader.lr.ph: ; preds = %._crit_edge %56 = getelementptr inbounds nuw i8, ptr %12, i64 8 %57 = getelementptr inbounds nuw i8, ptr %12, i64 16 + %wide.trip.count97 = and i64 %.lcssa85, 4294967295 br label %.preheader .preheader: ; preds = %.preheader.lr.ph, %._crit_edge89 @@ -14791,7 +14792,7 @@ _ZNSt6vectorIN4cvc58internal12NodeTemplateILb1EEESaIS3_EE8pop_backEv.exit: ; pre ._crit_edge89: ; preds = %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit, %.preheader %indvars.iv.next95 = add nuw nsw i64 %indvars.iv94, 1 - %exitcond98.not = icmp eq i64 %indvars.iv.next95, %.lcssa85 + %exitcond98.not = icmp eq i64 %indvars.iv.next95, %wide.trip.count97 br i1 %exitcond98.not, label %._crit_edge91.loopexit, label %.preheader, !llvm.loop !529 .lr.ph88: ; preds = %.preheader, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit diff --git a/bench/cxxopts/optimized/example.ll b/bench/cxxopts/optimized/example.ll index d604be72a0a..a17d9831175 100644 --- a/bench/cxxopts/optimized/example.ll +++ b/bench/cxxopts/optimized/example.ll @@ -53454,22 +53454,23 @@ _ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i: ; preds = %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE6_M_strISA_EENSt9enable_ifIXsr8__detail20__is_contiguous_iterIT_EE5valueENSB_13__string_viewEE4typeEv.exit9.i.i %bcmp.i = tail call i32 @bcmp(ptr %.sroa.0.2.i.i.i, ptr %.sroa.0.2.i2.i.i, i64 %.sroa.speculated.i.i.i) - %.not14.i.i.i = icmp eq i32 %bcmp.i, 0 - br i1 %.not14.i.i.i, label %select.unfold.i.i.i, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit - -select.unfold.i.i.i: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i, %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE6_M_strISA_EENSt9enable_ifIXsr8__detail20__is_contiguous_iterIT_EE5valueENSB_13__string_viewEE4typeEv.exit9.i.i + %.not14.i.i.i = icmp ne i32 %bcmp.i, 0 %63 = sub i64 %.sroa.4.2.i.i.i, %.sroa.4.2.i3.i.i %64 = icmp sgt i64 %63, 2147483647 - br i1 %64, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit, label %65 + %or.cond.i = select i1 %.not14.i.i.i, i1 true, i1 %64 + br i1 %or.cond.i, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit, label %65 -65: ; preds = %select.unfold.i.i.i - %spec.select1522.i.i.i = tail call i64 @llvm.smax.i64(i64 %63, i64 -2147483648) - %66 = and i64 %spec.select1522.i.i.i, 4294967295 - %67 = icmp eq i64 %66, 0 +65: ; preds = %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE6_M_strISA_EENSt9enable_ifIXsr8__detail20__is_contiguous_iterIT_EE5valueENSB_13__string_viewEE4typeEv.exit9.i.i + %.old.i = sub i64 %.sroa.4.2.i.i.i, %.sroa.4.2.i3.i.i + %.old2.i = icmp sgt i64 %.old.i, 2147483647 + br i1 %.old2.i, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit, label %65 + +65: ; preds = %select.unfold.i.i.i, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i + %66 = icmp eq i64 %.sroa.4.2.i.i.i, %.sroa.4.2.i3.i.i br label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit _ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit: ; preds = %65, %select.unfold.i.i.i, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i, %9, %11, %15, %21, %2 - %.0 = phi i1 [ true, %2 ], [ false, %21 ], [ false, %15 ], [ false, %11 ], [ false, %9 ], [ false, %select.unfold.i.i.i ], [ %67, %65 ], [ false, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i ] + %.0 = phi i1 [ true, %2 ], [ false, %21 ], [ false, %15 ], [ false, %11 ], [ false, %9 ], [ false, %select.unfold.i.i.i ], [ %66, %65 ], [ false, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i ] ret i1 %.0 } @@ -54413,20 +54414,15 @@ _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i: ; preds = %_ZNKSt7__cxx119sub_ %spec.select.i.i.i = select i1 %.not.not.i.i.i, ptr null, ptr %25 %bcmp.i = tail call i32 @bcmp(ptr %spec.select.i.i.i, ptr %spec.select.i7.i.i, i64 %.sroa.speculated.i.i.i) %.not14.i.i.i = icmp eq i32 %bcmp.i, 0 - br i1 %.not14.i.i.i, label %select.unfold.i.i.i, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit.thread - -select.unfold.i.i.i: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i, %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE6_M_strISA_EENSt9enable_ifIXsr8__detail20__is_contiguous_iterIT_EE5valueENSB_13__string_viewEE4typeEv.exit9.i.i - %35 = sub i64 %spec.select6.i.i.i, %spec.select6.i8.i.i - %36 = icmp sgt i64 %35, 2147483647 - br i1 %36, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit.thread, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit + %35 = icmp eq i64 %spec.select6.i.i.i, %spec.select6.i8.i.i + %or.cond = and i1 %.not14.i.i.i, %35 + br i1 %or.cond, label %.thread, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit.thread -_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit: ; preds = %select.unfold.i.i.i - %spec.select1522.i.i.i = tail call i64 @llvm.smax.i64(i64 %35, i64 -2147483648) - %37 = and i64 %spec.select1522.i.i.i, 4294967295 - %38 = icmp eq i64 %37, 0 - br i1 %38, label %.thread, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit.thread +65:; preds = %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE6_M_strISA_EENSt9enable_ifIXsr8__detail20__is_contiguous_iterIT_EE5valueENSB_13__string_viewEE4typeEv.exit9.i.i + %.old = icmp eq i64 %spec.select6.i.i.i, %spec.select6.i8.i.i + br i1 %.old, label %.thread, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit.thread -_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit.thread: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i, %select.unfold.i.i.i, %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit, %17 +_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit.thread: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i, %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit, %17 br label %.thread .thread11: ; preds = %.thread12 @@ -54459,8 +54455,8 @@ _ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_tr %57 = tail call noundef zeroext i1 @_ZSteqIiSaIiEEbRKSt6vectorIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(24) %55, ptr noundef nonnull align 8 dereferenceable(24) %56) br label %.thread -.thread: ; preds = %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit.thread, %10, %46, %48, %54, %.thread11, %42, %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit, %6 - %.0 = phi i1 [ true, %6 ], [ true, %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit ], [ false, %42 ], [ false, %.thread11 ], [ false, %48 ], [ false, %46 ], [ %57, %54 ], [ false, %10 ], [ false, %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit.thread ] +.thread: ; preds = %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i, %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit.thread, %10, %43, %45, %51, %.thread11, %39, %6 + %.0 = phi i1 [ true, %6 ], [ false, %42 ], [ false, %.thread11 ], [ false, %48 ], [ false, %46 ], [ %57, %54 ], [ false, %10 ], [ false, %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit.thread ], [ true, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i ], [ true, %65 ] ret i1 %.0 } diff --git a/bench/faiss/optimized/ProductQuantizer.ll b/bench/faiss/optimized/ProductQuantizer.ll index 0b6b44cf421..61e8b18c75e 100644 --- a/bench/faiss/optimized/ProductQuantizer.ll +++ b/bench/faiss/optimized/ProductQuantizer.ll @@ -171,9 +171,8 @@ define void @_ZN5faiss16ProductQuantizer5trainEmPKf(ptr noundef nonnull align 8 %45 = getelementptr inbounds nuw i8, ptr %4, i64 64 %46 = getelementptr inbounds nuw i8, ptr %4, i64 24 %47 = getelementptr inbounds nuw i8, ptr %4, i64 40 - %48 = trunc i64 %1 to i32 + %48 = trunc nuw i64 %1 to i32 %49 = icmp sgt i32 %48, 0 - %wide.trip.count93.i = and i64 %1, 2147483647 %50 = sitofp i32 %48 to float %51 = getelementptr inbounds nuw i8, ptr %0, i64 56 %52 = getelementptr inbounds nuw i8, ptr %5, i64 16 @@ -420,7 +419,7 @@ _ZNSt6vectorIfSaIfEEC2EmRKS0_.exit.i: ; preds = %_ZSt6fill_nIPfmfET_ ._crit_edge.us.i: ; preds = %138 %indvars.iv.next91.i = add nuw nsw i64 %indvars.iv90.i, 1 - %exitcond94.not.i = icmp eq i64 %indvars.iv.next91.i, %wide.trip.count93.i + %exitcond94.not.i = icmp eq i64 %indvars.iv.next91.i, %1 br i1 %exitcond94.not.i, label %.preheader65.i, label %.preheader66.us.i, !llvm.loop !34 .preheader65.i: ; preds = %._crit_edge.us.i, %_ZNSt6vectorIfSaIfEEC2EmRKS0_.exit.i diff --git a/bench/flatbuffers/optimized/idl_parser.ll b/bench/flatbuffers/optimized/idl_parser.ll index 92d2fe65fd9..b3409ce0f4d 100644 --- a/bench/flatbuffers/optimized/idl_parser.ll +++ b/bench/flatbuffers/optimized/idl_parser.ll @@ -5246,7 +5246,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit286: ; preds = %_Z %449 = shl i32 %.087631, 10 %450 = and i32 %449, 1047552 %451 = add nuw nsw i32 %450, 65536 - %452 = trunc nuw i64 %360 to i32 + %452 = trunc nuw nsw i64 %360 to i32 %453 = and i32 %452, 1023 %454 = or disjoint i32 %453, %451 %455 = call noundef i32 @_ZN11flatbuffers6ToUTF8EjPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(i32 noundef %454, ptr noundef nonnull %67) @@ -17847,7 +17847,7 @@ define dso_local void @_ZN11flatbuffers6Parser16ParseSingleValueEPKNSt7__cxx1112 ] 47: ; preds = %5, %5 - %48 = trunc i32 %46 to i8 + %48 = trunc nuw nsw i32 %46 to i8 tail call void @_ZN11flatbuffers6Parser4NextEv(ptr dead_on_unwind writable sret(%"class.flatbuffers::CheckedError") align 1 %0, ptr noundef nonnull align 8 dereferenceable(1920) %1) %49 = getelementptr inbounds nuw i8, ptr %0, i64 1 store i8 1, ptr %49, align 1, !tbaa !165 @@ -42836,7 +42836,7 @@ _ZN11flatbuffers12_GLOBAL__N_111atot_scalarIaEEbPKcPT_St17integral_constantIbLb0 _ZN11flatbuffers12_GLOBAL__N_111atot_scalarIaEEbPKcPT_St17integral_constantIbLb0EE.exit: ; preds = %_ZN11flatbuffers19StringToIntegerImplIlEEbPT_PKcib.exit.i.thread.i.i %46 = icmp sgt i64 %.28.i.i, -129 %spec.select20.i.i = call i64 @llvm.smax.i64(i64 %.28.i.i, i64 -128) - %spec.select.i.i = trunc i64 %spec.select20.i.i to i8 + %spec.select.i.i = trunc nsw i64 %spec.select20.i.i to i8 store i8 %spec.select.i.i, ptr %3, align 1, !tbaa !13 br i1 %46, label %47, label %49 @@ -43910,7 +43910,7 @@ _ZN11flatbuffers12_GLOBAL__N_111atot_scalarIsEEbPKcPT_St17integral_constantIbLb0 _ZN11flatbuffers12_GLOBAL__N_111atot_scalarIsEEbPKcPT_St17integral_constantIbLb0EE.exit: ; preds = %_ZN11flatbuffers19StringToIntegerImplIlEEbPT_PKcib.exit.i.thread.i.i %46 = icmp sgt i64 %.28.i.i, -32769 %spec.select20.i.i = call i64 @llvm.smax.i64(i64 %.28.i.i, i64 -32768) - %spec.select.i.i = trunc i64 %spec.select20.i.i to i16 + %spec.select.i.i = trunc nsw i64 %spec.select20.i.i to i16 store i16 %spec.select.i.i, ptr %3, align 2, !tbaa !353 br i1 %46, label %47, label %49 @@ -45492,7 +45492,7 @@ _ZN11flatbuffers12_GLOBAL__N_111atot_scalarIiEEbPKcPT_St17integral_constantIbLb0 _ZN11flatbuffers12_GLOBAL__N_111atot_scalarIiEEbPKcPT_St17integral_constantIbLb0EE.exit: ; preds = %_ZN11flatbuffers19StringToIntegerImplIlEEbPT_PKcib.exit.i.thread.i.i %46 = icmp sgt i64 %.28.i.i, -2147483649 %spec.select20.i.i = call i64 @llvm.smax.i64(i64 %.28.i.i, i64 -2147483648) - %spec.select.i.i = trunc i64 %spec.select20.i.i to i32 + %spec.select.i.i = trunc nsw i64 %spec.select20.i.i to i32 store i32 %spec.select.i.i, ptr %3, align 4, !tbaa !192 br i1 %46, label %47, label %49 @@ -70715,7 +70715,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit410: ; preds = %_Z store i16 %661, ptr %662, align 8, !tbaa !428 call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %27) #35 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %663 = trunc nuw i64 %indvars.iv.next to i32 + %663 = trunc nuw nsw i64 %indvars.iv.next to i32 %664 = load ptr, ptr %338, align 8, !tbaa !426 %665 = load ptr, ptr %337, align 8, !tbaa !427 %666 = ptrtoint ptr %664 to i64 @@ -79031,7 +79031,7 @@ _ZN11flatbuffers11StringToIntEPKci.exit.thread: ; preds = %196, %187 br label %353 220: ; preds = %23, %23 - %221 = trunc i32 %26 to i8 + %221 = trunc nuw nsw i32 %26 to i8 invoke void @_ZN11flatbuffers6Parser4NextEv(ptr dead_on_unwind nonnull writable sret(%"class.flatbuffers::CheckedError") align 1 %0, ptr noundef nonnull align 8 dereferenceable(1920) %1) to label %222 unwind label %225 @@ -142692,7 +142692,7 @@ _ZN11flatbuffers19StringToIntegerImplIlEEbPT_PKcib.exit.i.thread.i200: ; preds = 166: ; preds = %_ZN11flatbuffers19StringToIntegerImplIlEEbPT_PKcib.exit.i.thread.i200 %spec.select20.i202 = call i64 @llvm.smax.i64(i64 %.28.i201, i64 -128) - %spec.select.i203 = trunc i64 %spec.select20.i202 to i8 + %spec.select.i203 = trunc nsw i64 %spec.select20.i202 to i8 br label %_ZN11flatbuffers14StringToNumberIaEEbPKcPT_.exit _ZN11flatbuffers14StringToNumberIaEEbPKcPT_.exit: ; preds = %166, %_ZN11flatbuffers19StringToIntegerImplIlEEbPT_PKcib.exit.i.thread.i200, %.critedge.thread.i.i197, %154 @@ -142878,7 +142878,7 @@ _ZN11flatbuffers19StringToIntegerImplIlEEbPT_PKcib.exit.i.thread.i234: ; preds = 242: ; preds = %_ZN11flatbuffers19StringToIntegerImplIlEEbPT_PKcib.exit.i.thread.i234 %spec.select20.i236 = call i64 @llvm.smax.i64(i64 %.28.i235, i64 -32768) - %spec.select.i237 = trunc i64 %spec.select20.i236 to i16 + %spec.select.i237 = trunc nsw i64 %spec.select20.i236 to i16 br label %_ZN11flatbuffers14StringToNumberIsEEbPKcPT_.exit _ZN11flatbuffers14StringToNumberIsEEbPKcPT_.exit: ; preds = %242, %_ZN11flatbuffers19StringToIntegerImplIlEEbPT_PKcib.exit.i.thread.i234, %.critedge.thread.i.i231, %230 @@ -143064,7 +143064,7 @@ _ZN11flatbuffers19StringToIntegerImplIlEEbPT_PKcib.exit.i.thread.i267: ; preds = 318: ; preds = %_ZN11flatbuffers19StringToIntegerImplIlEEbPT_PKcib.exit.i.thread.i267 %spec.select20.i269 = call i64 @llvm.smax.i64(i64 %.28.i268, i64 -2147483648) - %spec.select.i270 = trunc i64 %spec.select20.i269 to i32 + %spec.select.i270 = trunc nsw i64 %spec.select20.i269 to i32 br label %_ZN11flatbuffers14StringToNumberIiEEbPKcPT_.exit _ZN11flatbuffers14StringToNumberIiEEbPKcPT_.exit: ; preds = %318, %_ZN11flatbuffers19StringToIntegerImplIlEEbPT_PKcib.exit.i.thread.i267, %.critedge.thread.i.i264, %306 diff --git a/bench/git/optimized/stash.ll b/bench/git/optimized/stash.ll index 79d7c33aa11..091e10b90cf 100644 --- a/bench/git/optimized/stash.ll +++ b/bench/git/optimized/stash.ll @@ -3600,12 +3600,7 @@ define internal fastcc range(i32 0, 2) i32 @check_changes(ptr noundef nonnull %0 %13 = getelementptr inbounds nuw i8, ptr %4, i64 4 %14 = load i32, ptr %13, align 4, !tbaa !173 %15 = icmp sgt i32 %14, 0 - br i1 %15, label %.lr.ph.i, label %get_untracked_files.exit.thread - -get_untracked_files.exit.thread: ; preds = %8 - call void @dir_clear(ptr noundef nonnull %4) #15 - call void @llvm.lifetime.end.p0(i64 312, ptr nonnull %4) #15 - br label %37 + br i1 %15, label %.lr.ph.i, label %get_untracked_files.exit .lr.ph.i: ; preds = %8 %16 = getelementptr inbounds nuw i8, ptr %4, i64 16 @@ -3654,18 +3649,14 @@ strbuf_addch.exit.i: ; preds = %strbuf_avail.exit.t %35 = icmp slt i64 %indvars.iv.next.i, %34 br i1 %35, label %19, label %get_untracked_files.exit, !llvm.loop !185 -get_untracked_files.exit: ; preds = %strbuf_addch.exit.i +get_untracked_files.exit: ; preds = %strbuf_addch.exit.i, %8 + %.1.shrunk.ph = phi i1 [ %.not, %8 ], [ true, %strbuf_addch.exit.i ] call void @dir_clear(ptr noundef nonnull %4) #15 call void @llvm.lifetime.end.p0(i64 312, ptr nonnull %4) #15 - %36 = and i64 %indvars.iv.next.i, 4294967295 - %.not7 = icmp eq i64 %36, 0 - br i1 %.not7, label %37, label %38 - -37: ; preds = %get_untracked_files.exit.thread, %get_untracked_files.exit br label %38 -38: ; preds = %37, %get_untracked_files.exit, %3 - %.1.shrunk = phi i1 [ %.not, %3 ], [ %.not, %37 ], [ true, %get_untracked_files.exit ] +38: ; preds = %get_untracked_files.exit, %3 + %.1.shrunk = phi i1 [ %.not, %3 ], [ %.1.shrunk.ph, %get_untracked_files.exit ] %.1 = zext i1 %.1.shrunk to i32 ret i32 %.1 } diff --git a/bench/gromacs/optimized/readpull.ll b/bench/gromacs/optimized/readpull.ll index a5f40573900..909b41c7a69 100644 --- a/bench/gromacs/optimized/readpull.ll +++ b/bench/gromacs/optimized/readpull.ll @@ -32601,22 +32601,23 @@ _ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i: ; preds = %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE6_M_strISA_EENSt9enable_ifIXsr8__detail20__is_contiguous_iterIT_EE5valueENSB_13__string_viewEE4typeEv.exit9.i.i %bcmp.i = tail call i32 @bcmp(ptr %.sroa.0.2.i.i.i, ptr %.sroa.0.2.i2.i.i, i64 %.sroa.speculated.i.i.i) - %.not14.i.i.i = icmp eq i32 %bcmp.i, 0 - br i1 %.not14.i.i.i, label %select.unfold.i.i.i, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit - -select.unfold.i.i.i: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i, %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE6_M_strISA_EENSt9enable_ifIXsr8__detail20__is_contiguous_iterIT_EE5valueENSB_13__string_viewEE4typeEv.exit9.i.i + %.not14.i.i.i = icmp ne i32 %bcmp.i, 0 %63 = sub i64 %.sroa.4.2.i.i.i, %.sroa.4.2.i3.i.i %64 = icmp sgt i64 %63, 2147483647 - br i1 %64, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit, label %65 + %or.cond.i = select i1 %.not14.i.i.i, i1 true, i1 %64 + br i1 %or.cond.i, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit, label %65 + +select.unfold.i.i.i: ; preds = %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE6_M_strISA_EENSt9enable_ifIXsr8__detail20__is_contiguous_iterIT_EE5valueENSB_13__string_viewEE4typeEv.exit9.i.i + %.old.i = sub i64 %.sroa.4.2.i.i.i, %.sroa.4.2.i3.i.i + %.old2.i = icmp sgt i64 %.old.i, 2147483647 + br i1 %.old2.i, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit, label %65 -65: ; preds = %select.unfold.i.i.i - %spec.select1522.i.i.i = tail call i64 @llvm.smax.i64(i64 %63, i64 -2147483648) - %66 = and i64 %spec.select1522.i.i.i, 4294967295 - %67 = icmp eq i64 %66, 0 +65: ; preds = %select.unfold.i.i.i, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i + %66 = icmp eq i64 %.sroa.4.2.i.i.i, %.sroa.4.2.i3.i.i br label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit _ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit: ; preds = %65, %select.unfold.i.i.i, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i, %9, %11, %15, %21, %2 - %.0 = phi i1 [ true, %2 ], [ false, %21 ], [ false, %15 ], [ false, %11 ], [ false, %9 ], [ false, %select.unfold.i.i.i ], [ %67, %65 ], [ false, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i ] + %.0 = phi i1 [ true, %2 ], [ false, %21 ], [ false, %15 ], [ false, %11 ], [ false, %9 ], [ false, %select.unfold.i.i.i ], [ %66, %65 ], [ false, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i ] ret i1 %.0 } diff --git a/bench/hermes/optimized/Process.ll b/bench/hermes/optimized/Process.ll index b793b4c52af..1c6de13c124 100644 --- a/bench/hermes/optimized/Process.ll +++ b/bench/hermes/optimized/Process.ll @@ -1094,6 +1094,7 @@ land.lhs.true.i47.i: ; preds = %land.rhs if.end.i160.i: ; preds = %land.lhs.true.i47.i %bcmp.i = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %call.i2, ptr noundef nonnull dereferenceable(4) @.str.6, i64 4) %0 = icmp eq i32 %bcmp.i, 0 + %spec.select.i = zext i1 %0 to i8 br label %_ZN4llvh12StringSwitchIbbE10StartsWithENS_13StringLiteralEb.exit100.thread149.i if.end.i168.i: ; preds = %land.lhs.true.i47.i @@ -1116,7 +1117,7 @@ if.end.i.i.i: ; preds = %_ZN4llvh12StringSwi br i1 %3, label %if.then.i118.i, label %if.end.i.i202.i _ZN4llvh12StringSwitchIbbE10StartsWithENS_13StringLiteralEb.exit100.thread149.i: ; preds = %if.end.i177.i, %if.end.i168.i, %if.end.i160.i - %ref.tmp.sroa.28.3.ph.i = phi i1 [ true, %if.end.i168.i ], [ true, %if.end.i177.i ], [ %0, %if.end.i160.i ] + %ref.tmp.sroa.28.3.ph.i = phi i8 [ 1, %if.end.i168.i ], [ 1, %if.end.i177.i ], [ %spec.select.i, %if.end.i160.i ] %cmp.i198.not153.i = icmp samesign ult i64 %call.i.i, 5 br label %_ZN4llvh12StringSwitchIbbE10StartsWithENS_13StringLiteralEb.exit87.i @@ -1127,8 +1128,9 @@ if.end.i.i202.i: ; preds = %if.end.i.i.i, %if.e _ZN4llvh12StringSwitchIbbE10StartsWithENS_13StringLiteralEb.exit87.i: ; preds = %if.end.i.i202.i, %_ZN4llvh12StringSwitchIbbE10StartsWithENS_13StringLiteralEb.exit100.thread149.i %cmp.i198.not120.i = phi i1 [ false, %if.end.i.i202.i ], [ %cmp.i198.not153.i, %_ZN4llvh12StringSwitchIbbE10StartsWithENS_13StringLiteralEb.exit100.thread149.i ] - %ref.tmp.sroa.28.4.i = phi i1 [ false, %if.end.i.i202.i ], [ %ref.tmp.sroa.28.3.ph.i, %_ZN4llvh12StringSwitchIbbE10StartsWithENS_13StringLiteralEb.exit100.thread149.i ] - %or.cond36.i = select i1 %ref.tmp.sroa.28.4.i, i1 true, i1 %cmp.i198.not120.i + %ref.tmp.sroa.28.4.i = phi i8 [ 0, %if.end.i.i202.i ], [ %ref.tmp.sroa.28.3.ph.i, %_ZN4llvh12StringSwitchIbbE10StartsWithENS_13StringLiteralEb.exit100.thread149.i ] + %tobool.i62.i = trunc nuw i8 %ref.tmp.sroa.28.4.i to i1 + %or.cond36.i = select i1 %tobool.i62.i, i1 true, i1 %cmp.i198.not120.i br i1 %or.cond36.i, label %_ZN4llvh12StringSwitchIbbE10StartsWithENS_13StringLiteralEb.exit74.i, label %if.end.i.i221.i if.end.i.i221.i: ; preds = %_ZN4llvh12StringSwitchIbbE10StartsWithENS_13StringLiteralEb.exit87.i @@ -1137,10 +1139,11 @@ if.end.i.i221.i: ; preds = %_ZN4llvh12StringSwi br i1 %5, label %if.then.i118.i, label %_ZN4llvh12StringSwitchIbbE10StartsWithENS_13StringLiteralEb.exit74.i _ZN4llvh12StringSwitchIbbE10StartsWithENS_13StringLiteralEb.exit74.i: ; preds = %if.end.i.i221.i, %_ZN4llvh12StringSwitchIbbE10StartsWithENS_13StringLiteralEb.exit87.i, %_ZN4llvh12StringSwitchIbbE4CaseENS_13StringLiteralEb.exit.i - %or.cond36161.i = phi i1 [ false, %if.end.i.i221.i ], [ true, %_ZN4llvh12StringSwitchIbbE10StartsWithENS_13StringLiteralEb.exit87.i ], [ true, %_ZN4llvh12StringSwitchIbbE4CaseENS_13StringLiteralEb.exit.i ] - %ref.tmp.sroa.28.4160.i = phi i1 [ false, %if.end.i.i221.i ], [ %ref.tmp.sroa.28.4.i, %_ZN4llvh12StringSwitchIbbE10StartsWithENS_13StringLiteralEb.exit87.i ], [ false, %_ZN4llvh12StringSwitchIbbE4CaseENS_13StringLiteralEb.exit.i ] + %or.cond36161.i = phi i1 [ false, %if.end.i.i221.i ], [ %tobool.i62.i, %_ZN4llvh12StringSwitchIbbE10StartsWithENS_13StringLiteralEb.exit87.i ], [ false, %_ZN4llvh12StringSwitchIbbE4CaseENS_13StringLiteralEb.exit.i ] + %ref.tmp.sroa.28.4160.i = phi i8 [ 0, %if.end.i.i221.i ], [ %ref.tmp.sroa.28.4.i, %_ZN4llvh12StringSwitchIbbE10StartsWithENS_13StringLiteralEb.exit87.i ], [ 0, %_ZN4llvh12StringSwitchIbbE4CaseENS_13StringLiteralEb.exit.i ] + %cmp.i198.not120161.i = phi i1 [ false, %if.end.i.i221.i ], [ %cmp.i198.not120.i, %_ZN4llvh12StringSwitchIbbE10StartsWithENS_13StringLiteralEb.exit87.i ], [ true, %_ZN4llvh12StringSwitchIbbE4CaseENS_13StringLiteralEb.exit.i ] %cmp.i236.not.i = icmp ult i64 %call.i.i, 4 - %or.cond37.i = or i1 %cmp.i236.not.i, %ref.tmp.sroa.28.4160.i + %or.cond37.i = or i1 %cmp.i236.not.i, %or.cond36161.i br i1 %or.cond37.i, label %_ZN4llvh12StringSwitchIbbE10StartsWithENS_13StringLiteralEb.exit.i, label %if.end.i.i240.i if.end.i.i240.i: ; preds = %_ZN4llvh12StringSwitchIbbE10StartsWithENS_13StringLiteralEb.exit74.i @@ -1149,7 +1152,10 @@ if.end.i.i240.i: ; preds = %_ZN4llvh12StringSwi br i1 %6, label %if.then.i118.i, label %_ZN4llvh12StringSwitchIbbE10StartsWithENS_13StringLiteralEb.exit.i _ZN4llvh12StringSwitchIbbE10StartsWithENS_13StringLiteralEb.exit.i: ; preds = %if.end.i.i240.i, %_ZN4llvh12StringSwitchIbbE10StartsWithENS_13StringLiteralEb.exit74.i - br i1 %or.cond36161.i, label %_ZN4llvh12StringSwitchIbbE8EndsWithENS_13StringLiteralEb.exit.i, label %if.end.i.i259.i + %ref.tmp.sroa.28.6.i = phi i8 [ %ref.tmp.sroa.28.4162.i, %_ZN4llvh12StringSwitchIbbE10StartsWithENS_13StringLiteralEb.exit74.i ], [ 0, %if.end.i.i240.i ] + %tobool.i72.i = trunc nuw i8 %ref.tmp.sroa.28.6.i to i1 + %or.cond38.i = select i1 %tobool.i72.i, i1 true, i1 %cmp.i198.not120161.i + br i1 %or.cond38.i, label %_ZN4llvh12StringSwitchIbbE8EndsWithENS_13StringLiteralEb.exit.i, label %if.end.i.i259.i if.end.i.i259.i: ; preds = %_ZN4llvh12StringSwitchIbbE10StartsWithENS_13StringLiteralEb.exit.i %add.ptr.i73.i = getelementptr inbounds i8, ptr %call.i2, i64 %call.i.i @@ -1159,7 +1165,7 @@ if.end.i.i259.i: ; preds = %_ZN4llvh12StringSwi br i1 %7, label %if.then.i118.i, label %land.end _ZN4llvh12StringSwitchIbbE8EndsWithENS_13StringLiteralEb.exit.i: ; preds = %_ZN4llvh12StringSwitchIbbE10StartsWithENS_13StringLiteralEb.exit.i - br i1 %ref.tmp.sroa.28.4160.i, label %if.then.i118.i, label %land.end + br i1 %tobool.i72.i, label %if.then.i118.i, label %land.end if.then.i118.i: ; preds = %_ZN4llvh12StringSwitchIbbE8EndsWithENS_13StringLiteralEb.exit.i, %if.end.i.i259.i, %if.end.i.i240.i, %if.end.i.i221.i, %if.end.i.i202.i, %if.end.i.i.i br label %land.end diff --git a/bench/hermes/optimized/Triple.ll b/bench/hermes/optimized/Triple.ll index e4450003d97..6a2218ef5cb 100644 --- a/bench/hermes/optimized/Triple.ll +++ b/bench/hermes/optimized/Triple.ll @@ -1579,7 +1579,7 @@ if.end.i.i1057: ; preds = %entry br i1 %0, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit1062.thread, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit1062 _ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit1062.thread: ; preds = %entry, %if.end.i.i1057 - %ref.tmp.sroa.102.0.ph = xor i1 %cmp.i.i1049.not, true + %ref.tmp.sroa.102.0.ph = phi i8 [ 0, %entry ], [ 1, %if.end.i.i1057 ] %cmp.i.i1018.not393 = icmp ult i64 %OSName.coerce1, 8 br label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit1031 @@ -1594,8 +1594,9 @@ if.end.i.i1026: ; preds = %_ZN4llvh12StringSwi _ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit1031: ; preds = %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit1062.thread, %if.end.i.i1026, %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit1062 %cmp.i.i1018.not395 = phi i1 [ true, %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit1062 ], [ false, %if.end.i.i1026 ], [ %cmp.i.i1018.not393, %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit1062.thread ] - %ref.tmp.sroa.102.1 = phi i1 [ false, %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit1062 ], [ false, %if.end.i.i1026 ], [ %ref.tmp.sroa.102.0.ph, %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit1062.thread ] - %or.cond132 = or i1 %cmp.i.i1049.not, %ref.tmp.sroa.102.1 + %ref.tmp.sroa.102.1 = phi i8 [ 0, %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit1062 ], [ 0, %if.end.i.i1026 ], [ %ref.tmp.sroa.102.0.ph, %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit1062.thread ] + %tobool.i170 = trunc nuw i8 %ref.tmp.sroa.102.1 to i1 + %or.cond132 = or i1 %cmp.i.i1049.not, %tobool.i170 br i1 %or.cond132, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit1000, label %if.end.i.i995 if.end.i.i995: ; preds = %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit1031 @@ -1605,7 +1606,7 @@ if.end.i.i995: ; preds = %_ZN4llvh12StringSwi _ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit1000: ; preds = %if.end.i.i995, %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit1031 %cmp.i.i956.not = icmp ult i64 %OSName.coerce1, 9 - %or.cond133 = or i1 %cmp.i.i956.not, %ref.tmp.sroa.102.1 + %or.cond133 = or i1 %cmp.i.i956.not, %tobool.i170 br i1 %or.cond133, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit969, label %if.end.i.i964 if.end.i.i964: ; preds = %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit1000 @@ -1614,8 +1615,9 @@ if.end.i.i964: ; preds = %_ZN4llvh12StringSwi br i1 %3, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E7DefaultES2_.exit, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit969 _ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit969: ; preds = %if.end.i.i964, %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit1000 + %tobool.i178 = trunc nuw i8 %ref.tmp.sroa.102.1 to i1 %cmp.i.i925.not = icmp ult i64 %OSName.coerce1, 7 - %or.cond134 = or i1 %cmp.i.i925.not, %ref.tmp.sroa.102.1 + %or.cond134 = or i1 %cmp.i.i925.not, %tobool.i178 br i1 %or.cond134, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit907, label %if.end.i.i933 if.end.i.i933: ; preds = %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit969 @@ -1629,8 +1631,9 @@ if.end.i.i902: ; preds = %if.end.i.i933 br i1 %5, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E7DefaultES2_.exit, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit907 _ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit907: ; preds = %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit969, %if.end.i.i902 + %tobool.i186 = trunc nuw i8 %ref.tmp.sroa.102.1 to i1 %cmp.i.i863.not = icmp ult i64 %OSName.coerce1, 3 - %or.cond136 = or i1 %cmp.i.i863.not, %ref.tmp.sroa.102.1 + %or.cond136 = or i1 %cmp.i.i863.not, %tobool.i186 br i1 %or.cond136, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit876, label %if.end.i.i871 if.end.i.i871: ; preds = %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit907 @@ -1639,7 +1642,7 @@ if.end.i.i871: ; preds = %_ZN4llvh12StringSwi br i1 %6, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E7DefaultES2_.exit, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit876 _ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit876: ; preds = %if.end.i.i871, %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit907 - %or.cond137 = or i1 %cmp.i.i1018.not395, %ref.tmp.sroa.102.1 + %or.cond137 = or i1 %cmp.i.i1018.not395, %tobool.i186 br i1 %or.cond137, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit845, label %if.end.i.i840 if.end.i.i840: ; preds = %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit876 @@ -1648,8 +1651,9 @@ if.end.i.i840: ; preds = %_ZN4llvh12StringSwi br i1 %7, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E7DefaultES2_.exit, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit845 _ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit845: ; preds = %if.end.i.i840, %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit876 + %tobool.i194 = trunc nuw i8 %ref.tmp.sroa.102.1 to i1 %cmp.i.i801.not = icmp ult i64 %OSName.coerce1, 5 - %or.cond138 = or i1 %cmp.i.i801.not, %ref.tmp.sroa.102.1 + %or.cond138 = or i1 %cmp.i.i801.not, %tobool.i194 br i1 %or.cond138, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit814, label %if.end.i.i809 if.end.i.i809: ; preds = %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit845 @@ -1658,7 +1662,8 @@ if.end.i.i809: ; preds = %_ZN4llvh12StringSwi br i1 %8, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E7DefaultES2_.exit, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit814 _ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit814: ; preds = %if.end.i.i809, %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit845 - br i1 %or.cond136, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit783, label %if.end.i.i778 + %or.cond139 = or i1 %cmp.i.i863.not, %tobool.i194 + br i1 %or.cond139, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit783, label %if.end.i.i778 if.end.i.i778: ; preds = %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit814 %bcmp107 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(3) %OSName.coerce0, ptr noundef nonnull dereferenceable(3) @.str.83, i64 3) @@ -1666,7 +1671,9 @@ if.end.i.i778: ; preds = %_ZN4llvh12StringSwi br i1 %9, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E7DefaultES2_.exit, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit783 _ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit783: ; preds = %if.end.i.i778, %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit814 - br i1 %or.cond138, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit752, label %if.end.i.i747 + %tobool.i202 = trunc nuw i8 %ref.tmp.sroa.102.1 to i1 + %or.cond140 = or i1 %cmp.i.i801.not, %tobool.i202 + br i1 %or.cond140, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit752, label %if.end.i.i747 if.end.i.i747: ; preds = %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit783 %bcmp108 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(5) %OSName.coerce0, ptr noundef nonnull dereferenceable(5) @.str.139, i64 5) @@ -1674,7 +1681,8 @@ if.end.i.i747: ; preds = %_ZN4llvh12StringSwi br i1 %10, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E7DefaultES2_.exit, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit752 _ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit752: ; preds = %if.end.i.i747, %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit783 - br i1 %or.cond132, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit721, label %if.end.i.i716 + %or.cond141 = or i1 %cmp.i.i1049.not, %tobool.i202 + br i1 %or.cond141, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit721, label %if.end.i.i716 if.end.i.i716: ; preds = %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit752 %bcmp109 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(6) %OSName.coerce0, ptr noundef nonnull dereferenceable(6) @.str.85, i64 6) @@ -1682,7 +1690,9 @@ if.end.i.i716: ; preds = %_ZN4llvh12StringSwi br i1 %11, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E7DefaultES2_.exit, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit721 _ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit721: ; preds = %if.end.i.i716, %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit752 - br i1 %or.cond134, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit659, label %if.end.i.i685 + %tobool.i210 = trunc nuw i8 %ref.tmp.sroa.102.1 to i1 + %or.cond142 = or i1 %cmp.i.i925.not, %tobool.i210 + br i1 %or.cond142, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit659, label %if.end.i.i685 if.end.i.i685: ; preds = %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit721 %bcmp110 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(7) %OSName.coerce0, ptr noundef nonnull dereferenceable(7) @.str.86, i64 7) @@ -1695,7 +1705,9 @@ if.end.i.i654: ; preds = %if.end.i.i685 br i1 %13, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E7DefaultES2_.exit, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit659 _ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit659: ; preds = %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit721, %if.end.i.i654 - br i1 %or.cond138, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit628, label %if.end.i.i623 + %tobool.i218 = trunc nuw i8 %ref.tmp.sroa.102.1 to i1 + %or.cond144 = or i1 %cmp.i.i801.not, %tobool.i218 + br i1 %or.cond144, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit628, label %if.end.i.i623 if.end.i.i623: ; preds = %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit659 %bcmp112 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(5) %OSName.coerce0, ptr noundef nonnull dereferenceable(5) @.str.185, i64 5) @@ -1703,7 +1715,8 @@ if.end.i.i623: ; preds = %_ZN4llvh12StringSwi br i1 %14, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E7DefaultES2_.exit, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit628 _ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit628: ; preds = %if.end.i.i623, %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit659 - br i1 %or.cond134, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit597, label %if.end.i.i592 + %or.cond145 = or i1 %cmp.i.i925.not, %tobool.i218 + br i1 %or.cond145, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit597, label %if.end.i.i592 if.end.i.i592: ; preds = %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit628 %bcmp113 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(7) %OSName.coerce0, ptr noundef nonnull dereferenceable(7) @.str.88, i64 7) @@ -1711,7 +1724,9 @@ if.end.i.i592: ; preds = %_ZN4llvh12StringSwi br i1 %15, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E7DefaultES2_.exit, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit597 _ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit597: ; preds = %if.end.i.i592, %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit628 - br i1 %or.cond138, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit504, label %if.end.i.i561 + %tobool.i226 = trunc nuw i8 %ref.tmp.sroa.102.1 to i1 + %or.cond146 = or i1 %cmp.i.i801.not, %tobool.i226 + br i1 %or.cond146, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit535, label %if.end.i.i561 if.end.i.i561: ; preds = %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit597 %bcmp114 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(5) %OSName.coerce0, ptr noundef nonnull dereferenceable(5) @.str.89, i64 5) @@ -1723,14 +1738,19 @@ if.end.i.i530: ; preds = %if.end.i.i561 %17 = icmp eq i32 %bcmp115, 0 br i1 %17, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E7DefaultES2_.exit, label %if.end.i.i499 -if.end.i.i499: ; preds = %if.end.i.i530 +if.end.i.i499: ; preds = %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit597, %if.end.i.i530 + %tobool.i234 = trunc nuw i8 %ref.tmp.sroa.102.1 to i1 + %or.cond148 = or i1 %cmp.i.i801.not, %tobool.i234 + br i1 %or.cond148, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit504, label %if.end.i.i499 + +if.end.i.i499: ; preds = %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit535 %bcmp116 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(5) %OSName.coerce0, ptr noundef nonnull dereferenceable(5) @.str.91, i64 5) %18 = icmp eq i32 %bcmp116, 0 br i1 %18, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E7DefaultES2_.exit, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit504 -_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit504: ; preds = %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit597, %if.end.i.i499 +_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit504: ; preds = %if.end.i.i499, %if.end.i.i499 %cmp.i.i460.not = icmp ult i64 %OSName.coerce1, 4 - %or.cond149 = or i1 %cmp.i.i460.not, %ref.tmp.sroa.102.1 + %or.cond149 = or i1 %cmp.i.i460.not, %tobool.i234 br i1 %or.cond149, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit473, label %if.end.i.i468 if.end.i.i468: ; preds = %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit504 @@ -1739,7 +1759,9 @@ if.end.i.i468: ; preds = %_ZN4llvh12StringSwi br i1 %19, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E7DefaultES2_.exit, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit473 _ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit473: ; preds = %if.end.i.i468, %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit504 - br i1 %or.cond136, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit411, label %if.end.i.i437 + %tobool.i242 = trunc nuw i8 %ref.tmp.sroa.102.1 to i1 + %or.cond150 = or i1 %cmp.i.i863.not, %tobool.i242 + br i1 %or.cond150, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit411, label %if.end.i.i437 if.end.i.i437: ; preds = %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit473 %bcmp118 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(3) %OSName.coerce0, ptr noundef nonnull dereferenceable(3) @.str.93, i64 3) @@ -1752,7 +1774,9 @@ if.end.i.i406: ; preds = %if.end.i.i437 br i1 %21, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E7DefaultES2_.exit, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit411 _ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit411: ; preds = %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit473, %if.end.i.i406 - br i1 %or.cond149, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit349, label %if.end.i.i375 + %tobool.i250 = trunc nuw i8 %ref.tmp.sroa.102.1 to i1 + %or.cond152 = or i1 %cmp.i.i460.not, %tobool.i250 + br i1 %or.cond152, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit349, label %if.end.i.i375 if.end.i.i375: ; preds = %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit411 %bcmp120 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %OSName.coerce0, ptr noundef nonnull dereferenceable(4) @.str.95, i64 4) @@ -1765,7 +1789,9 @@ if.end.i.i344: ; preds = %if.end.i.i375 br i1 %23, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E7DefaultES2_.exit, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit349 _ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit349: ; preds = %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit411, %if.end.i.i344 - br i1 %or.cond132, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit318, label %if.end.i.i313 + %tobool.i258 = trunc nuw i8 %ref.tmp.sroa.102.1 to i1 + %or.cond154 = or i1 %cmp.i.i1049.not, %tobool.i258 + br i1 %or.cond154, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit318, label %if.end.i.i313 if.end.i.i313: ; preds = %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit349 %bcmp122 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(6) %OSName.coerce0, ptr noundef nonnull dereferenceable(6) @.str.97, i64 6) @@ -1773,7 +1799,8 @@ if.end.i.i313: ; preds = %_ZN4llvh12StringSwi br i1 %24, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E7DefaultES2_.exit, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit318 _ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit318: ; preds = %if.end.i.i313, %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit349 - br i1 %or.cond136, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit287, label %if.end.i.i282 + %or.cond155 = or i1 %cmp.i.i863.not, %tobool.i258 + br i1 %or.cond155, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit287, label %if.end.i.i282 if.end.i.i282: ; preds = %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit318 %bcmp123 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(3) %OSName.coerce0, ptr noundef nonnull dereferenceable(3) @.str.98, i64 3) @@ -1781,7 +1808,9 @@ if.end.i.i282: ; preds = %_ZN4llvh12StringSwi br i1 %25, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E7DefaultES2_.exit, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit287 _ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit287: ; preds = %if.end.i.i282, %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit318 - br i1 %or.cond137, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit256, label %if.end.i.i251 + %tobool.i266 = trunc nuw i8 %ref.tmp.sroa.102.1 to i1 + %or.cond156 = or i1 %cmp.i.i1018.not395, %tobool.i266 + br i1 %or.cond156, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit256, label %if.end.i.i251 if.end.i.i251: ; preds = %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit287 %bcmp124 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(8) %OSName.coerce0, ptr noundef nonnull dereferenceable(8) @.str.99, i64 8) @@ -1789,7 +1818,8 @@ if.end.i.i251: ; preds = %_ZN4llvh12StringSwi br i1 %26, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E7DefaultES2_.exit, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit256 _ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit256: ; preds = %if.end.i.i251, %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit287 - br i1 %or.cond149, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit225, label %if.end.i.i220 + %or.cond157 = or i1 %cmp.i.i460.not, %tobool.i266 + br i1 %or.cond157, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit225, label %if.end.i.i220 if.end.i.i220: ; preds = %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit256 %bcmp125 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %OSName.coerce0, ptr noundef nonnull dereferenceable(4) @.str.100, i64 4) @@ -1797,7 +1827,9 @@ if.end.i.i220: ; preds = %_ZN4llvh12StringSwi br i1 %27, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E7DefaultES2_.exit, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit225 _ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit225: ; preds = %if.end.i.i220, %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit256 - br i1 %or.cond134, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit194, label %if.end.i.i189 + %tobool.i274 = trunc nuw i8 %ref.tmp.sroa.102.1 to i1 + %or.cond158 = or i1 %cmp.i.i925.not, %tobool.i274 + br i1 %or.cond158, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit194, label %if.end.i.i189 if.end.i.i189: ; preds = %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit225 %bcmp126 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(7) %OSName.coerce0, ptr noundef nonnull dereferenceable(7) @.str.101, i64 7) @@ -1805,7 +1837,8 @@ if.end.i.i189: ; preds = %_ZN4llvh12StringSwi br i1 %28, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E7DefaultES2_.exit, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit194 _ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit194: ; preds = %if.end.i.i189, %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit225 - br i1 %or.cond132, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit163, label %if.end.i.i158 + %or.cond159 = or i1 %cmp.i.i1049.not, %tobool.i274 + br i1 %or.cond159, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit163, label %if.end.i.i158 if.end.i.i158: ; preds = %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit194 %bcmp127 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(6) %OSName.coerce0, ptr noundef nonnull dereferenceable(6) @.str.102, i64 6) @@ -1813,7 +1846,9 @@ if.end.i.i158: ; preds = %_ZN4llvh12StringSwi br i1 %29, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E7DefaultES2_.exit, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit163 _ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit163: ; preds = %if.end.i.i158, %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit194 - br i1 %or.cond134, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit132, label %if.end.i.i127 + %tobool.i282 = trunc nuw i8 %ref.tmp.sroa.102.1 to i1 + %or.cond160 = or i1 %cmp.i.i925.not, %tobool.i282 + br i1 %or.cond160, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit132, label %if.end.i.i127 if.end.i.i127: ; preds = %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit163 %bcmp128 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(7) %OSName.coerce0, ptr noundef nonnull dereferenceable(7) @.str.103, i64 7) @@ -1821,20 +1856,26 @@ if.end.i.i127: ; preds = %_ZN4llvh12StringSwi br i1 %30, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E7DefaultES2_.exit, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit132 _ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit132: ; preds = %if.end.i.i127, %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit163 - br i1 %or.cond132, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit, label %if.end.i.i96 + %or.cond161 = or i1 %cmp.i.i1049.not, %tobool.i282 + br i1 %or.cond161, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit101, label %if.end.i.i96 if.end.i.i96: ; preds = %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit132 %bcmp129 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(6) %OSName.coerce0, ptr noundef nonnull dereferenceable(6) @.str.104, i64 6) %31 = icmp eq i32 %bcmp129, 0 - br i1 %31, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E7DefaultES2_.exit, label %if.end.i.i + br i1 %31, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E7DefaultES2_.exit, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit101 + +_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit101: ; preds = %if.end.i.i96, %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit132 + %tobool.i290 = trunc nuw i8 %ref.tmp.sroa.102.1 to i1 + %or.cond162 = or i1 %cmp.i.i1049.not, %tobool.i290 + br i1 %or.cond162, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit, label %if.end.i.i -if.end.i.i: ; preds = %if.end.i.i96 +if.end.i.i: ; preds = %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit101 %bcmp130 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(6) %OSName.coerce0, ptr noundef nonnull dereferenceable(6) @.str.105, i64 6) %32 = icmp eq i32 %bcmp130, 0 br i1 %32, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E7DefaultES2_.exit, label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit -_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit: ; preds = %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit132, %if.end.i.i - %spec.select = zext i1 %ref.tmp.sroa.102.1 to i32 +_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit: ; preds = %if.end.i.i, %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit101 + %spec.select = zext nneg i8 %ref.tmp.sroa.102.1 to i32 br label %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E7DefaultES2_.exit _ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E7DefaultES2_.exit: ; preds = %_ZN4llvh12StringSwitchINS_6Triple6OSTypeES2_E10StartsWithENS_13StringLiteralES2_.exit, %if.end.i.i, %if.end.i.i96, %if.end.i.i127, %if.end.i.i158, %if.end.i.i189, %if.end.i.i220, %if.end.i.i251, %if.end.i.i282, %if.end.i.i313, %if.end.i.i344, %if.end.i.i375, %if.end.i.i406, %if.end.i.i437, %if.end.i.i468, %if.end.i.i499, %if.end.i.i530, %if.end.i.i561, %if.end.i.i592, %if.end.i.i623, %if.end.i.i654, %if.end.i.i685, %if.end.i.i716, %if.end.i.i747, %if.end.i.i778, %if.end.i.i809, %if.end.i.i840, %if.end.i.i871, %if.end.i.i902, %if.end.i.i933, %if.end.i.i964, %if.end.i.i995, %if.end.i.i1026 diff --git a/bench/html5ever-rs/optimized/4e9vfrmeneic1jap.ll b/bench/html5ever-rs/optimized/4e9vfrmeneic1jap.ll index 602ca9fbf40..6b19c68afd9 100644 --- a/bench/html5ever-rs/optimized/4e9vfrmeneic1jap.ll +++ b/bench/html5ever-rs/optimized/4e9vfrmeneic1jap.ll @@ -456,13 +456,13 @@ define void @_ZN9html5ever9tokenizer11option_push17h81af38e9f2c86d71E(ptr noalia br i1 %12, label %23, label %36 13: ; preds = %7 - %14 = trunc nuw i32 %1 to i8 + %14 = trunc nuw nsw i32 %1 to i8 store i8 %14, ptr %3, align 4, !alias.scope !67, !noalias !59 br label %58 15: ; preds = %9 %16 = lshr i32 %1, 6 - %17 = trunc nuw i32 %16 to i8 + %17 = trunc nuw nsw i32 %16 to i8 %18 = or disjoint i8 %17, -64 store i8 %18, ptr %3, align 4, !alias.scope !67, !noalias !59 %19 = trunc i32 %1 to i8 @@ -474,7 +474,7 @@ define void @_ZN9html5ever9tokenizer11option_push17h81af38e9f2c86d71E(ptr noalia 23: ; preds = %11 %24 = lshr i32 %1, 12 - %25 = trunc nuw i32 %24 to i8 + %25 = trunc nuw nsw i32 %24 to i8 %26 = or disjoint i8 %25, -32 store i8 %26, ptr %3, align 4, !alias.scope !67, !noalias !59 %27 = lshr i32 %1, 6 @@ -554,13 +554,13 @@ common.resume: ; preds = %55 br i1 %68, label %79, label %92 69: ; preds = %62 - %70 = trunc nuw i32 %1 to i8 + %70 = trunc nuw nsw i32 %1 to i8 store i8 %70, ptr %5, align 4, !alias.scope !73 br label %_ZN4core4char7methods15encode_utf8_raw17h0195287417066071E.exit 71: ; preds = %65 %72 = lshr i32 %1, 6 - %73 = trunc nuw i32 %72 to i8 + %73 = trunc nuw nsw i32 %72 to i8 %74 = or disjoint i8 %73, -64 store i8 %74, ptr %5, align 4, !alias.scope !73 %75 = trunc i32 %1 to i8 @@ -572,7 +572,7 @@ common.resume: ; preds = %55 79: ; preds = %67 %80 = lshr i32 %1, 12 - %81 = trunc nuw i32 %80 to i8 + %81 = trunc nuw nsw i32 %80 to i8 %82 = or disjoint i8 %81, -32 store i8 %82, ptr %5, align 4, !alias.scope !73 %83 = lshr i32 %1, 6 diff --git a/bench/jsonnet/optimized/vm.ll b/bench/jsonnet/optimized/vm.ll index 695c35e955c..510273faff6 100644 --- a/bench/jsonnet/optimized/vm.ll +++ b/bench/jsonnet/optimized/vm.ll @@ -52271,7 +52271,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i: ; p br label %_ZNSt7__cxx119to_stringEi.exit 80: ; preds = %._crit_edge.i.i - %81 = trunc nuw i32 %.0.lcssa.i.i to i8 + %81 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %82 = or disjoint i8 %81, 48 br label %_ZNSt7__cxx119to_stringEi.exit @@ -54152,7 +54152,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i84: ; _ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerEEEE3addEi.exit86: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i84, %337 %338 = phi ptr [ %.pre.i.i85, %337 ], [ %330, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i84 ] - %339 = trunc i32 %.pr.i to i8 + %339 = trunc nuw nsw i32 %.pr.i to i8 %340 = getelementptr inbounds nuw i8, ptr %338, i64 %328 store i8 %339, ptr %340, align 1, !tbaa !21 store i64 %329, ptr %29, align 8, !tbaa !22 @@ -54360,7 +54360,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i26: ; _ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerEEEE3addEi.exit28: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i26, %54 %55 = phi ptr [ %.pre.i.i27, %54 ], [ %46, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i26 ] - %56 = trunc i32 %4 to i8 + %56 = trunc nuw nsw i32 %4 to i8 %57 = getelementptr inbounds nuw i8, ptr %55, i64 %44 store i8 %56, ptr %57, align 1, !tbaa !21 store i64 %45, ptr %43, align 8, !tbaa !22 @@ -54677,7 +54677,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i38: ; _ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerEEEE3addEi.exit40: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i38, %193 %194 = phi ptr [ %.pre.i.i39, %193 ], [ %186, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i38 ] - %195 = trunc i32 %.pr.i to i8 + %195 = trunc nuw nsw i32 %.pr.i to i8 %196 = getelementptr inbounds nuw i8, ptr %194, i64 %184 store i8 %195, ptr %196, align 1, !tbaa !21 store i64 %185, ptr %91, align 8, !tbaa !22 @@ -54746,7 +54746,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i44: ; _ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerEEEE3addEi.exit46: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i44, %226 %227 = phi ptr [ %.pre.i.i45, %226 ], [ %219, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i44 ] - %228 = trunc i32 %.pr.i to i8 + %228 = trunc nuw nsw i32 %.pr.i to i8 %229 = getelementptr inbounds nuw i8, ptr %227, i64 %217 store i8 %228, ptr %229, align 1, !tbaa !21 store i64 %218, ptr %91, align 8, !tbaa !22 @@ -64409,7 +64409,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit: ; preds = %15, %2, %5, %9, %13 br label %_ZNSt8__detail18__to_chars_10_implImEEvPcjT_.exit 51: ; preds = %._crit_edge.i - %52 = trunc nuw i64 %.0.lcssa.i to i8 + %52 = trunc nuw nsw i64 %.0.lcssa.i to i8 %53 = or disjoint i8 %52, 48 br label %_ZNSt8__detail18__to_chars_10_implImEEvPcjT_.exit @@ -68388,7 +68388,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i: ; preds = %22, %20, %16, %12, br label %_ZNSt7__cxx119to_stringEm.exit 58: ; preds = %._crit_edge.i.i - %59 = trunc nuw i64 %.0.lcssa.i.i to i8 + %59 = trunc nuw nsw i64 %.0.lcssa.i.i to i8 %60 = or disjoint i8 %59, 48 br label %_ZNSt7__cxx119to_stringEm.exit @@ -68579,7 +68579,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i17: ; preds = %109, %107, %103, %9 br label %148 145: ; preds = %._crit_edge.i.i19 - %146 = trunc nuw i64 %.0.lcssa.i.i20 to i8 + %146 = trunc nuw nsw i64 %.0.lcssa.i.i20 to i8 %147 = or disjoint i8 %146, 48 br label %148 diff --git a/bench/libquic/optimized/pickle.ll b/bench/libquic/optimized/pickle.ll index a49d38261d8..9ac13fc2ef1 100644 --- a/bench/libquic/optimized/pickle.ll +++ b/bench/libquic/optimized/pickle.ll @@ -659,9 +659,8 @@ define noundef zeroext i1 @_ZN4base14PickleIterator12ReadString16EPNSt7__cxx1112 br i1 %.not.i, label %17, label %_ZN4base14PickleIterator7ReadIntEPi.exit 17: ; preds = %11 - %18 = and i32 %13, 1073741824 - %.not7.i = icmp eq i32 %18, 0 - br i1 %.not7.i, label %19, label %._crit_edge.i.i + %18 = icmp slt i32 %13, 0 + br i1 %18, label %._crit_edge.i.i, label %19 19: ; preds = %17 %20 = sub i64 %4, %10 @@ -716,9 +715,8 @@ define noundef zeroext i1 @_ZN4base14PickleIterator17ReadStringPiece16EPNS_16Bas br i1 %.not.i, label %17, label %_ZN4base14PickleIterator7ReadIntEPi.exit 17: ; preds = %11 - %18 = and i32 %13, 1073741824 - %.not7.i = icmp eq i32 %18, 0 - br i1 %.not7.i, label %19, label %._crit_edge.i.i + %18 = icmp slt i32 %13, 0 + br i1 %18, label %._crit_edge.i.i, label %19 19: ; preds = %17 %20 = sub i64 %4, %10 diff --git a/bench/llama.cpp/optimized/chat.ll b/bench/llama.cpp/optimized/chat.ll index 10cbed4c0a5..0e52d4521b3 100644 --- a/bench/llama.cpp/optimized/chat.ll +++ b/bench/llama.cpp/optimized/chat.ll @@ -74434,7 +74434,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i: ; p br label %_ZNSt7__cxx119to_stringEi.exit 59: ; preds = %._crit_edge.i.i - %60 = trunc nuw i32 %.0.lcssa.i.i to i8 + %60 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %61 = or disjoint i8 %60, 48 br label %_ZNSt7__cxx119to_stringEi.exit @@ -78123,7 +78123,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit: ; preds = %15, %2, %5, %9, %13 br label %_ZNSt8__detail18__to_chars_10_implImEEvPcjT_.exit 51: ; preds = %._crit_edge.i - %52 = trunc nuw i64 %.0.lcssa.i to i8 + %52 = trunc nuw nsw i64 %.0.lcssa.i to i8 %53 = or disjoint i8 %52, 48 br label %_ZNSt8__detail18__to_chars_10_implImEEvPcjT_.exit @@ -85470,7 +85470,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i86: ; _ZN8nlohmann16json_abi_v3_11_36detail5lexerINS0_10basic_jsonINS0_11ordered_mapESt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEENS1_22iterator_input_adapterIN9__gnu_cxx17__normal_iteratorIPKcSB_EEEEE3addEi.exit88: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i86, %282 %283 = phi ptr [ %.pre.i.i87, %282 ], [ %275, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i86 ] - %284 = trunc nuw i32 %.145100 to i8 + %284 = trunc nuw nsw i32 %.145100 to i8 %285 = getelementptr inbounds nuw i8, ptr %283, i64 %273 store i8 %284, ptr %285, align 1, !tbaa !12 store i64 %274, ptr %32, align 8, !tbaa !11 @@ -85641,7 +85641,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i89: ; _ZN8nlohmann16json_abi_v3_11_36detail5lexerINS0_10basic_jsonINS0_11ordered_mapESt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEENS1_22iterator_input_adapterIN9__gnu_cxx17__normal_iteratorIPKcSB_EEEEE3addEi.exit91: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i89, %355 %356 = phi ptr [ %.pre.i.i90, %355 ], [ %348, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i89 ] - %357 = trunc i32 %.pr.i to i8 + %357 = trunc nuw nsw i32 %.pr.i to i8 %358 = getelementptr inbounds nuw i8, ptr %356, i64 %346 store i8 %357, ptr %358, align 1, !tbaa !12 store i64 %347, ptr %32, align 8, !tbaa !11 @@ -85861,7 +85861,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i26: ; _ZN8nlohmann16json_abi_v3_11_36detail5lexerINS0_10basic_jsonINS0_11ordered_mapESt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEENS1_22iterator_input_adapterIN9__gnu_cxx17__normal_iteratorIPKcSB_EEEEE3addEi.exit28: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i26, %55 %56 = phi ptr [ %.pre.i.i27, %55 ], [ %47, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i26 ] - %57 = trunc i32 %4 to i8 + %57 = trunc nuw nsw i32 %4 to i8 %58 = getelementptr inbounds nuw i8, ptr %56, i64 %45 store i8 %57, ptr %58, align 1, !tbaa !12 store i64 %46, ptr %44, align 8, !tbaa !11 @@ -86176,7 +86176,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i38: ; _ZN8nlohmann16json_abi_v3_11_36detail5lexerINS0_10basic_jsonINS0_11ordered_mapESt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEENS1_22iterator_input_adapterIN9__gnu_cxx17__normal_iteratorIPKcSB_EEEEE3addEi.exit40: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i38, %194 %195 = phi ptr [ %.pre.i.i39, %194 ], [ %187, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i38 ] - %196 = trunc i32 %.pr.i to i8 + %196 = trunc nuw nsw i32 %.pr.i to i8 %197 = getelementptr inbounds nuw i8, ptr %195, i64 %185 store i8 %196, ptr %197, align 1, !tbaa !12 store i64 %186, ptr %89, align 8, !tbaa !11 @@ -86246,7 +86246,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i44: ; _ZN8nlohmann16json_abi_v3_11_36detail5lexerINS0_10basic_jsonINS0_11ordered_mapESt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEENS1_22iterator_input_adapterIN9__gnu_cxx17__normal_iteratorIPKcSB_EEEEE3addEi.exit46: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i44, %228 %229 = phi ptr [ %.pre.i.i45, %228 ], [ %221, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i44 ] - %230 = trunc i32 %.pr.i to i8 + %230 = trunc nuw nsw i32 %.pr.i to i8 %231 = getelementptr inbounds nuw i8, ptr %229, i64 %219 store i8 %230, ptr %231, align 1, !tbaa !12 store i64 %220, ptr %89, align 8, !tbaa !11 @@ -100634,7 +100634,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i: ; preds = %20, %18, %14, %10, br label %_ZNSt7__cxx119to_stringEm.exit 56: ; preds = %._crit_edge.i.i - %57 = trunc nuw i64 %.0.lcssa.i.i to i8 + %57 = trunc nuw nsw i64 %.0.lcssa.i.i to i8 %58 = or disjoint i8 %57, 48 br label %_ZNSt7__cxx119to_stringEm.exit @@ -100739,7 +100739,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i8: ; preds = %73, %71, %67, %63, br label %112 109: ; preds = %._crit_edge.i.i10 - %110 = trunc nuw i64 %.0.lcssa.i.i11 to i8 + %110 = trunc nuw nsw i64 %.0.lcssa.i.i11 to i8 %111 = or disjoint i8 %110, 48 br label %112 @@ -112755,7 +112755,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i: ; preds = %16, %14, %10, %6, % br label %_ZNSt7__cxx119to_stringEm.exit 52: ; preds = %._crit_edge.i.i - %53 = trunc nuw i64 %.0.lcssa.i.i to i8 + %53 = trunc nuw nsw i64 %.0.lcssa.i.i to i8 %54 = or disjoint i8 %53, 48 br label %_ZNSt7__cxx119to_stringEm.exit @@ -118788,7 +118788,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i: ; preds = %24, %22, %18, %14, br label %_ZNSt7__cxx119to_stringEl.exit 60: ; preds = %._crit_edge.i.i - %61 = trunc nuw i64 %.0.lcssa.i.i to i8 + %61 = trunc nuw nsw i64 %.0.lcssa.i.i to i8 %62 = or disjoint i8 %61, 48 br label %_ZNSt7__cxx119to_stringEl.exit @@ -131065,22 +131065,23 @@ _ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i: ; preds = %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE6_M_strISA_EENSt9enable_ifIXsr8__detail20__is_contiguous_iterIT_EE5valueENSB_13__string_viewEE4typeEv.exit9.i.i %bcmp.i = tail call i32 @bcmp(ptr %.sroa.0.2.i.i.i, ptr %.sroa.0.2.i2.i.i, i64 %.sroa.speculated.i.i.i) - %.not14.i.i.i = icmp eq i32 %bcmp.i, 0 - br i1 %.not14.i.i.i, label %select.unfold.i.i.i, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit - -select.unfold.i.i.i: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i, %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE6_M_strISA_EENSt9enable_ifIXsr8__detail20__is_contiguous_iterIT_EE5valueENSB_13__string_viewEE4typeEv.exit9.i.i + %.not14.i.i.i = icmp ne i32 %bcmp.i, 0 %63 = sub i64 %.sroa.4.2.i.i.i, %.sroa.4.2.i3.i.i %64 = icmp sgt i64 %63, 2147483647 - br i1 %64, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit, label %65 + %or.cond.i = select i1 %.not14.i.i.i, i1 true, i1 %64 + br i1 %or.cond.i, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit, label %65 + +select.unfold.i.i.i: ; preds = %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE6_M_strISA_EENSt9enable_ifIXsr8__detail20__is_contiguous_iterIT_EE5valueENSB_13__string_viewEE4typeEv.exit9.i.i + %.old.i = sub i64 %.sroa.4.2.i.i.i, %.sroa.4.2.i3.i.i + %.old2.i = icmp sgt i64 %.old.i, 2147483647 + br i1 %.old2.i, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit, label %65 -65: ; preds = %select.unfold.i.i.i - %spec.select1522.i.i.i = tail call i64 @llvm.smax.i64(i64 %63, i64 -2147483648) - %66 = and i64 %spec.select1522.i.i.i, 4294967295 - %67 = icmp eq i64 %66, 0 +65: ; preds = %select.unfold.i.i.i, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i + %66 = icmp eq i64 %.sroa.4.2.i.i.i, %.sroa.4.2.i3.i.i br label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit _ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit: ; preds = %65, %select.unfold.i.i.i, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i, %9, %11, %15, %21, %2 - %.0 = phi i1 [ true, %2 ], [ false, %21 ], [ false, %15 ], [ false, %11 ], [ false, %9 ], [ false, %select.unfold.i.i.i ], [ %67, %65 ], [ false, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i ] + %.0 = phi i1 [ true, %2 ], [ false, %21 ], [ false, %15 ], [ false, %11 ], [ false, %9 ], [ false, %select.unfold.i.i.i ], [ %66, %65 ], [ false, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i ] ret i1 %.0 } @@ -201679,7 +201680,7 @@ _ZN8nlohmann16json_abi_v3_11_36detail10serializerINS0_10basic_jsonINS0_11ordered %.0.lcssa50 = phi ptr [ %11, %._crit_edge.thread ], [ %.0.lcssa, %._crit_edge ] %.1.lcssa49 = phi i64 [ %1, %._crit_edge.thread ], [ %.1.lcssa, %._crit_edge ] %51 = phi i64 [ 1, %._crit_edge.thread ], [ %27, %._crit_edge ] - %52 = trunc nuw i64 %.1.lcssa49 to i8 + %52 = trunc nuw nsw i64 %.1.lcssa49 to i8 %53 = or disjoint i8 %52, 48 %54 = getelementptr inbounds i8, ptr %.0.lcssa50, i64 -1 store i8 %53, ptr %54, align 1, !tbaa !12 @@ -201851,7 +201852,7 @@ _ZN8nlohmann16json_abi_v3_11_36detail10serializerINS0_10basic_jsonINS0_11ordered %.0.lcssa61 = phi ptr [ %31, %._crit_edge.thread ], [ %.0.lcssa, %._crit_edge ] %.1.lcssa60 = phi i64 [ %1, %._crit_edge.thread ], [ %.1.lcssa, %._crit_edge ] %71 = phi i64 [ 1, %._crit_edge.thread ], [ %47, %._crit_edge ] - %72 = trunc nuw i64 %.1.lcssa60 to i8 + %72 = trunc nuw nsw i64 %.1.lcssa60 to i8 %73 = or disjoint i8 %72, 48 %74 = getelementptr inbounds i8, ptr %.0.lcssa61, i64 -1 store i8 %73, ptr %74, align 1, !tbaa !12 @@ -202496,7 +202497,7 @@ define linkonce_odr noundef nonnull ptr @_ZN8nlohmann16json_abi_v3_11_36detail9d 62: ; preds = %60 %63 = getelementptr i8, ptr %.pn, i64 4 store i8 48, ptr %.025.i, align 1, !tbaa !12 - %64 = trunc nuw i32 %.0.i to i8 + %64 = trunc nuw nsw i32 %.0.i to i8 %65 = or disjoint i8 %64, 48 %66 = getelementptr i8, ptr %.pn, i64 5 store i8 %65, ptr %63, align 1, !tbaa !12 @@ -202507,7 +202508,7 @@ define linkonce_odr noundef nonnull ptr @_ZN8nlohmann16json_abi_v3_11_36detail9d br i1 %68, label %69, label %76 69: ; preds = %67 - %.lhs.trunc.i = trunc nuw i32 %.0.i to i8 + %.lhs.trunc.i = trunc nuw nsw i32 %.0.i to i8 %70 = udiv i8 %.lhs.trunc.i, 10 %71 = or disjoint i8 %70, 48 %72 = getelementptr i8, ptr %.pn, i64 4 @@ -202519,9 +202520,9 @@ define linkonce_odr noundef nonnull ptr @_ZN8nlohmann16json_abi_v3_11_36detail9d br label %_ZN8nlohmann16json_abi_v3_11_36detail9dtoa_impl15append_exponentEPci.exit 76: ; preds = %67 - %.lhs.trunc29.i = trunc i32 %.0.i to i16 + %.lhs.trunc29.i = trunc nuw nsw i32 %.0.i to i16 %77 = udiv i16 %.lhs.trunc29.i, 100 - %78 = trunc i16 %77 to i8 + %78 = trunc nuw nsw i16 %77 to i8 %79 = add nuw nsw i8 %78, 48 %80 = getelementptr i8, ptr %.pn, i64 4 store i8 %79, ptr %.025.i, align 1, !tbaa !12 @@ -202936,10 +202937,10 @@ _ZN8nlohmann16json_abi_v3_11_36detail9dtoa_impl5diyfp3subERKS3_S5_.exit77: ; pre %37 = zext nneg i32 %36 to i64 %38 = shl nuw nsw i64 1, %37 %39 = lshr i64 %18, %37 - %40 = trunc i64 %39 to i32 + %40 = trunc nuw i64 %39 to i32 %41 = add nsw i64 %38, -1 %42 = and i64 %18, %41 - %.not = icmp eq i32 %40, 0 + %.not = icmp eq i64 %39, 0 br i1 %.not, label %43, label %44 43: ; preds = %_ZN8nlohmann16json_abi_v3_11_36detail9dtoa_impl5diyfp3subERKS3_S5_.exit77 @@ -202947,39 +202948,39 @@ _ZN8nlohmann16json_abi_v3_11_36detail9dtoa_impl5diyfp3subERKS3_S5_.exit77: ; pre unreachable 44: ; preds = %_ZN8nlohmann16json_abi_v3_11_36detail9dtoa_impl5diyfp3subERKS3_S5_.exit77 - %45 = icmp ugt i32 %40, 999999999 + %45 = icmp samesign ugt i64 %39, 999999999 br i1 %45, label %_ZN8nlohmann16json_abi_v3_11_36detail9dtoa_impl18find_largest_pow10EjRj.exit.preheader, label %46 46: ; preds = %44 - %47 = icmp samesign ugt i32 %40, 99999999 + %47 = icmp samesign ugt i64 %39, 99999999 br i1 %47, label %_ZN8nlohmann16json_abi_v3_11_36detail9dtoa_impl18find_largest_pow10EjRj.exit.preheader, label %48 48: ; preds = %46 - %49 = icmp samesign ugt i32 %40, 9999999 + %49 = icmp samesign ugt i64 %39, 9999999 br i1 %49, label %_ZN8nlohmann16json_abi_v3_11_36detail9dtoa_impl18find_largest_pow10EjRj.exit.preheader, label %50 50: ; preds = %48 - %51 = icmp samesign ugt i32 %40, 999999 + %51 = icmp samesign ugt i64 %39, 999999 br i1 %51, label %_ZN8nlohmann16json_abi_v3_11_36detail9dtoa_impl18find_largest_pow10EjRj.exit.preheader, label %52 52: ; preds = %50 - %53 = icmp samesign ugt i32 %40, 99999 + %53 = icmp samesign ugt i64 %39, 99999 br i1 %53, label %_ZN8nlohmann16json_abi_v3_11_36detail9dtoa_impl18find_largest_pow10EjRj.exit.preheader, label %54 54: ; preds = %52 - %55 = icmp samesign ugt i32 %40, 9999 + %55 = icmp samesign ugt i64 %39, 9999 br i1 %55, label %_ZN8nlohmann16json_abi_v3_11_36detail9dtoa_impl18find_largest_pow10EjRj.exit.preheader, label %56 56: ; preds = %54 - %57 = icmp samesign ugt i32 %40, 999 + %57 = icmp samesign ugt i64 %39, 999 br i1 %57, label %_ZN8nlohmann16json_abi_v3_11_36detail9dtoa_impl18find_largest_pow10EjRj.exit.preheader, label %58 58: ; preds = %56 - %59 = icmp samesign ugt i32 %40, 99 + %59 = icmp samesign ugt i64 %39, 99 br i1 %59, label %_ZN8nlohmann16json_abi_v3_11_36detail9dtoa_impl18find_largest_pow10EjRj.exit.preheader, label %60 60: ; preds = %58 - %61 = icmp samesign ugt i32 %40, 9 + %61 = icmp samesign ugt i64 %39, 9 %..i = select i1 %61, i32 10, i32 1 %.20.i = select i1 %61, i32 2, i32 1 br label %_ZN8nlohmann16json_abi_v3_11_36detail9dtoa_impl18find_largest_pow10EjRj.exit.preheader @@ -203003,7 +203004,7 @@ _ZN8nlohmann16json_abi_v3_11_36detail9dtoa_impl18find_largest_pow10EjRj.exit: ; unreachable 66: ; preds = %_ZN8nlohmann16json_abi_v3_11_36detail9dtoa_impl18find_largest_pow10EjRj.exit - %67 = trunc nuw i32 %62 to i8 + %67 = trunc nuw nsw i32 %62 to i8 %68 = or disjoint i8 %67, 48 %69 = load i32, ptr %1, align 4, !tbaa !183 %70 = add nsw i32 %69, 1 @@ -203065,7 +203066,7 @@ _ZN8nlohmann16json_abi_v3_11_36detail9dtoa_impl18find_largest_pow10EjRj.exit: ; 94: ; preds = %89 %95 = and i64 %90, %41 - %96 = trunc nuw i64 %91 to i8 + %96 = trunc nuw nsw i64 %91 to i8 %97 = or disjoint i8 %96, 48 %98 = load i32, ptr %1, align 4, !tbaa !183 %99 = add nsw i32 %98, 1 @@ -241410,22 +241411,23 @@ _ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i: ; preds = %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE6_M_strISA_EENSt9enable_ifIXsr8__detail20__is_contiguous_iterIT_EE5valueENSB_13__string_viewEE4typeEv.exit.i.i %bcmp.i = tail call i32 @bcmp(ptr %.sroa.0.2.i.i.i, ptr nonnull %1, i64 %.sroa.speculated.i.i.i) - %.not14.i.i.i = icmp eq i32 %bcmp.i, 0 - br i1 %.not14.i.i.i, label %select.unfold.i.i.i, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EEPKNSt15iterator_traitsISC_E10value_typeE.exit - -select.unfold.i.i.i: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i, %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE6_M_strISA_EENSt9enable_ifIXsr8__detail20__is_contiguous_iterIT_EE5valueENSB_13__string_viewEE4typeEv.exit.i.i + %.not14.i.i.i = icmp ne i32 %bcmp.i, 0 %14 = sub i64 %.sroa.4.2.i.i.i, %13 %15 = icmp sgt i64 %14, 2147483647 - br i1 %15, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EEPKNSt15iterator_traitsISC_E10value_typeE.exit, label %16 + %or.cond.i = or i1 %15, %.not14.i.i.i + br i1 %or.cond.i, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EEPKNSt15iterator_traitsISC_E10value_typeE.exit, label %16 + +select.unfold.i.i.i: ; preds = %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE6_M_strISA_EENSt9enable_ifIXsr8__detail20__is_contiguous_iterIT_EE5valueENSB_13__string_viewEE4typeEv.exit.i.i + %.old.i = sub i64 %.sroa.4.2.i.i.i, %13 + %.old2.i = icmp sgt i64 %.old.i, 2147483647 + br i1 %.old2.i, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EEPKNSt15iterator_traitsISC_E10value_typeE.exit, label %16 -16: ; preds = %select.unfold.i.i.i - %spec.select1522.i.i.i = tail call i64 @llvm.smax.i64(i64 %14, i64 -2147483648) - %17 = and i64 %spec.select1522.i.i.i, 4294967295 - %18 = icmp ne i64 %17, 0 +16: ; preds = %select.unfold.i.i.i, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i + %17 = icmp ne i64 %.sroa.4.2.i.i.i, %13 br label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EEPKNSt15iterator_traitsISC_E10value_typeE.exit _ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EEPKNSt15iterator_traitsISC_E10value_typeE.exit: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i, %select.unfold.i.i.i, %16 - %.3.i.i.i = phi i1 [ true, %select.unfold.i.i.i ], [ %18, %16 ], [ true, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i ] + %.3.i.i.i = phi i1 [ true, %select.unfold.i.i.i ], [ %17, %16 ], [ true, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i ] ret i1 %.3.i.i.i } diff --git a/bench/llama.cpp/optimized/json-schema-to-grammar.ll b/bench/llama.cpp/optimized/json-schema-to-grammar.ll index 29a78f6921a..e13b4d39744 100644 --- a/bench/llama.cpp/optimized/json-schema-to-grammar.ll +++ b/bench/llama.cpp/optimized/json-schema-to-grammar.ll @@ -35459,7 +35459,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i: ; p br label %_ZNSt7__cxx119to_stringEi.exit 59: ; preds = %._crit_edge.i.i - %60 = trunc nuw i32 %.0.lcssa.i.i to i8 + %60 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %61 = or disjoint i8 %60, 48 br label %_ZNSt7__cxx119to_stringEi.exit @@ -36028,7 +36028,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i: ; p br label %_ZNSt7__cxx119to_stringEi.exit 137: ; preds = %._crit_edge.i.i - %138 = trunc nuw i32 %.0.lcssa.i.i to i8 + %138 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %139 = or disjoint i8 %138, 48 br label %_ZNSt7__cxx119to_stringEi.exit @@ -36247,7 +36247,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i81: ; br label %_ZNSt7__cxx119to_stringEi.exit89 226: ; preds = %._crit_edge.i.i82 - %227 = trunc nuw i32 %.0.lcssa.i.i83 to i8 + %227 = trunc nuw nsw i32 %.0.lcssa.i.i83 to i8 %228 = or disjoint i8 %227, 48 br label %_ZNSt7__cxx119to_stringEi.exit89 @@ -36584,7 +36584,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i123: br label %_ZNSt7__cxx119to_stringEi.exit131 363: ; preds = %._crit_edge.i.i124 - %364 = trunc nuw i32 %.0.lcssa.i.i125 to i8 + %364 = trunc nuw nsw i32 %.0.lcssa.i.i125 to i8 %365 = or disjoint i8 %364, 48 br label %_ZNSt7__cxx119to_stringEi.exit131 @@ -37430,22 +37430,23 @@ _ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i: ; preds = %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE6_M_strISA_EENSt9enable_ifIXsr8__detail20__is_contiguous_iterIT_EE5valueENSB_13__string_viewEE4typeEv.exit9.i.i %bcmp.i = tail call i32 @bcmp(ptr %.sroa.0.2.i.i.i, ptr %.sroa.0.2.i2.i.i, i64 %.sroa.speculated.i.i.i) - %.not14.i.i.i = icmp eq i32 %bcmp.i, 0 - br i1 %.not14.i.i.i, label %select.unfold.i.i.i, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit - -select.unfold.i.i.i: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i, %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE6_M_strISA_EENSt9enable_ifIXsr8__detail20__is_contiguous_iterIT_EE5valueENSB_13__string_viewEE4typeEv.exit9.i.i + %.not14.i.i.i = icmp ne i32 %bcmp.i, 0 %63 = sub i64 %.sroa.4.2.i.i.i, %.sroa.4.2.i3.i.i %64 = icmp sgt i64 %63, 2147483647 - br i1 %64, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit, label %65 + %or.cond.i = select i1 %.not14.i.i.i, i1 true, i1 %64 + br i1 %or.cond.i, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit, label %65 + +select.unfold.i.i.i: ; preds = %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE6_M_strISA_EENSt9enable_ifIXsr8__detail20__is_contiguous_iterIT_EE5valueENSB_13__string_viewEE4typeEv.exit9.i.i + %.old.i = sub i64 %.sroa.4.2.i.i.i, %.sroa.4.2.i3.i.i + %.old2.i = icmp sgt i64 %.old.i, 2147483647 + br i1 %.old2.i, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit, label %65 -65: ; preds = %select.unfold.i.i.i - %spec.select1522.i.i.i = tail call i64 @llvm.smax.i64(i64 %63, i64 -2147483648) - %66 = and i64 %spec.select1522.i.i.i, 4294967295 - %67 = icmp eq i64 %66, 0 +65: ; preds = %select.unfold.i.i.i, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i + %66 = icmp eq i64 %.sroa.4.2.i.i.i, %.sroa.4.2.i3.i.i br label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit _ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit: ; preds = %65, %select.unfold.i.i.i, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i, %9, %11, %15, %21, %2 - %.0 = phi i1 [ true, %2 ], [ false, %21 ], [ false, %15 ], [ false, %11 ], [ false, %9 ], [ false, %select.unfold.i.i.i ], [ %67, %65 ], [ false, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i ] + %.0 = phi i1 [ true, %2 ], [ false, %21 ], [ false, %15 ], [ false, %11 ], [ false, %9 ], [ false, %select.unfold.i.i.i ], [ %66, %65 ], [ false, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i ] ret i1 %.0 } @@ -46853,7 +46854,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i: ; preds = %1342, %1340, %1336, br label %1379 1376: ; preds = %._crit_edge.i.i727 - %1377 = trunc nuw i64 %.0.lcssa.i.i to i8 + %1377 = trunc nuw nsw i64 %.0.lcssa.i.i to i8 %1378 = or disjoint i8 %1377, 48 br label %1379 @@ -50532,7 +50533,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i: ; preds = %71, %69, %65, %61, br label %108 105: ; preds = %._crit_edge.i.i26 - %106 = trunc nuw i64 %.0.lcssa.i.i to i8 + %106 = trunc nuw nsw i64 %.0.lcssa.i.i to i8 %107 = or disjoint i8 %106, 48 br label %108 @@ -56187,7 +56188,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit: ; preds = %15, %2, %5, %9, %13 br label %_ZNSt8__detail18__to_chars_10_implImEEvPcjT_.exit 51: ; preds = %._crit_edge.i - %52 = trunc nuw i64 %.0.lcssa.i to i8 + %52 = trunc nuw nsw i64 %.0.lcssa.i to i8 %53 = or disjoint i8 %52, 48 br label %_ZNSt8__detail18__to_chars_10_implImEEvPcjT_.exit @@ -56582,7 +56583,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i: ; p br label %_ZNSt7__cxx119to_stringEi.exit 172: ; preds = %._crit_edge.i.i - %173 = trunc nuw i32 %.0.lcssa.i.i to i8 + %173 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %174 = or disjoint i8 %173, 48 br label %_ZNSt7__cxx119to_stringEi.exit @@ -57061,7 +57062,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i122: br label %_ZNSt7__cxx119to_stringEi.exit130 367: ; preds = %._crit_edge.i.i123 - %368 = trunc nuw i32 %.0.lcssa.i.i124 to i8 + %368 = trunc nuw nsw i32 %.0.lcssa.i.i124 to i8 %369 = or disjoint i8 %368, 48 br label %_ZNSt7__cxx119to_stringEi.exit130 @@ -59832,7 +59833,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i: ; p br label %_ZNSt7__cxx119to_stringEi.exit 96: ; preds = %._crit_edge.i.i - %97 = trunc nuw i32 %.0.lcssa.i.i to i8 + %97 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %98 = or disjoint i8 %97, 48 br label %_ZNSt7__cxx119to_stringEi.exit @@ -59948,7 +59949,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i138: br label %_ZNSt7__cxx119to_stringEi.exit146 155: ; preds = %._crit_edge.i.i139 - %156 = trunc nuw i32 %.0.lcssa.i.i140 to i8 + %156 = trunc nuw nsw i32 %.0.lcssa.i.i140 to i8 %157 = or disjoint i8 %156, 48 br label %_ZNSt7__cxx119to_stringEi.exit146 @@ -60644,7 +60645,7 @@ _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit211: ; preds = %366 br i1 %405, label %406, label %460 406: ; preds = %404 - %407 = trunc nuw i32 %0 to i8 + %407 = trunc nuw nsw i32 %0 to i8 %408 = or disjoint i8 %407, 48 %409 = select i1 %4, i8 49, i8 48 %410 = icmp samesign ugt i8 %408, %409 @@ -60851,7 +60852,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i259: br label %_ZNSt7__cxx119to_stringEi.exit267 509: ; preds = %._crit_edge.i.i260 - %510 = trunc nuw i32 %.0.lcssa.i.i261 to i8 + %510 = trunc nuw nsw i32 %.0.lcssa.i.i261 to i8 %511 = or disjoint i8 %510, 48 br label %_ZNSt7__cxx119to_stringEi.exit267 @@ -61063,7 +61064,7 @@ _ZZN9__gnu_cxx6__stoaIlicJiEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD br label %596 596: ; preds = %595, %593 - %597 = trunc i64 %577 to i32 + %597 = trunc nsw i64 %577 to i32 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #34 invoke fastcc void @_ZL18_build_min_max_intiiRNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEib(i32 noundef %597, i32 noundef 2147483647, ptr noundef nonnull align 8 dereferenceable(128) %2, i32 noundef %.sroa.speculated, i1 noundef zeroext false) to label %598 unwind label %638 @@ -68010,7 +68011,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i: ; preds = %16, %14, %10, %6, % br label %_ZNSt7__cxx119to_stringEm.exit 52: ; preds = %._crit_edge.i.i - %53 = trunc nuw i64 %.0.lcssa.i.i to i8 + %53 = trunc nuw nsw i64 %.0.lcssa.i.i to i8 %54 = or disjoint i8 %53, 48 br label %_ZNSt7__cxx119to_stringEm.exit @@ -75798,7 +75799,7 @@ _ZZN9__gnu_cxx6__stoaIlicJiEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD br label %_ZNSt7__cxx114stoiERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEPmi.exit _ZNSt7__cxx114stoiERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEPmi.exit: ; preds = %784, %786 - %787 = trunc i64 %768 to i32 + %787 = trunc nsw i64 %768 to i32 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #34 br label %927 @@ -76082,7 +76083,7 @@ _ZZN9__gnu_cxx6__stoaIlicJiEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD br label %_ZNSt7__cxx114stoiERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEPmi.exit377 _ZNSt7__cxx114stoiERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEPmi.exit377: ; preds = %876, %878 - %879 = trunc i64 %860 to i32 + %879 = trunc nsw i64 %860 to i32 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #34 %.pre1343 = load ptr, ptr %38, align 8, !tbaa !15 br label %880 @@ -76154,7 +76155,7 @@ _ZZN9__gnu_cxx6__stoaIlicJiEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD br label %_ZNSt7__cxx114stoiERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEPmi.exit383 _ZNSt7__cxx114stoiERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEPmi.exit383: ; preds = %906, %908 - %909 = trunc i64 %890 to i32 + %909 = trunc nsw i64 %890 to i32 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #34 br label %927 @@ -76416,7 +76417,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i: ; preds = %980, %978, %974, %9 br label %1017 1014: ; preds = %._crit_edge.i.i396 - %1015 = trunc nuw i64 %.0.lcssa.i.i to i8 + %1015 = trunc nuw nsw i64 %.0.lcssa.i.i to i8 %1016 = or disjoint i8 %1015, 48 br label %1017 @@ -83287,7 +83288,7 @@ _ZN8nlohmann16json_abi_v3_11_36detail10serializerINS0_10basic_jsonINS0_11ordered %.0.lcssa50 = phi ptr [ %11, %._crit_edge.thread ], [ %.0.lcssa, %._crit_edge ] %.1.lcssa49 = phi i64 [ %1, %._crit_edge.thread ], [ %.1.lcssa, %._crit_edge ] %51 = phi i64 [ 1, %._crit_edge.thread ], [ %27, %._crit_edge ] - %52 = trunc nuw i64 %.1.lcssa49 to i8 + %52 = trunc nuw nsw i64 %.1.lcssa49 to i8 %53 = or disjoint i8 %52, 48 %54 = getelementptr inbounds i8, ptr %.0.lcssa50, i64 -1 store i8 %53, ptr %54, align 1, !tbaa !13 @@ -83459,7 +83460,7 @@ _ZN8nlohmann16json_abi_v3_11_36detail10serializerINS0_10basic_jsonINS0_11ordered %.0.lcssa61 = phi ptr [ %31, %._crit_edge.thread ], [ %.0.lcssa, %._crit_edge ] %.1.lcssa60 = phi i64 [ %1, %._crit_edge.thread ], [ %.1.lcssa, %._crit_edge ] %71 = phi i64 [ 1, %._crit_edge.thread ], [ %47, %._crit_edge ] - %72 = trunc nuw i64 %.1.lcssa60 to i8 + %72 = trunc nuw nsw i64 %.1.lcssa60 to i8 %73 = or disjoint i8 %72, 48 %74 = getelementptr inbounds i8, ptr %.0.lcssa61, i64 -1 store i8 %73, ptr %74, align 1, !tbaa !13 @@ -84107,7 +84108,7 @@ define linkonce_odr noundef nonnull ptr @_ZN8nlohmann16json_abi_v3_11_36detail9d 62: ; preds = %60 %63 = getelementptr i8, ptr %.pn, i64 4 store i8 48, ptr %.025.i, align 1, !tbaa !13 - %64 = trunc nuw i32 %.0.i to i8 + %64 = trunc nuw nsw i32 %.0.i to i8 %65 = or disjoint i8 %64, 48 %66 = getelementptr i8, ptr %.pn, i64 5 store i8 %65, ptr %63, align 1, !tbaa !13 @@ -84118,7 +84119,7 @@ define linkonce_odr noundef nonnull ptr @_ZN8nlohmann16json_abi_v3_11_36detail9d br i1 %68, label %69, label %76 69: ; preds = %67 - %.lhs.trunc.i = trunc nuw i32 %.0.i to i8 + %.lhs.trunc.i = trunc nuw nsw i32 %.0.i to i8 %70 = udiv i8 %.lhs.trunc.i, 10 %71 = or disjoint i8 %70, 48 %72 = getelementptr i8, ptr %.pn, i64 4 @@ -84130,9 +84131,9 @@ define linkonce_odr noundef nonnull ptr @_ZN8nlohmann16json_abi_v3_11_36detail9d br label %_ZN8nlohmann16json_abi_v3_11_36detail9dtoa_impl15append_exponentEPci.exit 76: ; preds = %67 - %.lhs.trunc29.i = trunc i32 %.0.i to i16 + %.lhs.trunc29.i = trunc nuw nsw i32 %.0.i to i16 %77 = udiv i16 %.lhs.trunc29.i, 100 - %78 = trunc i16 %77 to i8 + %78 = trunc nuw nsw i16 %77 to i8 %79 = add nuw nsw i8 %78, 48 %80 = getelementptr i8, ptr %.pn, i64 4 store i8 %79, ptr %.025.i, align 1, !tbaa !13 @@ -84547,10 +84548,10 @@ _ZN8nlohmann16json_abi_v3_11_36detail9dtoa_impl5diyfp3subERKS3_S5_.exit77: ; pre %37 = zext nneg i32 %36 to i64 %38 = shl nuw nsw i64 1, %37 %39 = lshr i64 %18, %37 - %40 = trunc i64 %39 to i32 + %40 = trunc nuw i64 %39 to i32 %41 = add nsw i64 %38, -1 %42 = and i64 %18, %41 - %.not = icmp eq i32 %40, 0 + %.not = icmp eq i64 %39, 0 br i1 %.not, label %43, label %44 43: ; preds = %_ZN8nlohmann16json_abi_v3_11_36detail9dtoa_impl5diyfp3subERKS3_S5_.exit77 @@ -84558,39 +84559,39 @@ _ZN8nlohmann16json_abi_v3_11_36detail9dtoa_impl5diyfp3subERKS3_S5_.exit77: ; pre unreachable 44: ; preds = %_ZN8nlohmann16json_abi_v3_11_36detail9dtoa_impl5diyfp3subERKS3_S5_.exit77 - %45 = icmp ugt i32 %40, 999999999 + %45 = icmp samesign ugt i64 %39, 999999999 br i1 %45, label %_ZN8nlohmann16json_abi_v3_11_36detail9dtoa_impl18find_largest_pow10EjRj.exit.preheader, label %46 46: ; preds = %44 - %47 = icmp samesign ugt i32 %40, 99999999 + %47 = icmp samesign ugt i64 %39, 99999999 br i1 %47, label %_ZN8nlohmann16json_abi_v3_11_36detail9dtoa_impl18find_largest_pow10EjRj.exit.preheader, label %48 48: ; preds = %46 - %49 = icmp samesign ugt i32 %40, 9999999 + %49 = icmp samesign ugt i64 %39, 9999999 br i1 %49, label %_ZN8nlohmann16json_abi_v3_11_36detail9dtoa_impl18find_largest_pow10EjRj.exit.preheader, label %50 50: ; preds = %48 - %51 = icmp samesign ugt i32 %40, 999999 + %51 = icmp samesign ugt i64 %39, 999999 br i1 %51, label %_ZN8nlohmann16json_abi_v3_11_36detail9dtoa_impl18find_largest_pow10EjRj.exit.preheader, label %52 52: ; preds = %50 - %53 = icmp samesign ugt i32 %40, 99999 + %53 = icmp samesign ugt i64 %39, 99999 br i1 %53, label %_ZN8nlohmann16json_abi_v3_11_36detail9dtoa_impl18find_largest_pow10EjRj.exit.preheader, label %54 54: ; preds = %52 - %55 = icmp samesign ugt i32 %40, 9999 + %55 = icmp samesign ugt i64 %39, 9999 br i1 %55, label %_ZN8nlohmann16json_abi_v3_11_36detail9dtoa_impl18find_largest_pow10EjRj.exit.preheader, label %56 56: ; preds = %54 - %57 = icmp samesign ugt i32 %40, 999 + %57 = icmp samesign ugt i64 %39, 999 br i1 %57, label %_ZN8nlohmann16json_abi_v3_11_36detail9dtoa_impl18find_largest_pow10EjRj.exit.preheader, label %58 58: ; preds = %56 - %59 = icmp samesign ugt i32 %40, 99 + %59 = icmp samesign ugt i64 %39, 99 br i1 %59, label %_ZN8nlohmann16json_abi_v3_11_36detail9dtoa_impl18find_largest_pow10EjRj.exit.preheader, label %60 60: ; preds = %58 - %61 = icmp samesign ugt i32 %40, 9 + %61 = icmp samesign ugt i64 %39, 9 %..i = select i1 %61, i32 10, i32 1 %.20.i = select i1 %61, i32 2, i32 1 br label %_ZN8nlohmann16json_abi_v3_11_36detail9dtoa_impl18find_largest_pow10EjRj.exit.preheader @@ -84614,7 +84615,7 @@ _ZN8nlohmann16json_abi_v3_11_36detail9dtoa_impl18find_largest_pow10EjRj.exit: ; unreachable 66: ; preds = %_ZN8nlohmann16json_abi_v3_11_36detail9dtoa_impl18find_largest_pow10EjRj.exit - %67 = trunc nuw i32 %62 to i8 + %67 = trunc nuw nsw i32 %62 to i8 %68 = or disjoint i8 %67, 48 %69 = load i32, ptr %1, align 4, !tbaa !50 %70 = add nsw i32 %69, 1 @@ -84676,7 +84677,7 @@ _ZN8nlohmann16json_abi_v3_11_36detail9dtoa_impl18find_largest_pow10EjRj.exit: ; 94: ; preds = %89 %95 = and i64 %90, %41 - %96 = trunc nuw i64 %91 to i8 + %96 = trunc nuw nsw i64 %91 to i8 %97 = or disjoint i8 %96, 48 %98 = load i32, ptr %1, align 4, !tbaa !50 %99 = add nsw i32 %98, 1 diff --git a/bench/llvm/optimized/AArch64ISelLowering.ll b/bench/llvm/optimized/AArch64ISelLowering.ll index 409c12046dd..3954821178e 100644 --- a/bench/llvm/optimized/AArch64ISelLowering.ll +++ b/bench/llvm/optimized/AArch64ISelLowering.ll @@ -84834,9 +84834,8 @@ _ZNK4llvm9StringRef12getAsIntegerIiEEbjRT_.exit.thread: ; preds = %169, %164 _ZNK4llvm9StringRef12getAsIntegerIiEEbjRT_.exit: ; preds = %169 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #35 - %172 = and i64 %170, 4294967264 - %.not331 = icmp eq i64 %172, 0 - br i1 %.not331, label %173, label %.thread + %172 = icmp ugt i64 %170, 31 + br i1 %172, label %.thread, label %173 173: ; preds = %_ZNK4llvm9StringRef12getAsIntegerIiEEbjRT_.exit %.not330 = icmp eq i16 %4, 1 @@ -84869,14 +84868,13 @@ _ZNK4llvm9StringRef12getAsIntegerIiEEbjRT_.exit: ; preds = %169 %_ZN4llvm7AArch6413FPR64RegClassE.sink = phi ptr [ @_ZN4llvm7AArch6414FPR128RegClassE, %180 ], [ @_ZN4llvm7AArch6413FPR64RegClassE, %174 ] %181 = load ptr, ptr %_ZN4llvm7AArch6413FPR64RegClassE.sink, align 8, !tbaa !1300 %182 = load ptr, ptr %181, align 8, !tbaa !1541 - %183 = and i64 %170, 31 - %184 = getelementptr inbounds nuw i16, ptr %182, i64 %183 - %185 = load i16, ptr %184, align 2, !tbaa !240 - %186 = zext i16 %185 to i32 - br label %187 + %183 = getelementptr inbounds nuw i16, ptr %182, i64 %170 + %184 = load i16, ptr %183, align 2, !tbaa !240 + %185 = zext i16 %184 to i32 + br label %186 187: ; preds = %.sink.split, %_ZN4llvmeqENS_9StringRefES0_.exit123.thread315 - %.sroa.0150.0 = phi i32 [ %145, %_ZN4llvmeqENS_9StringRefES0_.exit123.thread315 ], [ %186, %.sink.split ] + %.sroa.0150.0 = phi i32 [ %145, %_ZN4llvmeqENS_9StringRefES0_.exit123.thread315 ], [ %185, %.sink.split ] %.sroa.7151.0 = phi ptr [ %146, %_ZN4llvmeqENS_9StringRefES0_.exit123.thread315 ], [ %_ZN4llvm7AArch6413FPR64RegClassE.sink, %.sink.split ] %188 = getelementptr inbounds nuw i8, ptr %0, i64 412424 %189 = load ptr, ptr %188, align 8, !tbaa !71 @@ -101501,7 +101499,7 @@ _ZNK4llvm7SDValue18getValueSizeInBitsEv.exit: ; preds = %139, %143 148: ; preds = %_ZNK4llvm7SDValue18getValueSizeInBitsEv.exit, %.critedge %149 = phi i1 [ false, %.critedge ], [ %146, %_ZNK4llvm7SDValue18getValueSizeInBitsEv.exit ] %.0237 = phi i8 [ 64, %.critedge ], [ %147, %_ZNK4llvm7SDValue18getValueSizeInBitsEv.exit ] - %.rhs.trunc = trunc nuw i32 %93 to i8 + %.rhs.trunc = trunc nuw nsw i32 %93 to i8 %150 = udiv i8 %.0237, %.rhs.trunc %151 = call i8 @llvm.umax.i8(i8 %150, i8 8) switch i8 %151, label %156 [ @@ -132803,7 +132801,7 @@ _ZN4llvm11SmallVectorIiLj8EED2Ev.exit: ; preds = %._crit_edge, %163 164: ; preds = %.lr.ph, %164 %.0455824 = phi i64 [ 0, %.lr.ph ], [ %167, %164 ] - %.0455.tr = trunc i64 %.0455824 to i32 + %.0455.tr = trunc nuw i64 %.0455824 to i32 %165 = shl i32 %.0455.tr, 1 %166 = getelementptr inbounds nuw i32, ptr %152, i64 %.0455824 store i32 %165, ptr %166, align 4, !tbaa !68 @@ -171696,7 +171694,7 @@ _ZN4llvm23SmallVectorTemplateBaseIPNS_10LoadSDNodeELb1EE9push_backES2_.exit122: br i1 %.not104, label %129, label %_ZNK4llvm6SDNode9hasOneUseEv.exit.thread 129: ; preds = %125 - %130 = trunc i64 %indvars.iv170 to i32 + %130 = trunc nuw i64 %indvars.iv170 to i32 %131 = add i32 %118, %130 %132 = zext i32 %131 to i64 %133 = getelementptr inbounds nuw i32, ptr %120, i64 %132 @@ -171705,7 +171703,7 @@ _ZN4llvm23SmallVectorTemplateBaseIPNS_10LoadSDNodeELb1EE9push_backES2_.exit122: br i1 %.not105, label %135, label %_ZNK4llvm6SDNode9hasOneUseEv.exit.thread 135: ; preds = %129 - %136 = trunc i64 %indvars.iv170 to i32 + %136 = trunc nuw i64 %indvars.iv170 to i32 %137 = add i32 %121, %136 %138 = zext i32 %137 to i64 %139 = getelementptr inbounds nuw i32, ptr %120, i64 %138 @@ -171714,12 +171712,12 @@ _ZN4llvm23SmallVectorTemplateBaseIPNS_10LoadSDNodeELb1EE9push_backES2_.exit122: br i1 %.not106, label %141, label %_ZNK4llvm6SDNode9hasOneUseEv.exit.thread 141: ; preds = %135 - %142 = trunc i64 %indvars.iv170 to i32 + %142 = trunc nuw i64 %indvars.iv170 to i32 %143 = add i32 %122, %142 %144 = zext i32 %143 to i64 %145 = getelementptr inbounds nuw i32, ptr %120, i64 %144 %146 = load i32, ptr %145, align 4, !tbaa !68 - %147 = trunc i64 %indvars.iv170 to i32 + %147 = trunc nuw i64 %indvars.iv170 to i32 %148 = add i32 %117, %147 %.not107 = icmp eq i32 %146, %148 br i1 %.not107, label %149, label %_ZNK4llvm6SDNode9hasOneUseEv.exit.thread diff --git a/bench/llvm/optimized/Distro.ll b/bench/llvm/optimized/Distro.ll index af812398044..21c3a3cd1fe 100644 --- a/bench/llvm/optimized/Distro.ll +++ b/bench/llvm/optimized/Distro.ll @@ -992,7 +992,7 @@ _ZNK4llvm9StringRef5splitEc.exit: ; preds = %_ZN4llvm7ErrorOrISt br i1 %.not.i63, label %231, label %_ZNK4llvm9StringRef5splitES0_.exit 231: ; preds = %228 - %232 = trunc i64 %229 to i32 + %232 = trunc nsw i64 %229 to i32 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #12 %switch.tableidx = add i32 %232, -5 %233 = icmp ult i32 %switch.tableidx, 9 @@ -1261,20 +1261,11 @@ _ZNK4llvm9StringRef5splitEc.exit151: ; preds = %298, %300 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #12 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #12 %326 = call noundef zeroext i1 @_ZN4llvm18getAsSignedIntegerENS_9StringRefEjRx(ptr %.sroa.0172.0, i64 %.sroa.5.0, i32 noundef 10, ptr noundef nonnull align 8 dereferenceable(8) %2) #12 - br i1 %326, label %334, label %327 - -327: ; preds = %_ZNK4llvm9StringRef5splitEc.exit151 - %328 = load i64, ptr %2, align 8, !tbaa !56 - %329 = add i64 %328, -2147483648 - %.not.i165 = icmp ult i64 %329, -4294967296 - %330 = trunc i64 %328 to i32 - %331 = icmp slt i32 %330, 11 - %332 = or i1 %.not.i165, %331 - %333 = select i1 %332, i32 54, i32 18 - br label %334 - -334: ; preds = %327, %_ZNK4llvm9StringRef5splitEc.exit151 - %.0.i166 = phi i32 [ 54, %_ZNK4llvm9StringRef5splitEc.exit151 ], [ %333, %327 ] + %327 = load i64, ptr %2, align 8 + %328 = add i64 %327, -2147483648 + %329 = icmp ult i64 %328, -2147483637 + %330 = select i1 %326, i1 true, i1 %329 + %.0.i166 = select i1 %330, i32 54, i32 18 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #12 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #12 br label %.loopexit @@ -1284,8 +1275,8 @@ _ZNK4llvm9StringRef11starts_withES0_.exit146.thread336: ; preds = %281, %_ZNK4ll %.not30 = icmp eq ptr %335, %279 br i1 %.not30, label %.loopexit, label %281 -.loopexit: ; preds = %_ZNK4llvm9StringRef11starts_withES0_.exit146.thread336, %263, %334 - %spec.select = phi i32 [ %.0.i166, %334 ], [ 54, %263 ], [ 54, %_ZNK4llvm9StringRef11starts_withES0_.exit146.thread336 ] +.loopexit: ; preds = %_ZNK4llvm9StringRef11starts_withES0_.exit146.thread336, %263, %_ZNK4llvm9StringRef5splitEc.exit151 + %spec.select = phi i32 [ %.0.i166, %_ZNK4llvm9StringRef5splitEc.exit151 ], [ 54, %263 ], [ 54, %_ZNK4llvm9StringRef11starts_withES0_.exit146.thread336 ] %336 = load ptr, ptr %28, align 8, !tbaa !41 %337 = icmp eq ptr %336, %273 br i1 %337, label %_ZN4llvm11SmallVectorINS_9StringRefELj8EED2Ev.exit, label %338 @@ -1309,7 +1300,7 @@ _ZN4llvm11SmallVectorINS_9StringRefELj8EED2Ev.exit: ; preds = %.loopexit, %338 %342 = load ptr, ptr %0, align 8, !tbaa !21 %343 = getelementptr inbounds nuw i8, ptr %342, i64 96 %344 = load ptr, ptr %343, align 8 - %345 = call noundef zeroext i1 %344(ptr noundef nonnull align 8 dereferenceable(12) %0, ptr noundef nonnull align 8 dereferenceable(34) %31) #12 + %345 = call noundef zeroext i1 %340(ptr noundef nonnull align 8 dereferenceable(12) %0, ptr noundef nonnull align 8 dereferenceable(34) %31) #12 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %31) #12 %.32 = select i1 %345, i32 17, i32 54 br label %346 @@ -1329,7 +1320,7 @@ _ZNKSt14default_deleteIN4llvm12MemoryBufferEEclEPS1_.exit.i.i169: ; preds = %349 %351 = load ptr, ptr %350, align 8, !tbaa !21 %352 = getelementptr inbounds nuw i8, ptr %351, i64 8 %353 = load ptr, ptr %352, align 8 - call void %353(ptr noundef nonnull align 8 dereferenceable(24) %350) #12 + call void %349(ptr noundef nonnull align 8 dereferenceable(24) %350) #12 br label %_ZN4llvm7ErrorOrISt10unique_ptrINS_12MemoryBufferESt14default_deleteIS2_EEED2Ev.exit171 _ZN4llvm7ErrorOrISt10unique_ptrINS_12MemoryBufferESt14default_deleteIS2_EEED2Ev.exit171: ; preds = %349, %_ZNKSt14default_deleteIN4llvm12MemoryBufferEEclEPS1_.exit.i.i169, %346 diff --git a/bench/llvm/optimized/Instructions.ll b/bench/llvm/optimized/Instructions.ll index d3f48c3d6b3..1725bdb453c 100644 --- a/bench/llvm/optimized/Instructions.ll +++ b/bench/llvm/optimized/Instructions.ll @@ -13303,7 +13303,7 @@ define dso_local noundef zeroext i1 @_ZN4llvm17ShuffleVectorInst15isTransposeMas br i1 %.not, label %5, label %.critedge 5: ; preds = %3 - %6 = trunc i64 %1 to i32 + %6 = trunc nuw i64 %1 to i32 %7 = icmp sgt i32 %6, 1 %8 = tail call range(i32 1, 33) i32 @llvm.ctpop.i32(i32 %6) %9 = icmp samesign ult i32 %8, 2 @@ -13324,20 +13324,16 @@ define dso_local noundef zeroext i1 @_ZN4llvm17ShuffleVectorInst15isTransposeMas .preheader: ; preds = %12 %invariant.gep = getelementptr i8, ptr %0, i64 -8 - %.not2533 = icmp samesign ult i32 %6, 3 - br i1 %.not2533, label %.critedge, label %.lr.ph.preheader - -.lr.ph.preheader: ; preds = %.preheader - %wide.trip.count = and i64 %1, 2147483647 - br label %.lr.ph + %.not2533 = icmp ult i64 %1, 3 + br i1 %.not2533, label %.critedge, label %.lr.ph 16: ; preds = %20 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count + %exitcond.not = icmp eq i64 %indvars.iv.next, %1 br i1 %exitcond.not, label %.critedge, label %.lr.ph, !llvm.loop !293 -.lr.ph: ; preds = %.lr.ph.preheader, %16 - %indvars.iv = phi i64 [ 2, %.lr.ph.preheader ], [ %indvars.iv.next, %16 ] +.lr.ph: ; preds = %.preheader, %16 + %indvars.iv = phi i64 [ %indvars.iv.next, %16 ], [ 2, %.preheader ] %17 = getelementptr inbounds nuw i32, ptr %0, i64 %indvars.iv %18 = load i32, ptr %17, align 4, !tbaa !108 %19 = icmp eq i32 %18, -1 diff --git a/bench/llvm/optimized/RISCVAsmParser.ll b/bench/llvm/optimized/RISCVAsmParser.ll index fb9a1580525..7f81322f819 100644 --- a/bench/llvm/optimized/RISCVAsmParser.ll +++ b/bench/llvm/optimized/RISCVAsmParser.ll @@ -4506,9 +4506,8 @@ _ZN4llvmeqENS_9StringRefES0_.exit36.thread: ; preds = %_ZN4llvmeqENS_9Stri br label %832 781: ; preds = %770 - %782 = and i64 %749, 4294967288 - %.not76.i = icmp eq i64 %782, 0 - br i1 %.not76.i, label %_ZN4llvm7isUIntNEjm.exit.i, label %_ZN4llvm7isUIntNEjm.exit.thread.i + %782 = icmp samesign ugt i64 %749, 7 + br i1 %782, label %_ZN4llvm7isUIntNEjm.exit.thread.i, label %_ZN4llvm7isUIntNEjm.exit.i _ZN4llvm7isUIntNEjm.exit.i: ; preds = %781 %783 = shl nuw nsw i64 %749, 3 @@ -17758,7 +17757,7 @@ define internal fastcc void @"_ZZN12_GLOBAL__N_114RISCVAsmParser22parseCSRSystem br i1 %9, label %10, label %76 10: ; preds = %6 - %11 = trunc nuw i64 %8 to i16 + %11 = trunc nuw nsw i64 %8 to i16 %12 = tail call { ptr, ptr } @_ZN4llvm11RISCVSysReg22lookupSysRegByEncodingEt(i16 noundef zeroext %11) #25 %13 = extractvalue { ptr, ptr } %12, 0 %14 = extractvalue { ptr, ptr } %12, 1 diff --git a/bench/llvm/optimized/X86ISelLowering.ll b/bench/llvm/optimized/X86ISelLowering.ll index 16ab202296a..9e7a132042f 100644 --- a/bench/llvm/optimized/X86ISelLowering.ll +++ b/bench/llvm/optimized/X86ISelLowering.ll @@ -31783,7 +31783,7 @@ _ZN4llvm3MVT12getIntegerVTEj.exit.i: ; preds = %151, %150, %149, %1 br i1 %155, label %156, label %_ZN4llvm3MVT12getIntegerVTEj.exit104.i 156: ; preds = %154 - %.rhs.trunc.i = trunc nuw i16 %103 to i8 + %.rhs.trunc.i = trunc nuw nsw i16 %103 to i8 %157 = udiv i8 -128, %.rhs.trunc.i %.zext.i = zext i8 %157 to i32 %158 = add nsw i32 %.zext.i, -16 @@ -33415,7 +33415,7 @@ _ZNK4llvm3MVT20getVectorNumElementsEv.exit.i: ; preds = %98, %96 br i1 %104, label %105, label %_ZN4llvm3MVT12getIntegerVTEj.exit.i 105: ; preds = %_ZNK4llvm3MVT20getVectorNumElementsEv.exit.i - %.rhs.trunc.i = trunc nuw i16 %102 to i8 + %.rhs.trunc.i = trunc nuw nsw i16 %102 to i8 %106 = udiv i8 -128, %.rhs.trunc.i %.zext.i = zext i8 %106 to i32 %107 = add nsw i32 %.zext.i, -16 @@ -34176,7 +34176,7 @@ _ZN4llvm23SmallVectorTemplateBaseIiLb1EE9push_backEi.exit557: ; preds = %.lr.ph, br i1 %.not522, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !925 356: ; preds = %325, %322, %.critedge9 - %357 = trunc i64 %.0.i.i.i534 to i32 + %357 = trunc nuw nsw i64 %.0.i.i.i534 to i32 %358 = call fastcc { ptr, i32 } @_ZL16extractSubVectorN4llvm7SDValueEjRNS_12SelectionDAGERKNS_5SDLocEj(ptr %.sroa.0668.0.copyload, i32 %.sroa.15.0.copyload, i32 noundef %357, ptr noundef nonnull align 8 dereferenceable(952) %3, ptr noundef nonnull align 8 dereferenceable(12) %18, i32 noundef 128) %.fca.0.extract149 = extractvalue { ptr, i32 } %358, 0 %.fca.1.extract150 = extractvalue { ptr, i32 } %358, 1 @@ -56078,7 +56078,7 @@ thread-pre-split940: ; preds = %313, %318 br i1 %or.cond985, label %.thread, label %330 330: ; preds = %323 - %trunc = trunc nuw i16 %327 to i8 + %trunc = trunc nuw nsw i16 %327 to i8 switch i8 %trunc, label %._ZNK4llvm17X86TargetLowering22isScalarFPTypeInSSERegENS_3EVTE.exit549.thread943_crit_edge [ i8 13, label %331 i8 12, label %_ZNK4llvm17X86TargetLowering22isScalarFPTypeInSSERegENS_3EVTE.exit549 @@ -81276,7 +81276,7 @@ _ZNK4llvm3MVT19getScalarSizeInBitsEv.exit: ; preds = %433, %432 %457 = add i16 %.sroa.0.0.copyload.i.i.i, -170 %spec.select.i = icmp ult i16 %457, 21 %or.cond = or i1 %spec.select.i, %or.cond4.i - %.tr243 = trunc nuw i64 %.sroa.0.0.copyload.i.i269 to i32 + %.tr243 = trunc nuw nsw i64 %.sroa.0.0.copyload.i.i269 to i32 %458 = shl nuw nsw i32 %.tr243, 1 br i1 %or.cond, label %_ZNK4llvm3MVT15isFloatingPointEv.exit.thread, label %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit278 @@ -96846,7 +96846,7 @@ _ZNK4llvm3MVT14is512BitVectorEv.exit.i: ; preds = %472 br i1 %489, label %490, label %495 490: ; preds = %.critedge11.i - %491 = trunc i64 %.0.i.i.i.i to i32 + %491 = trunc nuw i64 %.0.i.i.i.i to i32 %492 = call { ptr, i32 } @_Z15getGFNICtrlMaskjRN4llvm12SelectionDAGERKNS_5SDLocENS_3MVTEj(i32 noundef %466, ptr noundef nonnull align 8 dereferenceable(952) %3, ptr noundef nonnull align 8 dereferenceable(12) %37, i16 %.sroa.0.0.copyload.i.i.i.i, i32 noundef %491) %.fca.0.extract110.i = extractvalue { ptr, i32 } %492, 0 %.fca.1.extract111.i = extractvalue { ptr, i32 } %492, 1 @@ -96878,7 +96878,7 @@ _ZNK4llvm3MVT14is512BitVectorEv.exit.i: ; preds = %472 %.fca.0.extract79.i = extractvalue { ptr, i32 } %498, 0 %.fca.1.extract80.i = extractvalue { ptr, i32 } %498, 1 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %48) #38 - %499 = trunc i64 %.0.i.i.i.i to i32 + %499 = trunc nuw i64 %.0.i.i.i.i to i32 %500 = sub i32 8, %499 call void @_ZN4llvm5APInt14getHighBitsSetEjj(ptr dead_on_unwind nonnull writable sret(%"class.llvm::APInt") align 8 %48, i32 noundef 8, i32 noundef %500) store ptr %.fca.0.extract79.i, ptr %49, align 8, !tbaa !490 @@ -96926,7 +96926,7 @@ _ZN4llvm5APIntD2Ev.exit.i: ; preds = %509, %506, %496 %.fca.0.extract49.i = extractvalue { ptr, i32 } %514, 0 %.fca.1.extract50.i = extractvalue { ptr, i32 } %514, 1 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %51) #38 - %515 = trunc i64 %.0.i.i.i.i to i32 + %515 = trunc nuw i64 %.0.i.i.i.i to i32 %516 = sub i32 8, %515 call void @_ZN4llvm5APInt13getLowBitsSetEjj(ptr dead_on_unwind nonnull writable sret(%"class.llvm::APInt") align 8 %51, i32 noundef 8, i32 noundef %516) store ptr %.fca.0.extract49.i, ptr %52, align 8, !tbaa !490 @@ -96969,7 +96969,7 @@ _ZN4llvm5APIntD2Ev.exit299.i: ; preds = %525, %522, %512 %527 = call { ptr, i32 } @_ZN4llvm12SelectionDAG7getNodeEjRKNS_5SDLocENS_3EVTENS_7SDValueES5_(ptr noundef nonnull align 8 dereferenceable(952) %3, i32 noundef 192, ptr noundef nonnull align 8 dereferenceable(12) %37, i16 %.sroa.0.0.copyload.i.i.i.i, ptr null, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %38, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %54) #38 %.fca.0.extract34.i = extractvalue { ptr, i32 } %527, 0 %.fca.1.extract35.i = extractvalue { ptr, i32 } %527, 1 - %528 = trunc i64 %.0.i.i.i.i to i32 + %528 = trunc nuw i64 %.0.i.i.i.i to i32 %529 = lshr i32 128, %528 %530 = zext nneg i32 %529 to i64 %531 = call { ptr, i32 } @_ZN4llvm12SelectionDAG11getConstantEmRKNS_5SDLocENS_3EVTEbb(ptr noundef nonnull align 8 dereferenceable(952) %3, i64 noundef %530, ptr noundef nonnull align 8 dereferenceable(12) %37, i16 %.sroa.0.0.copyload.i.i.i.i, ptr null, i1 noundef zeroext false, i1 noundef zeroext false) #38 @@ -134667,7 +134667,7 @@ _ZNK4llvm5APInt3ugeEm.exit162: ; preds = %192, %_ZNK4llvm5API br i1 %.not279, label %202, label %_ZNK4llvm5APInt3ugeEm.exit.thread 202: ; preds = %_ZNK4llvm5APInt3ugeEm.exit162 - %203 = trunc i64 %.0.i.i.i161 to i32 + %203 = trunc nuw i64 %.0.i.i.i161 to i32 %204 = sub i32 %194, %203 br label %_ZNK4llvm5APInt3ugeEm.exit.thread @@ -134745,7 +134745,7 @@ _ZNK4llvm5APInt3ugeEm.exit170: ; preds = %227, %_ZNK4llvm5API _ZNK4llvm5APInt3ugeEm.exit170.thread: ; preds = %_ZNK4llvm5APInt3ugeEm.exit170, %_ZNK4llvm5APInt13getActiveBitsEv.exit.i.i167 %239 = phi i64 [ %232, %_ZNK4llvm5APInt13getActiveBitsEv.exit.i.i167 ], [ %spec.select, %_ZNK4llvm5APInt3ugeEm.exit170 ] - %240 = trunc i64 %239 to i32 + %240 = trunc nuw i64 %239 to i32 br label %_ZNK4llvm5APInt3ugeEm.exit166.thread _ZNK4llvm5APInt3ugeEm.exit166.thread: ; preds = %223, %_ZNK4llvm5APInt3ugeEm.exit170.thread @@ -150264,7 +150264,7 @@ _ZN4llvm5SDLocD2Ev.exit1168: ; preds = %_ZN4llvm5SDLocC2ENS br label %1079 _ZNK4llvm5APInteqEm.exit.thread: ; preds = %_ZNK4llvm5APInt13getActiveBitsEv.exit.i1160, %_ZNK4llvm5APInteqEm.exit - %1027 = trunc i64 %.0.i.i1154 to i32 + %1027 = trunc nuw nsw i64 %.0.i.i1154 to i32 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %69) #38 %1028 = getelementptr inbounds nuw i8, ptr %69, i64 8 store i32 1, ptr %1028, align 8, !tbaa !676 @@ -217616,7 +217616,7 @@ _ZNK4llvm3EVTneES0_.exit256: ; preds = %_ZNK4llvm3EVT20getV br i1 %194, label %195, label %215 195: ; preds = %189 - %.rhs.trunc = trunc nuw i32 %186 to i8 + %.rhs.trunc = trunc nuw nsw i32 %186 to i8 %196 = udiv i8 8, %.rhs.trunc call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #38 %197 = icmp eq i32 %186, 4 @@ -232197,7 +232197,7 @@ _ZSt6fill_nIPimiET_S1_T0_RKT1_.exit: ; preds = %_ZSt6fill_nIPimiET_ br i1 %.not.i.i.i.i.i.i, label %_ZSt20uninitialized_fill_nIPimiET_S1_T0_RKT1_.exit, label %.lr.ph.i.i.i.i.i.i, !llvm.loop !823 _ZSt20uninitialized_fill_nIPimiET_S1_T0_RKT1_.exit: ; preds = %.lr.ph.i.i.i.i.i.i, %_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit - %29 = trunc i64 %1 to i32 + %29 = trunc nuw i64 %1 to i32 store i32 %29, ptr %17, align 8, !tbaa !28 br label %30 @@ -232918,7 +232918,7 @@ define linkonce_odr hidden void @_ZN4llvm15SmallVectorImplIiE6resizeEmi(ptr noun br i1 %9, label %10, label %12 10: ; preds = %8 - %11 = trunc i64 %1 to i32 + %11 = trunc nuw i64 %1 to i32 br label %.sink.split 12: ; preds = %8 @@ -242655,16 +242655,12 @@ _ZN4llvm11SmallVectorIiLj12EED2Ev.exit373: ; preds = %_ZN4llvm11SmallVect br i1 %435, label %"_ZZL34canonicalizeShuffleMaskWithHorizOpN4llvm15MutableArrayRefINS_7SDValueEEENS0_IiEEjRKNS_5SDLocERNS_12SelectionDAGERKNS_12X86SubtargetEENK3$_4clES1_S1_.exit374.thread", label %444 "_ZZL34canonicalizeShuffleMaskWithHorizOpN4llvm15MutableArrayRefINS_7SDValueEEENS0_IiEEjRKNS_5SDLocERNS_12SelectionDAGERKNS_12X86SubtargetEENK3$_4clES1_S1_.exit374.thread": ; preds = %"_ZZL34canonicalizeShuffleMaskWithHorizOpN4llvm15MutableArrayRefINS_7SDValueEEENS0_IiEEjRKNS_5SDLocERNS_12SelectionDAGERKNS_12X86SubtargetEENK3$_4clES1_S1_.exit.thread", %"_ZZL34canonicalizeShuffleMaskWithHorizOpN4llvm15MutableArrayRefINS_7SDValueEEENS0_IiEEjRKNS_5SDLocERNS_12SelectionDAGERKNS_12X86SubtargetEENK3$_4clES1_S1_.exit374" - %436 = trunc i64 %3 to i32 - %.not17.i = icmp eq i32 %436, 0 - br i1 %.not17.i, label %_ZN4llvm19ShuffleVectorSDNode11commuteMaskENS_15MutableArrayRefIiEE.exit, label %.lr.ph.i.preheader - -.lr.ph.i.preheader: ; preds = %"_ZZL34canonicalizeShuffleMaskWithHorizOpN4llvm15MutableArrayRefINS_7SDValueEEENS0_IiEEjRKNS_5SDLocERNS_12SelectionDAGERKNS_12X86SubtargetEENK3$_4clES1_S1_.exit374.thread" + %436 = trunc nuw i64 %3 to i32 %437 = sub i32 0, %436 br label %.lr.ph.i -.lr.ph.i: ; preds = %.lr.ph.i.preheader, %442 - %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %442 ], [ 0, %.lr.ph.i.preheader ] +.lr.ph.i: ; preds = %"_ZZL34canonicalizeShuffleMaskWithHorizOpN4llvm15MutableArrayRefINS_7SDValueEEENS0_IiEEjRKNS_5SDLocERNS_12SelectionDAGERKNS_12X86SubtargetEENK3$_4clES1_S1_.exit374.thread", %442 + %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %442 ], [ 0, %"_ZZL34canonicalizeShuffleMaskWithHorizOpN4llvm15MutableArrayRefINS_7SDValueEEENS0_IiEEjRKNS_5SDLocERNS_12SelectionDAGERKNS_12X86SubtargetEENK3$_4clES1_S1_.exit374.thread" ] %438 = getelementptr inbounds nuw i32, ptr %2, i64 %indvars.iv.i %439 = load i32, ptr %438, align 4, !tbaa !49 %440 = icmp slt i32 %439, 0 @@ -242682,7 +242678,7 @@ _ZN4llvm11SmallVectorIiLj12EED2Ev.exit373: ; preds = %_ZN4llvm11SmallVect %.not.i375 = icmp eq i64 %indvars.iv.next.i, %3 br i1 %.not.i375, label %_ZN4llvm19ShuffleVectorSDNode11commuteMaskENS_15MutableArrayRefIiEE.exit, label %.lr.ph.i, !llvm.loop !1338 -_ZN4llvm19ShuffleVectorSDNode11commuteMaskENS_15MutableArrayRefIiEE.exit: ; preds = %442, %"_ZZL34canonicalizeShuffleMaskWithHorizOpN4llvm15MutableArrayRefINS_7SDValueEEENS0_IiEEjRKNS_5SDLocERNS_12SelectionDAGERKNS_12X86SubtargetEENK3$_4clES1_S1_.exit374.thread" +_ZN4llvm19ShuffleVectorSDNode11commuteMaskENS_15MutableArrayRefIiEE.exit: ; preds = %442 %443 = getelementptr inbounds nuw i8, ptr %0, i64 16 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull align 8 dereferenceable(16) %0, i64 16, i1 false), !tbaa.struct !763 @@ -247769,7 +247765,7 @@ _ZSt20uninitialized_fill_nIPimiET_S1_T0_RKT1_.exit.i.loopexit: ; preds = %_ZSt6f br label %_ZSt20uninitialized_fill_nIPimiET_S1_T0_RKT1_.exit.i _ZSt20uninitialized_fill_nIPimiET_S1_T0_RKT1_.exit.i: ; preds = %_ZSt20uninitialized_fill_nIPimiET_S1_T0_RKT1_.exit.i.loopexit, %_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.i - %28 = trunc i64 %4 to i32 + %28 = trunc nuw i64 %4 to i32 store i32 %28, ptr %16, align 8, !tbaa !28 br label %_ZN4llvm15SmallVectorImplIiE6assignEmi.exit @@ -255450,7 +255446,7 @@ _ZN4llvm11SmallVectorIiLj32EEC2EmRKi.exit58.thread33: ; preds = %_ZSt6fill_nIPim _ZN4llvm11SmallVectorIiLj32EEC2EmRKi.exit58.thread: ; preds = %_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.i.i %24 = shl nuw nsw i64 %.8.val, 2 call void @llvm.memset.p0.i64(ptr nonnull align 8 %17, i8 -1, i64 %24, i1 false), !tbaa !49 - %storemerge.i16 = trunc nuw i64 %.8.val to i32 + %storemerge.i16 = trunc nuw nsw i64 %.8.val to i32 store i32 %storemerge.i16, ptr %18, align 8, !tbaa !28 call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %12) #38 %25 = getelementptr inbounds nuw i8, ptr %12, i64 16 @@ -292038,7 +292034,7 @@ _ZN4llvm23SmallVectorTemplateBaseIiLb1EE9push_backEi.exit788: ; preds = %956, %9 br i1 %.not5951130, label %.critedge635, label %.lr.ph1132 .lr.ph1132: ; preds = %.preheader1099 - %1024 = trunc i64 %1019 to i32 + %1024 = trunc nuw nsw i64 %1019 to i32 %.not5961125 = icmp eq i32 %80, %1024 %1025 = load ptr, ptr %3, align 8 br i1 %.not5961125, label %.critedge635, label %.lr.ph1128 @@ -325208,7 +325204,7 @@ define linkonce_odr hidden void @_ZN4llvm15SmallVectorImplINS_7SDValueEE6resizeE br i1 %10, label %11, label %13 11: ; preds = %9 - %12 = trunc i64 %1 to i32 + %12 = trunc nuw i64 %1 to i32 br label %.sink.split 13: ; preds = %9 @@ -363651,7 +363647,7 @@ _ZN4llvm11SmallVectorIiLj16EED2Ev.exit: ; preds = %_ZN4llvm11SmallVect br i1 %or.cond, label %162, label %167 162: ; preds = %139 - %163 = trunc i64 %.0.i.i.i.i.i to i32 + %163 = trunc nuw i64 %.0.i.i.i.i.i to i32 %164 = sub i32 %2, %163 %165 = add nuw nsw i32 %4, 1 %166 = call fastcc { ptr, i32 } @_ZL19getShuffleScalarEltN4llvm7SDValueEjRNS_12SelectionDAGEj(ptr nonnull %.sroa.0220.0.copyload, i32 %.sroa.5221.0.copyload, i32 noundef %164, ptr noundef nonnull align 8 dereferenceable(952) %3, i32 noundef %165) diff --git a/bench/lua/optimized/ltable.ll b/bench/lua/optimized/ltable.ll index ca88be40ef4..b570cfb1275 100644 --- a/bench/lua/optimized/ltable.ll +++ b/bench/lua/optimized/ltable.ll @@ -2235,13 +2235,11 @@ define internal fastcc void @luaH_newkey(ptr noundef %0, ptr noundef %1, ptr nou %19 = load i64, ptr %2, align 8, !tbaa !16 %20 = add i64 %19, -2147483649 %21 = icmp ult i64 %20, -2147483648 - %22 = trunc i64 %19 to i32 - %.not4.i.i = icmp eq i32 %22, 0 - %.not.i.i = or i1 %21, %.not4.i.i - br i1 %.not.i.i, label %countint.exit.i, label %23 + br i1 %21, label %countint.exit.i, label %23 23: ; preds = %18 - %24 = tail call zeroext i8 @luaO_ceillog2(i32 noundef %22) #13 + %23 = trunc nuw i64 %19 to i32 + %24 = tail call zeroext i8 @luaO_ceillog2(i32 noundef %23) #13 %25 = zext i8 %24 to i64 %26 = getelementptr inbounds nuw [32 x i32], ptr %13, i64 0, i64 %25 %27 = load i32, ptr %26, align 4, !tbaa !23 @@ -2285,13 +2283,11 @@ countint.exit.i: ; preds = %23, %18, %12 %51 = load i64, ptr %50, align 8, !tbaa !16 %52 = add i64 %51, -2147483649 %53 = icmp ult i64 %52, -2147483648 - %54 = trunc i64 %51 to i32 - %.not4.i.i.i = icmp eq i32 %54, 0 - %.not.i.i.i = or i1 %53, %.not4.i.i.i - br i1 %.not.i.i.i, label %countint.exit.i.i, label %55 + br i1 %53, label %countint.exit.i.i, label %54 55: ; preds = %49 - %56 = tail call zeroext i8 @luaO_ceillog2(i32 noundef %54) #13 + %55 = trunc nuw i64 %51 to i32 + %56 = tail call zeroext i8 @luaO_ceillog2(i32 noundef %55) #13 %57 = zext i8 %56 to i64 %58 = getelementptr inbounds nuw [32 x i32], ptr %13, i64 0, i64 %57 %59 = load i32, ptr %58, align 4, !tbaa !23 diff --git a/bench/lz4/optimized/lz4hc.ll b/bench/lz4/optimized/lz4hc.ll index 703a1bf1f72..68ae41107c3 100644 --- a/bench/lz4/optimized/lz4hc.ll +++ b/bench/lz4/optimized/lz4hc.ll @@ -891,7 +891,7 @@ LZ4_initStreamHC.exit: ; preds = %.LZ4_initStreamHC.e LZ4HC_init_internal.exit: ; preds = %LZ4_initStreamHC.exit, %29 %.0.i26 = phi i64 [ 0, %29 ], [ %19, %LZ4_initStreamHC.exit ] - %31 = trunc nuw i64 %.0.i26 to i32 + %31 = trunc nuw nsw i64 %.0.i26 to i32 %32 = add nuw nsw i32 %31, 65536 %33 = getelementptr inbounds nuw i8, ptr %0, i64 262176 store i32 %32, ptr %33, align 8, !tbaa !33 @@ -1077,7 +1077,7 @@ define internal fastcc i32 @LZ4_compressHC_continue_generic(ptr noundef %0, ptr LZ4HC_init_internal.exit: ; preds = %12, %19 %.0.i = phi i64 [ 0, %19 ], [ %17, %12 ] - %21 = trunc nuw i64 %.0.i to i32 + %21 = trunc nuw nsw i64 %.0.i to i32 %22 = add nuw nsw i32 %21, 65536 %23 = getelementptr inbounds nuw i8, ptr %0, i64 262176 store i32 %22, ptr %23, align 8, !tbaa !33 @@ -2793,7 +2793,7 @@ LZ4_count.exit.i684: ; preds = %372, %.thread569.i, br label %.critedge.i.i 446: ; preds = %435 - %.tr.i.i = trunc nuw i64 %429 to i8 + %.tr.i.i = trunc nuw nsw i64 %429 to i8 %447 = shl nuw i8 %.tr.i.i, 4 store i8 %447, ptr %.1724.i, align 1, !tbaa !26 br label %.critedge.i.i @@ -2872,7 +2872,7 @@ LZ4_wildCopy8.exit393.i: ; preds = %449 br label %486 482: ; preds = %462 - %483 = trunc nuw i64 %457 to i8 + %483 = trunc nuw nsw i64 %457 to i8 %484 = load i8, ptr %.1724.i, align 1, !tbaa !26 %485 = add i8 %484, %483 store i8 %485, ptr %.1724.i, align 1, !tbaa !26 @@ -3023,7 +3023,7 @@ LZ4_wildCopy8.exit393.i: ; preds = %449 br label %.critedge288.i 561: ; preds = %548 - %.0243.tr.i = trunc nuw i64 %.0243.i to i8 + %.0243.tr.i = trunc nuw nsw i64 %.0243.i to i8 %562 = shl nuw i8 %.0243.tr.i, 4 store i8 %562, ptr %.0495626.i, align 1, !tbaa !26 br label %.critedge288.i @@ -3104,7 +3104,7 @@ LZ4_wildCopy8.exit393.i: ; preds = %449 br label %.critedge.i383.i 605: ; preds = %594 - %.tr.i382.i = trunc nuw i64 %574 to i8 + %.tr.i382.i = trunc nuw nsw i64 %574 to i8 %606 = shl nuw i8 %.tr.i382.i, 4 store i8 %606, ptr %.1724.i, align 1, !tbaa !26 br label %.critedge.i383.i @@ -3176,7 +3176,7 @@ LZ4_wildCopy8.exit.i: ; preds = %608 br label %LZ4HC_encodeSequence.exit389.i 636: ; preds = %LZ4_wildCopy8.exit.i - %637 = trunc nuw i64 %616 to i8 + %637 = trunc nuw nsw i64 %616 to i8 %638 = load i8, ptr %.1724.i, align 1, !tbaa !26 %639 = add i8 %638, %637 store i8 %639, ptr %.1724.i, align 1, !tbaa !26 @@ -5812,7 +5812,7 @@ LZ4HC_InsertAndGetWiderMatch.exit573: ; preds = %1696, %1783, %1667, br label %.critedge.i96 1817: ; preds = %1806 - %.tr.i95 = trunc nuw i64 %1800 to i8 + %.tr.i95 = trunc nuw nsw i64 %1800 to i8 %1818 = shl nuw i8 %.tr.i95, 4 store i8 %1818, ptr %.1.ph, align 1, !tbaa !26 br label %.critedge.i96 @@ -5892,7 +5892,7 @@ LZ4_wildCopy8.exit: ; preds = %1820 br label %.outer1534.backedge 1853: ; preds = %1832 - %1854 = trunc nuw i64 %1827 to i8 + %1854 = trunc nuw nsw i64 %1827 to i8 %1855 = load i8, ptr %.1.ph, align 1, !tbaa !26 %1856 = add i8 %1855, %1854 store i8 %1856, ptr %.1.ph, align 1, !tbaa !26 @@ -7380,7 +7380,7 @@ LZ4HC_InsertAndGetWiderMatch.exit337: ; preds = %2386, %2473, %2357, br label %.critedge.i75 2511: ; preds = %2499 - %.tr.i74 = trunc nuw i64 %2493 to i8 + %.tr.i74 = trunc nuw nsw i64 %2493 to i8 %2512 = shl nuw i8 %.tr.i74, 4 store i8 %2512, ptr %.5.ph, align 1, !tbaa !26 br label %.critedge.i75 @@ -7459,7 +7459,7 @@ LZ4_wildCopy8.exit110: ; preds = %2514 br label %2550 2546: ; preds = %2527 - %2547 = trunc nuw i64 %2522 to i8 + %2547 = trunc nuw nsw i64 %2522 to i8 %2548 = load i8, ptr %.5.ph, align 1, !tbaa !26 %2549 = add i8 %2548, %2547 store i8 %2549, ptr %.5.ph, align 1, !tbaa !26 @@ -7510,7 +7510,7 @@ LZ4_wildCopy8.exit110: ; preds = %2514 br label %.critedge.i63 2571: ; preds = %2560 - %.tr.i62 = trunc nuw i64 %2554 to i8 + %.tr.i62 = trunc nuw nsw i64 %2554 to i8 %2572 = shl nuw i8 %.tr.i62, 4 store i8 %2572, ptr %.25, align 1, !tbaa !26 br label %.critedge.i63 @@ -7590,7 +7590,7 @@ LZ4_wildCopy8.exit113: ; preds = %2574 br label %.outer1534.backedge 2607: ; preds = %2586 - %2608 = trunc nuw i64 %2581 to i8 + %2608 = trunc nuw nsw i64 %2581 to i8 %2609 = load i8, ptr %.25, align 1, !tbaa !26 %2610 = add i8 %2609, %2608 store i8 %2610, ptr %.25, align 1, !tbaa !26 @@ -7678,7 +7678,7 @@ LZ4_wildCopy8.exit113: ; preds = %2574 br label %.critedge.i45 2646: ; preds = %2634 - %.tr.i = trunc nuw i64 %2628 to i8 + %.tr.i = trunc nuw nsw i64 %2628 to i8 %2647 = shl nuw i8 %.tr.i, 4 store i8 %2647, ptr %.5.ph, align 1, !tbaa !26 br label %.critedge.i45 @@ -7757,7 +7757,7 @@ LZ4_wildCopy8.exit119: ; preds = %2649 br label %2686 2682: ; preds = %2661 - %2683 = trunc nuw i64 %2656 to i8 + %2683 = trunc nuw nsw i64 %2656 to i8 %2684 = load i8, ptr %.5.ph, align 1, !tbaa !26 %2685 = add i8 %2684, %2683 store i8 %2685, ptr %.5.ph, align 1, !tbaa !26 @@ -7860,7 +7860,7 @@ LZ4_wildCopy8.exit119: ; preds = %2649 br label %.critedge.i51 2725: ; preds = %2713 - %.tr.i50 = trunc nuw i64 %2707 to i8 + %.tr.i50 = trunc nuw nsw i64 %2707 to i8 %2726 = shl nuw i8 %.tr.i50, 4 store i8 %2726, ptr %.5.ph, align 1, !tbaa !26 br label %.critedge.i51 @@ -7940,7 +7940,7 @@ LZ4_wildCopy8.exit116: ; preds = %2728 br label %2766 2762: ; preds = %2741 - %2763 = trunc nuw i64 %2736 to i8 + %2763 = trunc nuw nsw i64 %2736 to i8 %2764 = load i8, ptr %.5.ph, align 1, !tbaa !26 %2765 = add i8 %2764, %2763 store i8 %2765, ptr %.5.ph, align 1, !tbaa !26 @@ -8054,7 +8054,7 @@ LZ4_wildCopy8.exit116: ; preds = %2728 br label %.critedge.i 2813: ; preds = %2800 - %.0340.tr.i = trunc nuw i64 %.0340.i to i8 + %.0340.tr.i = trunc nuw nsw i64 %.0340.i to i8 %2814 = shl nuw i8 %.0340.tr.i, 4 store i8 %2814, ptr %.21410, align 1, !tbaa !26 br label %.critedge.i @@ -8153,7 +8153,7 @@ LZ4HC_encodeSequence.exit: ; preds = %2486, %LZ4_wildCopy br label %.critedge.i85 2862: ; preds = %2848 - %.tr.i84 = trunc nuw i64 %2827 to i8 + %.tr.i84 = trunc nuw nsw i64 %2827 to i8 %2863 = shl nuw i8 %.tr.i84, 4 store i8 %2863, ptr %.0328.i, align 1, !tbaa !26 br label %.critedge.i85 @@ -8224,7 +8224,7 @@ LZ4_wildCopy8.exit107: ; preds = %2865 br label %LZ4HC_encodeSequence.exit91 2894: ; preds = %LZ4_wildCopy8.exit107 - %2895 = trunc nuw i64 %2872 to i8 + %2895 = trunc nuw nsw i64 %2872 to i8 %2896 = load i8, ptr %.0328.i, align 1, !tbaa !26 %2897 = add i8 %2896, %2895 store i8 %2897, ptr %.0328.i, align 1, !tbaa !26 @@ -9535,7 +9535,7 @@ LZ4HC_FindLongerMatch.exit.thread.i: ; preds = %LZ4HC_InsertAndGetW br label %.critedge.i.i972 3497: ; preds = %3486 - %.tr.i.i971 = trunc nuw i64 %2932 to i8 + %.tr.i.i971 = trunc nuw nsw i64 %2932 to i8 %3498 = shl nuw i8 %.tr.i.i971, 4 store i8 %3498, ptr %.013352029.i, align 1, !tbaa !26 br label %.critedge.i.i972 @@ -9560,7 +9560,7 @@ LZ4_wildCopy8.exit455.i: ; preds = %3500 store i16 %3505, ptr %3499, align 1, !tbaa !24 %3506 = getelementptr i8, ptr %3499, i64 2 %3507 = add nsw i64 %.sroa.0162.4.extract.shift.i, -4 - %.lhs.trunc.i = trunc nsw i64 %3507 to i32 + %.lhs.trunc.i = trunc nuw nsw i64 %3507 to i32 %3508 = udiv i32 %.lhs.trunc.i, 255 %.zext.i = zext nneg i32 %3508 to i64 %3509 = getelementptr inbounds nuw i8, ptr %3506, i64 %.zext.i @@ -9583,7 +9583,7 @@ LZ4_wildCopy8.exit455.i: ; preds = %3500 .lr.ph2022.preheader.i: ; preds = %3514 %3519 = add nsw i64 %.sroa.0162.4.extract.shift.i, -529 - %.lhs.trunc2275.i = trunc nsw i64 %3519 to i32 + %.lhs.trunc2275.i = trunc nuw nsw i64 %3519 to i32 %3520 = udiv i32 %.lhs.trunc2275.i, 510 %.zext2276.i = zext nneg i32 %3520 to i64 %3521 = shl nuw nsw i64 %.zext2276.i, 1 @@ -9617,7 +9617,7 @@ LZ4_wildCopy8.exit455.i: ; preds = %3500 br label %select.unfold1634.i 3532: ; preds = %3512 - %3533 = trunc nuw i64 %3507 to i8 + %3533 = trunc nuw nsw i64 %3507 to i8 %3534 = load i8, ptr %.013352029.i, align 1, !tbaa !26 %3535 = add i8 %3534, %3533 store i8 %3535, ptr %.013352029.i, align 1, !tbaa !26 @@ -12413,7 +12413,7 @@ LZ4HC_literalsPrice.exit936.i: ; preds = %LZ4HC_literalsPrice br label %.critedge.i432.i 4780: ; preds = %4769 - %.tr.i431.i = trunc nuw i64 %4763 to i8 + %.tr.i431.i = trunc nuw nsw i64 %4763 to i8 %4781 = shl nuw i8 %.tr.i431.i, 4 store i8 %4781, ptr %.213362006.i, align 1, !tbaa !26 br label %.critedge.i432.i @@ -12492,7 +12492,7 @@ LZ4_wildCopy8.exit452.i: ; preds = %4783 br label %select.unfold1624.i 4816: ; preds = %4796 - %4817 = trunc nuw i64 %4791 to i8 + %4817 = trunc nuw nsw i64 %4791 to i8 %4818 = load i8, ptr %.213362006.i, align 1, !tbaa !26 %4819 = add i8 %4818, %4817 store i8 %4819, ptr %.213362006.i, align 1, !tbaa !26 @@ -12606,7 +12606,7 @@ select.unfold1634.i: ; preds = %3532, %3529 br label %4865 4863: ; preds = %4850 - %.0353.tr.i = trunc nuw i64 %.0353.i to i8 + %.0353.tr.i = trunc nuw nsw i64 %.0353.i to i8 %4864 = shl nuw i8 %.0353.tr.i, 4 store i8 %4864, ptr %.41662.i, align 1, !tbaa !26 br label %4865 @@ -12697,7 +12697,7 @@ select.unfold1634.i: ; preds = %3532, %3529 br label %.critedge.i442.i 4913: ; preds = %4899 - %.tr.i441.i = trunc nuw i64 %4878 to i8 + %.tr.i441.i = trunc nuw nsw i64 %4878 to i8 %4914 = shl nuw i8 %.tr.i441.i, 4 store i8 %4914, ptr %.1338.ph.i, align 1, !tbaa !26 br label %.critedge.i442.i @@ -12768,7 +12768,7 @@ LZ4_wildCopy8.exit.i960: ; preds = %4916 br label %LZ4HC_encodeSequence.exit448.i 4945: ; preds = %LZ4_wildCopy8.exit.i960 - %4946 = trunc nuw i64 %4923 to i8 + %4946 = trunc nuw nsw i64 %4923 to i8 %4947 = load i8, ptr %.1338.ph.i, align 1, !tbaa !26 %4948 = add i8 %4947, %4946 store i8 %4948, ptr %.1338.ph.i, align 1, !tbaa !26 diff --git a/bench/meilisearch-rs/optimized/4rtt9oltj0ubuf08.ll b/bench/meilisearch-rs/optimized/4rtt9oltj0ubuf08.ll index 1d04d2ebf68..57fc37bf124 100644 --- a/bench/meilisearch-rs/optimized/4rtt9oltj0ubuf08.ll +++ b/bench/meilisearch-rs/optimized/4rtt9oltj0ubuf08.ll @@ -26516,7 +26516,7 @@ define hidden noundef zeroext i1 @_ZN16futures_executor10local_pool12run_executo unreachable 13: ; preds = %10 - %14 = trunc i8 %6 to i1 + %14 = trunc nuw i8 %6 to i1 call void @llvm.lifetime.end.p0(i64 0, ptr nonnull %2) call void @"_ZN72_$LT$futures_executor..enter..Enter$u20$as$u20$core..ops..drop..Drop$GT$4drop17hacbcfadb55922e71E"(ptr noalias noundef nonnull align 1 %2) ret i1 %14 @@ -29909,7 +29909,7 @@ default.unreachable: ; preds = %31, %23, %.loopexit 86: ; preds = %73, %69 store i8 1, ptr %50, align 8, !noalias !5613 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %.sroa.6.i.i.i.i.i) - %87 = trunc i8 %53 to i1 + %87 = trunc nuw i8 %53 to i1 br i1 %87, label %97, label %"_ZN5tokio4sync4mpsc7bounded15Sender$LT$T$GT$7reserve28_$u7b$$u7b$closure$u7d$$u7d$17h124460acd0b7bfa5E.exit.thread.i.i.i" .body.i.i.i.i: ; preds = %84, %.body.i.i.i.i.i @@ -128765,23 +128765,21 @@ define hidden noundef range(i8 0, 3) i8 @"_ZN5tokio4sync4mpsc4list11Rx$LT$T$GT$3 %18 = getelementptr inbounds nuw i8, ptr %15, i64 16 %19 = load atomic i64, ptr %18 acquire, align 8 %20 = shl nuw nsw i64 1, %17 - %21 = and i64 %20, %19 - %.not.i3 = icmp eq i64 %21, 0 - %22 = and i64 %19, 8589934592 - %.not3.i = icmp eq i64 %22, 0 - %..i = select i1 %.not3.i, i8 2, i8 1 - %.sroa.0.0.i = select i1 %.not.i3, i8 %..i, i8 0 - %23 = or disjoint i64 %20, 8589934592 - %24 = and i64 %23, %19 - %25 = icmp eq i64 %24, 0 - br i1 %25, label %"_ZN5tokio4sync4mpsc4list11Rx$LT$T$GT$18try_advancing_head17h044a24d7285ae5baE.llvm.8265446259410684974.exit", label %26 - -"_ZN5tokio4sync4mpsc4list11Rx$LT$T$GT$18try_advancing_head17h044a24d7285ae5baE.llvm.8265446259410684974.exit": ; preds = %.lr.ph.i, %26, %.loopexit, %27 - %.sroa.0.0 = phi i8 [ 2, %.loopexit ], [ 1, %26 ], [ %.sroa.0.0.i, %27 ], [ 2, %.lr.ph.i ] + %21 = or disjoint i64 %20, 8589934592 + %22 = and i64 %21, %19 + %23 = icmp eq i64 %22, 0 + br i1 %23, label %"_ZN5tokio4sync4mpsc4list11Rx$LT$T$GT$18try_advancing_head17h044a24d7285ae5baE.llvm.8265446259410684974.exit", label %24 + +"_ZN5tokio4sync4mpsc4list11Rx$LT$T$GT$18try_advancing_head17h044a24d7285ae5baE.llvm.8265446259410684974.exit":; preds = %.lr.ph.i, %24, %.loopexit, %27 + %.sroa.0.0 = phi i8 [ 2, %.loopexit ], [ 1, %24 ], [ 0, %27 ], [ 2, %.lr.ph.i ] ret i8 %.sroa.0.0 26: ; preds = %.loopexit - %trunc = trunc i8 %.sroa.0.0.i to i1 + %25 = and i64 %20, %19 + %.not.i3 = icmp eq i64 %25, 0 + %26 = and i64 %19, 8589934592 + %.not3.i = icmp ne i64 %26, 0 + %trunc = and i1 %.not.i3, %.not3.i br i1 %trunc, label %"_ZN5tokio4sync4mpsc4list11Rx$LT$T$GT$18try_advancing_head17h044a24d7285ae5baE.llvm.8265446259410684974.exit", label %27 27: ; preds = %26 diff --git a/bench/meilisearch-rs/optimized/4tsjgmg5dc8wpnes.ll b/bench/meilisearch-rs/optimized/4tsjgmg5dc8wpnes.ll index 44449cdd234..f9e85be7515 100644 --- a/bench/meilisearch-rs/optimized/4tsjgmg5dc8wpnes.ll +++ b/bench/meilisearch-rs/optimized/4tsjgmg5dc8wpnes.ll @@ -4352,7 +4352,7 @@ default.unreachable2.i26.i.i.i.i: ; preds = %99 118: ; preds = %115, %89 %.sroa.12.0.in = phi i64 [ %.sroa.237.0.copyload.i.i.i.i, %115 ], [ %.sroa.2.0.copyload.i.i.i.i, %89 ] - %.sroa.12.0 = trunc i64 %.sroa.12.0.in to i8 + %.sroa.12.0 = trunc nsw i64 %.sroa.12.0.in to i8 %119 = getelementptr inbounds nuw i8, ptr %0, i64 1 store i8 1, ptr %119, align 1 %120 = getelementptr inbounds nuw i8, ptr %0, i64 2 @@ -4701,7 +4701,7 @@ default.unreachable2.i25.i.i.i.i: ; preds = %99 118: ; preds = %115, %89 %.sroa.12.0.in = phi i64 [ %.sroa.236.0.copyload.i.i.i.i, %115 ], [ %.sroa.2.0.copyload.i.i.i.i, %89 ] - %.sroa.12.0 = trunc i64 %.sroa.12.0.in to i8 + %.sroa.12.0 = trunc nuw i64 %.sroa.12.0.in to i8 %119 = getelementptr inbounds nuw i8, ptr %0, i64 1 store i8 1, ptr %119, align 1 %120 = getelementptr inbounds nuw i8, ptr %0, i64 2 @@ -5214,7 +5214,7 @@ default.unreachable2.i26.i.i.i.i: ; preds = %99 118: ; preds = %115, %89 %.sroa.12.0.in = phi i64 [ %.sroa.236.0.copyload.i.i.i.i, %115 ], [ %.sroa.2.0.copyload.i.i.i.i, %89 ] - %.sroa.12.0 = trunc i64 %.sroa.12.0.in to i32 + %.sroa.12.0 = trunc nsw i64 %.sroa.12.0.in to i32 %119 = getelementptr inbounds nuw i8, ptr %0, i64 4 store i32 1, ptr %119, align 4 %120 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -5727,7 +5727,7 @@ default.unreachable2.i25.i.i.i.i: ; preds = %99 118: ; preds = %115, %89 %.sroa.12.0.in = phi i64 [ %.sroa.235.0.copyload.i.i.i.i, %115 ], [ %.sroa.2.0.copyload.i.i.i.i, %89 ] - %.sroa.12.0 = trunc i64 %.sroa.12.0.in to i32 + %.sroa.12.0 = trunc nuw i64 %.sroa.12.0.in to i32 %119 = getelementptr inbounds nuw i8, ptr %0, i64 4 store i32 1, ptr %119, align 4 %120 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -6076,7 +6076,7 @@ default.unreachable2.i25.i.i.i.i: ; preds = %99 118: ; preds = %115, %89 %.sroa.12.0.in = phi i64 [ %.sroa.236.0.copyload.i.i.i.i, %115 ], [ %.sroa.2.0.copyload.i.i.i.i, %89 ] - %.sroa.12.0 = trunc i64 %.sroa.12.0.in to i16 + %.sroa.12.0 = trunc nuw i64 %.sroa.12.0.in to i16 %119 = getelementptr inbounds nuw i8, ptr %0, i64 2 store i16 1, ptr %119, align 2 %120 = getelementptr inbounds nuw i8, ptr %0, i64 4 @@ -8732,7 +8732,7 @@ common.resume: ; preds = %common.resume.sink. %.sroa.7142.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %86, i64 12 %.sroa.7142.0.copyload.i = load i32, ptr %.sroa.7142.0..sroa_idx.i, align 4, !noalias !2048 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %86), !noalias !2048 - %266 = trunc i8 %262 to i1 + %266 = trunc nuw i8 %262 to i1 br i1 %266, label %.invoke, label %268 267: ; preds = %260 @@ -8757,7 +8757,7 @@ common.resume: ; preds = %common.resume.sink. %.sroa.7147.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %85, i64 12 %.sroa.7147.0.copyload.i = load i32, ptr %.sroa.7147.0..sroa_idx.i, align 4, !noalias !2048 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %85), !noalias !2048 - %275 = trunc i8 %271 to i1 + %275 = trunc nuw i8 %271 to i1 br i1 %275, label %.invoke, label %279 276: ; preds = %269 @@ -8879,10 +8879,8 @@ common.resume: ; preds = %common.resume.sink. %.sroa.32.0 = phi i8 [ undef, %142 ], [ undef, %143 ], [ undef, %"_ZN4core3ptr70drop_in_place$LT$core..option..Option$LT$alloc..string..String$GT$$GT$17h142f1041b57afb0cE.exit.i" ], [ undef, %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17he66bee07c28499bfE.exit.i217.i" ], [ %253, %279 ] %.sroa.30.0 = phi ptr [ undef, %142 ], [ undef, %143 ], [ undef, %"_ZN4core3ptr70drop_in_place$LT$core..option..Option$LT$alloc..string..String$GT$$GT$17h142f1041b57afb0cE.exit.i" ], [ undef, %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17he66bee07c28499bfE.exit.i217.i" ], [ %255, %279 ] %.sroa.29.0 = phi i32 [ undef, %142 ], [ undef, %143 ], [ undef, %"_ZN4core3ptr70drop_in_place$LT$core..option..Option$LT$alloc..string..String$GT$$GT$17h142f1041b57afb0cE.exit.i" ], [ undef, %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17he66bee07c28499bfE.exit.i217.i" ], [ %.sroa.7147.0.copyload.i, %279 ] - %.sroa.28.0 = phi i8 [ undef, %142 ], [ undef, %143 ], [ undef, %"_ZN4core3ptr70drop_in_place$LT$core..option..Option$LT$alloc..string..String$GT$$GT$17h142f1041b57afb0cE.exit.i" ], [ undef, %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17he66bee07c28499bfE.exit.i217.i" ], [ %271, %279 ] %.sroa.26.0 = phi ptr [ undef, %142 ], [ undef, %143 ], [ undef, %"_ZN4core3ptr70drop_in_place$LT$core..option..Option$LT$alloc..string..String$GT$$GT$17h142f1041b57afb0cE.exit.i" ], [ undef, %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17he66bee07c28499bfE.exit.i217.i" ], [ %273, %279 ] %.sroa.25.0 = phi i32 [ undef, %142 ], [ undef, %143 ], [ undef, %"_ZN4core3ptr70drop_in_place$LT$core..option..Option$LT$alloc..string..String$GT$$GT$17h142f1041b57afb0cE.exit.i" ], [ undef, %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17he66bee07c28499bfE.exit.i217.i" ], [ %.sroa.7142.0.copyload.i, %279 ] - %.sroa.24.0 = phi i8 [ undef, %142 ], [ undef, %143 ], [ undef, %"_ZN4core3ptr70drop_in_place$LT$core..option..Option$LT$alloc..string..String$GT$$GT$17h142f1041b57afb0cE.exit.i" ], [ undef, %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17he66bee07c28499bfE.exit.i217.i" ], [ %262, %279 ] %.sroa.2290.0 = phi ptr [ undef, %142 ], [ undef, %143 ], [ undef, %"_ZN4core3ptr70drop_in_place$LT$core..option..Option$LT$alloc..string..String$GT$$GT$17h142f1041b57afb0cE.exit.i" ], [ undef, %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17he66bee07c28499bfE.exit.i217.i" ], [ %264, %279 ] %.sroa.14.5 = phi ptr [ %139, %142 ], [ %144, %143 ], [ %.sroa.14.1, %"_ZN4core3ptr70drop_in_place$LT$core..option..Option$LT$alloc..string..String$GT$$GT$17h142f1041b57afb0cE.exit.i" ], [ %.sroa.14.1, %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17he66bee07c28499bfE.exit.i217.i" ], [ %.sroa.0112.sroa.0.sroa.0.i.sroa.4.0.copyload, %279 ] %.sroa.087.5 = phi i64 [ -9223372036854775808, %142 ], [ -9223372036854775808, %143 ], [ -9223372036854775808, %"_ZN4core3ptr70drop_in_place$LT$core..option..Option$LT$alloc..string..String$GT$$GT$17h142f1041b57afb0cE.exit.i" ], [ -9223372036854775808, %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17he66bee07c28499bfE.exit.i217.i" ], [ %.sroa.0112.sroa.0.sroa.0.i.sroa.0.0.copyload, %279 ] @@ -8937,7 +8935,7 @@ common.resume: ; preds = %common.resume.sink. %.sroa.23.0..sroa_idx = getelementptr inbounds nuw i8, ptr %99, i64 104 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(3) %.sroa.23.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(3) %.sroa.23, i64 3, i1 false) %.sroa.24.0..sroa_idx = getelementptr inbounds nuw i8, ptr %99, i64 107 - store i8 %.sroa.24.0, ptr %.sroa.24.0..sroa_idx, align 1 + store i8 0, ptr %.sroa.24.0..sroa_idx, align 1 %.sroa.25.0..sroa_idx = getelementptr inbounds nuw i8, ptr %99, i64 108 store i32 %.sroa.25.0, ptr %.sroa.25.0..sroa_idx, align 4 %.sroa.26.0..sroa_idx = getelementptr inbounds nuw i8, ptr %99, i64 112 @@ -8945,7 +8943,7 @@ common.resume: ; preds = %common.resume.sink. %.sroa.27.0..sroa_idx = getelementptr inbounds nuw i8, ptr %99, i64 120 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(3) %.sroa.27.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(3) %.sroa.27, i64 3, i1 false) %.sroa.28.0..sroa_idx = getelementptr inbounds nuw i8, ptr %99, i64 123 - store i8 %.sroa.28.0, ptr %.sroa.28.0..sroa_idx, align 1 + store i8 0, ptr %.sroa.28.0..sroa_idx, align 1 %.sroa.29.0..sroa_idx = getelementptr inbounds nuw i8, ptr %99, i64 124 store i32 %.sroa.29.0, ptr %.sroa.29.0..sroa_idx, align 4 %.sroa.30.0..sroa_idx = getelementptr inbounds nuw i8, ptr %99, i64 128 diff --git a/bench/miniaudio/optimized/unity.ll b/bench/miniaudio/optimized/unity.ll index 449477b8a46..979505ec254 100644 --- a/bench/miniaudio/optimized/unity.ll +++ b/bench/miniaudio/optimized/unity.ll @@ -1148,7 +1148,7 @@ define range(i32 0, 23) i32 @ma_itoa_s(i32 noundef %0, ptr noundef captures(addr %.046 = phi ptr [ %1, %9 ], [ %15, %11 ] %12 = urem i32 %.148, %3 %13 = icmp samesign ugt i32 %12, 9 - %14 = trunc nuw i32 %12 to i8 + %14 = trunc nuw nsw i32 %12 to i8 %storemerge.v = select i1 %13, i8 87, i8 48 %storemerge = add nuw nsw i8 %storemerge.v, %14 store i8 %storemerge, ptr %.046, align 1, !tbaa !7 @@ -38212,7 +38212,7 @@ ma_channel_map_get_channel.exit.us.us: ; preds = %16, %13 br i1 %or.cond.i58.i.us.us.us, label %35, label %ma_channel_map_get_channel.exit45.us.us.us 35: ; preds = %33 - %36 = trunc nuw i32 %.03552.us.us.us to i8 + %36 = trunc nuw nsw i32 %.03552.us.us.us to i8 %37 = add nuw nsw i8 %36, 12 br label %ma_channel_map_get_channel.exit45.us.us.us @@ -42429,7 +42429,7 @@ define internal fastcc zeroext range(i8 0, 46) i8 @ma_channel_map_init_standard_ br i1 %or.cond.i, label %22, label %ma_channel_map_init_standard_channel_alsa.exit 22: ; preds = %19 - %23 = trunc nuw i32 %2 to i8 + %23 = trunc nuw nsw i32 %2 to i8 %24 = add nuw nsw i8 %23, 12 br label %ma_channel_map_init_standard_channel_alsa.exit @@ -42472,7 +42472,7 @@ define internal fastcc zeroext range(i8 0, 46) i8 @ma_channel_map_init_standard_ br i1 %or.cond.i25, label %38, label %ma_channel_map_init_standard_channel_alsa.exit 38: ; preds = %35 - %39 = trunc nuw i32 %2 to i8 + %39 = trunc nuw nsw i32 %2 to i8 %40 = add nuw nsw i8 %39, 14 br label %ma_channel_map_init_standard_channel_alsa.exit @@ -42525,7 +42525,7 @@ define internal fastcc zeroext range(i8 0, 46) i8 @ma_channel_map_init_standard_ br i1 %or.cond.i32, label %58, label %ma_channel_map_init_standard_channel_alsa.exit 58: ; preds = %55 - %59 = trunc nuw i32 %2 to i8 + %59 = trunc nuw nsw i32 %2 to i8 %60 = add nuw nsw i8 %59, 12 br label %ma_channel_map_init_standard_channel_alsa.exit @@ -42578,7 +42578,7 @@ define internal fastcc zeroext range(i8 0, 46) i8 @ma_channel_map_init_standard_ br i1 %or.cond.i39, label %78, label %ma_channel_map_init_standard_channel_alsa.exit 78: ; preds = %75 - %79 = trunc nuw i32 %2 to i8 + %79 = trunc nuw nsw i32 %2 to i8 %80 = add nuw nsw i8 %79, 12 br label %ma_channel_map_init_standard_channel_alsa.exit @@ -42631,7 +42631,7 @@ define internal fastcc zeroext range(i8 0, 46) i8 @ma_channel_map_init_standard_ br i1 %or.cond.i46, label %98, label %ma_channel_map_init_standard_channel_alsa.exit 98: ; preds = %95 - %99 = trunc nuw i32 %2 to i8 + %99 = trunc nuw nsw i32 %2 to i8 %100 = add nuw nsw i8 %99, 12 br label %ma_channel_map_init_standard_channel_alsa.exit @@ -42674,7 +42674,7 @@ define internal fastcc zeroext range(i8 0, 46) i8 @ma_channel_map_init_standard_ br i1 %or.cond.i53, label %114, label %ma_channel_map_init_standard_channel_alsa.exit 114: ; preds = %111 - %115 = trunc nuw i32 %2 to i8 + %115 = trunc nuw nsw i32 %2 to i8 %116 = add nuw nsw i8 %115, 14 br label %ma_channel_map_init_standard_channel_alsa.exit @@ -42727,7 +42727,7 @@ define internal fastcc zeroext range(i8 0, 46) i8 @ma_channel_map_init_standard_ br i1 %or.cond.i58, label %134, label %ma_channel_map_init_standard_channel_alsa.exit 134: ; preds = %131 - %135 = trunc nuw i32 %2 to i8 + %135 = trunc nuw nsw i32 %2 to i8 %136 = add nuw nsw i8 %135, 12 br label %ma_channel_map_init_standard_channel_alsa.exit @@ -51899,12 +51899,12 @@ ma_dr_wav_read_pcm_frames_f32__ieee.exit: ; preds = %.preheader.split.us 239: ; preds = %237 %240 = zext i16 %17 to i32 - %.lhs.trunc = trunc i32 %.0.i.i48 to i16 + %.lhs.trunc = trunc nuw i32 %.0.i.i48 to i16 %241 = udiv i16 %.lhs.trunc, %17 %242 = urem i16 %.lhs.trunc, %17 %243 = icmp samesign uge i32 %.0.i.i48, %240 %.not.i52 = icmp eq i16 %242, 0 - %or.cond144 = and i1 %243, %.not.i52 + %or.cond144 = select i1 %243, i1 %.not.i52, i1 false br i1 %or.cond144, label %.preheader.i54, label %ma_dr_wav_read_pcm_frames_f32__alaw.exit .preheader.i54: ; preds = %239 @@ -51999,12 +51999,12 @@ ma_dr_wav_read_pcm_frames_f32__alaw.exit: ; preds = %247, %250, %.loopex 287: ; preds = %285 %288 = zext i16 %17 to i32 - %.lhs.trunc87 = trunc i32 %.0.i.i62 to i16 + %.lhs.trunc87 = trunc nuw i32 %.0.i.i62 to i16 %289 = udiv i16 %.lhs.trunc87, %17 %290 = urem i16 %.lhs.trunc87, %17 %291 = icmp samesign uge i32 %.0.i.i62, %288 %.not.i66 = icmp eq i16 %290, 0 - %or.cond145 = and i1 %291, %.not.i66 + %or.cond145 = select i1 %291, i1 %.not.i66, i1 false br i1 %or.cond145, label %.preheader.i68, label %ma_dr_wav_read_pcm_frames_f32__mulaw.exit .preheader.i68: ; preds = %287 @@ -52530,12 +52530,12 @@ ma_dr_wav_read_pcm_frames_s16__ieee.exit: ; preds = %.preheader.split.us 215: ; preds = %213 %216 = zext i16 %16 to i32 - %.lhs.trunc = trunc i32 %.0.i.i47 to i16 + %.lhs.trunc = trunc nuw i32 %.0.i.i47 to i16 %217 = udiv i16 %.lhs.trunc, %16 %218 = urem i16 %.lhs.trunc, %16 %219 = icmp samesign uge i32 %.0.i.i47, %216 %.not.i51 = icmp eq i16 %218, 0 - %or.cond133 = and i1 %219, %.not.i51 + %or.cond133 = select i1 %219, i1 %.not.i51, i1 false br i1 %or.cond133, label %.preheader.i53, label %ma_dr_wav_read_pcm_frames_s16__alaw.exit .preheader.i53: ; preds = %215 @@ -52627,12 +52627,12 @@ ma_dr_wav_read_pcm_frames_s16__alaw.exit: ; preds = %223, %226, %.loopex 261: ; preds = %259 %262 = zext i16 %16 to i32 - %.lhs.trunc81 = trunc i32 %.0.i.i57 to i16 + %.lhs.trunc81 = trunc nuw i32 %.0.i.i57 to i16 %263 = udiv i16 %.lhs.trunc81, %16 %264 = urem i16 %.lhs.trunc81, %16 %265 = icmp samesign uge i32 %.0.i.i57, %262 %.not.i61 = icmp eq i16 %264, 0 - %or.cond134 = and i1 %265, %.not.i61 + %or.cond134 = select i1 %265, i1 %.not.i61, i1 false br i1 %or.cond134, label %.preheader.i63, label %ma_dr_wav_read_pcm_frames_s16__mulaw.exit .preheader.i63: ; preds = %261 @@ -53206,12 +53206,12 @@ ma_dr_wav_read_pcm_frames_s32__ieee.exit: ; preds = %.preheader.split.us 235: ; preds = %233 %236 = zext i16 %17 to i32 - %.lhs.trunc = trunc i32 %.0.i.i48 to i16 + %.lhs.trunc = trunc nuw i32 %.0.i.i48 to i16 %237 = udiv i16 %.lhs.trunc, %17 %238 = urem i16 %.lhs.trunc, %17 %239 = icmp samesign uge i32 %.0.i.i48, %236 %.not.i52 = icmp eq i16 %238, 0 - %or.cond144 = and i1 %239, %.not.i52 + %or.cond144 = select i1 %239, i1 %.not.i52, i1 false br i1 %or.cond144, label %.preheader.i54, label %ma_dr_wav_read_pcm_frames_s32__alaw.exit .preheader.i54: ; preds = %235 @@ -53306,12 +53306,12 @@ ma_dr_wav_read_pcm_frames_s32__alaw.exit: ; preds = %243, %246, %.loopex 283: ; preds = %281 %284 = zext i16 %17 to i32 - %.lhs.trunc87 = trunc i32 %.0.i.i62 to i16 + %.lhs.trunc87 = trunc nuw i32 %.0.i.i62 to i16 %285 = udiv i16 %.lhs.trunc87, %17 %286 = urem i16 %.lhs.trunc87, %17 %287 = icmp samesign uge i32 %.0.i.i62, %284 %.not.i66 = icmp eq i16 %286, 0 - %or.cond145 = and i1 %287, %.not.i66 + %or.cond145 = select i1 %287, i1 %.not.i66, i1 false br i1 %or.cond145, label %.preheader.i68, label %ma_dr_wav_read_pcm_frames_s32__mulaw.exit .preheader.i68: ; preds = %283 @@ -102399,7 +102399,7 @@ ma_dr_mp3_bs_get_bits.exit167.i: ; preds = %._crit_edge.i156.i, %543 = sub nuw nsw i32 8, %.018.lcssa.i171.i %544 = lshr i32 %.021.lcssa.i169.i, %543 %545 = or i32 %544, %.020.lcssa.i170.i - %546 = trunc i32 %545 to i16 + %546 = trunc nuw i32 %545 to i16 br label %ma_dr_mp3_bs_get_bits.exit179.i ma_dr_mp3_bs_get_bits.exit179.i: ; preds = %._crit_edge.i168.i, %ma_dr_mp3_bs_get_bits.exit167.i @@ -105238,7 +105238,7 @@ ma_dr_mp3_bs_get_bits.exit81.i: ; preds = %._crit_edge.i70.i, %2048 = sub nuw nsw i32 8, %.018.lcssa.i.i.i %2049 = lshr i32 %.021.lcssa.i.i.i, %2048 %2050 = or i32 %2049, %.020.lcssa.i.i.i - %2051 = trunc i32 %2050 to i16 + %2051 = trunc nuw nsw i32 %2050 to i16 br label %ma_dr_mp3_bs_get_bits.exit.i.i ma_dr_mp3_bs_get_bits.exit.i.i: ; preds = %._crit_edge.i.i.i, %2030 @@ -125611,7 +125611,7 @@ ma_node_get_output_channels.exit.i: ; preds = %15, %11 %24 = atomicrmw xchg ptr %21, i32 1 seq_cst, align 4 %25 = mul nuw nsw i64 %.03445.i, %.0.i.i %26 = getelementptr inbounds nuw i8, ptr %7, i64 %25 - %27 = trunc i64 %.03445.i to i32 + %27 = trunc nuw i64 %.03445.i to i32 %28 = sub i32 %8, %27 %29 = load atomic i64, ptr %22 seq_cst, align 8 %30 = call fastcc i32 @ma_node_read_pcm_frames(ptr noundef nonnull %12, i32 noundef 0, ptr noundef %26, i32 noundef %28, ptr noundef %6, i64 noundef %29) @@ -128409,7 +128409,7 @@ ma_dr_wav__chunk_matches.exit261.thread: ; preds = %480, %481, %.thread 566: ; preds = %563 %567 = load ptr, ptr %445, align 8, !tbaa !1871 %568 = load ptr, ptr %436, align 8, !tbaa !1872 - %569 = trunc i64 %.1176 to i32 + %569 = trunc nuw i64 %.1176 to i32 %570 = sub i32 %470, %569 %571 = call i32 %567(ptr noundef %568, i32 noundef %570, i32 noundef 1) #69 %.not212.not = icmp eq i32 %571, 0 @@ -131582,7 +131582,7 @@ ma_dr_flac__decode_samples__constant.exit.i: ; preds = %65, %61 %113 = xor i64 %112, -1 %114 = and i64 %111, %113 %115 = lshr i64 %114, %100 - %116 = trunc i64 %115 to i32 + %116 = trunc nuw nsw i64 %115 to i32 %117 = call fastcc i32 @ma_dr_flac__reload_cache(ptr noundef nonnull %22) %.not35.i.i.i.i = icmp eq i32 %117, 0 br i1 %.not35.i.i.i.i, label %ma_dr_flac__decode_samples__lpc.exit.i, label %118 @@ -132120,7 +132120,7 @@ ma_dr_flac__flush_crc16.exit: ; preds = %424, %342 %452 = xor i64 %451, -1 %453 = and i64 %450, %452 %454 = lshr i64 %453, %.pre-phi - %455 = trunc i64 %454 to i32 + %455 = trunc nuw nsw i64 %454 to i32 %456 = call fastcc i32 @ma_dr_flac__reload_cache(ptr noundef nonnull %150) %.not35.i.i50 = icmp eq i32 %456, 0 br i1 %.not35.i.i50, label %ma_dr_flac__decode_subframe.exit, label %457 @@ -132235,7 +132235,7 @@ define internal fastcc range(i32 0, 2) i32 @ma_dr_flac__read_next_flac_frame_hea %42 = xor i64 %41, -1 %43 = and i64 %40, %42 %44 = lshr i64 %43, %29 - %45 = trunc i64 %44 to i32 + %45 = trunc nuw nsw i64 %44 to i32 %46 = tail call fastcc i32 @ma_dr_flac__reload_cache(ptr noundef nonnull %0) %.not35.i.i.i = icmp eq i32 %46, 0 br i1 %.not35.i.i.i, label %ma_dr_flac__find_and_seek_to_next_sync_code.exit.thread, label %47 @@ -132309,7 +132309,7 @@ define internal fastcc range(i32 0, 2) i32 @ma_dr_flac__read_next_flac_frame_hea %88 = xor i64 %87, -1 %89 = and i64 %86, %88 %90 = lshr i64 %89, %75 - %91 = trunc i64 %90 to i32 + %91 = trunc nuw nsw i64 %90 to i32 %92 = tail call fastcc i32 @ma_dr_flac__reload_cache(ptr noundef nonnull %0) %.not35.i.i18.i = icmp eq i32 %92, 0 br i1 %.not35.i.i18.i, label %ma_dr_flac__find_and_seek_to_next_sync_code.exit.thread, label %93 @@ -132471,7 +132471,7 @@ ma_dr_flac__find_and_seek_to_next_sync_code.exit: ; preds = %111 %161 = xor i64 %160, -1 %162 = and i64 %159, %161 %163 = lshr i64 %162, %148 - %164 = trunc i64 %163 to i32 + %164 = trunc nuw nsw i64 %163 to i32 %165 = tail call fastcc i32 @ma_dr_flac__reload_cache(ptr noundef nonnull %0) %.not35.i.i130 = icmp eq i32 %165, 0 br i1 %.not35.i.i130, label %ma_dr_flac__find_and_seek_to_next_sync_code.exit.thread, label %166 @@ -132556,7 +132556,7 @@ ma_dr_flac__find_and_seek_to_next_sync_code.exit: ; preds = %111 %217 = xor i64 %216, -1 %218 = and i64 %215, %217 %219 = lshr i64 %218, %204 - %220 = trunc i64 %219 to i32 + %220 = trunc nuw nsw i64 %219 to i32 %221 = tail call fastcc i32 @ma_dr_flac__reload_cache(ptr noundef nonnull %0) %.not35.i.i139 = icmp eq i32 %221, 0 br i1 %.not35.i.i139, label %ma_dr_flac__find_and_seek_to_next_sync_code.exit.thread, label %222 @@ -132635,7 +132635,7 @@ ma_dr_flac__find_and_seek_to_next_sync_code.exit: ; preds = %111 %270 = xor i64 %269, -1 %271 = and i64 %268, %270 %272 = lshr i64 %271, %257 - %273 = trunc i64 %272 to i32 + %273 = trunc nuw nsw i64 %272 to i32 %274 = tail call fastcc i32 @ma_dr_flac__reload_cache(ptr noundef nonnull %0) %.not35.i.i148 = icmp eq i32 %274, 0 br i1 %.not35.i.i148, label %ma_dr_flac__find_and_seek_to_next_sync_code.exit.thread, label %275 @@ -132719,7 +132719,7 @@ ma_dr_flac__find_and_seek_to_next_sync_code.exit: ; preds = %111 %325 = xor i64 %324, -1 %326 = and i64 %323, %325 %327 = lshr i64 %326, %312 - %328 = trunc i64 %327 to i32 + %328 = trunc nuw nsw i64 %327 to i32 %329 = tail call fastcc i32 @ma_dr_flac__reload_cache(ptr noundef nonnull %0) %.not35.i.i157 = icmp eq i32 %329, 0 br i1 %.not35.i.i157, label %ma_dr_flac__find_and_seek_to_next_sync_code.exit.thread, label %330 @@ -132977,7 +132977,7 @@ ma_dr_flac__find_and_seek_to_next_sync_code.exit: ; preds = %111 %459 = xor i64 %458, -1 %460 = and i64 %457, %459 %461 = lshr i64 %460, %445 - %462 = trunc i64 %461 to i32 + %462 = trunc nuw nsw i64 %461 to i32 %463 = tail call fastcc i32 @ma_dr_flac__reload_cache(ptr noundef nonnull %0) %.not35.i = icmp eq i32 %463, 0 br i1 %.not35.i, label %ma_dr_flac__find_and_seek_to_next_sync_code.exit.thread, label %464 @@ -133062,7 +133062,7 @@ ma_dr_flac__read_uint32.exit: ; preds = %470, %447 %512 = xor i64 %511, -1 %513 = and i64 %510, %512 %514 = lshr i64 %513, %498 - %515 = trunc i64 %514 to i32 + %515 = trunc nuw nsw i64 %514 to i32 %516 = tail call fastcc i32 @ma_dr_flac__reload_cache(ptr noundef nonnull %0) %.not35.i95 = icmp eq i32 %516, 0 br i1 %.not35.i95, label %ma_dr_flac__find_and_seek_to_next_sync_code.exit.thread, label %517 @@ -133151,7 +133151,7 @@ ma_dr_flac__read_uint32.exit97: ; preds = %523, %500 %570 = xor i64 %569, -1 %571 = and i64 %568, %570 %572 = lshr i64 %571, %556 - %573 = trunc i64 %572 to i32 + %573 = trunc nuw nsw i64 %572 to i32 %574 = tail call fastcc i32 @ma_dr_flac__reload_cache(ptr noundef nonnull %0) %.not35.i100 = icmp eq i32 %574, 0 br i1 %.not35.i100, label %ma_dr_flac__find_and_seek_to_next_sync_code.exit.thread, label %575 @@ -134309,7 +134309,7 @@ define internal fastcc range(i32 0, 2) i32 @ma_dr_flac__read_uint8(ptr noundef n %31 = xor i64 %30, -1 %32 = and i64 %29, %31 %33 = lshr i64 %32, %12 - %34 = trunc i64 %33 to i32 + %34 = trunc nuw nsw i64 %33 to i32 %35 = tail call fastcc i32 @ma_dr_flac__reload_cache(ptr noundef nonnull %0) %.not35.i = icmp eq i32 %35, 0 br i1 %.not35.i, label %ma_dr_flac__read_uint32.exit.thread, label %36 @@ -134397,7 +134397,7 @@ define internal fastcc range(i32 0, 2) i32 @ma_dr_flac__read_uint16(ptr noundef %31 = xor i64 %30, -1 %32 = and i64 %29, %31 %33 = lshr i64 %32, %12 - %34 = trunc i64 %33 to i32 + %34 = trunc nuw nsw i64 %33 to i32 %35 = tail call fastcc i32 @ma_dr_flac__reload_cache(ptr noundef nonnull %0) %.not35.i = icmp eq i32 %35, 0 br i1 %.not35.i, label %ma_dr_flac__read_uint32.exit.thread, label %36 @@ -134480,7 +134480,7 @@ define internal fastcc range(i32 0, 2) i32 @ma_dr_flac__read_subframe_header(ptr %25 = xor i64 %24, -1 %26 = and i64 %23, %25 %27 = lshr i64 %26, %10 - %28 = trunc i64 %27 to i32 + %28 = trunc nuw nsw i64 %27 to i32 %29 = tail call fastcc i32 @ma_dr_flac__reload_cache(ptr noundef nonnull %0) %.not35.i.i = icmp eq i32 %29, 0 br i1 %.not35.i.i, label %.critedge, label %30 @@ -135153,7 +135153,7 @@ define internal fastcc void @ma_dr_flac__decode_samples_with_residual(ptr nounde %31 = xor i64 %30, -1 %32 = and i64 %29, %31 %33 = lshr exact i64 %32, %16 - %34 = trunc i64 %33 to i32 + %34 = trunc nuw nsw i64 %33 to i32 %35 = tail call fastcc i32 @ma_dr_flac__reload_cache(ptr noundef nonnull %0) %.not35.i.i = icmp eq i32 %35, 0 br i1 %.not35.i.i, label %ma_dr_flac__read_uint8.exit.thread, label %36 @@ -135231,7 +135231,7 @@ ma_dr_flac__read_uint8.exit: ; preds = %18, %42 %79 = xor i64 %78, -1 %80 = and i64 %77, %79 %81 = lshr i64 %80, %64 - %82 = trunc i64 %81 to i32 + %82 = trunc nuw nsw i64 %81 to i32 %83 = tail call fastcc i32 @ma_dr_flac__reload_cache(ptr noundef nonnull %0) %.not35.i.i63 = icmp eq i32 %83, 0 br i1 %.not35.i.i63, label %ma_dr_flac__read_uint8.exit.thread, label %84 @@ -135364,7 +135364,7 @@ ma_dr_flac__read_uint8.exit: ; preds = %18, %42 %171 = xor i64 %170, -1 %172 = and i64 %169, %171 %173 = lshr i64 %172, %158 - %174 = trunc i64 %173 to i32 + %174 = trunc nuw nsw i64 %173 to i32 %175 = tail call fastcc i32 @ma_dr_flac__reload_cache(ptr noundef nonnull %0) %.not35.i.i72 = icmp eq i32 %175, 0 br i1 %.not35.i.i72, label %ma_dr_flac__read_uint8.exit.thread, label %176 @@ -135437,7 +135437,7 @@ ma_dr_flac__read_uint8.exit: ; preds = %18, %42 %216 = xor i64 %215, -1 %217 = and i64 %214, %216 %218 = lshr i64 %217, %203 - %219 = trunc i64 %218 to i32 + %219 = trunc nuw nsw i64 %218 to i32 %220 = tail call fastcc i32 @ma_dr_flac__reload_cache(ptr noundef nonnull %0) %.not35.i.i81 = icmp eq i32 %220, 0 br i1 %.not35.i.i81, label %ma_dr_flac__read_uint8.exit.thread, label %221 @@ -135525,7 +135525,7 @@ ma_dr_flac__read_uint8.exit: ; preds = %18, %42 %266 = xor i64 %265, -1 %267 = and i64 %264, %266 %268 = lshr i64 %267, %253 - %269 = trunc i64 %268 to i32 + %269 = trunc nuw nsw i64 %268 to i32 %270 = tail call fastcc i32 @ma_dr_flac__reload_cache(ptr noundef nonnull %0) %.not35.i.i90 = icmp eq i32 %270, 0 br i1 %.not35.i.i90, label %ma_dr_flac__read_uint8.exit.thread, label %271 @@ -146400,7 +146400,7 @@ define internal fastcc range(i32 -100, 1) i32 @ma_dr_flac__read_utf8_coded_numbe %27 = xor i64 %26, -1 %28 = and i64 %25, %27 %29 = lshr i64 %28, %12 - %30 = trunc i64 %29 to i32 + %30 = trunc nuw nsw i64 %29 to i32 %31 = tail call fastcc i32 @ma_dr_flac__reload_cache(ptr noundef nonnull %0) %.not35.i.i = icmp eq i32 %31, 0 br i1 %.not35.i.i, label %50, label %32 @@ -146534,7 +146534,7 @@ define internal fastcc range(i32 -100, 1) i32 @ma_dr_flac__read_utf8_coded_numbe %104 = xor i64 %103, -1 %105 = and i64 %102, %104 %106 = lshr i64 %105, %91 - %107 = trunc i64 %106 to i32 + %107 = trunc nuw nsw i64 %106 to i32 %108 = tail call fastcc i32 @ma_dr_flac__reload_cache(ptr noundef nonnull %0) %.not35.i.i32 = icmp eq i32 %108, 0 br i1 %.not35.i.i32, label %127, label %109 @@ -147078,7 +147078,7 @@ define internal fastcc range(i32 -100, 1) i32 @ma_dr_flac__seek_flac_frame(ptr n %88 = xor i64 %87, -1 %89 = and i64 %86, %88 %90 = lshr i64 %89, %75 - %91 = trunc i64 %90 to i32 + %91 = trunc nuw nsw i64 %90 to i32 %92 = tail call fastcc i32 @ma_dr_flac__reload_cache(ptr noundef nonnull %6) %.not35.i.i.i = icmp eq i32 %92, 0 br i1 %.not35.i.i.i, label %ma_dr_flac__seek_subframe.exit.thread, label %93 @@ -147532,7 +147532,7 @@ ma_dr_flac__flush_crc16.exit: ; preds = %376, %294 %404 = xor i64 %403, -1 %405 = and i64 %402, %404 %406 = lshr i64 %405, %.pre-phi - %407 = trunc i64 %406 to i32 + %407 = trunc nuw nsw i64 %406 to i32 %408 = tail call fastcc i32 @ma_dr_flac__reload_cache(ptr noundef nonnull %128) %.not35.i.i = icmp eq i32 %408, 0 br i1 %.not35.i.i, label %ma_dr_flac__seek_subframe.exit.thread, label %409 @@ -147616,7 +147616,7 @@ define internal fastcc range(i32 0, 2) i32 @ma_dr_flac__read_and_seek_residual(p %26 = xor i64 %25, -1 %27 = and i64 %24, %26 %28 = lshr exact i64 %27, %11 - %29 = trunc i64 %28 to i32 + %29 = trunc nuw nsw i64 %28 to i32 %30 = tail call fastcc i32 @ma_dr_flac__reload_cache(ptr noundef nonnull %0) %.not35.i.i = icmp eq i32 %30, 0 br i1 %.not35.i.i, label %ma_dr_flac__read_uint8.exit.thread, label %31 @@ -147692,7 +147692,7 @@ ma_dr_flac__read_uint8.exit: ; preds = %13, %37 %72 = xor i64 %71, -1 %73 = and i64 %70, %72 %74 = lshr i64 %73, %57 - %75 = trunc i64 %74 to i32 + %75 = trunc nuw nsw i64 %74 to i32 %76 = tail call fastcc i32 @ma_dr_flac__reload_cache(ptr noundef nonnull %0) %.not35.i.i43 = icmp eq i32 %76, 0 br i1 %.not35.i.i43, label %ma_dr_flac__read_uint8.exit.thread, label %77 @@ -147788,7 +147788,7 @@ ma_dr_flac__read_uint8.exit: ; preds = %13, %37 %131 = xor i64 %130, -1 %132 = and i64 %129, %131 %133 = lshr i64 %132, %118 - %134 = trunc i64 %133 to i32 + %134 = trunc nuw nsw i64 %133 to i32 %135 = tail call fastcc i32 @ma_dr_flac__reload_cache(ptr noundef nonnull %0) %.not35.i.i52 = icmp eq i32 %135, 0 br i1 %.not35.i.i52, label %ma_dr_flac__read_uint8.exit.thread, label %136 @@ -147861,7 +147861,7 @@ ma_dr_flac__read_uint8.exit: ; preds = %13, %37 %175 = xor i64 %174, -1 %176 = and i64 %173, %175 %177 = lshr i64 %176, %162 - %178 = trunc i64 %177 to i32 + %178 = trunc nuw nsw i64 %177 to i32 %179 = tail call fastcc i32 @ma_dr_flac__reload_cache(ptr noundef nonnull %0) %.not35.i.i61 = icmp eq i32 %179, 0 br i1 %.not35.i.i61, label %ma_dr_flac__read_uint8.exit.thread, label %180 @@ -148559,7 +148559,7 @@ ma_dr_flac__clz.exit.i.i: ; preds = %613, %590, %587 %637 = xor i64 %636, -1 %638 = and i64 %635, %637 %639 = lshr i64 %638, %624 - %640 = trunc i64 %639 to i32 + %640 = trunc nuw nsw i64 %639 to i32 %641 = tail call fastcc i32 @ma_dr_flac__reload_cache(ptr noundef nonnull %0) %.not35.i.i73 = icmp eq i32 %641, 0 br i1 %.not35.i.i73, label %ma_dr_flac__read_uint8.exit.thread, label %642 diff --git a/bench/mold/optimized/icf.cc.X86_64.ll b/bench/mold/optimized/icf.cc.X86_64.ll index 554028e7a01..3f299817271 100644 --- a/bench/mold/optimized/icf.cc.X86_64.ll +++ b/bench/mold/optimized/icf.cc.X86_64.ll @@ -1029,7 +1029,7 @@ _ZZN4moldL13uniquify_ciesINS_6X86_64EEEvRNS_7ContextIT_EEENKUlRNS_9CieRecordIS1_ br i1 %.not.i.i.i, label %158, label %156 .loopexit.i.thread: ; preds = %.lr.ph.i - %154 = trunc i64 %.pre57.i to i32 + %154 = trunc nuw nsw i64 %.pre57.i to i32 %155 = getelementptr inbounds nuw i8, ptr %.sroa.013.041.i, i64 28 store i32 %154, ptr %155, align 4, !tbaa !27 %.not.i.i.i197 = icmp eq ptr %.sroa.9.139.i, %.sroa.15.140.i @@ -14095,14 +14095,14 @@ _ZN11SipHashTmplILi1ELi3ELi128EE6updateEPvl.exit102.i.i.i.i.i: ; preds = %_ZN11S %.120.lcssa.i90.i.i.i.i.i = phi ptr [ %235, %211 ], [ %257, %_ZN11SipHashTmplILi1ELi3ELi128EE6updateEPvl.exit102.loopexit.i.i.i.i.i ] %.1.lcssa.i91.i.i.i.i.i = phi i64 [ %212, %211 ], [ %258, %_ZN11SipHashTmplILi1ELi3ELi128EE6updateEPvl.exit102.loopexit.i.i.i.i.i ] call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %33, ptr nonnull align 1 %.120.lcssa.i90.i.i.i.i.i, i64 %.1.lcssa.i91.i.i.i.i.i, i1 false) - %storemerge.i93.i.i.i.i.i = trunc i64 %.1.lcssa.i91.i.i.i.i.i to i8 + %storemerge.i93.i.i.i.i.i = trunc nuw nsw i64 %.1.lcssa.i91.i.i.i.i.i to i8 store i8 %storemerge.i93.i.i.i.i.i, ptr %28, align 8, !tbaa !878 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) %264 = load i8, ptr %29, align 1, !tbaa !880 %265 = trunc i64 %207 to i8 %266 = add i8 %264, %265 store i8 %266, ptr %29, align 1, !tbaa !880 - %.not.i67.i.i.i.i.i = icmp eq i8 %storemerge.i93.i.i.i.i.i, 0 + %.not.i67.i.i.i.i.i = icmp eq i64 %.1.lcssa.i91.i.i.i.i.i, 0 br i1 %.not.i67.i.i.i.i.i, label %296, label %267 267: ; preds = %_ZN11SipHashTmplILi1ELi3ELi128EE6updateEPvl.exit102.i.i.i.i.i @@ -14338,7 +14338,7 @@ _ZN11SipHashTmplILi1ELi3ELi128EE6updateEPvl.exit66.i.i.i.i.i: ; preds = %_ZN11Si %.120.lcssa.i54.i.i.i.i.i = phi ptr [ %378, %358 ], [ %400, %_ZN11SipHashTmplILi1ELi3ELi128EE6updateEPvl.exit66.loopexit.i.i.i.i.i ] %.1.lcssa.i55.i.i.i.i.i = phi i64 [ %359, %358 ], [ %401, %_ZN11SipHashTmplILi1ELi3ELi128EE6updateEPvl.exit66.loopexit.i.i.i.i.i ] call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %33, ptr nonnull align 1 %.120.lcssa.i54.i.i.i.i.i, i64 %.1.lcssa.i55.i.i.i.i.i, i1 false) - %storemerge.i57.i.i.i.i.i = trunc i64 %.1.lcssa.i55.i.i.i.i.i to i8 + %storemerge.i57.i.i.i.i.i = trunc nuw nsw i64 %.1.lcssa.i55.i.i.i.i.i to i8 store i8 %storemerge.i57.i.i.i.i.i, ptr %28, align 8, !tbaa !878 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) %403 = load ptr, ptr %42, align 8, !tbaa !535 @@ -14393,7 +14393,7 @@ _ZNK4mold9FdeRecordINS_6X86_64EE8get_relsERNS_10ObjectFileIS1_EE.exit84.i.i.i.i. br label %.lr.ph.i.i.i.i.i.i.i.i.i.i.i ._crit_edge.i.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZN11SipHashTmplILi1ELi3ELi128EE6updateEPvl.exit136.i.i.i.i.i.i.i.i.i.i.i, %_ZNK4mold9FdeRecordINS_6X86_64EE8get_relsERNS_10ObjectFileIS1_EE.exit84.i.i.i.i.i.i.i.i.i.i.i - %432 = phi i8 [ %storemerge.i57.i.i.i.i.i, %_ZNK4mold9FdeRecordINS_6X86_64EE8get_relsERNS_10ObjectFileIS1_EE.exit84.i.i.i.i.i.i.i.i.i.i.i ], [ %storemerge.i127.i.i.i.i.i.i.i.i.i.i.i, %_ZN11SipHashTmplILi1ELi3ELi128EE6updateEPvl.exit136.i.i.i.i.i.i.i.i.i.i.i ] + %432 = phi i8 [ %storemerge.i57.i.i.i.i.i, %_ZNK4mold9FdeRecordINS_6X86_64EE8get_relsERNS_10ObjectFileIS1_EE.exit84.i.i.i.i.i.i.i.i.i.i.i ], [ %storemerge.i109.i.i.i.i.i.i.i.i.i.i.i, %_ZN11SipHashTmplILi1ELi3ELi128EE6updateEPvl.exit136.i.i.i.i.i.i.i.i.i.i.i ] %433 = getelementptr inbounds nuw i8, ptr %.sroa.0151.0200.i.i.i.i.i.i.i.i.i.i.i, i64 16 %434 = icmp eq ptr %433, %115 br i1 %434, label %.preheader.i.i.i.i.i.i.i.i.i.i.i, label %.lr.ph201.i.i.i.i.i.i.i.i.i.i.i @@ -14610,7 +14610,7 @@ _ZN11SipHashTmplILi1ELi3ELi128EE6updateEPvl.exit118.i.i.i.i.i.i.i.i.i.i.i: ; pre %.120.lcssa.i106.i.i.i.i.i.i.i.i.i.i.i = phi ptr [ %534, %510 ], [ %556, %.lr.ph.i110.i.i.i.i.i.i.i.i.i.i.i ] %.1.lcssa.i107.i.i.i.i.i.i.i.i.i.i.i = phi i64 [ %511, %510 ], [ %557, %.lr.ph.i110.i.i.i.i.i.i.i.i.i.i.i ] call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %33, ptr nonnull align 1 %.120.lcssa.i106.i.i.i.i.i.i.i.i.i.i.i, i64 %.1.lcssa.i107.i.i.i.i.i.i.i.i.i.i.i, i1 false) - %storemerge.i109.i.i.i.i.i.i.i.i.i.i.i = trunc i64 %.1.lcssa.i107.i.i.i.i.i.i.i.i.i.i.i to i8 + %storemerge.i109.i.i.i.i.i.i.i.i.i.i.i = trunc nuw nsw i64 %.1.lcssa.i107.i.i.i.i.i.i.i.i.i.i.i to i8 store i8 %storemerge.i109.i.i.i.i.i.i.i.i.i.i.i, ptr %28, align 8, !tbaa !878 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) %559 = getelementptr inbounds nuw i8, ptr %.pn198.i.i.i.i.i.i.i.i.i.i.i, i64 40 @@ -14620,7 +14620,7 @@ _ZN11SipHashTmplILi1ELi3ELi128EE6updateEPvl.exit118.i.i.i.i.i.i.i.i.i.i.i: ; pre %561 = load i8, ptr %29, align 1, !tbaa !880 %562 = add i8 %561, 8 store i8 %562, ptr %29, align 1, !tbaa !880 - %.not.i119.i.i.i.i.i.i.i.i.i.i.i = icmp eq i8 %storemerge.i109.i.i.i.i.i.i.i.i.i.i.i, 0 + %.not.i119.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %.1.lcssa.i107.i.i.i.i.i.i.i.i.i.i.i, 0 br i1 %.not.i119.i.i.i.i.i.i.i.i.i.i.i, label %.lr.ph.i128.i.i.i.i.i.i.i.i.i.i.i, label %563 563: ; preds = %_ZN11SipHashTmplILi1ELi3ELi128EE6updateEPvl.exit118.i.i.i.i.i.i.i.i.i.i.i @@ -14672,14 +14672,12 @@ _ZN11SipHashTmplILi1ELi3ELi128EE6updateEPvl.exit136.i.i.i.i.i.i.i.i.i.i.i: ; pre %.sink38.i.i.i.i.i.i.i.i.i.i = phi i64 [ %597, %.lr.ph.i128.i.i.i.i.i.i.i.i.i.i.i ], [ %580, %563 ] %.sink.i.i.i.i.i.i.i.i.i.i = phi i64 [ %598, %.lr.ph.i128.i.i.i.i.i.i.i.i.i.i.i ], [ %581, %563 ] %.120.lcssa.i124.i.i.i.i.i.i.i.i.i.i.i = phi ptr [ %scevgep.i.i.i.i.i.i.i.i.i.i.i, %.lr.ph.i128.i.i.i.i.i.i.i.i.i.i.i ], [ %582, %563 ] - %.1.lcssa.i125.i.i.i.i.i.i.i.i.i.i.i = phi i64 [ 0, %.lr.ph.i128.i.i.i.i.i.i.i.i.i.i.i ], [ %.1.lcssa.i107.i.i.i.i.i.i.i.i.i.i.i, %563 ] store i64 %.sink40.i.i.i.i.i.i.i.i.i.i, ptr %32, align 8, !tbaa !883 store i64 %.sink39.i.i.i.i.i.i.i.i.i.i, ptr %30, align 8, !tbaa !884 store i64 %.sink38.i.i.i.i.i.i.i.i.i.i, ptr %31, align 8, !tbaa !882 store i64 %.sink.i.i.i.i.i.i.i.i.i.i, ptr %18, align 8, !tbaa !881 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %33, ptr nonnull align 1 %.120.lcssa.i124.i.i.i.i.i.i.i.i.i.i.i, i64 %.1.lcssa.i125.i.i.i.i.i.i.i.i.i.i.i, i1 false) - %storemerge.i127.i.i.i.i.i.i.i.i.i.i.i = trunc nuw i64 %.1.lcssa.i125.i.i.i.i.i.i.i.i.i.i.i to i8 - store i8 %storemerge.i127.i.i.i.i.i.i.i.i.i.i.i, ptr %28, align 8, !tbaa !878 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %33, ptr nonnull align 1 %.120.lcssa.i124.i.i.i.i.i.i.i.i.i.i.i, i64 %.1.lcssa.i107.i.i.i.i.i.i.i.i.i.i.i, i1 false) + store i8 %storemerge.i109.i.i.i.i.i.i.i.i.i.i.i, ptr %28, align 8, !tbaa !878 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) %.sroa.0139.0.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %.sroa.0139.0199.i.i.i.i.i.i.i.i.i.i.i, i64 24 %599 = icmp eq ptr %.sroa.0139.0.i.i.i.i.i.i.i.i.i.i.i, %430 @@ -14843,7 +14841,7 @@ _ZN11SipHashTmplILi1ELi3ELi128EE6updateEPvl.exit42.i.i.i.i.i: ; preds = %_ZN11Si %.120.lcssa.i30.i.i.i.i.i = phi ptr [ %659, %635 ], [ %681, %_ZN11SipHashTmplILi1ELi3ELi128EE6updateEPvl.exit42.loopexit.i.i.i.i.i ] %.1.lcssa.i31.i.i.i.i.i = phi i64 [ %636, %635 ], [ %682, %_ZN11SipHashTmplILi1ELi3ELi128EE6updateEPvl.exit42.loopexit.i.i.i.i.i ] call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %33, ptr nonnull align 1 %.120.lcssa.i30.i.i.i.i.i, i64 %.1.lcssa.i31.i.i.i.i.i, i1 false) - %storemerge.i33.i.i.i.i.i = trunc i64 %.1.lcssa.i31.i.i.i.i.i to i8 + %storemerge.i33.i.i.i.i.i = trunc nuw nsw i64 %.1.lcssa.i31.i.i.i.i.i to i8 store i8 %storemerge.i33.i.i.i.i.i, ptr %28, align 8, !tbaa !878 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) %688 = getelementptr inbounds nuw i8, ptr %631, i64 8 @@ -14853,7 +14851,7 @@ _ZN11SipHashTmplILi1ELi3ELi128EE6updateEPvl.exit42.i.i.i.i.i: ; preds = %_ZN11Si %689 = load i8, ptr %29, align 1, !tbaa !880 %690 = add i8 %689, 4 store i8 %690, ptr %29, align 1, !tbaa !880 - %.not.i9.i.i.i.i.i = icmp eq i8 %storemerge.i33.i.i.i.i.i, 0 + %.not.i9.i.i.i.i.i = icmp eq i64 %.1.lcssa.i31.i.i.i.i.i, 0 br i1 %.not.i9.i.i.i.i.i, label %._crit_edge.i.i.i.i.i.i, label %691 691: ; preds = %_ZN11SipHashTmplILi1ELi3ELi128EE6updateEPvl.exit42.i.i.i.i.i @@ -15006,7 +15004,7 @@ _ZN11SipHashTmplILi1ELi3ELi128EE6updateEPvl.exit.i.i.i.i.i: ; preds = %_ZN11SipH %.120.lcssa.i.i.i.i.i.i = phi ptr [ %752, %732 ], [ %774, %_ZN11SipHashTmplILi1ELi3ELi128EE6updateEPvl.exit.loopexit.i.i.i.i.i ] %.1.lcssa.i.i.i.i.i.i = phi i64 [ %733, %732 ], [ %775, %_ZN11SipHashTmplILi1ELi3ELi128EE6updateEPvl.exit.loopexit.i.i.i.i.i ] call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %33, ptr nonnull align 1 %.120.lcssa.i.i.i.i.i.i, i64 %.1.lcssa.i.i.i.i.i.i, i1 false) - %storemerge.i.i.i.i.i.i = trunc i64 %.1.lcssa.i.i.i.i.i.i to i8 + %storemerge.i.i.i.i.i.i = trunc nuw nsw i64 %.1.lcssa.i.i.i.i.i.i to i8 store i8 %storemerge.i.i.i.i.i.i, ptr %28, align 8, !tbaa !878 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) %777 = load ptr, ptr %42, align 8, !tbaa !535 @@ -17734,7 +17732,7 @@ define internal fastcc void @_ZN3tbb6detail2d19start_forINS1_13blocked_rangeIlEE ._crit_edge.i.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i.i call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %17, ptr nonnull align 1 %150, i64 %151, i1 false) - %storemerge.i.i.i.i.i.i = trunc i64 %151 to i8 + %storemerge.i.i.i.i.i.i = trunc nuw nsw i64 %151 to i8 store i8 %storemerge.i.i.i.i.i.i, ptr %12, align 8, !tbaa !878 %153 = getelementptr inbounds nuw i8, ptr %.sroa.015.020.i.i.i.i.i.i.i.i.i.i, i64 4 %154 = icmp eq ptr %153, %64 diff --git a/bench/nanobind/optimized/test_stl.ll b/bench/nanobind/optimized/test_stl.ll index b120689c689..9e82a14c400 100644 --- a/bench/nanobind/optimized/test_stl.ll +++ b/bench/nanobind/optimized/test_stl.ll @@ -16098,7 +16098,7 @@ define internal noundef ptr @"_ZZN8nanobind6detail11func_createILb0ELb1EZL26nano store i32 %21, ptr @_ZL17value_constructed, align 4, !tbaa !128, !noalias !494 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %6) #28, !noalias !494 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #28, !noalias !494 - %22 = trunc nuw i32 %.06.i to i8 + %22 = trunc nuw nsw i32 %.06.i to i8 %23 = add nuw nsw i8 %22, 97 store ptr %14, ptr %7, align 8, !tbaa !186, !noalias !494 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEmc(ptr noundef nonnull align 8 dereferenceable(32) %7, i64 noundef 1, i8 noundef signext %23) #30 @@ -16730,7 +16730,7 @@ _ZNSt15_Rb_tree_headerC2EOS_.exit: ; preds = %17 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, %.preheader.i %.077.i = phi i32 [ 0, %.preheader.i ], [ %53, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #28 - %36 = trunc nuw i32 %.077.i to i8 + %36 = trunc nuw nsw i32 %.077.i to i8 %37 = add nuw nsw i8 %36, 97 store ptr %33, ptr %6, align 8, !tbaa !186 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEmc(ptr noundef nonnull align 8 dereferenceable(32) %6, i64 noundef 1, i8 noundef signext %37) #30 @@ -17389,7 +17389,7 @@ _ZNSt15_Rb_tree_headerC2EOS_.exit: ; preds = %17 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, %.preheader.i %.077.i = phi i32 [ 0, %.preheader.i ], [ %53, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #28 - %36 = trunc nuw i32 %.077.i to i8 + %36 = trunc nuw nsw i32 %.077.i to i8 %37 = add nuw nsw i8 %36, 97 store ptr %33, ptr %6, align 8, !tbaa !186 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEmc(ptr noundef nonnull align 8 dereferenceable(32) %6, i64 noundef 1, i8 noundef signext %37) #30 @@ -18187,7 +18187,7 @@ define internal noundef nonnull ptr @"_ZZN8nanobind6detail11func_createILb0ELb1E _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, %.preheader.i %.0117.i = phi i32 [ 0, %.preheader.i ], [ %38, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #28 - %21 = trunc nuw i32 %.0117.i to i8 + %21 = trunc nuw nsw i32 %.0117.i to i8 %22 = add nuw nsw i8 %21, 97 store ptr %18, ptr %6, align 8, !tbaa !186 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEmc(ptr noundef nonnull align 8 dereferenceable(32) %6, i64 noundef 1, i8 noundef signext %22) #30 @@ -18346,7 +18346,7 @@ define internal noundef nonnull ptr @"_ZZN8nanobind6detail11func_createILb0ELb1E _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, %.preheader.i %.0117.i = phi i32 [ 0, %.preheader.i ], [ %38, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #28 - %21 = trunc nuw i32 %.0117.i to i8 + %21 = trunc nuw nsw i32 %.0117.i to i8 %22 = add nuw nsw i8 %21, 97 store ptr %18, ptr %6, align 8, !tbaa !186 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEmc(ptr noundef nonnull align 8 dereferenceable(32) %6, i64 noundef 1, i8 noundef signext %22) #30 @@ -18543,7 +18543,7 @@ _ZNSt15_Rb_tree_headerC2EOS_.exit: ; preds = %17 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, %.preheader.i %.077.i = phi i32 [ 0, %.preheader.i ], [ %54, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #28 - %36 = trunc nuw i32 %.077.i to i8 + %36 = trunc nuw nsw i32 %.077.i to i8 %37 = add nuw nsw i8 %36, 97 store ptr %33, ptr %6, align 8, !tbaa !186 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEmc(ptr noundef nonnull align 8 dereferenceable(32) %6, i64 noundef 1, i8 noundef signext %37) #30 @@ -19963,7 +19963,7 @@ define internal noundef ptr @"_ZZN8nanobind6detail11func_createILb0ELb1EZL26nano 15: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, %5 %.02.i = phi i32 [ 0, %5 ], [ %25, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #28, !noalias !527 - %16 = trunc nuw i32 %.02.i to i8 + %16 = trunc nuw nsw i32 %.02.i to i8 %17 = add nuw nsw i8 %16, 97 store ptr %13, ptr %6, align 8, !tbaa !186, !noalias !527 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEmc(ptr noundef nonnull align 8 dereferenceable(32) %6, i64 noundef 1, i8 noundef signext %17) #30 @@ -20408,7 +20408,7 @@ define internal noundef ptr @"_ZZN8nanobind6detail11func_createILb0ELb1EZL26nano 15: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, %5 %.02.i = phi i32 [ 0, %5 ], [ %25, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #28, !noalias !533 - %16 = trunc nuw i32 %.02.i to i8 + %16 = trunc nuw nsw i32 %.02.i to i8 %17 = add nuw nsw i8 %16, 97 store ptr %13, ptr %6, align 8, !tbaa !186, !noalias !533 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEmc(ptr noundef nonnull align 8 dereferenceable(32) %6, i64 noundef 1, i8 noundef signext %17) #30 @@ -21214,7 +21214,7 @@ _ZNSt15_Rb_tree_headerC2EOS_.exit: ; preds = %17 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, %.preheader.i %.064.i = phi i32 [ 0, %.preheader.i ], [ %52, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #28 - %36 = trunc nuw i32 %.064.i to i8 + %36 = trunc nuw nsw i32 %.064.i to i8 %37 = add nuw nsw i8 %36, 97 store ptr %33, ptr %6, align 8, !tbaa !186 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEmc(ptr noundef nonnull align 8 dereferenceable(32) %6, i64 noundef 1, i8 noundef signext %37) #30 @@ -21631,7 +21631,7 @@ _ZNSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_SaIS5_E _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, %.preheader.i %.064.i = phi i32 [ 0, %.preheader.i ], [ %57, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #28 - %41 = trunc nuw i32 %.064.i to i8 + %41 = trunc nuw nsw i32 %.064.i to i8 %42 = add nuw nsw i8 %41, 97 store ptr %38, ptr %6, align 8, !tbaa !186 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEmc(ptr noundef nonnull align 8 dereferenceable(32) %6, i64 noundef 1, i8 noundef signext %42) #30 @@ -21964,7 +21964,7 @@ define internal noundef nonnull ptr @"_ZZN8nanobind6detail11func_createILb0ELb1E _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, %.preheader.i %.094.i = phi i32 [ 0, %.preheader.i ], [ %37, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #28 - %21 = trunc nuw i32 %.094.i to i8 + %21 = trunc nuw nsw i32 %.094.i to i8 %22 = add nuw nsw i8 %21, 97 store ptr %18, ptr %6, align 8, !tbaa !186 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEmc(ptr noundef nonnull align 8 dereferenceable(32) %6, i64 noundef 1, i8 noundef signext %22) #30 @@ -22109,7 +22109,7 @@ define internal noundef nonnull ptr @"_ZZN8nanobind6detail11func_createILb0ELb1E _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, %.preheader.i %.094.i = phi i32 [ 0, %.preheader.i ], [ %37, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #28 - %21 = trunc nuw i32 %.094.i to i8 + %21 = trunc nuw nsw i32 %.094.i to i8 %22 = add nuw nsw i8 %21, 97 store ptr %18, ptr %6, align 8, !tbaa !186 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEmc(ptr noundef nonnull align 8 dereferenceable(32) %6, i64 noundef 1, i8 noundef signext %22) #30 diff --git a/bench/nix/optimized/hilite.ll b/bench/nix/optimized/hilite.ll index f2b725c238d..8a5577da85f 100644 --- a/bench/nix/optimized/hilite.ll +++ b/bench/nix/optimized/hilite.ll @@ -3838,26 +3838,27 @@ _ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt %.sroa.4.0.i3.i.i = phi i64 [ 0, %64 ], [ %63, %57 ] %.sroa.speculated.i.i.i = tail call i64 @llvm.umin.i64(i64 %.sroa.4.0.i3.i.i, i64 %.sroa.4.0.i.i.i) %.not.i8.i.i = icmp eq i64 %.sroa.speculated.i.i.i, 0 - br i1 %.not.i8.i.i, label %65, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i + br i1 %.not.i8.i.i, label %67, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i: ; preds = %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE6_M_strISA_EENSt9enable_ifIXsr8__detail20__is_contiguous_iterIT_EE5valueENSB_13__string_viewEE4typeEv.exit7.i.i %bcmp.i = tail call i32 @bcmp(ptr %.sroa.0.0.i.i.i, ptr %.sroa.0.0.i2.i.i, i64 %.sroa.speculated.i.i.i) - %.not11.i.i.i = icmp eq i32 %bcmp.i, 0 - br i1 %.not11.i.i.i, label %65, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit - -65: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i, %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE6_M_strISA_EENSt9enable_ifIXsr8__detail20__is_contiguous_iterIT_EE5valueENSB_13__string_viewEE4typeEv.exit7.i.i - %66 = sub i64 %.sroa.4.0.i.i.i, %.sroa.4.0.i3.i.i - %67 = icmp sgt i64 %66, 2147483647 - br i1 %67, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit, label %68 - -68: ; preds = %65 - %spec.select15.i.i.i = tail call i64 @llvm.smax.i64(i64 %66, i64 -2147483648) - %69 = and i64 %spec.select15.i.i.i, 4294967295 - %70 = icmp eq i64 %69, 0 + %.not11.i.i.i = icmp ne i32 %bcmp.i, 0 + %65 = sub i64 %.sroa.4.0.i.i.i, %.sroa.4.0.i3.i.i + %66 = icmp sgt i64 %65, 2147483647 + %or.cond.i = or i1 %66, %.not11.i.i.i + br i1 %or.cond.i, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit, label %68 + +67:; preds = %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE6_M_strISA_EENSt9enable_ifIXsr8__detail20__is_contiguous_iterIT_EE5valueENSB_13__string_viewEE4typeEv.exit7.i.i + %.old.i = sub i64 %.sroa.4.0.i.i.i, %.sroa.4.0.i3.i.i + %.old2.i = icmp sgt i64 %.old.i, 2147483647 + br i1 %.old2.i, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit, label %68 + +68:; preds = %67, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i + %69 = icmp eq i64 %.sroa.4.0.i.i.i, %.sroa.4.0.i3.i.i br label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit -_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit: ; preds = %68, %65, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i, %9, %11, %15, %21, %2 - %.0 = phi i1 [ true, %2 ], [ false, %21 ], [ false, %15 ], [ false, %11 ], [ false, %9 ], [ false, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i ], [ false, %65 ], [ %70, %68 ] +_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit: ; preds = %68, %67, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i, %9, %11, %15, %21, %2 + %.0 = phi i1 [ true, %2 ], [ false, %21 ], [ false, %15 ], [ false, %11 ], [ false, %9 ], [ false, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i ], [ false, %67 ], [ %69, %68 ] ret i1 %.0 } @@ -5902,20 +5903,15 @@ _ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i: ; preds = %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE6_M_strISA_EENSt9enable_ifIXsr8__detail20__is_contiguous_iterIT_EE5valueENSB_13__string_viewEE4typeEv.exit7.i.i.i %bcmp.i.i = tail call i32 @bcmp(ptr %.sroa.0.0.i.i.i.i, ptr %.sroa.0.0.i2.i.i.i, i64 %.sroa.speculated.i.i.i.i) %.not11.i.i.i.i = icmp eq i32 %bcmp.i.i, 0 - br i1 %.not11.i.i.i.i, label %112, label %.lr.ph.i.preheader - -112: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i, %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE6_M_strISA_EENSt9enable_ifIXsr8__detail20__is_contiguous_iterIT_EE5valueENSB_13__string_viewEE4typeEv.exit7.i.i.i - %113 = sub i64 %.sroa.4.0.i.i.i.i, %.sroa.4.0.i3.i.i.i - %114 = icmp sgt i64 %113, 2147483647 - br i1 %114, label %.lr.ph.i.preheader, label %115 + %.old = icmp eq i64 %.sroa.4.0.i.i.i.i, %.sroa.4.0.i3.i.i.i + %or.cond22 = and i1 %.old, %.not11.i.i.i.i + br i1 %or.cond22, label %_ZSt10__distanceINSt7__cxx1114regex_iteratorIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEcNS0_12regex_traitsIcEEEEENSt15iterator_traitsIT_E15difference_typeESG_SG_St18input_iterator_tag.exit, label %.lr.ph.i.preheader -115: ; preds = %112 - %spec.select15.i.i.i.i = tail call i64 @llvm.smax.i64(i64 %113, i64 -2147483648) - %116 = and i64 %spec.select15.i.i.i.i, 4294967295 - %117 = icmp eq i64 %116, 0 - br i1 %117, label %_ZSt10__distanceINSt7__cxx1114regex_iteratorIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEcNS0_12regex_traitsIcEEEEENSt15iterator_traitsIT_E15difference_typeESG_SG_St18input_iterator_tag.exit, label %.lr.ph.i.preheader +115: ; preds = %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE6_M_strISA_EENSt9enable_ifIXsr8__detail20__is_contiguous_iterIT_EE5valueENSB_13__string_viewEE4typeEv.exit7.i.i.i + %113 = icmp eq i64 %.sroa.4.0.i.i.i.i, %.sroa.4.0.i3.i.i.i + br i1 %113, label %_ZSt10__distanceINSt7__cxx1114regex_iteratorIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEcNS0_12regex_traitsIcEEEEENSt15iterator_traitsIT_E15difference_typeESG_SG_St18input_iterator_tag.exit, label %.lr.ph.i.preheader -.lr.ph.i.preheader: ; preds = %112, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i, %76, %70, %66, %64, %115 +.lr.ph.i.preheader: ; preds = %112, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i, %76, %70, %66, %64 br label %.lr.ph.i .lr.ph.i: ; preds = %.lr.ph.i.preheader, %.noexc12 @@ -5932,9 +5928,9 @@ _ZSt10__distanceINSt7__cxx1114regex_iteratorIN9__gnu_cxx17__normal_iteratorIPKcN %.pre = load ptr, ptr %32, align 8 br label %_ZSt10__distanceINSt7__cxx1114regex_iteratorIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEcNS0_12regex_traitsIcEEEEENSt15iterator_traitsIT_E15difference_typeESG_SG_St18input_iterator_tag.exit -_ZSt10__distanceINSt7__cxx1114regex_iteratorIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEcNS0_12regex_traitsIcEEEEENSt15iterator_traitsIT_E15difference_typeESG_SG_St18input_iterator_tag.exit: ; preds = %_ZSt10__distanceINSt7__cxx1114regex_iteratorIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEcNS0_12regex_traitsIcEEEEENSt15iterator_traitsIT_E15difference_typeESG_SG_St18input_iterator_tag.exit.loopexit, %.loopexit, %115 - %121 = phi ptr [ %54, %115 ], [ %54, %.loopexit ], [ %.pre, %_ZSt10__distanceINSt7__cxx1114regex_iteratorIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEcNS0_12regex_traitsIcEEEEENSt15iterator_traitsIT_E15difference_typeESG_SG_St18input_iterator_tag.exit.loopexit ] - %.0.lcssa.i = phi i64 [ 0, %115 ], [ 0, %.loopexit ], [ %119, %_ZSt10__distanceINSt7__cxx1114regex_iteratorIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEcNS0_12regex_traitsIcEEEEENSt15iterator_traitsIT_E15difference_typeESG_SG_St18input_iterator_tag.exit.loopexit ] +_ZSt10__distanceINSt7__cxx1114regex_iteratorIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEcNS0_12regex_traitsIcEEEEENSt15iterator_traitsIT_E15difference_typeESG_SG_St18input_iterator_tag.exit: ; preds = %_ZSt10__distanceINSt7__cxx1114regex_iteratorIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEcNS0_12regex_traitsIcEEEEENSt15iterator_traitsIT_E15difference_typeESG_SG_St18input_iterator_tag.exit.loopexit, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i, %112, %.loopexit + %121 = phi ptr [ %54, %.loopexit ], [ %54, %112 ], [ %54, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i ], [ %.pre, %_ZSt10__distanceINSt7__cxx1114regex_iteratorIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEcNS0_12regex_traitsIcEEEEENSt15iterator_traitsIT_E15difference_typeESG_SG_St18input_iterator_tag.exit.loopexit ] + %.0.lcssa.i = phi i64 [ 0, %.loopexit ], [ 0, %112 ], [ 0, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i ], [ %115, %_ZSt10__distanceINSt7__cxx1114regex_iteratorIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEcNS0_12regex_traitsIcEEEEENSt15iterator_traitsIT_E15difference_typeESG_SG_St18input_iterator_tag.exit.loopexit ] %.not.i.i.i.i.i = icmp eq ptr %121, null br i1 %.not.i.i.i.i.i, label %_ZNSt7__cxx1114regex_iteratorIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEcNS_12regex_traitsIcEEED2Ev.exit, label %122 diff --git a/bench/nix/optimized/search.ll b/bench/nix/optimized/search.ll index d9606707bf6..d7cf54d8d38 100644 --- a/bench/nix/optimized/search.ll +++ b/bench/nix/optimized/search.ll @@ -43958,7 +43958,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit: ; preds = %17, %2, %7, %11, %1 br label %_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.exit 71: ; preds = %._crit_edge.i - %72 = trunc nuw i32 %.0.lcssa.i to i8 + %72 = trunc nuw nsw i32 %.0.lcssa.i to i8 %73 = or disjoint i8 %72, 48 br label %_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.exit @@ -54819,26 +54819,27 @@ _ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt %.sroa.4.0.i3.i.i = phi i64 [ 0, %64 ], [ %63, %57 ] %.sroa.speculated.i.i.i = tail call i64 @llvm.umin.i64(i64 %.sroa.4.0.i3.i.i, i64 %.sroa.4.0.i.i.i) %.not.i8.i.i = icmp eq i64 %.sroa.speculated.i.i.i, 0 - br i1 %.not.i8.i.i, label %65, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i + br i1 %.not.i8.i.i, label %67, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i: ; preds = %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE6_M_strISA_EENSt9enable_ifIXsr8__detail20__is_contiguous_iterIT_EE5valueENSB_13__string_viewEE4typeEv.exit7.i.i %bcmp.i = tail call i32 @bcmp(ptr %.sroa.0.0.i.i.i, ptr %.sroa.0.0.i2.i.i, i64 %.sroa.speculated.i.i.i) - %.not11.i.i.i = icmp eq i32 %bcmp.i, 0 - br i1 %.not11.i.i.i, label %65, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit - -65: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i, %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE6_M_strISA_EENSt9enable_ifIXsr8__detail20__is_contiguous_iterIT_EE5valueENSB_13__string_viewEE4typeEv.exit7.i.i - %66 = sub i64 %.sroa.4.0.i.i.i, %.sroa.4.0.i3.i.i - %67 = icmp sgt i64 %66, 2147483647 - br i1 %67, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit, label %68 - -68: ; preds = %65 - %spec.select15.i.i.i = tail call i64 @llvm.smax.i64(i64 %66, i64 -2147483648) - %69 = and i64 %spec.select15.i.i.i, 4294967295 - %70 = icmp eq i64 %69, 0 + %.not11.i.i.i = icmp ne i32 %bcmp.i, 0 + %65 = sub i64 %.sroa.4.0.i.i.i, %.sroa.4.0.i3.i.i + %66 = icmp sgt i64 %65, 2147483647 + %or.cond.i = or i1 %66, %.not11.i.i.i + br i1 %or.cond.i, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit, label %68 + +67:; preds = %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE6_M_strISA_EENSt9enable_ifIXsr8__detail20__is_contiguous_iterIT_EE5valueENSB_13__string_viewEE4typeEv.exit7.i.i + %.old.i = sub i64 %.sroa.4.0.i.i.i, %.sroa.4.0.i3.i.i + %.old2.i = icmp sgt i64 %.old.i, 2147483647 + br i1 %.old2.i, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit, label %68 + +68:; preds = %67, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i + %69 = icmp eq i64 %.sroa.4.0.i.i.i, %.sroa.4.0.i3.i.i br label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit -_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit: ; preds = %68, %65, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i, %9, %11, %15, %21, %2 - %.0 = phi i1 [ true, %2 ], [ false, %21 ], [ false, %15 ], [ false, %11 ], [ false, %9 ], [ false, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i ], [ false, %65 ], [ %70, %68 ] +_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit: ; preds = %68, %67, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i, %9, %11, %15, %21, %2 + %.0 = phi i1 [ true, %2 ], [ false, %21 ], [ false, %15 ], [ false, %11 ], [ false, %9 ], [ false, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i ], [ false, %67 ], [ %69, %68 ] ret i1 %.0 } @@ -56900,7 +56901,7 @@ _ZN8nlohmann6detail10serializerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basi %.0.lcssa48.i = phi ptr [ %382, %._crit_edge.thread.i93 ], [ %.0.lcssa.i, %._crit_edge.i92 ] %.1.lcssa47.i = phi i64 [ %373, %._crit_edge.thread.i93 ], [ %.1.lcssa.i, %._crit_edge.i92 ] %419 = phi i64 [ 1, %._crit_edge.thread.i93 ], [ %398, %._crit_edge.i92 ] - %420 = trunc nuw i64 %.1.lcssa47.i to i8 + %420 = trunc nuw nsw i64 %.1.lcssa47.i to i8 %421 = or disjoint i8 %420, 48 %422 = getelementptr inbounds i8, ptr %.0.lcssa48.i, i64 -1 store i8 %421, ptr %422, align 1 @@ -57220,7 +57221,7 @@ _ZN8nlohmann6detail10serializerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basi %.0.lcssa48.i116 = phi ptr [ %560, %._crit_edge.thread.i121 ], [ %.0.lcssa.i115, %._crit_edge.i113 ] %.1.lcssa47.i117 = phi i64 [ %551, %._crit_edge.thread.i121 ], [ %.1.lcssa.i114, %._crit_edge.i113 ] %597 = phi i64 [ 1, %._crit_edge.thread.i121 ], [ %576, %._crit_edge.i113 ] - %598 = trunc nuw i64 %.1.lcssa47.i117 to i8 + %598 = trunc nuw nsw i64 %.1.lcssa47.i117 to i8 %599 = or disjoint i8 %598, 48 %600 = getelementptr inbounds i8, ptr %.0.lcssa48.i116, i64 -1 store i8 %599, ptr %600, align 1 @@ -57372,7 +57373,7 @@ _ZN8nlohmann6detail10serializerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basi %.0.lcssa48.i131 = phi ptr [ %639, %._crit_edge.thread.i136 ], [ %.0.lcssa.i130, %._crit_edge.i128 ] %.1.lcssa47.i132 = phi i64 [ %630, %._crit_edge.thread.i136 ], [ %.1.lcssa.i129, %._crit_edge.i128 ] %676 = phi i64 [ 1, %._crit_edge.thread.i136 ], [ %655, %._crit_edge.i128 ] - %677 = trunc nuw i64 %.1.lcssa47.i132 to i8 + %677 = trunc nuw nsw i64 %.1.lcssa47.i132 to i8 %678 = or disjoint i8 %677, 48 %679 = getelementptr inbounds i8, ptr %.0.lcssa48.i131, i64 -1 store i8 %678, ptr %679, align 1 @@ -58319,7 +58320,7 @@ _ZN8nlohmann6detail10serializerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basi %.0.lcssa57 = phi ptr [ %32, %._crit_edge.thread ], [ %.0.lcssa, %._crit_edge ] %.1.lcssa56 = phi i64 [ %1, %._crit_edge.thread ], [ %.1.lcssa, %._crit_edge ] %69 = phi i64 [ 1, %._crit_edge.thread ], [ %48, %._crit_edge ] - %70 = trunc nuw i64 %.1.lcssa56 to i8 + %70 = trunc nuw nsw i64 %.1.lcssa56 to i8 %71 = or disjoint i8 %70, 48 %72 = getelementptr inbounds i8, ptr %.0.lcssa57, i64 -1 store i8 %71, ptr %72, align 1 @@ -58496,7 +58497,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit: ; preds = %16, %2, %6, %10, %1 br label %_ZNSt8__detail18__to_chars_10_implImEEvPcjT_.exit 64: ; preds = %._crit_edge.i - %65 = trunc nuw i64 %.0.lcssa.i to i8 + %65 = trunc nuw nsw i64 %.0.lcssa.i to i8 %66 = or disjoint i8 %65, 48 br label %_ZNSt8__detail18__to_chars_10_implImEEvPcjT_.exit @@ -58722,7 +58723,7 @@ define linkonce_odr noundef nonnull ptr @_ZN8nlohmann6detail9dtoa_impl13format_b 48: ; preds = %44 %49 = getelementptr i8, ptr %.pn, i64 4 store i8 48, ptr %.023.i, align 1 - %50 = trunc nuw i32 %.0.i to i8 + %50 = trunc nuw nsw i32 %.0.i to i8 %51 = or disjoint i8 %50, 48 %52 = getelementptr i8, ptr %.pn, i64 5 store i8 %51, ptr %49, align 1 @@ -58734,7 +58735,7 @@ define linkonce_odr noundef nonnull ptr @_ZN8nlohmann6detail9dtoa_impl13format_b br i1 %54, label %56, label %62 56: ; preds = %53 - %.lhs.trunc.i = trunc nuw i32 %.0.i to i8 + %.lhs.trunc.i = trunc nuw nsw i32 %.0.i to i8 %57 = udiv i8 %.lhs.trunc.i, 10 %58 = or disjoint i8 %57, 48 store i8 %58, ptr %.023.i, align 1 diff --git a/bench/nori/optimized/button.ll b/bench/nori/optimized/button.ll index 189d9a79593..764b5429b14 100644 --- a/bench/nori/optimized/button.ll +++ b/bench/nori/optimized/button.ll @@ -609,19 +609,20 @@ _ZNKSt8functionIFvbEEclEb.exit70: ; preds = %109 %135 = getelementptr inbounds nuw i8, ptr %0, i64 44 %136 = load i32, ptr %135, align 4 %137 = sub nsw i32 %134, %136 - %138 = or i32 %137, %132 - %or.cond.i = icmp slt i32 %138, 0 - %139 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %140 = load i32, ptr %139, align 8 - %141 = icmp sge i32 %132, %140 - %or.cond8.i.not123 = select i1 %or.cond.i, i1 true, i1 %141 - %142 = getelementptr inbounds nuw i8, ptr %0, i64 52 - %143 = load i32, ptr %142, align 4 - %144 = icmp sge i32 %137, %143 - %or.cond100.not121 = select i1 %or.cond8.i.not123, i1 true, i1 %144 - %145 = getelementptr inbounds nuw i8, ptr %0, i64 240 - %146 = load ptr, ptr %145, align 8 - %.not.i.i71.not = icmp eq ptr %146, null + %138 = icmp slt i32 %132, 0 + %or.cond.i = icmp slt i32 %137, 0 + %or.cond.i.not126 = select i1 %138, i1 true, i1 %or.cond.i + %140 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %141 = load i32, ptr %140, align 8 + %142 = icmp sge i32 %132, %141 + %or.cond8.i.not123 = select i1 %or.cond.i.not126, i1 true, i1 %142 + %143 = getelementptr inbounds nuw i8, ptr %0, i64 52 + %144 = load i32, ptr %143, align 4 + %145 = icmp sge i32 %137, %144 + %or.cond100.not121 = select i1 %or.cond8.i.not123, i1 true, i1 %145 + %146 = getelementptr inbounds nuw i8, ptr %0, i64 240 + %147 = load ptr, ptr %146, align 8 + %.not.i.i71.not = icmp eq ptr %147, null %or.cond105 = select i1 %or.cond100.not121, i1 true, i1 %.not.i.i71.not br i1 %or.cond105, label %_ZNKSt8functionIFvvEEclEv.exit, label %147 @@ -629,7 +630,7 @@ _ZNKSt8functionIFvbEEclEb.exit70: ; preds = %109 %148 = getelementptr inbounds nuw i8, ptr %0, i64 224 %149 = getelementptr inbounds nuw i8, ptr %0, i64 248 %150 = load ptr, ptr %149, align 8 - invoke void %150(ptr noundef nonnull align 8 dereferenceable(32) %148) + invoke void %151(ptr noundef nonnull align 8 dereferenceable(32) %148) to label %._ZNKSt8functionIFvvEEclEv.exit_crit_edge unwind label %_ZN7nanogui3refINS_6ButtonEED2Ev.exit.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ._ZNKSt8functionIFvvEEclEv.exit_crit_edge: ; preds = %147 @@ -669,7 +670,7 @@ _ZNKSt8functionIFvvEEclEv.exit._crit_edge: ; preds = %_ZNKSt8functionIFvv store i8 %162, ptr %6, align 1 %163 = getelementptr inbounds nuw i8, ptr %0, i64 280 %164 = load ptr, ptr %163, align 8 - invoke void %164(ptr noundef nonnull align 8 dereferenceable(32) %161, ptr noundef nonnull align 1 dereferenceable(1) %6) + invoke void %165(ptr noundef nonnull align 8 dereferenceable(32) %161, ptr noundef nonnull align 1 dereferenceable(1) %6) to label %_ZNKSt8functionIFvbEEclEb.exit79 unwind label %_ZN7nanogui3refINS_6ButtonEED2Ev.exit.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp _ZNKSt8functionIFvbEEclEb.exit79: ; preds = %160 diff --git a/bench/nori/optimized/checkbox.ll b/bench/nori/optimized/checkbox.ll index 9b26957152a..6da4e8c4b0a 100644 --- a/bench/nori/optimized/checkbox.ll +++ b/bench/nori/optimized/checkbox.ll @@ -143,41 +143,42 @@ define hidden noundef zeroext i1 @_ZN7nanogui8CheckBox18mouse_button_eventERKNS_ %24 = getelementptr inbounds nuw i8, ptr %0, i64 44 %25 = load i32, ptr %24, align 4 %26 = sub nsw i32 %23, %25 - %27 = or i32 %26, %21 - %or.cond.i = icmp sgt i32 %27, -1 - %28 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %29 = load i32, ptr %28, align 8 - %30 = icmp slt i32 %21, %29 - %or.cond8.i = select i1 %or.cond.i, i1 %30, i1 false - %31 = getelementptr inbounds nuw i8, ptr %0, i64 52 - %32 = load i32, ptr %31, align 4 - %33 = icmp slt i32 %26, %32 - %or.cond11 = select i1 %or.cond8.i, i1 %33, i1 false - br i1 %or.cond11, label %34, label %.sink.split - -34: ; preds = %17 - %35 = getelementptr inbounds nuw i8, ptr %0, i64 177 - %36 = load i8, ptr %35, align 1 - %37 = and i8 %36, 1 - %38 = xor i8 %37, 1 - store i8 %38, ptr %35, align 1 - %39 = getelementptr inbounds nuw i8, ptr %0, i64 200 - %40 = load ptr, ptr %39, align 8 - %.not.i.i.not = icmp eq ptr %40, null + %27 = icmp sgt i32 %21, -1 + %or.cond.i = icmp sgt i32 %26, -1 + %or.cond.i = select i1 %27, i1 %28, i1 false + %29 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %30 = load i32, ptr %29, align 8 + %31 = icmp slt i32 %21, %30 + %or.cond8.i = select i1 %or.cond.i, i1 %31, i1 false + %32 = getelementptr inbounds nuw i8, ptr %0, i64 52 + %33 = load i32, ptr %32, align 4 + %34 = icmp slt i32 %26, %33 + %or.cond11 = select i1 %or.cond8.i, i1 %34, i1 false + br i1 %or.cond11, label %35, label %.sink.split + +35: ; preds = %17 + %36 = getelementptr inbounds nuw i8, ptr %0, i64 177 + %37 = load i8, ptr %36, align 1 + %38 = and i8 %37, 1 + %39 = xor i8 %38, 1 + store i8 %39, ptr %36, align 1 + %40 = getelementptr inbounds nuw i8, ptr %0, i64 200 + %41 = load ptr, ptr %40, align 8 + %.not.i.i.not = icmp eq ptr %41, null br i1 %.not.i.i.not, label %.sink.split, label %_ZNKSt8functionIFvbEEclEb.exit -_ZNKSt8functionIFvbEEclEb.exit: ; preds = %34 +_ZNKSt8functionIFvbEEclEb.exit: ; preds = %35 %41 = getelementptr inbounds nuw i8, ptr %0, i64 184 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) - store i8 %38, ptr %6, align 1 + store i8 %39, ptr %6, align 1 %42 = getelementptr inbounds nuw i8, ptr %0, i64 208 %43 = load ptr, ptr %42, align 8 - call void %43(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull align 1 dereferenceable(1) %6) + call void %44(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull align 1 dereferenceable(1) %6) call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) br label %.sink.split -.sink.split: ; preds = %_ZNKSt8functionIFvbEEclEb.exit, %34, %17, %12 - %.sink = phi i8 [ 1, %12 ], [ 0, %17 ], [ 0, %34 ], [ 0, %_ZNKSt8functionIFvbEEclEb.exit ] +.sink.split: ; preds = %_ZNKSt8functionIFvbEEclEb.exit, %35, %17, %12 + %.sink = phi i8 [ 1, %12 ], [ 0, %17 ], [ 0, %35 ], [ 0, %_ZNKSt8functionIFvbEEclEb.exit ] store i8 %.sink, ptr %13, align 8 br label %44 diff --git a/bench/ockam-rs/optimized/274k60s1efyiyv8u.ll b/bench/ockam-rs/optimized/274k60s1efyiyv8u.ll index 3d20d926832..a7cfff79259 100644 --- a/bench/ockam-rs/optimized/274k60s1efyiyv8u.ll +++ b/bench/ockam-rs/optimized/274k60s1efyiyv8u.ll @@ -307,7 +307,7 @@ define hidden void @"_ZN126_$LT$digest..core_api..wrapper..CoreWrapper$LT$hmac.. "_ZN12block_buffer35BlockBuffer$LT$BlockSize$C$Kind$GT$13digest_blocks17hf7d36ed7b905af22E.llvm.4054924361102640483.exit": ; preds = %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit.i", %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit46.i" %storemerge.in.i = phi i64 [ %17, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit46.i" ], [ %14, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit.i" ] - %storemerge.i = trunc i64 %storemerge.in.i to i8 + %storemerge.i = trunc nuw nsw i64 %storemerge.in.i to i8 store i8 %storemerge.i, ptr %5, align 8, !alias.scope !25, !noalias !30 ret void } @@ -518,7 +518,7 @@ define hidden void @"_ZN12block_buffer35BlockBuffer$LT$BlockSize$C$Kind$GT$13dig 33: ; preds = %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit", %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit46" %storemerge.in = phi i64 [ %17, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit46" ], [ %14, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit" ] - %storemerge = trunc i64 %storemerge.in to i8 + %storemerge = trunc nuw nsw i64 %storemerge.in to i8 store i8 %storemerge, ptr %5, align 1 ret void } @@ -582,7 +582,7 @@ define hidden void @"_ZN12block_buffer35BlockBuffer$LT$BlockSize$C$Kind$GT$13dig 33: ; preds = %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit", %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit46" %storemerge.in = phi i64 [ %17, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit46" ], [ %14, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit" ] - %storemerge = trunc i64 %storemerge.in to i8 + %storemerge = trunc nuw nsw i64 %storemerge.in to i8 store i8 %storemerge, ptr %5, align 1 ret void } @@ -1240,7 +1240,7 @@ common.resume: ; preds = %31, %18 "_ZN82_$LT$digest..core_api..wrapper..CoreWrapper$LT$T$GT$$u20$as$u20$digest..Update$GT$6update17hcd06cf2ea5cb7eceE.llvm.4054924361102640483.exit": ; preds = %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit.i.i", %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit46.i.i" %storemerge.in.i.i = phi i64 [ %25, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit46.i.i" ], [ %2, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit.i.i" ] - %storemerge.i.i = trunc nuw i64 %storemerge.in.i.i to i8 + %storemerge.i.i = trunc nuw nsw i64 %storemerge.in.i.i to i8 store i8 %storemerge.i.i, ptr %.sroa.42.0..sroa_idx.i, align 8, !alias.scope !376, !noalias !377 call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %13) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(112) %13, ptr noundef nonnull align 8 dereferenceable(112) %14, i64 112, i1 false) @@ -1367,7 +1367,7 @@ define hidden void @"_ZN44_$LT$D$u20$as$u20$digest..digest..Digest$GT$6update17h "_ZN82_$LT$digest..core_api..wrapper..CoreWrapper$LT$T$GT$$u20$as$u20$digest..Update$GT$6update17hcd06cf2ea5cb7eceE.llvm.4054924361102640483.exit": ; preds = %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit.i.i", %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit43.i.i" %storemerge.in.i.i = phi i64 [ %13, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit43.i.i" ], [ %10, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit.i.i" ] - %storemerge.i.i = trunc nsw i64 %storemerge.in.i.i to i8 + %storemerge.i.i = trunc nuw nsw i64 %storemerge.in.i.i to i8 store i8 %storemerge.i.i, ptr %4, align 8, !alias.scope !429, !noalias !431 ret void } @@ -1741,14 +1741,13 @@ define hidden noundef zeroext i1 @"_ZN4hkdf17Hkdf$LT$H$C$I$GT$17expand_multi_inf store i8 %33, ptr %.sroa.0, align 1 call void @llvm.experimental.noalias.scope.decl(metadata !530) call void @llvm.experimental.noalias.scope.decl(metadata !533) - %43 = and i64 %storemerge.in.i30, 63 - %44 = icmp samesign ult i8 %storemerge.i31, 64 - call void @llvm.assume(i1 %44) - %.not = icmp eq i8 %storemerge.i31, 63 + %43 = icmp ult i64 %storemerge.in.i30, 64 + call void @llvm.assume(i1 %43) + %.not = icmp eq i64 %storemerge.in.i30, 63 br i1 %.not, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit43.i18", label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit.i24" "_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit.i24": ; preds = %._crit_edge.thread, %._crit_edge - %45 = phi i64 [ %42, %._crit_edge.thread ], [ %43, %._crit_edge ] + %45 = phi i64 [ %42, %._crit_edge.thread ], [ %storemerge.in.i30, %._crit_edge ] %46 = phi i8 [ %41, %._crit_edge.thread ], [ %storemerge.i31, %._crit_edge ] %47 = getelementptr inbounds nuw i8, ptr %24, i64 %45 store i8 %33, ptr %47, align 1, !alias.scope !535, !noalias !539 @@ -1756,9 +1755,9 @@ define hidden noundef zeroext i1 @"_ZN4hkdf17Hkdf$LT$H$C$I$GT$17expand_multi_inf br label %"_ZN12block_buffer35BlockBuffer$LT$BlockSize$C$Kind$GT$13digest_blocks17hf7d36ed7b905af22E.llvm.4054924361102640483.exit25" "_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit43.i18": ; preds = %._crit_edge - %49 = sub nuw nsw i64 64, %43 - %50 = getelementptr inbounds nuw i8, ptr %24, i64 %43 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %50, ptr noundef nonnull readonly align 1 dereferenceable(1) %.sroa.0, i64 %49, i1 false), !alias.scope !542, !noalias !546 + %49 = sub nuw nsw i64 64, %storemerge.in.i30 + %50 = getelementptr inbounds nuw i8, ptr %24, i64 %storemerge.in.i30 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %50, ptr nonnull readonly align 1 %.sroa.0, i64 %49, i1 false), !alias.scope !542, !noalias !546 %51 = load i64, ptr %.sroa.448.0..sroa_idx, align 8, !alias.scope !548, !noalias !553, !noundef !32 %52 = add i64 %51, 1 store i64 %52, ptr %.sroa.448.0..sroa_idx, align 8, !alias.scope !548, !noalias !553 @@ -1854,7 +1853,7 @@ define hidden noundef zeroext i1 @"_ZN4hkdf17Hkdf$LT$H$C$I$GT$17expand_multi_inf "_ZN12block_buffer35BlockBuffer$LT$BlockSize$C$Kind$GT$13digest_blocks17hf7d36ed7b905af22E.llvm.4054924361102640483.exit33": ; preds = %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit.i32", %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit46.i29" %storemerge.in.i30 = phi i64 [ %71, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit46.i29" ], [ %68, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit.i32" ] - %storemerge.i31 = trunc i64 %storemerge.in.i30 to i8 + %storemerge.i31 = trunc nuw nsw i64 %storemerge.in.i30 to i8 store i8 %storemerge.i31, ptr %.sroa.2.0..sroa_idx.i, align 8, !alias.scope !574, !noalias !602 %83 = icmp eq ptr %57, %26 br i1 %83, label %._crit_edge, label %.lr.ph @@ -1951,7 +1950,7 @@ define hidden void @"_ZN4hkdf17Hkdf$LT$H$C$I$GT$7extract17h35b7014a7ef2c23fE.llv "_ZN12block_buffer35BlockBuffer$LT$BlockSize$C$Kind$GT$13digest_blocks17hf7d36ed7b905af22E.llvm.4054924361102640483.exit": ; preds = %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit.i", %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit46.i" %storemerge.in.i = phi i64 [ %21, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit46.i" ], [ %18, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit.i" ] - %storemerge.i = trunc i64 %storemerge.in.i to i8 + %storemerge.i = trunc nuw nsw i64 %storemerge.in.i to i8 store i8 %storemerge.i, ptr %9, align 8, !alias.scope !620, !noalias !625 call void @llvm.lifetime.start.p0(i64 192, ptr nonnull %6) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(192) %6, ptr noundef nonnull align 8 dereferenceable(192) %7, i64 192, i1 false) @@ -5283,7 +5282,7 @@ common.resume: ; preds = %27, %18 "_ZN44_$LT$D$u20$as$u20$digest..digest..Digest$GT$6update17h51952044bb3f1484E.llvm.4054924361102640483.exit": ; preds = %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit.i.i.i", %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit43.i.i.i" %storemerge.in.i.i.i = phi i64 [ %40, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit43.i.i.i" ], [ %37, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit.i.i.i" ] - %storemerge.i.i.i2 = trunc nsw i64 %storemerge.in.i.i.i to i8 + %storemerge.i.i.i2 = trunc nuw nsw i64 %storemerge.in.i.i.i to i8 store i8 %storemerge.i.i.i2, ptr %.sroa.42.0..sroa_idx.i.i, align 8, !alias.scope !1562, !noalias !1565 call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %12) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(112) %12, ptr noundef nonnull align 8 dereferenceable(112) %14, i64 112, i1 false) @@ -5740,7 +5739,7 @@ common.resume: ; preds = %25, %16 %44 = getelementptr inbounds i8, ptr %38, i64 %43 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 dereferenceable(65) %20, ptr nonnull readonly align 1 %44, i64 %39, i1 false), !alias.scope !1735 %.pre = load i8, ptr %30, align 8, !alias.scope !1739, !noalias !1744 - %storemerge.i.i18 = trunc nsw i64 %39 to i8 + %storemerge.i.i18 = trunc nuw nsw i64 %39 to i8 store i8 %storemerge.i.i18, ptr %.sroa.42.0..sroa_idx.i.i, align 8, !alias.scope !1713, !noalias !1715 %45 = getelementptr inbounds nuw i8, ptr %0, i64 64 call void @llvm.experimental.noalias.scope.decl(metadata !1748) @@ -5838,7 +5837,7 @@ define hidden void @"_ZN82_$LT$digest..core_api..wrapper..CoreWrapper$LT$T$GT$$u "_ZN12block_buffer35BlockBuffer$LT$BlockSize$C$Kind$GT$13digest_blocks17h98ee1355d62851b8E.llvm.4054924361102640483.exit": ; preds = %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit.i", %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit46.i" %storemerge.in.i = phi i64 [ %17, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit46.i" ], [ %14, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit.i" ] - %storemerge.i = trunc i64 %storemerge.in.i to i8 + %storemerge.i = trunc nuw nsw i64 %storemerge.in.i to i8 store i8 %storemerge.i, ptr %5, align 8, !alias.scope !1764, !noalias !1769 ret void } @@ -6947,7 +6946,7 @@ default.unreachable45: ; preds = %3 "_ZN44_$LT$D$u20$as$u20$digest..digest..Digest$GT$15new_with_prefix17hedcdfb0894cbcb05E.exit.i": ; preds = %.noexc37, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit.i.i.i.i" %storemerge.in.i.i.i.i = phi i64 [ %166, %.noexc37 ], [ %39, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h1a571acdc65b7e18E.exit.i.i.i.i" ] - %storemerge.i.i.i.i = trunc nuw i64 %storemerge.in.i.i.i.i to i8 + %storemerge.i.i.i.i = trunc nuw nsw i64 %storemerge.in.i.i.i.i to i8 store i8 %storemerge.i.i.i.i, ptr %.sroa.42.0..sroa_idx.i.i.i, align 8, !alias.scope !2061, !noalias !2062 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(112) %24, ptr noundef nonnull align 8 dereferenceable(112) %8, i64 112, i1 false), !noalias !2063 call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %8), !noalias !2007 diff --git a/bench/oiio/optimized/CineonHeader.ll b/bench/oiio/optimized/CineonHeader.ll index b2d35ccb09c..fb84ad7d894 100644 --- a/bench/oiio/optimized/CineonHeader.ll +++ b/bench/oiio/optimized/CineonHeader.ll @@ -2588,7 +2588,7 @@ _ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valu br i1 %33, label %34, label %38 34: ; preds = %._crit_edge.i.i - %35 = trunc nuw i32 %.0.lcssa.i.i to i8 + %35 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %36 = or disjoint i8 %35, 48 %37 = getelementptr inbounds i8, ptr %.019.lcssa.i.i, i64 -1 store i8 %36, ptr %37, align 1, !tbaa !43 @@ -2630,7 +2630,7 @@ _ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valu br i1 %54, label %55, label %59 55: ; preds = %._crit_edge.i.i.i - %56 = trunc nuw i32 %.0.lcssa.i.i.i to i8 + %56 = trunc nuw nsw i32 %.0.lcssa.i.i.i to i8 %57 = or disjoint i8 %56, 48 %58 = getelementptr inbounds i8, ptr %.019.lcssa.i.i.i, i64 -1 store i8 %57, ptr %58, align 1, !tbaa !43 @@ -2884,7 +2884,7 @@ _ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valu br i1 %39, label %40, label %44 40: ; preds = %._crit_edge.i - %41 = trunc nuw i32 %.0.lcssa.i to i8 + %41 = trunc nuw nsw i32 %.0.lcssa.i to i8 %42 = or disjoint i8 %41, 48 %43 = getelementptr inbounds i8, ptr %.019.lcssa.i, i64 -1 store i8 %42, ptr %43, align 1, !tbaa !43 @@ -2953,7 +2953,7 @@ _ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSEOc.exit: ; preds = %51 br i1 %72, label %73, label %77 73: ; preds = %._crit_edge.i.i - %74 = trunc nuw i32 %.0.lcssa.i.i to i8 + %74 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %75 = or disjoint i8 %74, 48 %76 = getelementptr inbounds i8, ptr %.019.lcssa.i.i, i64 -1 store i8 %75, ptr %76, align 1, !tbaa !43 @@ -3107,7 +3107,7 @@ _ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valu br i1 %38, label %39, label %43 39: ; preds = %._crit_edge.i - %40 = trunc nuw i64 %.0.lcssa.i to i8 + %40 = trunc nuw nsw i64 %.0.lcssa.i to i8 %41 = or disjoint i8 %40, 48 %42 = getelementptr inbounds i8, ptr %.019.lcssa.i, i64 -1 store i8 %41, ptr %42, align 1, !tbaa !43 @@ -3174,7 +3174,7 @@ _ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSEOc.exit: ; preds = %49 br i1 %69, label %70, label %74 70: ; preds = %._crit_edge.i.i - %71 = trunc nuw i64 %.0.lcssa.i.i to i8 + %71 = trunc nuw nsw i64 %.0.lcssa.i.i to i8 %72 = or disjoint i8 %71, 48 %73 = getelementptr inbounds i8, ptr %.019.lcssa.i.i, i64 -1 store i8 %72, ptr %73, align 1, !tbaa !43 @@ -3256,7 +3256,7 @@ _ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valu br i1 %33, label %34, label %38 34: ; preds = %._crit_edge.i - %35 = trunc nuw i64 %.0.lcssa.i to i8 + %35 = trunc nuw nsw i64 %.0.lcssa.i to i8 %36 = or disjoint i8 %35, 48 %37 = getelementptr inbounds i8, ptr %.019.lcssa.i, i64 -1 store i8 %36, ptr %37, align 1, !tbaa !43 @@ -3296,7 +3296,7 @@ _ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valu br i1 %52, label %53, label %57 53: ; preds = %._crit_edge.i.i - %54 = trunc nuw i64 %.0.lcssa.i.i to i8 + %54 = trunc nuw nsw i64 %.0.lcssa.i.i to i8 %55 = or disjoint i8 %54, 48 %56 = getelementptr inbounds i8, ptr %.019.lcssa.i.i, i64 -1 store i8 %55, ptr %56, align 1, !tbaa !43 @@ -3437,7 +3437,7 @@ _ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valu br i1 %49, label %50, label %54 50: ; preds = %._crit_edge.i - %51 = trunc nuw i128 %.022.lcssa.i to i8 + %51 = trunc nuw nsw i128 %.022.lcssa.i to i8 %52 = or disjoint i8 %51, 48 %53 = getelementptr inbounds i8, ptr %.0.lcssa.i, i64 -1 store i8 %52, ptr %53, align 1, !tbaa !43 @@ -3508,7 +3508,7 @@ _ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSEOc.exit: ; preds = %61 br i1 %82, label %83, label %87 83: ; preds = %._crit_edge.i.i - %84 = trunc nuw i128 %.022.lcssa.i.i to i8 + %84 = trunc nuw nsw i128 %.022.lcssa.i.i to i8 %85 = or disjoint i8 %84, 48 %86 = getelementptr inbounds i8, ptr %.0.lcssa.i.i, i64 -1 store i8 %85, ptr %86, align 1, !tbaa !43 @@ -3622,7 +3622,7 @@ _ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valu br i1 %42, label %43, label %47 43: ; preds = %._crit_edge.i - %44 = trunc nuw i128 %.022.lcssa.i to i8 + %44 = trunc nuw nsw i128 %.022.lcssa.i to i8 %45 = or disjoint i8 %44, 48 %46 = getelementptr inbounds i8, ptr %.0.lcssa.i, i64 -1 store i8 %45, ptr %46, align 1, !tbaa !43 @@ -3666,7 +3666,7 @@ _ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valu br i1 %63, label %64, label %68 64: ; preds = %._crit_edge.i.i - %65 = trunc nuw i128 %.022.lcssa.i.i to i8 + %65 = trunc nuw nsw i128 %.022.lcssa.i.i to i8 %66 = or disjoint i8 %65, 48 %67 = getelementptr inbounds i8, ptr %.0.lcssa.i.i, i64 -1 store i8 %66, ptr %67, align 1, !tbaa !43 @@ -3988,7 +3988,7 @@ _ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSEOc.exit: ; preds = %67 br i1 %91, label %92, label %96 92: ; preds = %._crit_edge.i.i.i - %93 = trunc nuw i32 %.0.lcssa.i.i.i to i8 + %93 = trunc nuw nsw i32 %.0.lcssa.i.i.i to i8 %94 = or disjoint i8 %93, 48 %95 = getelementptr inbounds i8, ptr %.019.lcssa.i.i.i, i64 -1 store i8 %94, ptr %95, align 1, !tbaa !43 @@ -5278,7 +5278,7 @@ define linkonce_odr hidden ptr @_ZN3fmt2v86detail19write_int_localizedINS0_8appe br i1 %28, label %29, label %33 29: ; preds = %._crit_edge.i - %30 = trunc nuw i64 %.0.lcssa.i to i8 + %30 = trunc nuw nsw i64 %.0.lcssa.i to i8 %31 = or disjoint i8 %30, 48 %32 = getelementptr inbounds i8, ptr %.019.lcssa.i, i64 -1 store i8 %31, ptr %32, align 1, !tbaa !43 @@ -6064,7 +6064,7 @@ _ZN3fmt2v86detail6fill_nINS0_8appenderEmcEET_S4_T0_RKT1_.exit.i: ; preds = %_ZNS br i1 %61, label %62, label %66 62: ; preds = %._crit_edge.i.i.i.i - %63 = trunc nuw i32 %.0.lcssa.i.i.i.i to i8 + %63 = trunc nuw nsw i32 %.0.lcssa.i.i.i.i to i8 %64 = or disjoint i8 %63, 48 %65 = getelementptr inbounds i8, ptr %.019.lcssa.i.i.i.i, i64 -1 store i8 %64, ptr %65, align 1, !tbaa !43 @@ -7496,7 +7496,7 @@ _ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSEOc.exit: ; preds = %5, br i1 %41, label %42, label %46 42: ; preds = %._crit_edge.i.i.i - %43 = trunc nuw i32 %.0.lcssa.i.i.i to i8 + %43 = trunc nuw nsw i32 %.0.lcssa.i.i.i to i8 %44 = or disjoint i8 %43, 48 %45 = getelementptr inbounds i8, ptr %.019.lcssa.i.i.i, i64 -1 store i8 %44, ptr %45, align 1, !tbaa !43 @@ -7582,7 +7582,7 @@ _ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSEOc.exit: ; preds = %5, br i1 %84, label %85, label %89 85: ; preds = %._crit_edge.i34.i.i - %86 = trunc nuw i32 %.0.lcssa.i36.i.i to i8 + %86 = trunc nuw nsw i32 %.0.lcssa.i36.i.i to i8 %87 = or disjoint i8 %86, 48 %88 = getelementptr inbounds i8, ptr %.019.lcssa.i35.i.i, i64 -1 store i8 %87, ptr %88, align 1, !tbaa !43 @@ -8023,7 +8023,7 @@ define linkonce_odr hidden ptr @_ZN3fmt2v86detail17write_significandIcNS0_8appen br i1 %23, label %24, label %28 24: ; preds = %._crit_edge.i.i.i - %25 = trunc nuw i32 %.0.lcssa.i.i.i to i8 + %25 = trunc nuw nsw i32 %.0.lcssa.i.i.i to i8 %26 = or disjoint i8 %25, 48 %27 = getelementptr inbounds i8, ptr %.019.lcssa.i.i.i, i64 -1 store i8 %26, ptr %27, align 1, !tbaa !43 @@ -8114,7 +8114,7 @@ _ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSERKc.exit.i: ; preds = br i1 %67, label %68, label %72 68: ; preds = %._crit_edge.i.i.i18 - %69 = trunc nuw i32 %.0.lcssa.i.i.i20 to i8 + %69 = trunc nuw nsw i32 %.0.lcssa.i.i.i20 to i8 %70 = or disjoint i8 %69, 48 %71 = getelementptr inbounds i8, ptr %.019.lcssa.i.i.i19, i64 -1 store i8 %70, ptr %71, align 1, !tbaa !43 @@ -8391,7 +8391,7 @@ define linkonce_odr hidden ptr @_ZN3fmt2v86detail17write_significandINS0_8append br i1 %25, label %26, label %30 26: ; preds = %._crit_edge.i.i.i - %27 = trunc nuw i32 %.0.lcssa.i.i.i to i8 + %27 = trunc nuw nsw i32 %.0.lcssa.i.i.i to i8 %28 = or disjoint i8 %27, 48 %29 = getelementptr inbounds i8, ptr %.019.lcssa.i.i.i, i64 -1 store i8 %28, ptr %29, align 1, !tbaa !43 @@ -8477,7 +8477,7 @@ define linkonce_odr hidden ptr @_ZN3fmt2v86detail17write_significandINS0_8append br i1 %68, label %69, label %73 69: ; preds = %._crit_edge.i34.i.i - %70 = trunc nuw i32 %.0.lcssa.i36.i.i to i8 + %70 = trunc nuw nsw i32 %.0.lcssa.i36.i.i to i8 %71 = or disjoint i8 %70, 48 %72 = getelementptr inbounds i8, ptr %.019.lcssa.i35.i.i, i64 -1 store i8 %71, ptr %72, align 1, !tbaa !43 @@ -8539,7 +8539,7 @@ _ZN3fmt2v86detail17write_significandINS0_8appenderEjcTnNSt9enable_ifIXntsr3std10 br i1 %97, label %98, label %102 98: ; preds = %._crit_edge.i.i.i38 - %99 = trunc nuw i32 %.0.lcssa.i.i.i40 to i8 + %99 = trunc nuw nsw i32 %.0.lcssa.i.i.i40 to i8 %100 = or disjoint i8 %99, 48 %101 = getelementptr inbounds i8, ptr %.019.lcssa.i.i.i39, i64 -1 store i8 %100, ptr %101, align 1, !tbaa !43 @@ -8625,7 +8625,7 @@ _ZN3fmt2v86detail17write_significandINS0_8appenderEjcTnNSt9enable_ifIXntsr3std10 br i1 %140, label %141, label %145 141: ; preds = %._crit_edge.i34.i.i26 - %142 = trunc nuw i32 %.0.lcssa.i36.i.i28 to i8 + %142 = trunc nuw nsw i32 %.0.lcssa.i36.i.i28 to i8 %143 = or disjoint i8 %142, 48 %144 = getelementptr inbounds i8, ptr %.019.lcssa.i35.i.i27, i64 -1 store i8 %143, ptr %144, align 1, !tbaa !43 @@ -8862,7 +8862,7 @@ _ZN3fmt2v86detail6fill_nINS0_8appenderEicEET_S4_T0_RKT1_.exit: ; preds = %_ZNSt2 br i1 %92, label %93, label %97 93: ; preds = %._crit_edge.i.i.i - %94 = trunc nuw i32 %.0.lcssa.i.i.i to i8 + %94 = trunc nuw nsw i32 %.0.lcssa.i.i.i to i8 %95 = or disjoint i8 %94, 48 %96 = getelementptr inbounds i8, ptr %.019.lcssa.i.i.i, i64 -1 store i8 %95, ptr %96, align 1, !tbaa !43 @@ -10379,7 +10379,7 @@ _ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSEOc.exit: ; preds = %5, br i1 %40, label %41, label %45 41: ; preds = %._crit_edge.i.i.i - %42 = trunc nuw i64 %.0.lcssa.i.i.i to i8 + %42 = trunc nuw nsw i64 %.0.lcssa.i.i.i to i8 %43 = or disjoint i8 %42, 48 %44 = getelementptr inbounds i8, ptr %.019.lcssa.i.i.i, i64 -1 store i8 %43, ptr %44, align 1, !tbaa !43 @@ -10462,7 +10462,7 @@ _ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSEOc.exit: ; preds = %5, br i1 %80, label %81, label %85 81: ; preds = %._crit_edge.i34.i.i - %82 = trunc nuw i64 %.0.lcssa.i36.i.i to i8 + %82 = trunc nuw nsw i64 %.0.lcssa.i36.i.i to i8 %83 = or disjoint i8 %82, 48 %84 = getelementptr inbounds i8, ptr %.019.lcssa.i35.i.i, i64 -1 store i8 %83, ptr %84, align 1, !tbaa !43 @@ -10720,7 +10720,7 @@ define linkonce_odr hidden ptr @_ZN3fmt2v86detail17write_significandIcNS0_8appen br i1 %22, label %23, label %27 23: ; preds = %._crit_edge.i.i.i - %24 = trunc nuw i64 %.0.lcssa.i.i.i to i8 + %24 = trunc nuw nsw i64 %.0.lcssa.i.i.i to i8 %25 = or disjoint i8 %24, 48 %26 = getelementptr inbounds i8, ptr %.019.lcssa.i.i.i, i64 -1 store i8 %25, ptr %26, align 1, !tbaa !43 @@ -10809,7 +10809,7 @@ _ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSERKc.exit.i: ; preds = br i1 %64, label %65, label %69 65: ; preds = %._crit_edge.i.i.i18 - %66 = trunc nuw i64 %.0.lcssa.i.i.i20 to i8 + %66 = trunc nuw nsw i64 %.0.lcssa.i.i.i20 to i8 %67 = or disjoint i8 %66, 48 %68 = getelementptr inbounds i8, ptr %.019.lcssa.i.i.i19, i64 -1 store i8 %67, ptr %68, align 1, !tbaa !43 @@ -11084,7 +11084,7 @@ define linkonce_odr hidden ptr @_ZN3fmt2v86detail17write_significandINS0_8append br i1 %24, label %25, label %29 25: ; preds = %._crit_edge.i.i.i - %26 = trunc nuw i64 %.0.lcssa.i.i.i to i8 + %26 = trunc nuw nsw i64 %.0.lcssa.i.i.i to i8 %27 = or disjoint i8 %26, 48 %28 = getelementptr inbounds i8, ptr %.019.lcssa.i.i.i, i64 -1 store i8 %27, ptr %28, align 1, !tbaa !43 @@ -11167,7 +11167,7 @@ define linkonce_odr hidden ptr @_ZN3fmt2v86detail17write_significandINS0_8append br i1 %64, label %65, label %69 65: ; preds = %._crit_edge.i34.i.i - %66 = trunc nuw i64 %.0.lcssa.i36.i.i to i8 + %66 = trunc nuw nsw i64 %.0.lcssa.i36.i.i to i8 %67 = or disjoint i8 %66, 48 %68 = getelementptr inbounds i8, ptr %.019.lcssa.i35.i.i, i64 -1 store i8 %67, ptr %68, align 1, !tbaa !43 @@ -11227,7 +11227,7 @@ _ZN3fmt2v86detail17write_significandINS0_8appenderEmcTnNSt9enable_ifIXntsr3std10 br i1 %91, label %92, label %96 92: ; preds = %._crit_edge.i.i.i38 - %93 = trunc nuw i64 %.0.lcssa.i.i.i40 to i8 + %93 = trunc nuw nsw i64 %.0.lcssa.i.i.i40 to i8 %94 = or disjoint i8 %93, 48 %95 = getelementptr inbounds i8, ptr %.019.lcssa.i.i.i39, i64 -1 store i8 %94, ptr %95, align 1, !tbaa !43 @@ -11310,7 +11310,7 @@ _ZN3fmt2v86detail17write_significandINS0_8appenderEmcTnNSt9enable_ifIXntsr3std10 br i1 %131, label %132, label %136 132: ; preds = %._crit_edge.i34.i.i26 - %133 = trunc nuw i64 %.0.lcssa.i36.i.i28 to i8 + %133 = trunc nuw nsw i64 %.0.lcssa.i36.i.i28 to i8 %134 = or disjoint i8 %133, 48 %135 = getelementptr inbounds i8, ptr %.019.lcssa.i35.i.i27, i64 -1 store i8 %134, ptr %135, align 1, !tbaa !43 @@ -11545,7 +11545,7 @@ _ZN3fmt2v86detail6fill_nINS0_8appenderEicEET_S4_T0_RKT1_.exit: ; preds = %_ZNSt2 br i1 %91, label %92, label %96 92: ; preds = %._crit_edge.i.i.i - %93 = trunc nuw i64 %.0.lcssa.i.i.i to i8 + %93 = trunc nuw nsw i64 %.0.lcssa.i.i.i to i8 %94 = or disjoint i8 %93, 48 %95 = getelementptr inbounds i8, ptr %.019.lcssa.i.i.i, i64 -1 store i8 %94, ptr %95, align 1, !tbaa !43 @@ -12490,7 +12490,7 @@ _ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valu br i1 %79, label %80, label %84 80: ; preds = %._crit_edge.i.i - %81 = trunc nuw i32 %.0.lcssa.i.i to i8 + %81 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %82 = or disjoint i8 %81, 48 %83 = getelementptr inbounds i8, ptr %.019.lcssa.i.i, i64 -1 store i8 %82, ptr %83, align 1, !tbaa !43 @@ -12532,7 +12532,7 @@ _ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valu br i1 %100, label %101, label %105 101: ; preds = %._crit_edge.i.i.i - %102 = trunc nuw i32 %.0.lcssa.i.i.i to i8 + %102 = trunc nuw nsw i32 %.0.lcssa.i.i.i to i8 %103 = or disjoint i8 %102, 48 %104 = getelementptr inbounds i8, ptr %.019.lcssa.i.i.i, i64 -1 store i8 %103, ptr %104, align 1, !tbaa !43 @@ -12714,7 +12714,7 @@ _ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valu br i1 %33, label %34, label %38 34: ; preds = %._crit_edge.i - %35 = trunc nuw i64 %.0.lcssa.i to i8 + %35 = trunc nuw nsw i64 %.0.lcssa.i to i8 %36 = or disjoint i8 %35, 48 %37 = getelementptr inbounds i8, ptr %.019.lcssa.i, i64 -1 store i8 %36, ptr %37, align 1, !tbaa !43 @@ -12754,7 +12754,7 @@ _ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valu br i1 %52, label %53, label %57 53: ; preds = %._crit_edge.i.i - %54 = trunc nuw i64 %.0.lcssa.i.i to i8 + %54 = trunc nuw nsw i64 %.0.lcssa.i.i to i8 %55 = or disjoint i8 %54, 48 %56 = getelementptr inbounds i8, ptr %.019.lcssa.i.i, i64 -1 store i8 %55, ptr %56, align 1, !tbaa !43 @@ -21094,7 +21094,7 @@ _ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSEOc.exit: ; preds = %68 br i1 %91, label %92, label %96 92: ; preds = %._crit_edge.i.i.i - %93 = trunc nuw i64 %.0.lcssa.i.i.i to i8 + %93 = trunc nuw nsw i64 %.0.lcssa.i.i.i to i8 %94 = or disjoint i8 %93, 48 %95 = getelementptr inbounds i8, ptr %.019.lcssa.i.i.i, i64 -1 store i8 %94, ptr %95, align 1, !tbaa !43 @@ -22215,7 +22215,7 @@ _ZN3fmt2v86detail6fill_nINS0_8appenderEmcEET_S4_T0_RKT1_.exit.i: ; preds = %_ZNS br i1 %60, label %61, label %65 61: ; preds = %._crit_edge.i.i.i.i - %62 = trunc nuw i64 %.0.lcssa.i.i.i.i to i8 + %62 = trunc nuw nsw i64 %.0.lcssa.i.i.i.i to i8 %63 = or disjoint i8 %62, 48 %64 = getelementptr inbounds i8, ptr %.019.lcssa.i.i.i.i, i64 -1 store i8 %63, ptr %64, align 1, !tbaa !43 @@ -22640,7 +22640,7 @@ _ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSEOc.exit: ; preds = %72 br i1 %96, label %97, label %101 97: ; preds = %._crit_edge.i.i.i - %98 = trunc nuw i128 %.022.lcssa.i.i.i to i8 + %98 = trunc nuw nsw i128 %.022.lcssa.i.i.i to i8 %99 = or disjoint i8 %98, 48 %100 = getelementptr inbounds i8, ptr %.0.lcssa.i.i.i, i64 -1 store i8 %99, ptr %100, align 1, !tbaa !43 @@ -23733,7 +23733,7 @@ _ZN3fmt2v86detail12count_digitsEo.exit: ; preds = %21, %11, %15, %19 %.022.lcssa.i = phi i128 [ %.sroa.0.0.insert.insert.i.i, %_ZN3fmt2v86detail12count_digitsEo.exit ], [ %29, %.lr.ph.i ] %.0.lcssa.i = phi ptr [ %26, %_ZN3fmt2v86detail12count_digitsEo.exit ], [ %28, %.lr.ph.i ] %36 = icmp samesign ult i128 %.022.lcssa.i, 10 - %extract.t29 = trunc i128 %.022.lcssa.i to i8 + %extract.t29 = trunc nuw nsw i128 %.022.lcssa.i to i8 br i1 %36, label %37, label %40 37: ; preds = %._crit_edge.i.thread, %._crit_edge.i @@ -23989,7 +23989,7 @@ _ZN3fmt2v86detail6fill_nINS0_8appenderEmcEET_S4_T0_RKT1_.exit.i: ; preds = %_ZNS br i1 %61, label %62, label %66 62: ; preds = %._crit_edge.i.i.i.i - %63 = trunc nuw i128 %.022.lcssa.i.i.i.i to i8 + %63 = trunc nuw nsw i128 %.022.lcssa.i.i.i.i to i8 %64 = or disjoint i8 %63, 48 %65 = getelementptr inbounds i8, ptr %.0.lcssa.i.i.i.i, i64 -1 store i8 %64, ptr %65, align 1, !tbaa !43 @@ -25193,7 +25193,7 @@ _ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valu br i1 %80, label %81, label %85 81: ; preds = %._crit_edge.i.i - %82 = trunc nuw i32 %.0.lcssa.i.i to i8 + %82 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %83 = or disjoint i8 %82, 48 %84 = getelementptr inbounds i8, ptr %.019.lcssa.i.i, i64 -1 store i8 %83, ptr %84, align 1, !tbaa !43 @@ -25235,7 +25235,7 @@ _ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valu br i1 %101, label %102, label %106 102: ; preds = %._crit_edge.i.i.i - %103 = trunc nuw i32 %.0.lcssa.i.i.i to i8 + %103 = trunc nuw nsw i32 %.0.lcssa.i.i.i to i8 %104 = or disjoint i8 %103, 48 %105 = getelementptr inbounds i8, ptr %.019.lcssa.i.i.i, i64 -1 store i8 %104, ptr %105, align 1, !tbaa !43 diff --git a/bench/opencv/optimized/stringprintf.ll b/bench/opencv/optimized/stringprintf.ll index da6fa0ebd47..00f7f2c2f8a 100644 --- a/bench/opencv/optimized/stringprintf.ll +++ b/bench/opencv/optimized/stringprintf.ll @@ -210,23 +210,23 @@ define hidden void @_ZN6google8protobuf18StringPrintfVectorEPKcRKSt6vectorINSt7_ call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %4) #13 call void @_ZN6google8protobuf8internal10LogMessageC1ENS0_8LogLevelEPKci(ptr noundef nonnull align 8 dereferenceable(56) %4, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 142) %15 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN6google8protobuf8internal10LogMessagelsEPKc(ptr noundef nonnull align 8 dereferenceable(56) %4, ptr noundef nonnull @.str.1) - to label %16 unwind label %33 + to label %16 unwind label %31 16: ; preds = %14 %17 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN6google8protobuf8internal10LogMessagelsEPKc(ptr noundef nonnull align 8 dereferenceable(56) %15, ptr noundef nonnull @.str.2) - to label %18 unwind label %33 + to label %18 unwind label %31 18: ; preds = %16 %19 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN6google8protobuf8internal10LogMessagelsEi(ptr noundef nonnull align 8 dereferenceable(56) %17, i32 noundef 32) - to label %20 unwind label %33 + to label %20 unwind label %31 20: ; preds = %18 %21 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN6google8protobuf8internal10LogMessagelsEPKc(ptr noundef nonnull align 8 dereferenceable(56) %19, ptr noundef nonnull @.str.3) - to label %22 unwind label %33 + to label %22 unwind label %31 22: ; preds = %20 %23 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN6google8protobuf8internal10LogMessagelsEPKc(ptr noundef nonnull align 8 dereferenceable(56) %21, ptr noundef nonnull @.str.4) - to label %24 unwind label %33 + to label %24 unwind label %31 24: ; preds = %22 invoke void @_ZN6google8protobuf8internal11LogFinisheraSERNS1_10LogMessageE(ptr noundef nonnull align 1 dereferenceable(1) %5, ptr noundef nonnull align 8 dereferenceable(56) %23) @@ -261,16 +261,11 @@ define hidden void @_ZN6google8protobuf18StringPrintfVectorEPKcRKSt6vectorINSt7_ br label %.lr.ph ._crit_edge: ; preds = %.lr.ph, %.critedge26 - %30 = and i64 %.pre-phi42, 137438952448 - %31 = icmp eq i64 %30, 0 - br i1 %31, label %.lr.ph30.preheader, label %._crit_edge31 + %30 = icmp ult i64 %29, 32 + br i1 %30, label %.lr.ph30, label %._crit_edge31 -.lr.ph30.preheader: ; preds = %._crit_edge - %32 = and i64 %29, 31 - br label %.lr.ph30 - -33: ; preds = %22, %20, %18, %16, %14 - %34 = landingpad { ptr, i32 } +.lr.ph30.preheader: ; preds = %22, %20, %18, %16, %14 + %32 = landingpad { ptr, i32 } cleanup br label %37 @@ -280,8 +275,8 @@ define hidden void @_ZN6google8protobuf18StringPrintfVectorEPKcRKSt6vectorINSt7_ call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #13 br label %37 -37: ; preds = %33, %35 - %.pn = phi { ptr, i32 } [ %36, %35 ], [ %34, %33 ] +37: ; preds = %31, %35 + %.pn = phi { ptr, i32 } [ %36, %35 ], [ %32, %31 ] call void @_ZN6google8protobuf8internal10LogMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(56) %4) #13 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %4) #13 resume { ptr, i32 } %.pn @@ -360,12 +355,12 @@ define hidden void @_ZN6google8protobuf18StringPrintfVectorEPKcRKSt6vectorINSt7_ %101 = load ptr, ptr %100, align 16, !tbaa !18 %102 = getelementptr inbounds nuw i8, ptr %6, i64 248 %103 = load ptr, ptr %102, align 8, !tbaa !18 - call void (ptr, ptr, ...) @_ZN6google8protobuf12StringPrintfB5cxx11EPKcz(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef %1, ptr noundef %41, ptr noundef %43, ptr noundef %45, ptr noundef %47, ptr noundef %49, ptr noundef %51, ptr noundef %53, ptr noundef %55, ptr noundef %57, ptr noundef %59, ptr noundef %61, ptr noundef %63, ptr noundef %65, ptr noundef %67, ptr noundef %69, ptr noundef %71, ptr noundef %73, ptr noundef %75, ptr noundef %77, ptr noundef %79, ptr noundef %81, ptr noundef %83, ptr noundef %85, ptr noundef %87, ptr noundef %89, ptr noundef %91, ptr noundef %93, ptr noundef %95, ptr noundef %97, ptr noundef %99, ptr noundef %101, ptr noundef %103) + call void (ptr, ptr, ...) @_ZN6google8protobuf12StringPrintfB5cxx11EPKcz(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef %1, ptr noundef %39, ptr noundef %41, ptr noundef %43, ptr noundef %45, ptr noundef %47, ptr noundef %49, ptr noundef %51, ptr noundef %53, ptr noundef %55, ptr noundef %57, ptr noundef %59, ptr noundef %61, ptr noundef %63, ptr noundef %65, ptr noundef %67, ptr noundef %69, ptr noundef %71, ptr noundef %73, ptr noundef %75, ptr noundef %77, ptr noundef %79, ptr noundef %81, ptr noundef %83, ptr noundef %85, ptr noundef %87, ptr noundef %89, ptr noundef %91, ptr noundef %93, ptr noundef %95, ptr noundef %97, ptr noundef %99, ptr noundef %101) call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %6) #13 ret void -.lr.ph30: ; preds = %.lr.ph30.preheader, %.lr.ph30 - %indvars.iv33 = phi i64 [ %32, %.lr.ph30.preheader ], [ %indvars.iv.next34, %.lr.ph30 ] +.lr.ph30: ; preds = %._crit_edge, %.lr.ph30 + %indvars.iv33 = phi i64 [ %indvars.iv.next34, %.lr.ph30 ], [ %29, %._crit_edge ] %104 = getelementptr inbounds nuw [32 x ptr], ptr %6, i64 0, i64 %indvars.iv33 store ptr @_ZN6google8protobufL25string_printf_empty_blockE, ptr %104, align 8, !tbaa !18 %indvars.iv.next34 = add nuw nsw i64 %indvars.iv33, 1 diff --git a/bench/openvdb/optimized/MultiResGrid.ll b/bench/openvdb/optimized/MultiResGrid.ll index 247e29378c6..ff1d8213058 100644 --- a/bench/openvdb/optimized/MultiResGrid.ll +++ b/bench/openvdb/optimized/MultiResGrid.ll @@ -9124,17 +9124,19 @@ _ZNK7openvdb5v11_04tree12IterListItemINS1_21TreeValueIteratorBaseIKNS1_4TreeINS1 %ijk.sroa.0.0.extract.trunc = trunc i64 %retval.sroa.0.0.insert.insert.i2.i.i.pn.i to i32 %ijk.sroa.3.0.extract.shift = lshr i64 %retval.sroa.0.0.insert.insert.i2.i.i.pn.i, 32 %ijk.sroa.3.0.extract.trunc = trunc nuw i64 %ijk.sroa.3.0.extract.shift to i32 - %53 = or i32 %ijk.sroa.3.0.extract.trunc, %ijk.sroa.0.0.extract.trunc - %54 = and i32 %53, 1 - %or.cond = icmp eq i32 %54, 0 + %and = and i32 %ijk.sroa.0.0.extract.trunc, 1 + %tobool23.not = icmp eq i32 %and, 0 + %and25 = and i32 %ijk.sroa.3.0.extract.trunc, 1 + %tobool26.not = icmp eq i32 %and25, 0 + %or.cond = select i1 %tobool23.not, i1 %tobool26.not, i1 false %and29 = and i32 %add10.i.i.i.pn.i, 1 %tobool30.not = icmp eq i32 %and29, 0 %or.cond59 = select i1 %or.cond, i1 %tobool30.not, i1 false br i1 %or.cond59, label %if.end, label %do.body.i.i.preheader if.end: ; preds = %_ZNK7openvdb5v11_04tree12IterListItemINS1_21TreeValueIteratorBaseIKNS1_4TreeINS1_8RootNodeINS1_12InternalNodeINS6_INS1_8LeafNodeIfLj3EEELj4EEELj5EEEEEEENSB_9ValueIterIKSB_St23_Rb_tree_const_iteratorISt4pairIKNS0_4math5CoordENSB_10NodeStructEEENSB_11ValueOnPredEKfEEE13PrevValueItemENS0_8TypeListIJS8_S9_SA_SF_EEELm4ELj0EE8getCoordEj.exit - %shr.i = ashr i32 %ijk.sroa.0.0.extract.trunc, 1 - %shr5.i = ashr i32 %ijk.sroa.3.0.extract.trunc, 1 + %shr.i = ashr exact i32 %ijk.sroa.0.0.extract.trunc, 1 + %shr5.i = ashr exact i32 %ijk.sroa.3.0.extract.trunc, 1 %shr9.i = ashr exact i32 %add10.i.i.i.pn.i, 1 %retval.sroa.2.0.insert.ext.i = zext i32 %shr5.i to i64 %retval.sroa.2.0.insert.shift.i = shl nuw i64 %retval.sroa.2.0.insert.ext.i, 32 @@ -18374,17 +18376,19 @@ _ZNK7openvdb5v11_04tree12IterListItemINS1_21TreeValueIteratorBaseIKNS1_4TreeINS1 %ijk.sroa.0.0.extract.trunc = trunc i64 %retval.sroa.0.0.insert.insert.i2.i.i.pn.i to i32 %ijk.sroa.3.0.extract.shift = lshr i64 %retval.sroa.0.0.insert.insert.i2.i.i.pn.i, 32 %ijk.sroa.3.0.extract.trunc = trunc nuw i64 %ijk.sroa.3.0.extract.shift to i32 - %53 = or i32 %ijk.sroa.3.0.extract.trunc, %ijk.sroa.0.0.extract.trunc - %54 = and i32 %53, 1 - %or.cond = icmp eq i32 %54, 0 + %and = and i32 %ijk.sroa.0.0.extract.trunc, 1 + %tobool23.not = icmp eq i32 %and, 0 + %and25 = and i32 %ijk.sroa.3.0.extract.trunc, 1 + %tobool26.not = icmp eq i32 %and25, 0 + %or.cond = select i1 %tobool23.not, i1 %tobool26.not, i1 false %and29 = and i32 %add10.i.i.i.pn.i, 1 %tobool30.not = icmp eq i32 %and29, 0 %or.cond59 = select i1 %or.cond, i1 %tobool30.not, i1 false br i1 %or.cond59, label %if.end, label %do.body.i.i.preheader if.end: ; preds = %_ZNK7openvdb5v11_04tree12IterListItemINS1_21TreeValueIteratorBaseIKNS1_4TreeINS1_8RootNodeINS1_12InternalNodeINS6_INS1_8LeafNodeIdLj3EEELj4EEELj5EEEEEEENSB_9ValueIterIKSB_St23_Rb_tree_const_iteratorISt4pairIKNS0_4math5CoordENSB_10NodeStructEEENSB_11ValueOnPredEKdEEE13PrevValueItemENS0_8TypeListIJS8_S9_SA_SF_EEELm4ELj0EE8getCoordEj.exit - %shr.i = ashr i32 %ijk.sroa.0.0.extract.trunc, 1 - %shr5.i = ashr i32 %ijk.sroa.3.0.extract.trunc, 1 + %shr.i = ashr exact i32 %ijk.sroa.0.0.extract.trunc, 1 + %shr5.i = ashr exact i32 %ijk.sroa.3.0.extract.trunc, 1 %shr9.i = ashr exact i32 %add10.i.i.i.pn.i, 1 %retval.sroa.2.0.insert.ext.i = zext i32 %shr5.i to i64 %retval.sroa.2.0.insert.shift.i = shl nuw i64 %retval.sroa.2.0.insert.ext.i, 32 diff --git a/bench/ozz-animation/optimized/gltf2ozz.ll b/bench/ozz-animation/optimized/gltf2ozz.ll index 31f70340cd5..8d4b1dcb4ec 100644 --- a/bench/ozz-animation/optimized/gltf2ozz.ll +++ b/bench/ozz-animation/optimized/gltf2ozz.ll @@ -17778,7 +17778,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i: ; p br label %_ZNSt7__cxx119to_stringEi.exit 2604: ; preds = %._crit_edge.i.i - %2605 = trunc nuw i32 %.0.lcssa.i.i to i8 + %2605 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %2606 = or disjoint i8 %2605, 48 br label %_ZNSt7__cxx119to_stringEi.exit @@ -29813,7 +29813,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit: ; pre br label %_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.exit 56: ; preds = %._crit_edge.i - %57 = trunc nuw i32 %.0.lcssa.i to i8 + %57 = trunc nuw nsw i32 %.0.lcssa.i to i8 %58 = or disjoint i8 %57, 48 br label %_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.exit @@ -34226,7 +34226,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i: ; p br label %_ZNSt7__cxx119to_stringEi.exit 206: ; preds = %._crit_edge.i.i183 - %207 = trunc nuw i32 %.0.lcssa.i.i to i8 + %207 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %208 = or disjoint i8 %207, 48 br label %_ZNSt7__cxx119to_stringEi.exit @@ -34818,7 +34818,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i248: br label %_ZNSt7__cxx119to_stringEi.exit256 437: ; preds = %._crit_edge.i.i249 - %438 = trunc nuw i32 %.0.lcssa.i.i250 to i8 + %438 = trunc nuw nsw i32 %.0.lcssa.i.i250 to i8 %439 = or disjoint i8 %438, 48 br label %_ZNSt7__cxx119to_stringEi.exit256 @@ -35431,7 +35431,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i337: br label %_ZNSt7__cxx119to_stringEi.exit345 675: ; preds = %._crit_edge.i.i338 - %676 = trunc nuw i32 %.0.lcssa.i.i339 to i8 + %676 = trunc nuw nsw i32 %.0.lcssa.i.i339 to i8 %677 = or disjoint i8 %676, 48 br label %_ZNSt7__cxx119to_stringEi.exit345 @@ -36466,7 +36466,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i491: br label %_ZNSt7__cxx119to_stringEi.exit499 1055: ; preds = %._crit_edge.i.i492 - %1056 = trunc nuw i32 %.0.lcssa.i.i493 to i8 + %1056 = trunc nuw nsw i32 %.0.lcssa.i.i493 to i8 %1057 = or disjoint i8 %1056, 48 br label %_ZNSt7__cxx119to_stringEi.exit499 @@ -51848,7 +51848,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i: ; p br label %_ZNSt7__cxx119to_stringEi.exit 2093: ; preds = %._crit_edge.i.i358 - %2094 = trunc nuw i32 %.0.lcssa.i.i to i8 + %2094 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %2095 = or disjoint i8 %2094, 48 br label %_ZNSt7__cxx119to_stringEi.exit @@ -54482,7 +54482,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i.i: ; br label %_ZNSt7__cxx119to_stringEi.exit.i 2996: ; preds = %._crit_edge.i.i.i498 - %2997 = trunc nuw i32 %.0.lcssa.i.i.i to i8 + %2997 = trunc nuw nsw i32 %.0.lcssa.i.i.i to i8 %2998 = or disjoint i8 %2997, 48 br label %_ZNSt7__cxx119to_stringEi.exit.i @@ -66780,7 +66780,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i: ; p br label %_ZNSt7__cxx119to_stringEi.exit 59: ; preds = %._crit_edge.i.i - %60 = trunc nuw i32 %.0.lcssa.i.i to i8 + %60 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %61 = or disjoint i8 %60, 48 br label %_ZNSt7__cxx119to_stringEi.exit @@ -87411,7 +87411,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i.i: ; preds = %298, %296, %292, %2 br label %335 332: ; preds = %._crit_edge.i.i37.i - %333 = trunc nuw i64 %.0.lcssa.i.i.i to i8 + %333 = trunc nuw nsw i64 %.0.lcssa.i.i.i to i8 %334 = or disjoint i8 %333, 48 br label %335 @@ -87730,7 +87730,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i51.i: ; preds = %404, %402, %398, % br label %440 437: ; preds = %._crit_edge.i.i53.i - %438 = trunc nuw i64 %.0.lcssa.i.i54.i to i8 + %438 = trunc nuw nsw i64 %.0.lcssa.i.i54.i to i8 %439 = or disjoint i8 %438, 48 br label %440 @@ -88277,7 +88277,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i.i220: ; preds = %603, %601, %597, br label %640 637: ; preds = %._crit_edge.i.i37.i225 - %638 = trunc nuw i64 %.0.lcssa.i.i.i226 to i8 + %638 = trunc nuw nsw i64 %.0.lcssa.i.i.i226 to i8 %639 = or disjoint i8 %638, 48 br label %640 @@ -88596,7 +88596,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i51.i113: ; preds = %709, %707, %703 br label %745 742: ; preds = %._crit_edge.i.i53.i118 - %743 = trunc nuw i64 %.0.lcssa.i.i54.i119 to i8 + %743 = trunc nuw nsw i64 %.0.lcssa.i.i54.i119 to i8 %744 = or disjoint i8 %743, 48 br label %745 @@ -89143,7 +89143,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i.i402: ; preds = %908, %906, %902, br label %945 942: ; preds = %._crit_edge.i.i37.i407 - %943 = trunc nuw i64 %.0.lcssa.i.i.i408 to i8 + %943 = trunc nuw nsw i64 %.0.lcssa.i.i.i408 to i8 %944 = or disjoint i8 %943, 48 br label %945 @@ -89462,7 +89462,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i51.i295: ; preds = %1014, %1012, %1 br label %1050 1047: ; preds = %._crit_edge.i.i53.i300 - %1048 = trunc nuw i64 %.0.lcssa.i.i54.i301 to i8 + %1048 = trunc nuw nsw i64 %.0.lcssa.i.i54.i301 to i8 %1049 = or disjoint i8 %1048, 48 br label %1050 @@ -92517,7 +92517,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit: ; preds = %15, %2, %5, %9, %13 br label %_ZNSt8__detail18__to_chars_10_implImEEvPcjT_.exit 51: ; preds = %._crit_edge.i - %52 = trunc nuw i64 %.0.lcssa.i to i8 + %52 = trunc nuw nsw i64 %.0.lcssa.i to i8 %53 = or disjoint i8 %52, 48 br label %_ZNSt8__detail18__to_chars_10_implImEEvPcjT_.exit @@ -105089,7 +105089,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i84: ; _ZN8nlohmann16json_abi_v3_11_36detail5lexerINS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEENS1_22iterator_input_adapterIPKcEEE3addEi.exit86: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i84, %340 %341 = phi ptr [ %.pre.i.i85, %340 ], [ %333, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i84 ] - %342 = trunc i32 %.pr.i to i8 + %342 = trunc nuw nsw i32 %.pr.i to i8 %343 = getelementptr inbounds nuw i8, ptr %341, i64 %331 store i8 %342, ptr %343, align 1, !tbaa !294 store i64 %332, ptr %30, align 8, !tbaa !55 @@ -105297,7 +105297,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i26: ; _ZN8nlohmann16json_abi_v3_11_36detail5lexerINS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEENS1_22iterator_input_adapterIPKcEEE3addEi.exit28: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i26, %54 %55 = phi ptr [ %.pre.i.i27, %54 ], [ %46, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i26 ] - %56 = trunc i32 %4 to i8 + %56 = trunc nuw nsw i32 %4 to i8 %57 = getelementptr inbounds nuw i8, ptr %55, i64 %44 store i8 %56, ptr %57, align 1, !tbaa !294 store i64 %45, ptr %43, align 8, !tbaa !55 @@ -105626,7 +105626,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i38: ; _ZN8nlohmann16json_abi_v3_11_36detail5lexerINS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEENS1_22iterator_input_adapterIPKcEEE3addEi.exit40: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i38, %197 %198 = phi ptr [ %.pre.i.i39, %197 ], [ %190, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i38 ] - %199 = trunc i32 %.pr.i to i8 + %199 = trunc nuw nsw i32 %.pr.i to i8 %200 = getelementptr inbounds nuw i8, ptr %198, i64 %188 store i8 %199, ptr %200, align 1, !tbaa !294 store i64 %189, ptr %92, align 8, !tbaa !55 @@ -105696,7 +105696,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i44: ; _ZN8nlohmann16json_abi_v3_11_36detail5lexerINS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEENS1_22iterator_input_adapterIPKcEEE3addEi.exit46: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i44, %231 %232 = phi ptr [ %.pre.i.i45, %231 ], [ %224, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i44 ] - %233 = trunc i32 %.pr.i to i8 + %233 = trunc nuw nsw i32 %.pr.i to i8 %234 = getelementptr inbounds nuw i8, ptr %232, i64 %222 store i8 %233, ptr %234, align 1, !tbaa !294 store i64 %223, ptr %92, align 8, !tbaa !55 @@ -118912,7 +118912,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i: ; preds = %20, %18, %14, %10, br label %_ZNSt7__cxx119to_stringEm.exit 56: ; preds = %._crit_edge.i.i - %57 = trunc nuw i64 %.0.lcssa.i.i to i8 + %57 = trunc nuw nsw i64 %.0.lcssa.i.i to i8 %58 = or disjoint i8 %57, 48 br label %_ZNSt7__cxx119to_stringEm.exit @@ -119017,7 +119017,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i8: ; preds = %73, %71, %67, %63, br label %112 109: ; preds = %._crit_edge.i.i10 - %110 = trunc nuw i64 %.0.lcssa.i.i11 to i8 + %110 = trunc nuw nsw i64 %.0.lcssa.i.i11 to i8 %111 = or disjoint i8 %110, 48 br label %112 @@ -131557,7 +131557,7 @@ _ZN8nlohmann16json_abi_v3_11_36detail10serializerINS0_10basic_jsonISt3mapSt6vect %.0.lcssa48.i = phi ptr [ %363, %._crit_edge.thread.i93 ], [ %.0.lcssa.i, %._crit_edge.i92 ] %.1.lcssa47.i = phi i64 [ %354, %._crit_edge.thread.i93 ], [ %.1.lcssa.i, %._crit_edge.i92 ] %400 = phi i64 [ 1, %._crit_edge.thread.i93 ], [ %379, %._crit_edge.i92 ] - %401 = trunc nuw i64 %.1.lcssa47.i to i8 + %401 = trunc nuw nsw i64 %.1.lcssa47.i to i8 %402 = or disjoint i8 %401, 48 %403 = getelementptr inbounds i8, ptr %.0.lcssa48.i, i64 -1 store i8 %402, ptr %403, align 1, !tbaa !294 @@ -131877,7 +131877,7 @@ _ZN8nlohmann16json_abi_v3_11_36detail10serializerINS0_10basic_jsonISt3mapSt6vect %.0.lcssa48.i116 = phi ptr [ %539, %._crit_edge.thread.i121 ], [ %.0.lcssa.i115, %._crit_edge.i113 ] %.1.lcssa47.i117 = phi i64 [ %530, %._crit_edge.thread.i121 ], [ %.1.lcssa.i114, %._crit_edge.i113 ] %576 = phi i64 [ 1, %._crit_edge.thread.i121 ], [ %555, %._crit_edge.i113 ] - %577 = trunc nuw i64 %.1.lcssa47.i117 to i8 + %577 = trunc nuw nsw i64 %.1.lcssa47.i117 to i8 %578 = or disjoint i8 %577, 48 %579 = getelementptr inbounds i8, ptr %.0.lcssa48.i116, i64 -1 store i8 %578, ptr %579, align 1, !tbaa !294 @@ -132029,7 +132029,7 @@ _ZN8nlohmann16json_abi_v3_11_36detail10serializerINS0_10basic_jsonISt3mapSt6vect %.0.lcssa48.i131 = phi ptr [ %618, %._crit_edge.thread.i136 ], [ %.0.lcssa.i130, %._crit_edge.i128 ] %.1.lcssa47.i132 = phi i64 [ %609, %._crit_edge.thread.i136 ], [ %.1.lcssa.i129, %._crit_edge.i128 ] %655 = phi i64 [ 1, %._crit_edge.thread.i136 ], [ %634, %._crit_edge.i128 ] - %656 = trunc nuw i64 %.1.lcssa47.i132 to i8 + %656 = trunc nuw nsw i64 %.1.lcssa47.i132 to i8 %657 = or disjoint i8 %656, 48 %658 = getelementptr inbounds i8, ptr %.0.lcssa48.i131, i64 -1 store i8 %657, ptr %658, align 1, !tbaa !294 @@ -133051,7 +133051,7 @@ _ZN8nlohmann16json_abi_v3_11_36detail10serializerINS0_10basic_jsonISt3mapSt6vect %.0.lcssa57 = phi ptr [ %32, %._crit_edge.thread ], [ %.0.lcssa, %._crit_edge ] %.1.lcssa56 = phi i64 [ %1, %._crit_edge.thread ], [ %.1.lcssa, %._crit_edge ] %69 = phi i64 [ 1, %._crit_edge.thread ], [ %48, %._crit_edge ] - %70 = trunc nuw i64 %.1.lcssa56 to i8 + %70 = trunc nuw nsw i64 %.1.lcssa56 to i8 %71 = or disjoint i8 %70, 48 %72 = getelementptr inbounds i8, ptr %.0.lcssa57, i64 -1 store i8 %71, ptr %72, align 1, !tbaa !294 @@ -133371,7 +133371,7 @@ define linkonce_odr dso_local noundef nonnull ptr @_ZN8nlohmann16json_abi_v3_11_ 63: ; preds = %59 %64 = getelementptr i8, ptr %.pn.i, i64 4 store i8 48, ptr %.023.i.i, align 1, !tbaa !294 - %65 = trunc nuw i32 %.0.i.i to i8 + %65 = trunc nuw nsw i32 %.0.i.i to i8 %66 = or disjoint i8 %65, 48 %67 = getelementptr i8, ptr %.pn.i, i64 5 store i8 %66, ptr %64, align 1, !tbaa !294 @@ -133383,7 +133383,7 @@ define linkonce_odr dso_local noundef nonnull ptr @_ZN8nlohmann16json_abi_v3_11_ br i1 %69, label %71, label %77 71: ; preds = %68 - %.lhs.trunc.i.i = trunc nuw i32 %.0.i.i to i8 + %.lhs.trunc.i.i = trunc nuw nsw i32 %.0.i.i to i8 %72 = udiv i8 %.lhs.trunc.i.i, 10 %73 = or disjoint i8 %72, 48 store i8 %73, ptr %.023.i.i, align 1, !tbaa !294 diff --git a/bench/ozz-animation/optimized/jsoncpp.ll b/bench/ozz-animation/optimized/jsoncpp.ll index 68f676fa3bf..41e28037d07 100644 --- a/bench/ozz-animation/optimized/jsoncpp.ll +++ b/bench/ozz-animation/optimized/jsoncpp.ll @@ -6306,7 +6306,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEm.exit16: ; preds = %23 = getelementptr inbounds nuw i8, ptr %22, i64 1 store i8 %21, ptr %23, align 1, !tbaa !17 %24 = lshr i32 %1, 6 - %25 = trunc nuw i32 %24 to i8 + %25 = trunc nuw nsw i32 %24 to i8 %26 = or disjoint i8 %25, -64 br label %.sink.split @@ -6333,7 +6333,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEm.exit17: ; preds = %40 = getelementptr inbounds nuw i8, ptr %39, i64 1 store i8 %38, ptr %40, align 1, !tbaa !17 %41 = lshr i32 %1, 12 - %42 = trunc nuw i32 %41 to i8 + %42 = trunc nuw nsw i32 %41 to i8 %43 = or disjoint i8 %42, -32 br label %.sink.split @@ -6367,7 +6367,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEm.exit18: ; preds = %63 = getelementptr inbounds nuw i8, ptr %62, i64 1 store i8 %61, ptr %63, align 1, !tbaa !17 %64 = lshr i32 %1, 18 - %65 = trunc nuw i32 %64 to i8 + %65 = trunc nuw nsw i32 %64 to i8 %66 = or disjoint i8 %65, -16 br label %.sink.split @@ -16592,7 +16592,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKS br label %107 33: ; preds = %_ZNK4Json5Value5isIntEv.exit - %34 = trunc i64 %12 to i32 + %34 = trunc nsw i64 %12 to i32 br label %106 _ZNK4Json5Value5isIntEv.exit29: ; preds = %1 @@ -16661,7 +16661,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit33: ; preds = %_ZN br label %107 56: ; preds = %_ZNK4Json5Value5isIntEv.exit29 - %57 = trunc nuw i64 %35 to i32 + %57 = trunc nuw nsw i64 %35 to i32 br label %106 58: ; preds = %1 diff --git a/bench/postgres/optimized/pg_operator.ll b/bench/postgres/optimized/pg_operator.ll index 11e21badfc4..c0cd8e30cbb 100644 --- a/bench/postgres/optimized/pg_operator.ll +++ b/bench/postgres/optimized/pg_operator.ll @@ -340,8 +340,9 @@ define internal fastcc zeroext i1 @validOperatorName(ptr noundef readonly %0) un 18: ; preds = %.lr.ph %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %19 = icmp sgt i64 %indvars.iv, 0 - br i1 %19, label %.lr.ph, label %.loopexit, !llvm.loop !4 + %19 = trunc nuw i64 %indvars.iv to i32 + %20 = icmp sgt i32 %19, 0 + br i1 %20, label %.lr.ph, label %.loopexit, !llvm.loop !4 .lr.ph: ; preds = %.lr.ph.preheader, %18 %indvars.iv = phi i64 [ %17, %.lr.ph.preheader ], [ %indvars.iv.next, %18 ] diff --git a/bench/pugixml/optimized/pugixml.ll b/bench/pugixml/optimized/pugixml.ll index 4311e1ee2f3..0910145bd4d 100644 --- a/bench/pugixml/optimized/pugixml.ll +++ b/bench/pugixml/optimized/pugixml.ll @@ -8970,7 +8970,7 @@ _ZN4pugi4impl12_GLOBAL__N_113utf16_decoderINS1_9opt_falseEE7processINS1_12utf8_c br i1 %81, label %82, label %84 82: ; preds = %80 - %83 = trunc nuw i16 %77 to i8 + %83 = trunc nuw nsw i16 %77 to i8 store i8 %83, ptr %.02937.i20.i.i, align 1, !tbaa !28 br label %_ZN4pugi4impl12_GLOBAL__N_111utf8_writer3lowEPhj.exit.i.i.i @@ -8980,7 +8980,7 @@ _ZN4pugi4impl12_GLOBAL__N_113utf16_decoderINS1_9opt_falseEE7processINS1_12utf8_c 86: ; preds = %84 %87 = lshr i16 %77, 6 - %88 = trunc nuw i16 %87 to i8 + %88 = trunc nuw nsw i16 %87 to i8 %89 = or disjoint i8 %88, -64 store i8 %89, ptr %.02937.i20.i.i, align 1, !tbaa !28 %90 = trunc i16 %77 to i8 @@ -9193,7 +9193,7 @@ _ZN4pugi4impl12_GLOBAL__N_113utf16_decoderINS1_8opt_trueEE7processINS1_12utf8_co br i1 %202, label %203, label %205 203: ; preds = %201 - %204 = trunc nuw i16 %rev.i.i21.i.i to i8 + %204 = trunc nuw nsw i16 %rev.i.i21.i.i to i8 store i8 %204, ptr %.02938.i20.i.i, align 1, !tbaa !28 br label %_ZN4pugi4impl12_GLOBAL__N_111utf8_writer3lowEPhj.exit.i.i50.i @@ -9203,7 +9203,7 @@ _ZN4pugi4impl12_GLOBAL__N_113utf16_decoderINS1_8opt_trueEE7processINS1_12utf8_co 207: ; preds = %205 %208 = lshr i16 %rev.i.i21.i.i, 6 - %209 = trunc nuw i16 %208 to i8 + %209 = trunc nuw nsw i16 %208 to i8 %210 = or disjoint i8 %209, -64 store i8 %210, ptr %.02938.i20.i.i, align 1, !tbaa !28 %211 = trunc i16 %rev.i.i21.i.i to i8 @@ -9397,7 +9397,7 @@ _ZN4pugi4impl12_GLOBAL__N_113utf32_decoderINS1_9opt_falseEE7processINS1_12utf8_c 308: ; preds = %306 %309 = lshr i32 %300, 6 - %310 = trunc nuw i32 %309 to i8 + %310 = trunc nuw nsw i32 %309 to i8 %311 = or disjoint i8 %310, -64 store i8 %311, ptr %.01119.i19.i.i, align 1, !tbaa !28 %312 = trunc i32 %300 to i8 @@ -9409,7 +9409,7 @@ _ZN4pugi4impl12_GLOBAL__N_113utf32_decoderINS1_9opt_falseEE7processINS1_12utf8_c 316: ; preds = %306 %317 = lshr i32 %300, 12 - %318 = trunc nuw i32 %317 to i8 + %318 = trunc nuw nsw i32 %317 to i8 %319 = or disjoint i8 %318, -32 store i8 %319, ptr %.01119.i19.i.i, align 1, !tbaa !28 %320 = lshr i32 %300, 6 @@ -9528,7 +9528,7 @@ _ZN4pugi4impl12_GLOBAL__N_113utf32_decoderINS1_8opt_trueEE7processINS1_12utf8_co 369: ; preds = %367 %370 = lshr i32 %361, 6 - %371 = trunc nuw i32 %370 to i8 + %371 = trunc nuw nsw i32 %370 to i8 %372 = or disjoint i8 %371, -64 store i8 %372, ptr %.01119.i19.i77.i, align 1, !tbaa !28 %373 = trunc i32 %361 to i8 @@ -9540,7 +9540,7 @@ _ZN4pugi4impl12_GLOBAL__N_113utf32_decoderINS1_8opt_trueEE7processINS1_12utf8_co 377: ; preds = %367 %378 = lshr i32 %361, 12 - %379 = trunc nuw i32 %378 to i8 + %379 = trunc nuw nsw i32 %378 to i8 %380 = or disjoint i8 %379, -32 store i8 %380, ptr %.01119.i19.i77.i, align 1, !tbaa !28 %381 = lshr i32 %361, 6 @@ -18118,7 +18118,7 @@ _ZN4pugi4impl12_GLOBAL__N_113as_utf8_beginEPKwm.exit.i: ; preds = %.lr.ph.i.i.i. 27: ; preds = %25 %28 = lshr i32 %19, 6 - %29 = trunc nuw i32 %28 to i8 + %29 = trunc nuw nsw i32 %28 to i8 %30 = or disjoint i8 %29, -64 store i8 %30, ptr %.01119.i.i.i16.i, align 1, !tbaa !28 %31 = trunc i32 %19 to i8 @@ -18130,7 +18130,7 @@ _ZN4pugi4impl12_GLOBAL__N_113as_utf8_beginEPKwm.exit.i: ; preds = %.lr.ph.i.i.i. 35: ; preds = %25 %36 = lshr i32 %19, 12 - %37 = trunc nuw i32 %36 to i8 + %37 = trunc nuw nsw i32 %36 to i8 %38 = or disjoint i8 %37, -32 store i8 %38, ptr %.01119.i.i.i16.i, align 1, !tbaa !28 %39 = lshr i32 %19, 6 @@ -18885,7 +18885,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEm.exit: ; preds = % 19: ; preds = %17 %20 = lshr i32 %11, 6 - %21 = trunc nuw i32 %20 to i8 + %21 = trunc nuw nsw i32 %20 to i8 %22 = or disjoint i8 %21, -64 store i8 %22, ptr %.01119.i.i.i12, align 1, !tbaa !28 %23 = trunc i32 %11 to i8 @@ -18897,7 +18897,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEm.exit: ; preds = % 27: ; preds = %17 %28 = lshr i32 %11, 12 - %29 = trunc nuw i32 %28 to i8 + %29 = trunc nuw nsw i32 %28 to i8 %30 = or disjoint i8 %29, -32 store i8 %30, ptr %.01119.i.i.i12, align 1, !tbaa !28 %31 = lshr i32 %11, 6 @@ -31994,7 +31994,7 @@ define internal fastcc noundef nonnull ptr @_ZN4pugi4impl12_GLOBAL__N_114strconv 51: ; preds = %49 %52 = lshr i32 %.3, 6 - %53 = trunc nuw i32 %52 to i8 + %53 = trunc nuw nsw i32 %52 to i8 %54 = or disjoint i8 %53, -64 store i8 %54, ptr %0, align 1, !tbaa !28 %55 = trunc i32 %.3 to i8 @@ -32005,7 +32005,7 @@ define internal fastcc noundef nonnull ptr @_ZN4pugi4impl12_GLOBAL__N_114strconv 58: ; preds = %49 %59 = lshr i32 %.3, 12 - %60 = trunc nuw i32 %59 to i8 + %60 = trunc nuw nsw i32 %59 to i8 %61 = or disjoint i8 %60, -32 store i8 %61, ptr %0, align 1, !tbaa !28 %62 = lshr i32 %.3, 6 diff --git a/bench/raylib/optimized/raudio.ll b/bench/raylib/optimized/raudio.ll index 3ba03f18a85..65f7fc57bf5 100644 --- a/bench/raylib/optimized/raudio.ll +++ b/bench/raylib/optimized/raudio.ll @@ -1214,7 +1214,7 @@ define hidden range(i32 0, 23) i32 @ma_itoa_s(i32 noundef %0, ptr noundef captur %.046 = phi ptr [ %1, %9 ], [ %15, %11 ] %12 = urem i32 %.148, %3 %13 = icmp samesign ugt i32 %12, 9 - %14 = trunc nuw i32 %12 to i8 + %14 = trunc nuw nsw i32 %12 to i8 %storemerge.v = select i1 %13, i8 87, i8 48 %storemerge = add nuw nsw i8 %storemerge.v, %14 store i8 %storemerge, ptr %.046, align 1 @@ -36694,7 +36694,7 @@ ma_channel_map_get_channel.exit.us.us.i: ; preds = %97, %94 br i1 %or.cond.i58.i.us.us.us.i, label %116, label %ma_channel_map_get_channel.exit45.us.us.us.i 116: ; preds = %114 - %117 = trunc nuw i32 %.03552.us.us.us.i to i8 + %117 = trunc nuw nsw i32 %.03552.us.us.us.i to i8 %118 = add nuw nsw i8 %117, 12 br label %ma_channel_map_get_channel.exit45.us.us.us.i @@ -42181,7 +42181,7 @@ define internal fastcc zeroext range(i8 0, 46) i8 @ma_channel_map_init_standard_ br i1 %or.cond.i, label %22, label %ma_channel_map_init_standard_channel_alsa.exit 22: ; preds = %19 - %23 = trunc nuw i32 %2 to i8 + %23 = trunc nuw nsw i32 %2 to i8 %24 = add nuw nsw i8 %23, 12 br label %ma_channel_map_init_standard_channel_alsa.exit @@ -42224,7 +42224,7 @@ define internal fastcc zeroext range(i8 0, 46) i8 @ma_channel_map_init_standard_ br i1 %or.cond.i25, label %38, label %ma_channel_map_init_standard_channel_alsa.exit 38: ; preds = %35 - %39 = trunc nuw i32 %2 to i8 + %39 = trunc nuw nsw i32 %2 to i8 %40 = add nuw nsw i8 %39, 14 br label %ma_channel_map_init_standard_channel_alsa.exit @@ -42277,7 +42277,7 @@ define internal fastcc zeroext range(i8 0, 46) i8 @ma_channel_map_init_standard_ br i1 %or.cond.i32, label %58, label %ma_channel_map_init_standard_channel_alsa.exit 58: ; preds = %55 - %59 = trunc nuw i32 %2 to i8 + %59 = trunc nuw nsw i32 %2 to i8 %60 = add nuw nsw i8 %59, 12 br label %ma_channel_map_init_standard_channel_alsa.exit @@ -42330,7 +42330,7 @@ define internal fastcc zeroext range(i8 0, 46) i8 @ma_channel_map_init_standard_ br i1 %or.cond.i39, label %78, label %ma_channel_map_init_standard_channel_alsa.exit 78: ; preds = %75 - %79 = trunc nuw i32 %2 to i8 + %79 = trunc nuw nsw i32 %2 to i8 %80 = add nuw nsw i8 %79, 12 br label %ma_channel_map_init_standard_channel_alsa.exit @@ -42383,7 +42383,7 @@ define internal fastcc zeroext range(i8 0, 46) i8 @ma_channel_map_init_standard_ br i1 %or.cond.i46, label %98, label %ma_channel_map_init_standard_channel_alsa.exit 98: ; preds = %95 - %99 = trunc nuw i32 %2 to i8 + %99 = trunc nuw nsw i32 %2 to i8 %100 = add nuw nsw i8 %99, 12 br label %ma_channel_map_init_standard_channel_alsa.exit @@ -42426,7 +42426,7 @@ define internal fastcc zeroext range(i8 0, 46) i8 @ma_channel_map_init_standard_ br i1 %or.cond.i53, label %114, label %ma_channel_map_init_standard_channel_alsa.exit 114: ; preds = %111 - %115 = trunc nuw i32 %2 to i8 + %115 = trunc nuw nsw i32 %2 to i8 %116 = add nuw nsw i8 %115, 14 br label %ma_channel_map_init_standard_channel_alsa.exit @@ -42479,7 +42479,7 @@ define internal fastcc zeroext range(i8 0, 46) i8 @ma_channel_map_init_standard_ br i1 %or.cond.i58, label %134, label %ma_channel_map_init_standard_channel_alsa.exit 134: ; preds = %131 - %135 = trunc nuw i32 %2 to i8 + %135 = trunc nuw nsw i32 %2 to i8 %136 = add nuw nsw i8 %135, 12 br label %ma_channel_map_init_standard_channel_alsa.exit @@ -61235,12 +61235,12 @@ drwav_read_pcm_frames_s16__ieee.exit: ; preds = %.preheader.split.us %212 = getelementptr inbounds nuw i8, ptr %0, i64 112 %213 = load i16, ptr %212, align 8 %214 = zext i16 %213 to i32 - %.lhs.trunc = trunc i32 %.0.i.i47 to i16 + %.lhs.trunc = trunc nuw i32 %.0.i.i47 to i16 %215 = udiv i16 %.lhs.trunc, %213 %216 = urem i16 %.lhs.trunc, %213 %217 = icmp samesign uge i32 %.0.i.i47, %214 %.not.i51 = icmp eq i16 %216, 0 - %or.cond131 = and i1 %217, %.not.i51 + %or.cond131 = select i1 %217, i1 %.not.i51, i1 false br i1 %or.cond131, label %.preheader.i53, label %drwav_read_pcm_frames_s16__alaw.exit .preheader.i53: ; preds = %211 @@ -61334,12 +61334,12 @@ drwav_read_pcm_frames_s16__alaw.exit: ; preds = %221, %224, %.loopex %260 = getelementptr inbounds nuw i8, ptr %0, i64 112 %261 = load i16, ptr %260, align 8 %262 = zext i16 %261 to i32 - %.lhs.trunc81 = trunc i32 %.0.i.i57 to i16 + %.lhs.trunc81 = trunc nuw i32 %.0.i.i57 to i16 %263 = udiv i16 %.lhs.trunc81, %261 %264 = urem i16 %.lhs.trunc81, %261 %265 = icmp samesign uge i32 %.0.i.i57, %262 %.not.i61 = icmp eq i16 %264, 0 - %or.cond132 = and i1 %265, %.not.i61 + %or.cond132 = select i1 %265, i1 %.not.i61, i1 false br i1 %or.cond132, label %.preheader.i63, label %drwav_read_pcm_frames_s16__mulaw.exit .preheader.i63: ; preds = %259 @@ -62127,12 +62127,12 @@ drwav_read_pcm_frames_f32__ieee.exit: ; preds = %.preheader.split.us %238 = getelementptr inbounds nuw i8, ptr %0, i64 112 %239 = load i16, ptr %238, align 8 %240 = zext i16 %239 to i32 - %.lhs.trunc = trunc i32 %.0.i.i48 to i16 + %.lhs.trunc = trunc nuw i32 %.0.i.i48 to i16 %241 = udiv i16 %.lhs.trunc, %239 %242 = urem i16 %.lhs.trunc, %239 %243 = icmp samesign uge i32 %.0.i.i48, %240 %.not.i52 = icmp eq i16 %242, 0 - %or.cond142 = and i1 %243, %.not.i52 + %or.cond142 = select i1 %243, i1 %.not.i52, i1 false br i1 %or.cond142, label %.preheader.i54, label %drwav_read_pcm_frames_f32__alaw.exit .preheader.i54: ; preds = %237 @@ -62229,12 +62229,12 @@ drwav_read_pcm_frames_f32__alaw.exit: ; preds = %247, %250, %.loopex %288 = getelementptr inbounds nuw i8, ptr %0, i64 112 %289 = load i16, ptr %288, align 8 %290 = zext i16 %289 to i32 - %.lhs.trunc87 = trunc i32 %.0.i.i62 to i16 + %.lhs.trunc87 = trunc nuw i32 %.0.i.i62 to i16 %291 = udiv i16 %.lhs.trunc87, %289 %292 = urem i16 %.lhs.trunc87, %289 %293 = icmp samesign uge i32 %.0.i.i62, %290 %.not.i66 = icmp eq i16 %292, 0 - %or.cond143 = and i1 %293, %.not.i66 + %or.cond143 = select i1 %293, i1 %.not.i66, i1 false br i1 %or.cond143, label %.preheader.i68, label %drwav_read_pcm_frames_f32__mulaw.exit .preheader.i68: ; preds = %287 @@ -63035,12 +63035,12 @@ drwav_read_pcm_frames_s32__ieee.exit: ; preds = %.preheader.split.us %233 = getelementptr inbounds nuw i8, ptr %0, i64 112 %234 = load i16, ptr %233, align 8 %235 = zext i16 %234 to i32 - %.lhs.trunc = trunc i32 %.0.i.i48 to i16 + %.lhs.trunc = trunc nuw i32 %.0.i.i48 to i16 %236 = udiv i16 %.lhs.trunc, %234 %237 = urem i16 %.lhs.trunc, %234 %238 = icmp samesign uge i32 %.0.i.i48, %235 %.not.i52 = icmp eq i16 %237, 0 - %or.cond142 = and i1 %238, %.not.i52 + %or.cond142 = select i1 %238, i1 %.not.i52, i1 false br i1 %or.cond142, label %.preheader.i54, label %drwav_read_pcm_frames_s32__alaw.exit .preheader.i54: ; preds = %232 @@ -63137,12 +63137,12 @@ drwav_read_pcm_frames_s32__alaw.exit: ; preds = %242, %245, %.loopex %283 = getelementptr inbounds nuw i8, ptr %0, i64 112 %284 = load i16, ptr %283, align 8 %285 = zext i16 %284 to i32 - %.lhs.trunc87 = trunc i32 %.0.i.i62 to i16 + %.lhs.trunc87 = trunc nuw i32 %.0.i.i62 to i16 %286 = udiv i16 %.lhs.trunc87, %284 %287 = urem i16 %.lhs.trunc87, %284 %288 = icmp samesign uge i32 %.0.i.i62, %285 %.not.i66 = icmp eq i16 %287, 0 - %or.cond143 = and i1 %288, %.not.i66 + %or.cond143 = select i1 %288, i1 %.not.i66, i1 false br i1 %or.cond143, label %.preheader.i68, label %drwav_read_pcm_frames_s32__mulaw.exit .preheader.i68: ; preds = %282 @@ -76819,7 +76819,7 @@ drmp3_bs_get_bits.exit167.i: ; preds = %._crit_edge.i156.i, %541 = sub nuw nsw i32 8, %.018.lcssa.i171.i %542 = lshr i32 %.021.lcssa.i169.i, %541 %543 = or i32 %542, %.020.lcssa.i170.i - %544 = trunc i32 %543 to i16 + %544 = trunc nuw i32 %543 to i16 br label %drmp3_bs_get_bits.exit179.i drmp3_bs_get_bits.exit179.i: ; preds = %._crit_edge.i168.i, %drmp3_bs_get_bits.exit167.i @@ -79660,7 +79660,7 @@ drmp3_bs_get_bits.exit81.i: ; preds = %._crit_edge.i70.i, %2052 = sub nuw nsw i32 8, %.018.lcssa.i.i.i %2053 = lshr i32 %.021.lcssa.i.i.i, %2052 %2054 = or i32 %2053, %.020.lcssa.i.i.i - %2055 = trunc i32 %2054 to i16 + %2055 = trunc nuw nsw i32 %2054 to i16 br label %drmp3_bs_get_bits.exit.i.i drmp3_bs_get_bits.exit.i.i: ; preds = %._crit_edge.i.i.i, %2034 @@ -110014,7 +110014,7 @@ drwav__chunk_matches.exit261.thread: ; preds = %481, %482, %.thread 567: ; preds = %564 %568 = load ptr, ptr %446, align 8 %569 = load ptr, ptr %437, align 8 - %570 = trunc i64 %.1176 to i32 + %570 = trunc nuw i64 %.1176 to i32 %571 = sub i32 %471, %570 %572 = call i32 %568(ptr noundef %569, i32 noundef %571, i32 noundef 1) #72 %.not212.not = icmp eq i32 %572, 0 diff --git a/bench/redis/optimized/rax.ll b/bench/redis/optimized/rax.ll index e9c70b464fa..d81bf9831da 100644 --- a/bench/redis/optimized/rax.ll +++ b/bench/redis/optimized/rax.ll @@ -669,7 +669,7 @@ define dso_local range(i32 0, 2) i32 @raxGenericInsert(ptr noundef %0, ptr nound %.0.lcssa.ph.i.ph = phi ptr [ %.0102.i, %._crit_edge93.i ], [ %.0102.i, %._crit_edge.i ], [ %.0.i, %40 ] %.159.ph.i.ph = phi i64 [ %.058100.i, %._crit_edge93.i ], [ %.260.lcssa.i, %._crit_edge.i ], [ %.462.i, %40 ] %.156.ph.i.ph = phi i64 [ %17, %._crit_edge93.i ], [ %.257.lcssa.i, %._crit_edge.i ], [ 0, %40 ] - %52 = trunc i64 %.156.ph.i.ph to i32 + %52 = trunc nuw nsw i64 %.156.ph.i.ph to i32 br label %.thread.i .thread.i: ; preds = %35, %.thread.loopexit.i.loopexit534, %6 @@ -1843,7 +1843,7 @@ define internal fastcc i64 @raxLowWalk(ptr noundef %0, ptr noundef readonly capt %.0.lcssa.ph.ph = phi ptr [ %.0, %74 ], [ %.0102, %._crit_edge ], [ %.0102, %._crit_edge93 ] %.159.ph.ph = phi i64 [ %.462, %74 ], [ %.260.lcssa, %._crit_edge ], [ %.058100, %._crit_edge93 ] %.156.ph.ph = phi i64 [ 0, %74 ], [ %.257.lcssa, %._crit_edge ], [ %21, %._crit_edge93 ] - %89 = trunc i64 %.156.ph.ph to i32 + %89 = trunc nuw nsw i64 %.156.ph.ph to i32 br label %.thread .thread: ; preds = %39, %.thread.loopexit.loopexit126, %7 @@ -2449,7 +2449,7 @@ define dso_local range(i32 0, 2) i32 @raxFind(ptr noundef readonly captures(none 31: ; preds = %27 %32 = add nuw nsw i64 %.591.i, 1 %exitcond.not.i = icmp eq i64 %32, %13 - br i1 %exitcond.not.i, label %.thread.loopexit.i, label %27, !llvm.loop !21 + br i1 %exitcond.not.i, label %.thread.i, label %27, !llvm.loop !21 ._crit_edge93.i: ; preds = %27 %33 = icmp eq i64 %.591.i, %13 @@ -2476,20 +2476,19 @@ define dso_local range(i32 0, 2) i32 @raxFind(ptr noundef readonly captures(none %46 = select i1 %44, i1 %45, i1 false br i1 %46, label %.lr.ph104.i, label %.thread.loopexit.i -.thread.loopexit.i: ; preds = %36, %._crit_edge93.i, %._crit_edge.i, %31 - %47 = phi i32 [ %9, %31 ], [ %43, %36 ], [ %9, %._crit_edge.i ], [ %9, %._crit_edge93.i ] - %.0.lcssa.ph.i = phi ptr [ %.0102.i, %31 ], [ %.0.i, %36 ], [ %.0102.i, %._crit_edge.i ], [ %.0102.i, %._crit_edge93.i ] - %.159.ph.i = phi i64 [ %.058100.i, %31 ], [ %.462.i, %36 ], [ %.260.lcssa.i, %._crit_edge.i ], [ %.058100.i, %._crit_edge93.i ] - %.156.ph.i = phi i64 [ %13, %31 ], [ 0, %36 ], [ %.257.lcssa.i, %._crit_edge.i ], [ %13, %._crit_edge93.i ] - %48 = and i64 %.156.ph.i, 4294967295 - %49 = icmp ne i64 %48, 0 +.thread.loopexit.i: ; preds = %._crit_edge.i, %._crit_edge93.i, %36 + %47 = phi i32 [ %9, %._crit_edge93.i ], [ %9, %._crit_edge.i ], [ %43, %36 ] + %.0.lcssa.ph.i = phi ptr [ %.0102.i, %._crit_edge93.i ], [ %.0102.i, %._crit_edge.i ], [ %.0.i, %36 ] + %.159.ph.i = phi i64 [ %.058100.i, %._crit_edge93.i ], [ %.260.lcssa.i, %._crit_edge.i ], [ %.462.i, %36 ] + %.156.ph.i = phi i64 [ %13, %._crit_edge93.i ], [ %.257.lcssa.i, %._crit_edge.i ], [ 0, %36 ] + %48 = icmp ne i64 %.156.ph.i, 0 br label %.thread.i -.thread.i: ; preds = %.thread.loopexit.i, %4 - %50 = phi i32 [ %5, %4 ], [ %47, %.thread.loopexit.i ] - %.0.lcssa.i = phi ptr [ %.099.i, %4 ], [ %.0.lcssa.ph.i, %.thread.loopexit.i ] - %.159.i = phi i64 [ 0, %4 ], [ %.159.ph.i, %.thread.loopexit.i ] - %.156.i = phi i1 [ false, %4 ], [ %49, %.thread.loopexit.i ] +.thread.i: ; preds = %31, %.thread.loopexit.i, %4 + %50 = phi i32 [ %5, %4 ], [ %47, %.thread.loopexit.i ], [ %9, %31 ] + %.0.lcssa.i = phi ptr [ %.099.i, %4 ], [ %.0.lcssa.ph.i, %.thread.loopexit.i ], [ %.0102.i, %31 ] + %.159.i = phi i64 [ 0, %4 ], [ %.159.ph.i, %.thread.loopexit.i ], [ %.058100.i, %31 ] + %.156.i = phi i1 [ false, %4 ], [ %48, %.thread.loopexit.i ], [ true, %31 ] %51 = and i32 %50, 4 %.not74.i.not = icmp eq i32 %51, 0 %.not = icmp eq i64 %.159.i, %2 diff --git a/bench/regex-rs/optimized/33whcn8n29l9c6ys.ll b/bench/regex-rs/optimized/33whcn8n29l9c6ys.ll index 56cc8304ce2..3ebc86ae8f5 100644 --- a/bench/regex-rs/optimized/33whcn8n29l9c6ys.ll +++ b/bench/regex-rs/optimized/33whcn8n29l9c6ys.ll @@ -924,8 +924,8 @@ define noundef zeroext i1 @_ZN14regex_automata3dfa7onepass6Config14get_match_kin %2 = getelementptr inbounds nuw i8, ptr %0, i64 16 %3 = load i8, ptr %2, align 8, !range !128, !noundef !4 %4 = icmp eq i8 %3, 2 - %5 = trunc i8 %3 to i1 - %.0 = or i1 %4, %5 + %5 = trunc nuw i8 %3 to i1 + %.0 = select i1 %4, i1 true, i1 %5 ret i1 %.0 } @@ -942,8 +942,8 @@ define noundef zeroext i1 @_ZN14regex_automata3dfa7onepass6Config16get_byte_clas %2 = getelementptr inbounds nuw i8, ptr %0, i64 18 %3 = load i8, ptr %2, align 2, !range !128, !noundef !4 %4 = icmp eq i8 %3, 2 - %5 = trunc i8 %3 to i1 - %.0 = or i1 %4, %5 + %5 = trunc nuw i8 %3 to i1 + %.0 = select i1 %4, i1 true, i1 %5 ret i1 %.0 } @@ -1221,8 +1221,8 @@ define hidden void @_ZN14regex_automata3dfa7onepass15InternalBuilder3new17h00089 %17 = getelementptr inbounds nuw i8, ptr %1, i64 18 %18 = load i8, ptr %17, align 2, !range !128, !alias.scope !184, !noundef !4 %19 = icmp eq i8 %18, 2 - %20 = trunc i8 %18 to i1 - %.0.i = or i1 %19, %20 + %20 = trunc nuw i8 %18 to i1 + %.0.i = select i1 %19, i1 true, i1 %20 br i1 %.0.i, label %26, label %21 21: ; preds = %3 @@ -3410,8 +3410,8 @@ _ZN14regex_automata3dfa7onepass3DFA5start17hcf8e0b3f693934e3E.exit81.i: ; preds %81 = getelementptr inbounds nuw i8, ptr %1, i64 16 %82 = load i8, ptr %81, align 8, !range !128, !alias.scope !474, !noalias !432, !noundef !4 %83 = icmp eq i8 %82, 2 - %84 = trunc i8 %82 to i1 - %.0.i82.i = or i1 %83, %84 + %84 = trunc nuw i8 %82 to i1 + %.0.i82.i = select i1 %83, i1 true, i1 %84 %85 = getelementptr inbounds nuw i8, ptr %3, i64 16 %86 = load i64, ptr %85, align 8, !alias.scope !426, !noalias !430, !noundef !4 %87 = getelementptr inbounds nuw i8, ptr %3, i64 8 @@ -6531,7 +6531,6 @@ select.unfold24: ; preds = %98, %94, %96 147: ; preds = %148, %.thread39 %.sroa.7.sroa.0.2.i = phi i64 [ %.sroa.425.1.insert.ext.i, %148 ], [ %.sroa.422.4.insert.shift.i, %.thread39 ] - %.sroa.0.2.i = phi i64 [ 1, %148 ], [ 0, %.thread39 ] call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6), !noalias !848 br label %_ZN14regex_automata4util4utf86decode17hd69cc87f474d359bE.exit @@ -6545,14 +6544,11 @@ select.unfold24: ; preds = %98, %94, %96 _ZN14regex_automata4util4utf86decode17hd69cc87f474d359bE.exit: ; preds = %101, %103, %147, %149 %.sroa.7.sroa.0.0.i = phi i64 [ %.sroa.7.sroa.0.2.i, %147 ], [ %.sroa.418.1.insert.ext.i, %149 ], [ %.sroa.420.4.insert.shift.i, %103 ], [ %.sroa.4.1.insert.ext.i, %101 ] - %.sroa.0.0.i = phi i64 [ %.sroa.0.2.i, %147 ], [ 1, %149 ], [ 0, %103 ], [ 1, %101 ] - %trunc.i = trunc i64 %.sroa.0.0.i to i1 - br i1 %trunc.i, label %_ZN14regex_automata4util4look12is_word_char3fwd17h9b311c8ef074a7d9E.exit, label %150 + %.sroa.0.0.i = phi i1 [ %trunc.i18, %147 ], [ true, %149 ], [ false, %103 ], [ true, %101 ] + br i1 %.sroa.0.0.i, label %_ZN14regex_automata4util4look12is_word_char3fwd17h9b311c8ef074a7d9E.exit, label %150 150: ; preds = %_ZN14regex_automata4util4utf86decode17hd69cc87f474d359bE.exit - %.sroa.7.0.insert.ext.i = shl nuw nsw i64 %.sroa.7.sroa.0.0.i, 8 - %.sroa.0.0.insert.insert.i = add nuw nsw i64 %.sroa.7.0.insert.ext.i, %.sroa.0.0.i - %.sroa.510.0.extract.shift.i = lshr i64 %.sroa.0.0.insert.insert.i, 32 + %.sroa.510.0.extract.shift.i = lshr i64 %.sroa.7.sroa.0.0.i, 24 %.sroa.510.0.extract.trunc.i = trunc nuw nsw i64 %.sroa.510.0.extract.shift.i to i32 %151 = tail call noundef i8 @_ZN12regex_syntax21try_is_word_character17he6593f9dbf0a5fb1E(i32 noundef %.sroa.510.0.extract.trunc.i), !range !128 call void @llvm.lifetime.start.p0(i64 0, ptr nonnull %4) diff --git a/bench/regex-rs/optimized/3bb5ih3626n2er1d.ll b/bench/regex-rs/optimized/3bb5ih3626n2er1d.ll index bb73ffea2ba..c196fb6e233 100644 --- a/bench/regex-rs/optimized/3bb5ih3626n2er1d.ll +++ b/bench/regex-rs/optimized/3bb5ih3626n2er1d.ll @@ -4622,8 +4622,8 @@ define noundef zeroext i1 @_ZN14regex_automata4meta5regex6Config14get_match_kind %2 = getelementptr inbounds nuw i8, ptr %0, i64 106 %3 = load i8, ptr %2, align 2, !range !295, !noundef !20 %4 = icmp eq i8 %3, 2 - %5 = trunc i8 %3 to i1 - %.0 = or i1 %4, %5 + %5 = trunc nuw i8 %3 to i1 + %.0 = select i1 %4, i1 true, i1 %5 ret i1 %.0 } @@ -4632,8 +4632,8 @@ define noundef zeroext i1 @_ZN14regex_automata4meta5regex6Config14get_utf8_empty %2 = getelementptr inbounds nuw i8, ptr %0, i64 107 %3 = load i8, ptr %2, align 1, !range !295, !noundef !20 %4 = icmp eq i8 %3, 2 - %5 = trunc i8 %3 to i1 - %.0 = or i1 %4, %5 + %5 = trunc nuw i8 %3 to i1 + %.0 = select i1 %4, i1 true, i1 %5 ret i1 %.0 } @@ -4642,8 +4642,8 @@ define noundef zeroext i1 @_ZN14regex_automata4meta5regex6Config18get_auto_prefi %2 = getelementptr inbounds nuw i8, ptr %0, i64 108 %3 = load i8, ptr %2, align 4, !range !295, !noundef !20 %4 = icmp eq i8 %3, 2 - %5 = trunc i8 %3 to i1 - %.0 = or i1 %4, %5 + %5 = trunc nuw i8 %3 to i1 + %.0 = select i1 %4, i1 true, i1 %5 ret i1 %.0 } @@ -4741,8 +4741,8 @@ define noundef zeroext i1 @_ZN14regex_automata4meta5regex6Config16get_byte_class %2 = getelementptr inbounds nuw i8, ptr %0, i64 113 %3 = load i8, ptr %2, align 1, !range !295, !noundef !20 %4 = icmp eq i8 %3, 2 - %5 = trunc i8 %3 to i1 - %.0 = or i1 %4, %5 + %5 = trunc nuw i8 %3 to i1 + %.0 = select i1 %4, i1 true, i1 %5 ret i1 %.0 } @@ -4762,8 +4762,8 @@ define noundef zeroext i1 @_ZN14regex_automata4meta5regex6Config10get_hybrid17h7 %2 = getelementptr inbounds nuw i8, ptr %0, i64 109 %3 = load i8, ptr %2, align 1, !range !295, !noundef !20 %4 = icmp eq i8 %3, 2 - %5 = trunc i8 %3 to i1 - %.0 = or i1 %4, %5 + %5 = trunc nuw i8 %3 to i1 + %.0 = select i1 %4, i1 true, i1 %5 ret i1 %.0 } @@ -4777,8 +4777,8 @@ define noundef zeroext i1 @_ZN14regex_automata4meta5regex6Config11get_onepass17h %2 = getelementptr inbounds nuw i8, ptr %0, i64 111 %3 = load i8, ptr %2, align 1, !range !295, !noundef !20 %4 = icmp eq i8 %3, 2 - %5 = trunc i8 %3 to i1 - %.0 = or i1 %4, %5 + %5 = trunc nuw i8 %3 to i1 + %.0 = select i1 %4, i1 true, i1 %5 ret i1 %.0 } @@ -4787,8 +4787,8 @@ define noundef zeroext i1 @_ZN14regex_automata4meta5regex6Config13get_backtrack1 %2 = getelementptr inbounds nuw i8, ptr %0, i64 112 %3 = load i8, ptr %2, align 8, !range !295, !noundef !20 %4 = icmp eq i8 %3, 2 - %5 = trunc i8 %3 to i1 - %.0 = or i1 %4, %5 + %5 = trunc nuw i8 %3 to i1 + %.0 = select i1 %4, i1 true, i1 %5 ret i1 %.0 } @@ -9893,7 +9893,7 @@ _ZN14regex_automata4util4utf86decode17hd69cc87f474d359bE.exit.thread: ; preds = %.sroa.0.0.insert.insert.i = add nuw nsw i64 %.sroa.7.0.insert.ext.i, %.sroa.0.2.i.sink %.sroa.683.0.extract.shift = lshr i64 %.sroa.0.0.insert.insert.i, 32 %.sroa.683.0.extract.trunc = trunc nuw nsw i64 %.sroa.683.0.extract.shift to i32 - %trunc = trunc i64 %.sroa.0.2.i.sink to i1 + %trunc = trunc nuw i64 %.sroa.0.2.i.sink to i1 br i1 %trunc, label %119, label %117 ._crit_edge: ; preds = %.backedge, %25 @@ -10434,7 +10434,6 @@ select.unfold24: ; preds = %98, %94, %96 147: ; preds = %148, %.thread39 %.sroa.7.sroa.0.2.i = phi i64 [ %.sroa.425.1.insert.ext.i, %148 ], [ %.sroa.422.4.insert.shift.i, %.thread39 ] - %.sroa.0.2.i = phi i64 [ 1, %148 ], [ 0, %.thread39 ] call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6), !noalias !1754 br label %_ZN14regex_automata4util4utf86decode17hd69cc87f474d359bE.exit @@ -10448,14 +10447,11 @@ select.unfold24: ; preds = %98, %94, %96 _ZN14regex_automata4util4utf86decode17hd69cc87f474d359bE.exit: ; preds = %101, %103, %147, %149 %.sroa.7.sroa.0.0.i = phi i64 [ %.sroa.7.sroa.0.2.i, %147 ], [ %.sroa.418.1.insert.ext.i, %149 ], [ %.sroa.420.4.insert.shift.i, %103 ], [ %.sroa.4.1.insert.ext.i, %101 ] - %.sroa.0.0.i = phi i64 [ %.sroa.0.2.i, %147 ], [ 1, %149 ], [ 0, %103 ], [ 1, %101 ] - %trunc.i = trunc i64 %.sroa.0.0.i to i1 - br i1 %trunc.i, label %_ZN14regex_automata4util4look12is_word_char3fwd17h9b311c8ef074a7d9E.exit, label %150 + %.sroa.0.0.i = phi i1 [ %trunc.i18, %147 ], [ true, %149 ], [ false, %103 ], [ true, %101 ] + br i1 %.sroa.0.0.i, label %_ZN14regex_automata4util4look12is_word_char3fwd17h9b311c8ef074a7d9E.exit, label %150 150: ; preds = %_ZN14regex_automata4util4utf86decode17hd69cc87f474d359bE.exit - %.sroa.7.0.insert.ext.i = shl nuw nsw i64 %.sroa.7.sroa.0.0.i, 8 - %.sroa.0.0.insert.insert.i = add nuw nsw i64 %.sroa.7.0.insert.ext.i, %.sroa.0.0.i - %.sroa.510.0.extract.shift.i = lshr i64 %.sroa.0.0.insert.insert.i, 32 + %.sroa.510.0.extract.shift.i = lshr i64 %.sroa.7.sroa.0.0.i, 24 %.sroa.510.0.extract.trunc.i = trunc nuw nsw i64 %.sroa.510.0.extract.shift.i to i32 %151 = tail call noundef i8 @_ZN12regex_syntax21try_is_word_character17he6593f9dbf0a5fb1E(i32 noundef %.sroa.510.0.extract.trunc.i), !range !295 call void @llvm.lifetime.start.p0(i64 0, ptr nonnull %4) @@ -11065,7 +11061,7 @@ _ZN14regex_automata4util4utf811decode_last17h4128c193d6e9ba16E.exit: ; preds = % "_ZN4core6result19Result$LT$T$C$E$GT$6expect17h9bfcd5dff3958f8cE.exit": ; preds = %_ZN14regex_automata4util4utf811decode_last17h4128c193d6e9ba16E.exit call void @llvm.lifetime.end.p0(i64 0, ptr nonnull %4) - %86 = trunc i8 %83 to i1 + %86 = trunc nuw i8 %83 to i1 br label %_ZN14regex_automata4util4utf811decode_last17h4128c193d6e9ba16E.exit.thread _ZN14regex_automata4util4utf811decode_last17h4128c193d6e9ba16E.exit.thread: ; preds = %29, %35, %select.unfold, %_ZN14regex_automata4util4utf86decode17hd69cc87f474d359bE.exit.i.thread, %._crit_edge.thread, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h364e2176bd393ad4E.llvm.15183607879373971598.exit", %"_ZN4core6result19Result$LT$T$C$E$GT$6expect17h9bfcd5dff3958f8cE.exit" @@ -11190,7 +11186,6 @@ select.unfold24: ; preds = %99, %95, %97 148: ; preds = %149, %.thread39 %.sroa.7.sroa.0.2.i = phi i64 [ %.sroa.425.1.insert.ext.i, %149 ], [ %.sroa.422.4.insert.shift.i, %.thread39 ] - %.sroa.0.2.i = phi i64 [ 1, %149 ], [ 0, %.thread39 ] call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6), !noalias !1796 br label %_ZN14regex_automata4util4utf86decode17hd69cc87f474d359bE.exit @@ -11204,14 +11199,11 @@ select.unfold24: ; preds = %99, %95, %97 _ZN14regex_automata4util4utf86decode17hd69cc87f474d359bE.exit: ; preds = %102, %104, %148, %150 %.sroa.7.sroa.0.0.i = phi i64 [ %.sroa.7.sroa.0.2.i, %148 ], [ %.sroa.418.1.insert.ext.i, %150 ], [ %.sroa.420.4.insert.shift.i, %104 ], [ %.sroa.4.1.insert.ext.i, %102 ] - %.sroa.0.0.i = phi i64 [ %.sroa.0.2.i, %148 ], [ 1, %150 ], [ 0, %104 ], [ 1, %102 ] - %trunc.i = trunc i64 %.sroa.0.0.i to i1 - br i1 %trunc.i, label %_ZN14regex_automata4util4look12is_word_char3fwd17h9b311c8ef074a7d9E.exit, label %151 + %.sroa.0.0.i = phi i1 [ %trunc.i20, %148 ], [ true, %150 ], [ false, %104 ], [ true, %102 ] + br i1 %.sroa.0.0.i, label %_ZN14regex_automata4util4look12is_word_char3fwd17h9b311c8ef074a7d9E.exit, label %151 151: ; preds = %_ZN14regex_automata4util4utf86decode17hd69cc87f474d359bE.exit - %.sroa.7.0.insert.ext.i = shl nuw nsw i64 %.sroa.7.sroa.0.0.i, 8 - %.sroa.0.0.insert.insert.i = add nuw nsw i64 %.sroa.7.0.insert.ext.i, %.sroa.0.0.i - %.sroa.510.0.extract.shift.i = lshr i64 %.sroa.0.0.insert.insert.i, 32 + %.sroa.510.0.extract.shift.i = lshr i64 %.sroa.7.sroa.0.0.i, 24 %.sroa.510.0.extract.trunc.i = trunc nuw nsw i64 %.sroa.510.0.extract.shift.i to i32 %152 = tail call noundef i8 @_ZN12regex_syntax21try_is_word_character17he6593f9dbf0a5fb1E(i32 noundef %.sroa.510.0.extract.trunc.i), !range !295 call void @llvm.lifetime.start.p0(i64 0, ptr nonnull %4) @@ -11415,7 +11407,7 @@ _ZN14regex_automata4util4utf811decode_last17h4128c193d6e9ba16E.exit: ; preds = % "_ZN4core6result19Result$LT$T$C$E$GT$6expect17h9bfcd5dff3958f8cE.exit": ; preds = %_ZN14regex_automata4util4utf811decode_last17h4128c193d6e9ba16E.exit call void @llvm.lifetime.end.p0(i64 0, ptr nonnull %4) - %86 = trunc i8 %83 to i1 + %86 = trunc nuw i8 %83 to i1 br label %_ZN14regex_automata4util4utf811decode_last17h4128c193d6e9ba16E.exit.thread _ZN14regex_automata4util4utf811decode_last17h4128c193d6e9ba16E.exit.thread: ; preds = %29, %35, %select.unfold, %_ZN14regex_automata4util4utf86decode17hd69cc87f474d359bE.exit.i.thread, %._crit_edge.thread, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h364e2176bd393ad4E.llvm.15183607879373971598.exit", %"_ZN4core6result19Result$LT$T$C$E$GT$6expect17h9bfcd5dff3958f8cE.exit" @@ -11540,7 +11532,6 @@ select.unfold24: ; preds = %99, %95, %97 148: ; preds = %149, %.thread39 %.sroa.7.sroa.0.2.i = phi i64 [ %.sroa.425.1.insert.ext.i, %149 ], [ %.sroa.422.4.insert.shift.i, %.thread39 ] - %.sroa.0.2.i = phi i64 [ 1, %149 ], [ 0, %.thread39 ] call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6), !noalias !1815 br label %_ZN14regex_automata4util4utf86decode17hd69cc87f474d359bE.exit @@ -11554,14 +11545,11 @@ select.unfold24: ; preds = %99, %95, %97 _ZN14regex_automata4util4utf86decode17hd69cc87f474d359bE.exit: ; preds = %102, %104, %148, %150 %.sroa.7.sroa.0.0.i = phi i64 [ %.sroa.7.sroa.0.2.i, %148 ], [ %.sroa.418.1.insert.ext.i, %150 ], [ %.sroa.420.4.insert.shift.i, %104 ], [ %.sroa.4.1.insert.ext.i, %102 ] - %.sroa.0.0.i = phi i64 [ %.sroa.0.2.i, %148 ], [ 1, %150 ], [ 0, %104 ], [ 1, %102 ] - %trunc.i = trunc i64 %.sroa.0.0.i to i1 - br i1 %trunc.i, label %_ZN14regex_automata4util4look12is_word_char3fwd17h9b311c8ef074a7d9E.exit, label %151 + %.sroa.0.0.i = phi i1 [ %trunc.i20, %148 ], [ true, %150 ], [ false, %104 ], [ true, %102 ] + br i1 %.sroa.0.0.i, label %_ZN14regex_automata4util4look12is_word_char3fwd17h9b311c8ef074a7d9E.exit, label %151 151: ; preds = %_ZN14regex_automata4util4utf86decode17hd69cc87f474d359bE.exit - %.sroa.7.0.insert.ext.i = shl nuw nsw i64 %.sroa.7.sroa.0.0.i, 8 - %.sroa.0.0.insert.insert.i = add nuw nsw i64 %.sroa.7.0.insert.ext.i, %.sroa.0.0.i - %.sroa.510.0.extract.shift.i = lshr i64 %.sroa.0.0.insert.insert.i, 32 + %.sroa.510.0.extract.shift.i = lshr i64 %.sroa.7.sroa.0.0.i, 24 %.sroa.510.0.extract.trunc.i = trunc nuw nsw i64 %.sroa.510.0.extract.shift.i to i32 %152 = tail call noundef i8 @_ZN12regex_syntax21try_is_word_character17he6593f9dbf0a5fb1E(i32 noundef %.sroa.510.0.extract.trunc.i), !range !295 call void @llvm.lifetime.start.p0(i64 0, ptr nonnull %4) diff --git a/bench/ruby/optimized/ractor.ll b/bench/ruby/optimized/ractor.ll index 7be2dc46af0..1f0f18b0f65 100644 --- a/bench/ruby/optimized/ractor.ll +++ b/bench/ruby/optimized/ractor.ll @@ -1077,15 +1077,14 @@ rb_array_len.exit.i: ; preds = %10, %7 unreachable RARRAY_LENINT.exit: ; preds = %rb_array_len.exit.i - %15 = trunc i64 %.0.i.i to i32 - %16 = icmp sgt i32 %15, 0 - br i1 %16, label %.lr.ph, label %._crit_edge + %15 = icmp sgt i64 %.0.i.i, 0 + br i1 %15, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %RARRAY_LENINT.exit %17 = getelementptr inbounds nuw i8, ptr %4, i64 16 %18 = getelementptr inbounds nuw i8, ptr %4, i64 32 %19 = getelementptr i8, ptr %0, i64 48 - %wide.trip.count = and i64 %.0.i.i, 2147483647 + %wide.trip.count = and i64 %.0.i.i, 4294967295 br label %20 ._crit_edge: ; preds = %RARRAY_AREF.exit, %RARRAY_LENINT.exit @@ -4197,7 +4196,7 @@ rb_array_len.exit.i.thread: ; preds = %7 unreachable 23: ; preds = %rb_array_len.exit.i - %24 = trunc i64 %16 to i32 + %24 = trunc nsw i64 %16 to i32 %25 = getelementptr inbounds nuw i8, ptr %12, i64 32 %26 = load ptr, ptr %25, align 8, !tbaa !100 br label %rb_array_const_ptr.exit diff --git a/bench/ruby/optimized/raddrinfo.ll b/bench/ruby/optimized/raddrinfo.ll index 627afdd921b..cba85c870ba 100644 --- a/bench/ruby/optimized/raddrinfo.ll +++ b/bench/ruby/optimized/raddrinfo.ll @@ -1834,7 +1834,7 @@ RSTRING_PTR.exit: ; preds = %6, %10 unreachable RSTRING_LENINT.exit: ; preds = %17 - %19 = trunc nuw i64 %4 to i32 + %19 = trunc nuw nsw i64 %4 to i32 %20 = add nuw i32 %19, 2 br label %21 @@ -3491,8 +3491,8 @@ RSTRING_PTR.exit41: ; preds = %175, %182 unreachable RSTRING_LENINT.exit: ; preds = %RSTRING_PTR.exit41 - %187 = trunc i64 %184 to i32 - %188 = icmp ugt i32 %187, 2048 + %187 = trunc nsw i64 %184 to i32 + %188 = icmp ugt i64 %184, 2048 br i1 %188, label %189, label %191 189: ; preds = %RSTRING_LENINT.exit @@ -3501,13 +3501,12 @@ RSTRING_LENINT.exit: ; preds = %RSTRING_PTR.exit41 unreachable 191: ; preds = %RSTRING_LENINT.exit - %.not.i.i43 = icmp eq i32 %187, 0 + %.not.i.i43 = icmp eq i64 %184, 0 br i1 %.not.i.i43, label %init_addrinfo.exit, label %192 192: ; preds = %191 - %193 = and i64 %184, 4095 - %194 = getelementptr inbounds nuw i8, ptr %19, i64 32 - %195 = call ptr @__memcpy_chk(ptr noundef nonnull %194, ptr noundef nonnull readonly %.sroa.2.0.i40, i64 noundef range(i64 1, 0) %193, i64 noundef 2048) #21, !alias.scope !178 + %193 = getelementptr inbounds nuw i8, ptr %19, i64 32 + %194 = call ptr @__memcpy_chk(ptr noundef nonnull %193, ptr noundef nonnull readonly %.sroa.2.0.i40, i64 noundef range(i64 1, 0) %184, i64 noundef 2048) #21, !alias.scope !178 br label %init_addrinfo.exit init_addrinfo.exit: ; preds = %191, %192 @@ -6205,7 +6204,7 @@ RSTRING_PTR.exit.i: ; preds = %20, %22 br i1 %25, label %rsock_unix_sockaddr_len.exit, label %init_addrinfo.exit rsock_unix_sockaddr_len.exit: ; preds = %RSTRING_PTR.exit.i - %26 = trunc nuw i64 %10 to i32 + %26 = trunc nuw nsw i64 %10 to i32 %27 = add nuw nsw i32 %26, 2 br label %init_addrinfo.exit diff --git a/bench/rust-analyzer-rs/optimized/2deyu58ajds9ccnn.ll b/bench/rust-analyzer-rs/optimized/2deyu58ajds9ccnn.ll index f4bbc3ba0a0..f24e48f93b8 100644 --- a/bench/rust-analyzer-rs/optimized/2deyu58ajds9ccnn.ll +++ b/bench/rust-analyzer-rs/optimized/2deyu58ajds9ccnn.ll @@ -1547,8 +1547,9 @@ _ZN5rowan6cursor11SyntaxToken4text17h91f241cb81989acaE.llvm.13962917913251662315 %18 = load i8, ptr %17, align 1, !range !375, !noalias !408, !noundef !19 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2), !noalias !408 %19 = icmp ne i8 %18, 2 - %20 = trunc i8 %18 to i1 - %.0 = xor i1 %19, %20 + %20 = trunc nuw i8 %18 to i1 + %.0 = xor i1 %20, true + %.0 = select i1 %19, i1 %21, i1 false ret i1 %.0 } diff --git a/bench/rust-analyzer-rs/optimized/ii5fl5y94ca5wd9.ll b/bench/rust-analyzer-rs/optimized/ii5fl5y94ca5wd9.ll index 7b9b7a1c7cc..36bcaef54cc 100644 --- a/bench/rust-analyzer-rs/optimized/ii5fl5y94ca5wd9.ll +++ b/bench/rust-analyzer-rs/optimized/ii5fl5y94ca5wd9.ll @@ -28369,8 +28369,8 @@ common.resume: ; preds = %.body, %86, %52 54: ; preds = %42 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) %55 = icmp eq i8 %46, 2 - %56 = trunc i8 %46 to i1 - %.0 = or i1 %55, %56 + %56 = trunc nuw i8 %46 to i1 + %.0 = select i1 %55, i1 true, i1 %56 br i1 %.0, label %58, label %57 57: ; preds = %54 @@ -35670,8 +35670,8 @@ define internal fastcc noundef zeroext i1 @"_ZN62_$LT$hir_def..hir..Literal$u20$ i8 7, label %63 ] -"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h6af37a01786a8d3aE.exit": ; preds = %89, %34, %29, %23, %18, %12, %7, %87, %77, %63, %57, %51, %2, %96, %85, %75, %46, %40 - %.0 = phi i1 [ %99, %96 ], [ %86, %85 ], [ %76, %75 ], [ %.not10, %46 ], [ %45, %40 ], [ false, %2 ], [ false, %51 ], [ false, %57 ], [ false, %63 ], [ %78, %77 ], [ %88, %87 ], [ %17, %12 ], [ false, %7 ], [ %28, %23 ], [ false, %18 ], [ %39, %34 ], [ false, %29 ], [ %.mux, %89 ] +"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h6af37a01786a8d3aE.exit": ; preds = %97, %34, %29, %23, %18, %12, %7, %87, %77, %63, %57, %51, %2, %95, %85, %75, %46, %40 + %.0 = phi i1 [ %96, %95 ], [ %86, %85 ], [ %76, %75 ], [ %.not10, %46 ], [ %45, %40 ], [ false, %2 ], [ false, %51 ], [ false, %57 ], [ false, %63 ], [ %78, %77 ], [ %88, %87 ], [ %17, %12 ], [ false, %7 ], [ %28, %23 ], [ false, %18 ], [ %39, %34 ], [ false, %29 ], [ %.not20, %97 ] ret i1 %.0 default.unreachable20: ; preds = %6 @@ -35806,15 +35806,14 @@ default.unreachable20: ; preds = %6 %92 = icmp eq i8 %91, 2 %93 = getelementptr inbounds nuw i8, ptr %1, i64 1 %94 = load i8, ptr %93, align 1, !range !730, !noundef !4 - %95 = icmp eq i8 %94, 2 - %brmerge = or i1 %92, %95 - %.mux = and i1 %92, %95 - br i1 %brmerge, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h6af37a01786a8d3aE.exit", label %96 - -96: ; preds = %89 - %97 = xor i8 %94, %91 - %98 = trunc i8 %97 to i1 - %99 = xor i1 %98, true + br i1 %92, label %95, label %97 + +95:; preds = %89 + %96 = icmp eq i8 %94, 2 + br label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h6af37a01786a8d3aE.exit" + +97:; preds = %89 + %.not20 = icmp eq i8 %91, %94 br label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h6af37a01786a8d3aE.exit" } @@ -41440,7 +41439,7 @@ _ZN7hir_def8ModuleId7def_map17h12ba535c1628be3bE.exit110.i: ; preds = %265 br i1 %289, label %291, label %335 291: ; preds = %290 - %trunc66.i = trunc i8 %284 to i1 + %trunc66.i = trunc nuw i8 %284 to i1 br i1 %trunc66.i, label %.thread188.i, label %292 292: ; preds = %291 diff --git a/bench/spdlog/optimized/bundled_fmtlib_format.ll b/bench/spdlog/optimized/bundled_fmtlib_format.ll index 32fbdf5cd53..4898626cc06 100644 --- a/bench/spdlog/optimized/bundled_fmtlib_format.ll +++ b/bench/spdlog/optimized/bundled_fmtlib_format.ll @@ -3153,7 +3153,7 @@ _ZN3fmt3v116detail10to_pointerIcEEPT_NS0_14basic_appenderIS3_EEm.exit.i.i: ; pre br label %_ZN3fmt3v116detail14format_handlerIcE20on_replacement_fieldEiPKc.exit40 151: ; preds = %._crit_edge.i.i.i - %152 = trunc nuw i32 %.018.lcssa.i.i.i to i8 + %152 = trunc nuw nsw i32 %.018.lcssa.i.i.i to i8 %153 = or disjoint i8 %152, 48 %154 = add i32 %.0.lcssa.i.i.i, -1 %155 = zext i32 %154 to i64 @@ -3250,7 +3250,7 @@ _ZN3fmt3v116detail10to_pointerIcEEPT_NS0_14basic_appenderIS3_EEm.exit.i.i48: ; p br label %_ZN3fmt3v116detail14format_handlerIcE20on_replacement_fieldEiPKc.exit40 206: ; preds = %._crit_edge.i.i.i50 - %207 = trunc nuw i64 %.018.lcssa.i.i.i51 to i8 + %207 = trunc nuw nsw i64 %.018.lcssa.i.i.i51 to i8 %208 = or disjoint i8 %207, 48 %209 = add i32 %.0.lcssa.i.i.i52, -1 %210 = zext i32 %209 to i64 @@ -3670,7 +3670,7 @@ _ZN3fmt3v116detail10to_pointerIcEEPT_NS0_14basic_appenderIS3_EEm.exit.i.i88: ; p br label %.thread226 373: ; preds = %._crit_edge.i.i.i90 - %374 = trunc nuw i32 %.018.lcssa.i.i.i91 to i8 + %374 = trunc nuw nsw i32 %.018.lcssa.i.i.i91 to i8 %375 = or disjoint i8 %374, 48 %376 = add i32 %.0.lcssa.i.i.i92, -1 %377 = zext i32 %376 to i64 @@ -3767,7 +3767,7 @@ _ZN3fmt3v116detail10to_pointerIcEEPT_NS0_14basic_appenderIS3_EEm.exit.i.i106: ; br label %.thread226 428: ; preds = %._crit_edge.i.i.i108 - %429 = trunc nuw i64 %.018.lcssa.i.i.i109 to i8 + %429 = trunc nuw nsw i64 %.018.lcssa.i.i.i109 to i8 %430 = or disjoint i8 %429, 48 %431 = add i32 %.0.lcssa.i.i.i110, -1 %432 = zext i32 %431 to i64 @@ -9932,7 +9932,7 @@ _ZN3fmt3v116detail10to_pointerIcEEPT_NS0_14basic_appenderIS3_EEm.exit: ; preds = br label %_ZN3fmt3v116detail17do_format_decimalIcmEEPT_S4_T0_i.exit 39: ; preds = %._crit_edge.i - %40 = trunc nuw i64 %.018.lcssa.i to i8 + %40 = trunc nuw nsw i64 %.018.lcssa.i to i8 %41 = or disjoint i8 %40, 48 %42 = add i32 %.0.lcssa.i, -1 %43 = zext i32 %42 to i64 @@ -9977,7 +9977,7 @@ _ZN3fmt3v116detail10to_pointerIcEEPT_NS0_14basic_appenderIS3_EEm.exit.thread: ; br label %_ZN3fmt3v116detail17do_format_decimalIcmEEPT_S4_T0_i.exit20 63: ; preds = %._crit_edge.i13 - %64 = trunc nuw i64 %.018.lcssa.i14 to i8 + %64 = trunc nuw nsw i64 %.018.lcssa.i14 to i8 %65 = or disjoint i8 %64, 48 %66 = add i32 %.0.lcssa.i15, -1 %67 = zext i32 %66 to i64 @@ -10604,7 +10604,7 @@ _ZN3fmt3v1114basic_appenderIcEaSEc.exit35: ; preds = %31, %38 br label %78 44: ; preds = %2, %2, %2 - %45 = trunc i32 %4 to i8 + %45 = trunc nuw nsw i32 %4 to i8 %46 = getelementptr inbounds nuw i8, ptr %0, i64 8 %47 = load i64, ptr %46, align 8, !tbaa !9 %48 = add i64 %47, 1 @@ -11838,7 +11838,7 @@ _ZN3fmt3v116detail10to_pointerIcEEPT_NS0_14basic_appenderIS3_EEm.exit: ; preds = %35 = add i32 %.0.lcssa.i, -2 %36 = zext i32 %35 to i64 %37 = getelementptr inbounds nuw i8, ptr %20, i64 %36 - %38 = trunc nuw i128 %.020.lcssa.i to i64 + %38 = trunc nuw nsw i128 %.020.lcssa.i to i64 %39 = shl nuw nsw i64 %38, 1 %40 = getelementptr inbounds nuw [201 x i8], ptr @_ZZN3fmt3v116detail7digits2EmE4data, i64 0, i64 %39 %41 = load i16, ptr %40, align 2 @@ -11846,7 +11846,7 @@ _ZN3fmt3v116detail10to_pointerIcEEPT_NS0_14basic_appenderIS3_EEm.exit: ; preds = br label %_ZN3fmt3v116detail17do_format_decimalIcoEEPT_S4_T0_i.exit 42: ; preds = %._crit_edge.i - %43 = trunc nuw i128 %.020.lcssa.i to i8 + %43 = trunc nuw nsw i128 %.020.lcssa.i to i8 %44 = or disjoint i8 %43, 48 %45 = add i32 %.0.lcssa.i, -1 %46 = zext i32 %45 to i64 @@ -11891,7 +11891,7 @@ _ZN3fmt3v116detail10to_pointerIcEEPT_NS0_14basic_appenderIS3_EEm.exit.thread: ; %61 = add i32 %.0.lcssa.i24, -2 %62 = zext i32 %61 to i64 %63 = getelementptr inbounds nuw i8, ptr %5, i64 %62 - %64 = trunc nuw i128 %.020.lcssa.i23 to i64 + %64 = trunc nuw nsw i128 %.020.lcssa.i23 to i64 %65 = shl nuw nsw i64 %64, 1 %66 = getelementptr inbounds nuw [201 x i8], ptr @_ZZN3fmt3v116detail7digits2EmE4data, i64 0, i64 %65 %67 = load i16, ptr %66, align 2 @@ -11899,7 +11899,7 @@ _ZN3fmt3v116detail10to_pointerIcEEPT_NS0_14basic_appenderIS3_EEm.exit.thread: ; br label %_ZN3fmt3v116detail17do_format_decimalIcoEEPT_S4_T0_i.exit29 68: ; preds = %._crit_edge.i22 - %69 = trunc nuw i128 %.020.lcssa.i23 to i8 + %69 = trunc nuw nsw i128 %.020.lcssa.i23 to i8 %70 = or disjoint i8 %69, 48 %71 = add i32 %.0.lcssa.i24, -1 %72 = zext i32 %71 to i64 @@ -12400,7 +12400,7 @@ _ZN3fmt3v116detail10to_pointerIcEEPT_NS0_14basic_appenderIS3_EEm.exit.i: ; preds br label %_ZN3fmt3v116detail5writeIcNS0_14basic_appenderIcEEjTnNSt9enable_ifIXaaaasr11is_integralIT1_EE5valuentsr3std7is_sameIS6_bEE5valuentsr3std7is_sameIS6_T_EE5valueEiE4typeELi0EEET0_SA_S6_.exit 49: ; preds = %._crit_edge.i.i - %50 = trunc nuw i32 %.018.lcssa.i.i to i8 + %50 = trunc nuw nsw i32 %.018.lcssa.i.i to i8 %51 = or disjoint i8 %50, 48 %52 = add i32 %.0.lcssa.i.i, -1 %53 = zext i32 %52 to i64 @@ -12499,7 +12499,7 @@ _ZN3fmt3v116detail10to_pointerIcEEPT_NS0_14basic_appenderIS3_EEm.exit.i: ; preds br label %_ZN3fmt3v116detail5writeIcNS0_14basic_appenderIcEEyTnNSt9enable_ifIXaaaasr11is_integralIT1_EE5valuentsr3std7is_sameIS6_bEE5valuentsr3std7is_sameIS6_T_EE5valueEiE4typeELi0EEET0_SA_S6_.exit 48: ; preds = %._crit_edge.i.i - %49 = trunc nuw i64 %.018.lcssa.i.i to i8 + %49 = trunc nuw nsw i64 %.018.lcssa.i.i to i8 %50 = or disjoint i8 %49, 48 %51 = add i32 %.0.lcssa.i.i, -1 %52 = zext i32 %51 to i64 @@ -12833,7 +12833,7 @@ _ZN3fmt3v116detail10to_pointerIcEEPT_NS0_14basic_appenderIS3_EEm.exit: ; preds = br label %_ZN3fmt3v116detail17do_format_decimalIcjEEPT_S4_T0_i.exit 55: ; preds = %._crit_edge.i - %56 = trunc nuw i32 %.018.lcssa.i to i8 + %56 = trunc nuw nsw i32 %.018.lcssa.i to i8 %57 = or disjoint i8 %56, 48 %58 = add i32 %.0.lcssa.i, -1 %59 = zext i32 %58 to i64 @@ -12949,7 +12949,7 @@ _ZN3fmt3v116detail10to_pointerIcEEPT_NS0_14basic_appenderIS3_EEm.exit: ; preds = br label %_ZN3fmt3v116detail17do_format_decimalIcjEEPT_S4_T0_i.exit 41: ; preds = %._crit_edge.i - %42 = trunc nuw i32 %.018.lcssa.i to i8 + %42 = trunc nuw nsw i32 %.018.lcssa.i to i8 %43 = or disjoint i8 %42, 48 %44 = add i32 %.0.lcssa.i, -1 %45 = zext i32 %44 to i64 @@ -12996,7 +12996,7 @@ _ZN3fmt3v116detail10to_pointerIcEEPT_NS0_14basic_appenderIS3_EEm.exit.thread: ; br label %_ZN3fmt3v116detail17do_format_decimalIcjEEPT_S4_T0_i.exit20 67: ; preds = %._crit_edge.i13 - %68 = trunc nuw i32 %.018.lcssa.i14 to i8 + %68 = trunc nuw nsw i32 %.018.lcssa.i14 to i8 %69 = or disjoint i8 %68, 48 %70 = add i32 %.0.lcssa.i15, -1 %71 = zext i32 %70 to i64 @@ -13111,7 +13111,7 @@ _ZN3fmt3v116detail10to_pointerIcEEPT_NS0_14basic_appenderIS3_EEm.exit: ; preds = br label %_ZN3fmt3v116detail17do_format_decimalIcmEEPT_S4_T0_i.exit 53: ; preds = %._crit_edge.i - %54 = trunc nuw i64 %.018.lcssa.i to i8 + %54 = trunc nuw nsw i64 %.018.lcssa.i to i8 %55 = or disjoint i8 %54, 48 %56 = add i32 %.0.lcssa.i, -1 %57 = zext i32 %56 to i64 @@ -13289,7 +13289,7 @@ _ZN3fmt3v116detail10to_pointerIcEEPT_NS0_14basic_appenderIS3_EEm.exit: ; preds = %56 = add i32 %.0.lcssa.i, -2 %57 = zext i32 %56 to i64 %58 = getelementptr inbounds nuw i8, ptr %.028, i64 %57 - %59 = trunc nuw i128 %.020.lcssa.i to i64 + %59 = trunc nuw nsw i128 %.020.lcssa.i to i64 %60 = shl nuw nsw i64 %59, 1 %61 = getelementptr inbounds nuw [201 x i8], ptr @_ZZN3fmt3v116detail7digits2EmE4data, i64 0, i64 %60 %62 = load i16, ptr %61, align 2 @@ -13297,7 +13297,7 @@ _ZN3fmt3v116detail10to_pointerIcEEPT_NS0_14basic_appenderIS3_EEm.exit: ; preds = br label %_ZN3fmt3v116detail17do_format_decimalIcoEEPT_S4_T0_i.exit 63: ; preds = %._crit_edge.i - %64 = trunc nuw i128 %.020.lcssa.i to i8 + %64 = trunc nuw nsw i128 %.020.lcssa.i to i8 %65 = or disjoint i8 %64, 48 %66 = add i32 %.0.lcssa.i, -1 %67 = zext i32 %66 to i64 @@ -13447,7 +13447,7 @@ _ZN3fmt3v116detail10to_pointerIcEEPT_NS0_14basic_appenderIS3_EEm.exit: ; preds = %49 = add i32 %.0.lcssa.i, -2 %50 = zext i32 %49 to i64 %51 = getelementptr inbounds nuw i8, ptr %34, i64 %50 - %52 = trunc nuw i128 %.020.lcssa.i to i64 + %52 = trunc nuw nsw i128 %.020.lcssa.i to i64 %53 = shl nuw nsw i64 %52, 1 %54 = getelementptr inbounds nuw [201 x i8], ptr @_ZZN3fmt3v116detail7digits2EmE4data, i64 0, i64 %53 %55 = load i16, ptr %54, align 2 @@ -13455,7 +13455,7 @@ _ZN3fmt3v116detail10to_pointerIcEEPT_NS0_14basic_appenderIS3_EEm.exit: ; preds = br label %_ZN3fmt3v116detail17do_format_decimalIcoEEPT_S4_T0_i.exit 56: ; preds = %._crit_edge.i - %57 = trunc nuw i128 %.020.lcssa.i to i8 + %57 = trunc nuw nsw i128 %.020.lcssa.i to i8 %58 = or disjoint i8 %57, 48 %59 = add i32 %.0.lcssa.i, -1 %60 = zext i32 %59 to i64 @@ -13530,7 +13530,7 @@ define linkonce_odr dso_local ptr @_ZN3fmt3v116detail18write_int_noinlineIcNS0_1 br label %_ZN3fmt3v116detail17do_format_decimalIcjEEPT_S4_T0_i.exit 31: ; preds = %._crit_edge.i - %32 = trunc nuw i32 %.018.lcssa.i to i8 + %32 = trunc nuw nsw i32 %.018.lcssa.i to i8 %33 = or disjoint i8 %32, 48 %34 = add i32 %.0.lcssa.i, -1 %35 = zext i32 %34 to i64 @@ -15119,7 +15119,7 @@ _ZN3fmt3v1114basic_appenderIcEaSEc.exit: ; preds = %5, %15 br label %_ZN3fmt3v116detail17do_format_decimalIcjEEPT_S4_T0_i.exit.i.i 49: ; preds = %._crit_edge.i.i.i - %50 = trunc nuw i32 %.018.lcssa.i.i.i to i8 + %50 = trunc nuw nsw i32 %.018.lcssa.i.i.i to i8 %51 = or disjoint i8 %50, 48 %52 = add i32 %.0.lcssa.i.i.i, -1 %53 = zext i32 %52 to i64 @@ -15219,7 +15219,7 @@ _ZN3fmt3v116detail17do_format_decimalIcjEEPT_S4_T0_i.exit.i.i: ; preds = %49, %4 br label %_ZN3fmt3v116detail17write_significandINS0_14basic_appenderIcEEjcTnNSt9enable_ifIXntsr3std10is_pointerINSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEE5valueEiE4typeELi0EEES8_S8_T0_iiT1_.exit 103: ; preds = %._crit_edge.i33.i.i - %104 = trunc nuw i32 %.018.lcssa.i34.i.i to i8 + %104 = trunc nuw nsw i32 %.018.lcssa.i34.i.i to i8 %105 = or disjoint i8 %104, 48 %106 = add i32 %.0.lcssa.i35.i.i, -1 %107 = zext i32 %106 to i64 @@ -16156,7 +16156,7 @@ define linkonce_odr dso_local ptr @_ZN3fmt3v116detail17write_significandINS0_14b br label %_ZN3fmt3v116detail17do_format_decimalIcjEEPT_S4_T0_i.exit.i.i 34: ; preds = %._crit_edge.i.i.i - %35 = trunc nuw i32 %.018.lcssa.i.i.i to i8 + %35 = trunc nuw nsw i32 %.018.lcssa.i.i.i to i8 %36 = or disjoint i8 %35, 48 %37 = add i32 %.0.lcssa.i.i.i, -1 %38 = zext i32 %37 to i64 @@ -16258,7 +16258,7 @@ _ZN3fmt3v116detail17do_format_decimalIcjEEPT_S4_T0_i.exit.i.i: ; preds = %34, %2 br label %_ZN3fmt3v116detail17write_significandINS0_14basic_appenderIcEEjcTnNSt9enable_ifIXntsr3std10is_pointerINSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEE5valueEiE4typeELi0EEES8_S8_T0_iiT1_.exit 90: ; preds = %._crit_edge.i33.i.i - %91 = trunc nuw i32 %.018.lcssa.i34.i.i to i8 + %91 = trunc nuw nsw i32 %.018.lcssa.i34.i.i to i8 %92 = or disjoint i8 %91, 48 %93 = add i32 %.0.lcssa.i35.i.i, -1 %94 = zext i32 %93 to i64 @@ -16324,7 +16324,7 @@ _ZN3fmt3v116detail17write_significandINS0_14basic_appenderIcEEjcTnNSt9enable_ifI br label %_ZN3fmt3v116detail17do_format_decimalIcjEEPT_S4_T0_i.exit.i.i41 123: ; preds = %._crit_edge.i.i.i38 - %124 = trunc nuw i32 %.018.lcssa.i.i.i39 to i8 + %124 = trunc nuw nsw i32 %.018.lcssa.i.i.i39 to i8 %125 = or disjoint i8 %124, 48 %126 = add i32 %.0.lcssa.i.i.i40, -1 %127 = zext i32 %126 to i64 @@ -16426,7 +16426,7 @@ _ZN3fmt3v116detail17do_format_decimalIcjEEPT_S4_T0_i.exit.i.i41: ; preds = %123, br label %_ZN3fmt3v116detail17write_significandIcjTnNSt9enable_ifIXsr3std11is_integralIT0_EE5valueEiE4typeELi0EEEPT_S8_S4_iiS7_.exit.i 179: ; preds = %._crit_edge.i33.i.i26 - %180 = trunc nuw i32 %.018.lcssa.i34.i.i27 to i8 + %180 = trunc nuw nsw i32 %.018.lcssa.i34.i.i27 to i8 %181 = or disjoint i8 %180, 48 %182 = add i32 %.0.lcssa.i35.i.i28, -1 %183 = zext i32 %182 to i64 @@ -17465,7 +17465,7 @@ _ZN3fmt3v1114basic_appenderIcEaSEc.exit: ; preds = %5, %15 br label %_ZN3fmt3v116detail17do_format_decimalIcmEEPT_S4_T0_i.exit.i.i 47: ; preds = %._crit_edge.i.i.i - %48 = trunc nuw i64 %.018.lcssa.i.i.i to i8 + %48 = trunc nuw nsw i64 %.018.lcssa.i.i.i to i8 %49 = or disjoint i8 %48, 48 %50 = add i32 %.0.lcssa.i.i.i, -1 %51 = zext i32 %50 to i64 @@ -17562,7 +17562,7 @@ _ZN3fmt3v116detail17do_format_decimalIcmEEPT_S4_T0_i.exit.i.i: ; preds = %47, %4 br label %_ZN3fmt3v116detail17write_significandINS0_14basic_appenderIcEEmcTnNSt9enable_ifIXntsr3std10is_pointerINSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEE5valueEiE4typeELi0EEES8_S8_T0_iiT1_.exit 98: ; preds = %._crit_edge.i33.i.i - %99 = trunc nuw i64 %.018.lcssa.i34.i.i to i8 + %99 = trunc nuw nsw i64 %.018.lcssa.i34.i.i to i8 %100 = or disjoint i8 %99, 48 %101 = add i32 %.0.lcssa.i35.i.i, -1 %102 = zext i32 %101 to i64 @@ -18111,7 +18111,7 @@ define linkonce_odr dso_local ptr @_ZN3fmt3v116detail17write_significandINS0_14b br label %_ZN3fmt3v116detail17do_format_decimalIcmEEPT_S4_T0_i.exit.i.i 32: ; preds = %._crit_edge.i.i.i - %33 = trunc nuw i64 %.018.lcssa.i.i.i to i8 + %33 = trunc nuw nsw i64 %.018.lcssa.i.i.i to i8 %34 = or disjoint i8 %33, 48 %35 = add i32 %.0.lcssa.i.i.i, -1 %36 = zext i32 %35 to i64 @@ -18210,7 +18210,7 @@ _ZN3fmt3v116detail17do_format_decimalIcmEEPT_S4_T0_i.exit.i.i: ; preds = %32, %2 br label %_ZN3fmt3v116detail17write_significandINS0_14basic_appenderIcEEmcTnNSt9enable_ifIXntsr3std10is_pointerINSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEE5valueEiE4typeELi0EEES8_S8_T0_iiT1_.exit 85: ; preds = %._crit_edge.i33.i.i - %86 = trunc nuw i64 %.018.lcssa.i34.i.i to i8 + %86 = trunc nuw nsw i64 %.018.lcssa.i34.i.i to i8 %87 = or disjoint i8 %86, 48 %88 = add i32 %.0.lcssa.i35.i.i, -1 %89 = zext i32 %88 to i64 @@ -18274,7 +18274,7 @@ _ZN3fmt3v116detail17write_significandINS0_14basic_appenderIcEEmcTnNSt9enable_ifI br label %_ZN3fmt3v116detail17do_format_decimalIcmEEPT_S4_T0_i.exit.i.i41 116: ; preds = %._crit_edge.i.i.i38 - %117 = trunc nuw i64 %.018.lcssa.i.i.i39 to i8 + %117 = trunc nuw nsw i64 %.018.lcssa.i.i.i39 to i8 %118 = or disjoint i8 %117, 48 %119 = add i32 %.0.lcssa.i.i.i40, -1 %120 = zext i32 %119 to i64 @@ -18373,7 +18373,7 @@ _ZN3fmt3v116detail17do_format_decimalIcmEEPT_S4_T0_i.exit.i.i41: ; preds = %116, br label %_ZN3fmt3v116detail17write_significandIcmTnNSt9enable_ifIXsr3std11is_integralIT0_EE5valueEiE4typeELi0EEEPT_S8_S4_iiS7_.exit.i 169: ; preds = %._crit_edge.i33.i.i26 - %170 = trunc nuw i64 %.018.lcssa.i34.i.i27 to i8 + %170 = trunc nuw nsw i64 %.018.lcssa.i34.i.i27 to i8 %171 = or disjoint i8 %170, 48 %172 = add i32 %.0.lcssa.i35.i.i28, -1 %173 = zext i32 %172 to i64 @@ -25748,7 +25748,7 @@ _ZNK3fmt3v1116basic_format_argINS0_7contextEE5visitINS0_6detail19dynamic_spec_ge unreachable _ZNK3fmt3v1116basic_format_argINS0_7contextEE5visitINS0_6detail19dynamic_spec_getterEEEDTclfp_Li0EEEOT_.exit.thread45: ; preds = %_ZNK3fmt3v1116basic_format_argINS0_7contextEE5visitINS0_6detail19dynamic_spec_getterEEEDTclfp_Li0EEEOT_.exit - %92 = trunc nuw i64 %.0.i to i32 + %92 = trunc nuw nsw i64 %.0.i to i32 ret i32 %92 } @@ -25805,7 +25805,7 @@ define linkonce_odr dso_local ptr @_ZN3fmt3v116detail18write_int_noinlineIcNS0_1 br label %_ZN3fmt3v116detail17do_format_decimalIcmEEPT_S4_T0_i.exit 30: ; preds = %._crit_edge.i - %31 = trunc nuw i64 %.018.lcssa.i to i8 + %31 = trunc nuw nsw i64 %.018.lcssa.i to i8 %32 = or disjoint i8 %31, 48 %33 = add i32 %.0.lcssa.i, -1 %34 = zext i32 %33 to i64 @@ -26342,7 +26342,7 @@ define linkonce_odr dso_local ptr @_ZN3fmt3v116detail18write_int_noinlineIcNS0_1 %24 = add i32 %.0.lcssa.i, -2 %25 = zext i32 %24 to i64 %26 = getelementptr inbounds nuw i8, ptr %5, i64 %25 - %27 = trunc nuw i128 %.020.lcssa.i to i64 + %27 = trunc nuw nsw i128 %.020.lcssa.i to i64 %28 = shl nuw nsw i64 %27, 1 %29 = getelementptr inbounds nuw [201 x i8], ptr @_ZZN3fmt3v116detail7digits2EmE4data, i64 0, i64 %28 %30 = load i16, ptr %29, align 2 @@ -26350,7 +26350,7 @@ define linkonce_odr dso_local ptr @_ZN3fmt3v116detail18write_int_noinlineIcNS0_1 br label %_ZN3fmt3v116detail17do_format_decimalIcoEEPT_S4_T0_i.exit 31: ; preds = %._crit_edge.i - %32 = trunc nuw i128 %.020.lcssa.i to i8 + %32 = trunc nuw nsw i128 %.020.lcssa.i to i8 %33 = or disjoint i8 %32, 48 %34 = add i32 %.0.lcssa.i, -1 %35 = zext i32 %34 to i64 diff --git a/bench/sqlite/optimized/sqlite3.ll b/bench/sqlite/optimized/sqlite3.ll index cdc03ff4c4c..1e150413df4 100644 --- a/bench/sqlite/optimized/sqlite3.ll +++ b/bench/sqlite/optimized/sqlite3.ll @@ -7773,7 +7773,7 @@ sqlite3_str_reset.exit.i929: ; preds = %sqlite3DbFree.exit. 1025: ; preds = %1019, %1007 %.1660 = phi i32 [ %1024, %1019 ], [ %.0659, %1007 ] %.25 = phi ptr [ %1023, %1019 ], [ %.24, %1007 ] - %.lhs.trunc = trunc nuw i32 %.1660 to i8 + %.lhs.trunc = trunc nuw nsw i32 %.1660 to i8 %1026 = udiv i8 %.lhs.trunc, 10 %1027 = or disjoint i8 %1026, 48 %1028 = getelementptr inbounds nuw i8, ptr %.25, i64 1 @@ -7987,7 +7987,7 @@ getTextArg.exit.thread: ; preds = %1090, %1072, %1069, 1120: ; preds = %1118 %1121 = lshr i32 %1114, 6 - %1122 = trunc nuw i32 %1121 to i8 + %1122 = trunc nuw nsw i32 %1121 to i8 %1123 = or disjoint i8 %1122, -64 store i8 %1123, ptr %40, align 16, !tbaa !198 %1124 = trunc i32 %1114 to i8 @@ -8002,7 +8002,7 @@ getTextArg.exit.thread: ; preds = %1090, %1072, %1069, 1129: ; preds = %1127 %1130 = lshr i32 %1114, 12 - %1131 = trunc nuw i32 %1130 to i8 + %1131 = trunc nuw nsw i32 %1130 to i8 %1132 = or disjoint i8 %1131, -32 store i8 %1132, ptr %40, align 16, !tbaa !198 %1133 = lshr i32 %1114, 6 @@ -30945,7 +30945,7 @@ sqlite3Utf8Read.exit148: ; preds = %._crit_edge.i141, % %134 = load i8, ptr %133, align 1, !tbaa !198 %135 = and i8 %134, 32 %136 = xor i8 %135, -1 - %137 = trunc nuw i32 %.092 to i8 + %137 = trunc nuw nsw i32 %.092 to i8 %138 = and i8 %136, %137 %139 = getelementptr inbounds nuw [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %132 %140 = load i8, ptr %139, align 1, !tbaa !198 @@ -71135,7 +71135,7 @@ define internal zeroext range(i16 2, 14) i16 @cellSizePtrNoPayload(ptr readnone br i1 %7, label %3, label %8, !llvm.loop !1411 8: ; preds = %3 - %9 = trunc i64 %.0.add to i16 + %9 = trunc nuw nsw i64 %.0.add to i16 ret i16 %9 } @@ -91581,7 +91581,7 @@ sqlite3DbMallocRaw.exit: ; preds = %85, %87 229: ; preds = %227 %230 = lshr i32 %220, 6 - %231 = trunc nuw i32 %230 to i8 + %231 = trunc nuw nsw i32 %230 to i8 %232 = or disjoint i8 %231, -64 %233 = getelementptr inbounds nuw i8, ptr %.6207307, i64 1 store i8 %232, ptr %.6207307, align 1, !tbaa !198 @@ -91686,7 +91686,7 @@ sqlite3DbMallocRaw.exit: ; preds = %85, %87 299: ; preds = %297 %300 = lshr i32 %290, 6 - %301 = trunc nuw i32 %300 to i8 + %301 = trunc nuw nsw i32 %300 to i8 %302 = or disjoint i8 %301, -64 %303 = getelementptr inbounds nuw i8, ptr %.9210333, i64 1 store i8 %302, ptr %.9210333, align 1, !tbaa !198 @@ -96711,7 +96711,7 @@ sqlite3VarintLen.exit4194: ; preds = %.lr.ph.i4188, %sqli 2572: ; preds = %2570 %2573 = lshr i32 %2514, 7 - %2574 = trunc nuw i32 %2573 to i8 + %2574 = trunc nuw nsw i32 %2573 to i8 %2575 = or disjoint i8 %2574, -128 store i8 %2575, ptr %.13179, align 1, !tbaa !198 %2576 = trunc i32 %2514 to i8 @@ -99398,7 +99398,7 @@ sqlite3BtreeLast.exit4252: ; preds = %3771, %3776 3944: ; preds = %3942 %3945 = lshr i32 %3937, 7 - %3946 = trunc nuw i32 %3945 to i8 + %3946 = trunc nuw nsw i32 %3945 to i8 %3947 = or disjoint i8 %3946, -128 store i8 %3947, ptr %3935, align 1, !tbaa !198 %3948 = trunc i32 %3937 to i8 @@ -99440,7 +99440,7 @@ sqlite3PutVarint.exit.i: ; preds = %3951, %3944 3966: ; preds = %3964 %3967 = lshr i64 %3927, 7 - %3968 = trunc nuw i64 %3967 to i8 + %3968 = trunc nuw nsw i64 %3967 to i8 %3969 = or disjoint i8 %3968, -128 store i8 %3969, ptr %.0110.i, align 1, !tbaa !198 %3970 = trunc i64 %3927 to i8 @@ -110742,7 +110742,7 @@ define internal fastcc range(i32 -2147483647, -2147483648) i32 @sqlite3PutVarint 8: ; preds = %6 %9 = lshr i64 %1, 7 - %10 = trunc nuw i64 %9 to i8 + %10 = trunc nuw nsw i64 %9 to i8 %11 = or disjoint i8 %10, -128 store i8 %11, ptr %0, align 1, !tbaa !198 %12 = trunc i64 %1 to i8 @@ -114727,7 +114727,7 @@ btreeOverwriteCell.exit: ; preds = %165, %168, %170 260: ; preds = %256 %261 = lshr i32 %248, 7 - %262 = trunc nuw i32 %261 to i8 + %262 = trunc nuw nsw i32 %261 to i8 %263 = or disjoint i8 %262, -128 store i8 %263, ptr %258, align 1, !tbaa !198 %264 = trunc i32 %248 to i8 @@ -114763,7 +114763,7 @@ sqlite3PutVarint.exit.i: ; preds = %267, %260, %252 282: ; preds = %280 %283 = lshr i64 %276, 7 - %284 = trunc nuw i64 %283 to i8 + %284 = trunc nuw nsw i64 %283 to i8 %285 = or disjoint i8 %284, -128 store i8 %285, ptr %274, align 1, !tbaa !198 %286 = trunc i64 %276 to i8 @@ -131210,7 +131210,7 @@ ptrmapPutOvflPtr.exit.i95: ; preds = %1492, %.critedge.i. 1564: ; preds = %1562 %1565 = lshr i64 %1558, 7 - %1566 = trunc nuw i64 %1565 to i8 + %1566 = trunc nuw nsw i64 %1565 to i8 %1567 = or disjoint i8 %1566, -128 store i8 %1567, ptr %1557, align 1, !tbaa !198 %1568 = trunc i64 %1558 to i8 @@ -132502,7 +132502,7 @@ define internal fastcc ptr @pageFindSlot(ptr noundef readonly captures(none) %0, %51 = load i16, ptr %27, align 1 store i16 %51, ptr %50, align 1 %52 = load i8, ptr %45, align 1, !tbaa !198 - %53 = trunc nuw i32 %36 to i8 + %53 = trunc nuw nsw i32 %36 to i8 %54 = add i8 %52, %53 store i8 %54, ptr %45, align 1, !tbaa !198 br label %79 @@ -135021,7 +135021,7 @@ vdbePmaWriterInit.exit: ; preds = %51, %59 72: ; preds = %70 %73 = lshr i64 %66, 7 - %74 = trunc nuw i64 %73 to i8 + %74 = trunc nuw nsw i64 %73 to i8 %75 = or disjoint i8 %74, -128 store i8 %75, ptr %4, align 1, !tbaa !198 %76 = trunc i64 %66 to i8 @@ -135115,7 +135115,7 @@ vdbePmaWriteVarint.exit: ; preds = %82, %104, %sqlite3P br i1 %116, label %117, label %119 117: ; preds = %111 - %118 = trunc nuw i32 %114 to i8 + %118 = trunc nuw nsw i32 %114 to i8 store i8 %118, ptr %3, align 1, !tbaa !198 br label %.lr.ph.i.i33 @@ -135125,7 +135125,7 @@ vdbePmaWriteVarint.exit: ; preds = %82, %104, %sqlite3P 121: ; preds = %119 %122 = lshr i32 %114, 7 - %123 = trunc nuw i32 %122 to i8 + %123 = trunc nuw nsw i32 %122 to i8 %124 = or disjoint i8 %123, -128 store i8 %124, ptr %3, align 1, !tbaa !198 %125 = trunc i32 %114 to i8 @@ -136834,7 +136834,7 @@ sqlite3VarintLen.exit.thread: ; preds = %.lr.ph.i 60: ; preds = %58 %61 = lshr i32 %34, 7 - %62 = trunc nuw i32 %61 to i8 + %62 = trunc nuw nsw i32 %61 to i8 %63 = or disjoint i8 %62, -128 store i8 %63, ptr %2, align 1, !tbaa !198 %64 = trunc i32 %34 to i8 @@ -144560,7 +144560,7 @@ sqlite3_str_appendall.exit: br label %._crit_edge ._crit_edge.loopexit: ; preds = %.lr.ph - %26 = trunc i32 %20 to i8 + %26 = trunc nuw i32 %20 to i8 br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %24 @@ -180487,7 +180487,7 @@ sqlite3WalHeapMemory.exit.i1746: ; preds = %407 br i1 %.not7.i1747, label %sqlite3PagerLockingMode.exit1749, label %sqlite3WalHeapMemory.exit.thread.i1748 sqlite3WalHeapMemory.exit.thread.i1748: ; preds = %sqlite3WalHeapMemory.exit.i1746, %407 - %412 = trunc nsw i32 %372 to i8 + %412 = trunc nuw nsw i32 %372 to i8 %413 = getelementptr inbounds nuw i8, ptr %.val1705.val, i64 8 store i8 %412, ptr %413, align 8, !tbaa !574 br label %sqlite3PagerLockingMode.exit1749 @@ -301930,7 +301930,7 @@ sqlite3ExprDup.exit.i841: ; preds = %884, %878 br i1 %891, label %sqlite3ExprCode.exit, label %892 892: ; preds = %889 - %893 = trunc i64 %indvars.iv1162 to i32 + %893 = trunc nuw nsw i64 %indvars.iv1162 to i32 %894 = add i32 %868, %893 %895 = call fastcc i32 @sqlite3ExprCodeTarget(ptr noundef nonnull %0, ptr noundef %886, i32 noundef %894) #73 %.not.i991 = icmp eq i32 %895, %894 @@ -302849,7 +302849,7 @@ sqlite3TableColumnToStorage.exit922: ; preds = %sqlite3LocateCollSe %.018.i921 = phi i16 [ %1341, %1338 ], [ %1319, %sqlite3LocateCollSeq.exit ], [ %.0.lcssa.i919, %._crit_edge.i918 ] %1342 = sext i16 %.018.i921 to i32 %1343 = add nsw i32 %800, %1342 - %1344 = trunc i64 %indvars.iv1168 to i32 + %1344 = trunc nuw nsw i64 %indvars.iv1168 to i32 %1345 = add i32 %1299, %1344 %1346 = call fastcc i32 @sqlite3VdbeAddOp4(ptr noundef nonnull %18, i32 noundef %spec.select713, i32 noundef %1343, i32 noundef %spec.select, i32 noundef %1345, ptr noundef %.0.i906, i32 noundef -2) %1347 = load i32, ptr %775, align 8, !tbaa !166 @@ -306813,7 +306813,7 @@ sqlite3BtreeEnter.exit: ; preds = %4, %7, %13 19: ; preds = %sqlite3BtreeEnter.exit %20 = and i16 %18, -13 - %.tr = trunc nsw i32 %1 to i16 + %.tr = trunc nuw nsw i32 %1 to i16 %21 = shl nuw nsw i16 %.tr, 2 %22 = or i16 %20, %21 store i16 %22, ptr %17, align 8, !tbaa !558 @@ -317171,7 +317171,7 @@ sqlite3_value_int64.exit: ; preds = %54, %61, %68 104: ; preds = %88 %105 = lshr i64 %.0.i.i44.fr, 18 - %106 = trunc nuw i64 %105 to i8 + %106 = trunc nuw nsw i64 %105 to i8 %107 = or disjoint i8 %106, -16 %108 = getelementptr inbounds nuw i8, ptr %.059, i64 1 store i8 %107, ptr %.059, align 1, !tbaa !198 @@ -331178,7 +331178,7 @@ define internal void @juliandayFunc(ptr noundef captures(none) %0, i32 noundef % %.137.i = select i1 %27, i32 %28, i32 %.03649.i %29 = sext i1 %27 to i32 %.1.i = add nsw i32 %.050.i, %29 - %30 = trunc i32 %.1.i to i16 + %30 = trunc nsw i32 %.1.i to i16 %.lhs.trunc.i = add nsw i16 %30, 4800 %31 = udiv i16 %.lhs.trunc.i, 100 %.zext.i = zext nneg i16 %31 to i32 @@ -331323,7 +331323,7 @@ computeJD.exit.thread: ; preds = %13, %.thread.i %.137.i = select i1 %26, i32 %27, i32 %.03649.i %28 = sext i1 %26 to i32 %.1.i = add nsw i32 %.050.i, %28 - %29 = trunc i32 %.1.i to i16 + %29 = trunc nsw i32 %.1.i to i16 %.lhs.trunc.i = add nsw i16 %29, 4800 %30 = udiv i16 %.lhs.trunc.i, 100 %.zext.i = zext nneg i16 %30 to i32 @@ -331486,7 +331486,7 @@ define internal void @dateFunc(ptr noundef captures(none) %0, i32 noundef %1, pt 21: ; preds = %16 %22 = add nuw nsw i64 %17, 43200000 %23 = udiv i64 %22, 86400000 - %24 = trunc nuw i64 %23 to i32 + %24 = trunc nuw nsw i64 %23 to i32 %25 = uitofp nneg i32 %24 to double %26 = fadd double %25, 0x40DF4B3000000000 %27 = fdiv double %26, 0x40E1D58800000000 @@ -331681,7 +331681,7 @@ define internal void @timeFunc(ptr noundef captures(none) %0, i32 noundef %1, pt %.137.i = select i1 %30, i32 %31, i32 %.03649.i %32 = sext i1 %30 to i32 %.1.i = add nsw i32 %.050.i, %32 - %33 = trunc i32 %.1.i to i16 + %33 = trunc nsw i32 %.1.i to i16 %.lhs.trunc.i14 = add nsw i16 %33, 4800 %34 = udiv i16 %.lhs.trunc.i14, 100 %.zext.i = zext nneg i16 %34 to i32 @@ -332129,7 +332129,7 @@ sqlite3_value_text.exit: ; preds = %18, %23 %.137.i = select i1 %61, i32 %62, i32 %.03649.i %63 = sext i1 %61 to i32 %.1.i = add nsw i32 %.050.i, %63 - %64 = trunc i32 %.1.i to i16 + %64 = trunc nsw i32 %.1.i to i16 %.lhs.trunc.i = add nsw i16 %64, 4800 %65 = udiv i16 %.lhs.trunc.i, 100 %.zext.i = zext nneg i16 %65 to i32 @@ -332336,7 +332336,7 @@ sqlite3_str_append.exit: ; preds = %122, %121, %120, %1 155: ; preds = %152 %156 = add nuw nsw i64 %150, 43200000 %157 = udiv i64 %156, 86400000 - %158 = trunc nuw i64 %157 to i32 + %158 = trunc nuw nsw i64 %157 to i32 %159 = uitofp nneg i32 %158 to double %160 = fadd double %159, 0x40DF4B3000000000 %161 = fdiv double %160, 0x40E1D58800000000 @@ -332435,7 +332435,7 @@ computeYMD.exit: ; preds = %154, %182 203: ; preds = %.thread.i.i %.1.i.i = add nsw i32 %.050.i.i, -1 - %204 = trunc i32 %.1.i.i to i16 + %204 = trunc nsw i32 %.1.i.i to i16 %.lhs.trunc.i.i = add nsw i16 %204, 4800 %205 = udiv i16 %.lhs.trunc.i.i, 100 %.zext.i.i = zext nneg i16 %205 to i32 @@ -332651,7 +332651,7 @@ daysAfterJan01.exit: ; preds = %200, %.thread.i.i, 316: ; preds = %.thread.i.i94 %.1.i.i98 = add nsw i32 %.050.i.i95, -1 - %317 = trunc i32 %.1.i.i98 to i16 + %317 = trunc nsw i32 %.1.i.i98 to i16 %.lhs.trunc.i.i99 = add nsw i16 %317, 4800 %318 = udiv i16 %.lhs.trunc.i.i99, 100 %.zext.i.i100 = zext nneg i16 %318 to i32 @@ -332739,7 +332739,7 @@ daysAfterJan01.exit104: ; preds = %313, %.thread.i.i94 365: ; preds = %363 %366 = add nuw nsw i64 %361, 43200000 %367 = udiv i64 %366, 86400000 - %368 = trunc nuw i64 %367 to i32 + %368 = trunc nuw nsw i64 %367 to i32 %369 = uitofp nneg i32 %368 to double %370 = fadd double %369, 0x40DF4B3000000000 %371 = fdiv double %370, 0x40E1D58800000000 @@ -332789,7 +332789,7 @@ daysAfterJan01.exit104: ; preds = %313, %.thread.i.i94 %.sroa.18.0217230 = phi double [ %.sroa.18.0.copyload, %392 ], [ 0.000000e+00, %363 ] %.sroa.24.0218229 = phi i8 [ %.sroa.24.0.copyload, %392 ], [ 0, %363 ] %.1.i.i136 = add nsw i32 %.050.i.i133235, -1 - %395 = trunc i32 %.1.i.i136 to i16 + %395 = trunc nsw i32 %.1.i.i136 to i16 %.lhs.trunc.i.i137 = add nsw i16 %395, 4800 %396 = udiv i16 %.lhs.trunc.i.i137, 100 %.zext.i.i138 = zext nneg i16 %396 to i32 @@ -332866,7 +332866,7 @@ daysAfterJan01.exit142: ; preds = %392, %.thread.i.i13 431: ; preds = %.thread.i.i162 %.1.i.i166 = add nsw i32 %.050.i.i163, -1 - %432 = trunc i32 %.1.i.i166 to i16 + %432 = trunc nsw i32 %.1.i.i166 to i16 %.lhs.trunc.i.i167 = add nsw i16 %432, 4800 %433 = udiv i16 %.lhs.trunc.i.i167, 100 %.zext.i.i168 = zext nneg i16 %433 to i32 @@ -333092,7 +333092,7 @@ define internal void @timediffFunc(ptr noundef captures(none) %0, i32 %1, ptr no %.137.i = select i1 %36, i32 %37, i32 %.03649.i %38 = sext i1 %36 to i32 %.1.i = add nsw i32 %.050.i, %38 - %39 = trunc i32 %.1.i to i16 + %39 = trunc nsw i32 %.1.i to i16 %.lhs.trunc.i = add nsw i16 %39, 4800 %40 = udiv i16 %.lhs.trunc.i, 100 %.zext.i = zext nneg i16 %40 to i32 @@ -333207,7 +333207,7 @@ computeJD.exit: ; preds = %75, %58, %35, %33, %.137.i58 = select i1 %104, i32 %105, i32 %.03649.i55 %106 = sext i1 %104 to i32 %.1.i59 = add nsw i32 %.050.i54, %106 - %107 = trunc i32 %.1.i59 to i16 + %107 = trunc nsw i32 %.1.i59 to i16 %.lhs.trunc.i60 = add nsw i16 %107, 4800 %108 = udiv i16 %.lhs.trunc.i60, 100 %.zext.i61 = zext nneg i16 %108 to i32 @@ -333344,7 +333344,7 @@ computeJD.exit66: ; preds = %143, %126, %103, %1 %.137.i75 = select i1 %186, i32 %187, i32 %.03649.i72 %188 = sext i1 %186 to i32 %.1.i76 = add nsw i32 %.050.i71, %188 - %189 = trunc i32 %.1.i76 to i16 + %189 = trunc nsw i32 %.1.i76 to i16 %.lhs.trunc.i77 = add nsw i16 %189, 4800 %190 = udiv i16 %.lhs.trunc.i77, 100 %.zext.i78 = zext nneg i16 %190 to i32 @@ -333472,7 +333472,7 @@ computeJD.exit83: ; preds = %computeJD.exit83.si %.137.i92 = select i1 %254, i32 %255, i32 %.03649.i89 %256 = sext i1 %254 to i32 %.1.i93 = add nsw i32 %.050.i88, %256 - %257 = trunc i32 %.1.i93 to i16 + %257 = trunc nsw i32 %.1.i93 to i16 %.lhs.trunc.i94 = add nsw i16 %257, 4800 %258 = udiv i16 %.lhs.trunc.i94, 100 %.zext.i95 = zext nneg i16 %258 to i32 @@ -333587,7 +333587,7 @@ computeJD.exit100: ; preds = %293, %276, %253, %2 %.137.i109 = select i1 %322, i32 %323, i32 %.03649.i106 %324 = sext i1 %322 to i32 %.1.i110 = add nsw i32 %.050.i105, %324 - %325 = trunc i32 %.1.i110 to i16 + %325 = trunc nsw i32 %.1.i110 to i16 %.lhs.trunc.i111 = add nsw i16 %325, 4800 %326 = udiv i16 %.lhs.trunc.i111, 100 %.zext.i112 = zext nneg i16 %326 to i32 @@ -333724,7 +333724,7 @@ computeJD.exit117: ; preds = %361, %344, %321, %3 %.137.i126 = select i1 %404, i32 %405, i32 %.03649.i123 %406 = sext i1 %404 to i32 %.1.i127 = add nsw i32 %.050.i122, %406 - %407 = trunc i32 %.1.i127 to i16 + %407 = trunc nsw i32 %.1.i127 to i16 %.lhs.trunc.i128 = add nsw i16 %407, 4800 %408 = udiv i16 %.lhs.trunc.i128, 100 %.zext.i129 = zext nneg i16 %408 to i32 @@ -335012,7 +335012,7 @@ sqlite3_stricmp.exit307.thread.i: ; preds = %515 %.137.i.i = select i1 %549, i32 %550, i32 %.03649.i.i %551 = sext i1 %549 to i32 %.1.i.i61 = add nsw i32 %.050.i.i, %551 - %552 = trunc i32 %.1.i.i61 to i16 + %552 = trunc nsw i32 %.1.i.i61 to i16 %.lhs.trunc.i.i = add nsw i16 %552, 4800 %553 = udiv i16 %.lhs.trunc.i.i, 100 %.zext.i.i = zext nneg i16 %553 to i32 @@ -335320,7 +335320,7 @@ sqlite3_strnicmp.exit322.thread.i: ; preds = %647, %sqlite3_strni 701: ; preds = %.thread77 %702 = add nuw nsw i64 %698, 43200000 %703 = udiv i64 %702, 86400000 - %704 = trunc nuw i64 %703 to i32 + %704 = trunc nuw nsw i64 %703 to i32 %705 = uitofp nneg i32 %704 to double %706 = fadd double %705, 0x40DF4B3000000000 %707 = fdiv double %706, 0x40E1D58800000000 @@ -335737,7 +335737,7 @@ computeFloor.exit.i: ; preds = %867, %864, %855, %8 %.137.i363.i = select i1 %908, i32 %909, i32 %.03649.i360.i %910 = sext i1 %908 to i32 %.1.i364.i = add nsw i32 %.050.i359.i, %910 - %911 = trunc i32 %.1.i364.i to i16 + %911 = trunc nsw i32 %.1.i364.i to i16 %.lhs.trunc.i365.i = add nsw i16 %911, 4800 %912 = udiv i16 %.lhs.trunc.i365.i, 100 %.zext.i366.i = zext nneg i16 %912 to i32 @@ -336146,7 +336146,7 @@ define internal fastcc void @computeJD(ptr noundef nonnull captures(none) %0) un %.137 = select i1 %21, i32 %22, i32 %.03649 %23 = sext i1 %21 to i32 %.1 = add nsw i32 %.050, %23 - %24 = trunc i32 %.1 to i16 + %24 = trunc nsw i32 %.1 to i16 %.lhs.trunc = add nsw i16 %24, 4800 %25 = udiv i16 %.lhs.trunc, 100 %.zext = zext nneg i16 %25 to i32 @@ -336809,7 +336809,7 @@ define internal fastcc void @computeYMD_HMS(ptr noundef nonnull captures(none) % 15: ; preds = %10 %16 = add nuw nsw i64 %11, 43200000 %17 = udiv i64 %16, 86400000 - %18 = trunc nuw i64 %17 to i32 + %18 = trunc nuw nsw i64 %17 to i32 %19 = uitofp nneg i32 %18 to double %20 = fadd double %19, 0x40DF4B3000000000 %21 = fdiv double %20, 0x40E1D58800000000 @@ -339654,7 +339654,7 @@ sqlite3_value_int64.exit: ; preds = %13, %20, %27 br label %sqlite3_result_int.exit .thread: ; preds = %sqlite3_value_int64.exit - %33 = trunc nuw i64 %.0.i.i to i32 + %33 = trunc nuw nsw i64 %.0.i.i to i32 br label %38 34: ; preds = %24, %22, %17 @@ -342767,7 +342767,7 @@ define internal fastcc i32 @jsonTranslateTextToBlob(ptr noundef %0, i32 noundef br i1 %26, label %27, label %30 27: ; preds = %22 - %.tr.i = trunc nuw i32 %15 to i8 + %.tr.i = trunc nuw nsw i32 %15 to i8 %28 = shl nuw i8 %.tr.i, 4 %29 = or disjoint i8 %28, 12 store i8 %29, ptr %25, align 1, !tbaa !198 @@ -342999,7 +342999,7 @@ jsonIs4Hex.exit.i: ; preds = %127 br i1 %151, label %152, label %155 152: ; preds = %147 - %.tr.i568 = trunc nuw i32 %140 to i8 + %.tr.i568 = trunc nuw nsw i32 %140 to i8 %153 = shl nuw i8 %.tr.i568, 4 %154 = or i8 %153, %.ph1126 store i8 %154, ptr %150, align 1, !tbaa !198 @@ -343270,7 +343270,7 @@ jsonIs4Hex.exit.i: ; preds = %127 br i1 %284, label %285, label %288 285: ; preds = %280 - %.tr.i571 = trunc nuw i32 %273 to i8 + %.tr.i571 = trunc nuw nsw i32 %273 to i8 %286 = shl nuw i8 %.tr.i571, 4 %287 = or disjoint i8 %286, 11 store i8 %287, ptr %283, align 1, !tbaa !198 @@ -343700,7 +343700,7 @@ jsonIs4Hex.exit.thread: ; preds = %453, %411, %426, %j br i1 %504, label %505, label %508 505: ; preds = %500 - %.tr.i578 = trunc nuw i32 %489 to i8 + %.tr.i578 = trunc nuw nsw i32 %489 to i8 %506 = shl nuw i8 %.tr.i578, 4 %507 = or i8 %506, %.1472.ph store i8 %507, ptr %503, align 1, !tbaa !198 @@ -344319,7 +344319,7 @@ sqlite3_strnicmp.exit592.thread630: ; preds = %sqlite3_strnicmp.ex br i1 %807, label %808, label %811 808: ; preds = %803 - %.tr.i595 = trunc nuw i32 %792 to i8 + %.tr.i595 = trunc nuw nsw i32 %792 to i8 %809 = shl nuw i8 %.tr.i595, 4 %810 = or i8 %809, %791 store i8 %810, ptr %806, align 1, !tbaa !198 @@ -344952,7 +344952,7 @@ define internal fastcc void @jsonBlobAppendNode(ptr noundef captures(none) %0, i br i1 %17, label %18, label %21 18: ; preds = %13 - %.tr = trunc nuw i32 %2 to i8 + %.tr = trunc nuw nsw i32 %2 to i8 %19 = shl nuw i8 %.tr, 4 %20 = or i8 %19, %1 store i8 %20, ptr %16, align 1, !tbaa !198 @@ -345233,7 +345233,7 @@ jsonBlobExpand.exit.thread: ; preds = %sqlite3DbRealloc.ex br i1 %13, label %76, label %79 76: ; preds = %73 - %.tr = trunc nuw i32 %2 to i8 + %.tr = trunc nuw nsw i32 %2 to i8 %77 = shl nuw i8 %.tr, 4 %78 = or disjoint i8 %75, %77 store i8 %78, ptr %.064, align 1, !tbaa !198 @@ -350355,7 +350355,7 @@ sqlite3DbMallocRaw.exit: ; preds = %135, %137 153: ; preds = %151 %154 = lshr i32 %147, 6 - %155 = trunc nuw i32 %154 to i8 + %155 = trunc nuw nsw i32 %154 to i8 %156 = or disjoint i8 %155, -64 %157 = add i32 %.0111158, 1 %158 = zext i32 %.0111158 to i64 @@ -350372,7 +350372,7 @@ sqlite3DbMallocRaw.exit: ; preds = %135, %137 165: ; preds = %163 %166 = lshr i32 %147, 12 - %167 = trunc nuw i32 %166 to i8 + %167 = trunc nuw nsw i32 %166 to i8 %168 = or disjoint i8 %167, -32 %169 = add i32 %.0111158, 1 %170 = zext i32 %.0111158 to i64 @@ -351007,7 +351007,7 @@ sqlite3_value_subtype.exit.thread.i: ; preds = %sqlite3_value_subty br i1 %203, label %204, label %207 204: ; preds = %199 - %.tr.i.i = trunc nuw i32 %.0.i.i82.i to i8 + %.tr.i.i = trunc nuw nsw i32 %.0.i.i82.i to i8 %205 = shl nuw i8 %.tr.i.i, 4 %206 = or disjoint i8 %205, 10 store i8 %206, ptr %202, align 1, !tbaa !198 @@ -351290,7 +351290,7 @@ sqlite3_value_text.exit101.i: ; preds = %297, %292 br i1 %346, label %347, label %350 347: ; preds = %342 - %.tr.i104.i = trunc nuw i32 %.0.i.i95.i to i8 + %.tr.i104.i = trunc nuw nsw i32 %.0.i.i95.i to i8 %348 = shl nuw i8 %.tr.i104.i, 4 %349 = or disjoint i8 %348, 5 store i8 %349, ptr %345, align 1, !tbaa !198 @@ -351450,7 +351450,7 @@ sqlite3_value_text.exit116.i: ; preds = %417, %412 br i1 %430, label %431, label %434 431: ; preds = %426 - %.tr.i119.i = trunc nuw i32 %.0.i.i110.i to i8 + %.tr.i119.i = trunc nuw nsw i32 %.0.i.i110.i to i8 %432 = shl nuw i8 %.tr.i119.i, 4 %433 = or disjoint i8 %432, 3 store i8 %433, ptr %429, align 1, !tbaa !198 @@ -357476,7 +357476,7 @@ sqlite3FtsUnicodeFold.exit.thread: ; preds = %121, %._crit_edge.i 196: ; preds = %194 %197 = lshr i32 %.0.i149199, 6 - %198 = trunc nuw i32 %197 to i8 + %198 = trunc nuw nsw i32 %197 to i8 %199 = or disjoint i8 %198, -64 %200 = getelementptr inbounds nuw i8, ptr %.1111, i64 1 store i8 %199, ptr %.1111, align 1, !tbaa !198 @@ -357493,7 +357493,7 @@ sqlite3FtsUnicodeFold.exit.thread: ; preds = %121, %._crit_edge.i 207: ; preds = %205 %208 = lshr i32 %.0.i149199, 12 - %209 = trunc nuw i32 %208 to i8 + %209 = trunc nuw nsw i32 %208 to i8 %210 = or disjoint i8 %209, -32 %211 = getelementptr inbounds nuw i8, ptr %.1111, i64 1 store i8 %210, ptr %.1111, align 1, !tbaa !198 @@ -371043,7 +371043,7 @@ fts3isspace.exit.thread.i.i.i.i: ; preds = %.lr.ph.i.i.i.i, %.l .critedge.loopexit.i.i.i.i.i: ; preds = %227 %231 = trunc nuw i64 %indvars.iv.next.i.i.i.i.i to i32 - %232 = trunc nuw i64 %225 to i32 + %232 = trunc nuw nsw i64 %225 to i32 %233 = add nsw i32 %231, 1 br label %sqlite3Fts3ReadInt.exit.i.i.i.i @@ -376041,7 +376041,7 @@ sqlite3_malloc64.exit.i381: ; preds = %.loopexit.i br i1 %or.cond.i.i.i, label %.lr.ph.i.i.i, label %sqlite3Fts3ReadInt.exit.i.i, !llvm.loop !3881 sqlite3Fts3ReadInt.exit.i.i: ; preds = %499 - %503 = trunc nuw i64 %497 to i32 + %503 = trunc nuw nsw i64 %497 to i32 %504 = icmp samesign ugt i64 %497, 10000000 %sext.i.i = shl i64 %indvars.iv.next.i.i.i, 32 %505 = ashr exact i64 %sext.i.i, 32 @@ -386756,7 +386756,7 @@ sqlite3_malloc64.exit.i.i: ; preds = %430 br i1 %472, label %451, label %._crit_edge203.loopexit.split.loop.exit248.i.i, !llvm.loop !4069 ._crit_edge203.loopexit.split.loop.exit248.i.i: ; preds = %468 - %indvars.le.i.i = trunc i64 %indvars.iv.next220.i.i to i32 + %indvars.le.i.i = trunc nsw i64 %indvars.iv.next220.i.i to i32 br label %._crit_edge203.i.i ._crit_edge203.i.i: ; preds = %456, %._crit_edge203.loopexit.split.loop.exit248.i.i, %439 diff --git a/bench/tev/optimized/ExrImageSaver.ll b/bench/tev/optimized/ExrImageSaver.ll index e216e6693a4..04687069943 100644 --- a/bench/tev/optimized/ExrImageSaver.ll +++ b/bench/tev/optimized/ExrImageSaver.ll @@ -2458,7 +2458,7 @@ _ZN3fmt2v96detail10to_pointerIcEEPT_NSt3__111conditionalIXsr3std7is_sameIS3_cEE5 br i1 %39, label %40, label %44 40: ; preds = %._crit_edge.i - %41 = trunc nuw i32 %.0.lcssa.i to i8 + %41 = trunc nuw nsw i32 %.0.lcssa.i to i8 %42 = or disjoint i8 %41, 48 %43 = getelementptr inbounds i8, ptr %.023.lcssa.i, i64 -1 store i8 %42, ptr %43, align 1 @@ -2527,7 +2527,7 @@ _ZNSt3__120back_insert_iteratorIN3fmt2v96detail6bufferIcEEEaSB8ne190000EOc.exit: br i1 %72, label %73, label %77 73: ; preds = %._crit_edge.i.i - %74 = trunc nuw i32 %.0.lcssa.i.i to i8 + %74 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %75 = or disjoint i8 %74, 48 %76 = getelementptr inbounds i8, ptr %.023.lcssa.i.i, i64 -1 store i8 %75, ptr %76, align 1 @@ -2672,7 +2672,7 @@ _ZN3fmt2v96detail10to_pointerIcEEPT_NSt3__111conditionalIXsr3std7is_sameIS3_cEE5 br i1 %33, label %34, label %38 34: ; preds = %._crit_edge.i - %35 = trunc nuw i32 %.0.lcssa.i to i8 + %35 = trunc nuw nsw i32 %.0.lcssa.i to i8 %36 = or disjoint i8 %35, 48 %37 = getelementptr inbounds i8, ptr %.023.lcssa.i, i64 -1 store i8 %36, ptr %37, align 1 @@ -2714,7 +2714,7 @@ _ZN3fmt2v96detail10to_pointerIcEEPT_NSt3__111conditionalIXsr3std7is_sameIS3_cEE5 br i1 %54, label %55, label %59 55: ; preds = %._crit_edge.i.i - %56 = trunc nuw i32 %.0.lcssa.i.i to i8 + %56 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %57 = or disjoint i8 %56, 48 %58 = getelementptr inbounds i8, ptr %.023.lcssa.i.i, i64 -1 store i8 %57, ptr %58, align 1 @@ -2872,7 +2872,7 @@ _ZN3fmt2v96detail10to_pointerIcEEPT_NSt3__111conditionalIXsr3std7is_sameIS3_cEE5 br i1 %40, label %41, label %45 41: ; preds = %._crit_edge.i - %42 = trunc nuw i64 %.0.lcssa.i to i8 + %42 = trunc nuw nsw i64 %.0.lcssa.i to i8 %43 = or disjoint i8 %42, 48 %44 = getelementptr inbounds i8, ptr %.023.lcssa.i, i64 -1 store i8 %43, ptr %44, align 1 @@ -2939,7 +2939,7 @@ _ZNSt3__120back_insert_iteratorIN3fmt2v96detail6bufferIcEEEaSB8ne190000EOc.exit: br i1 %71, label %72, label %76 72: ; preds = %._crit_edge.i.i - %73 = trunc nuw i64 %.0.lcssa.i.i to i8 + %73 = trunc nuw nsw i64 %.0.lcssa.i.i to i8 %74 = or disjoint i8 %73, 48 %75 = getelementptr inbounds i8, ptr %.023.lcssa.i.i, i64 -1 store i8 %74, ptr %75, align 1 @@ -3086,7 +3086,7 @@ _ZN3fmt2v96detail10to_pointerIcEEPT_NSt3__111conditionalIXsr3std7is_sameIS3_cEE5 br i1 %35, label %36, label %40 36: ; preds = %._crit_edge.i - %37 = trunc nuw i64 %.0.lcssa.i to i8 + %37 = trunc nuw nsw i64 %.0.lcssa.i to i8 %38 = or disjoint i8 %37, 48 %39 = getelementptr inbounds i8, ptr %.023.lcssa.i, i64 -1 store i8 %38, ptr %39, align 1 @@ -3126,7 +3126,7 @@ _ZN3fmt2v96detail10to_pointerIcEEPT_NSt3__111conditionalIXsr3std7is_sameIS3_cEE5 br i1 %54, label %55, label %59 55: ; preds = %._crit_edge.i.i - %56 = trunc nuw i64 %.0.lcssa.i.i to i8 + %56 = trunc nuw nsw i64 %.0.lcssa.i.i to i8 %57 = or disjoint i8 %56, 48 %58 = getelementptr inbounds i8, ptr %.023.lcssa.i.i, i64 -1 store i8 %57, ptr %58, align 1 @@ -3330,7 +3330,7 @@ _ZN3fmt2v96detail10to_pointerIcEEPT_NSt3__111conditionalIXsr3std7is_sameIS3_cEE5 br i1 %49, label %50, label %54 50: ; preds = %._crit_edge.i - %51 = trunc nuw i128 %.026.lcssa.i to i8 + %51 = trunc nuw nsw i128 %.026.lcssa.i to i8 %52 = or disjoint i8 %51, 48 %53 = getelementptr inbounds i8, ptr %.0.lcssa.i, i64 -1 store i8 %52, ptr %53, align 1 @@ -3401,7 +3401,7 @@ _ZNSt3__120back_insert_iteratorIN3fmt2v96detail6bufferIcEEEaSB8ne190000EOc.exit: br i1 %82, label %83, label %87 83: ; preds = %._crit_edge.i.i - %84 = trunc nuw i128 %.026.lcssa.i.i to i8 + %84 = trunc nuw nsw i128 %.026.lcssa.i.i to i8 %85 = or disjoint i8 %84, 48 %86 = getelementptr inbounds i8, ptr %.0.lcssa.i.i, i64 -1 store i8 %85, ptr %86, align 1 @@ -3574,7 +3574,7 @@ _ZN3fmt2v96detail10to_pointerIcEEPT_NSt3__111conditionalIXsr3std7is_sameIS3_cEE5 br i1 %42, label %43, label %47 43: ; preds = %._crit_edge.i - %44 = trunc nuw i128 %.026.lcssa.i to i8 + %44 = trunc nuw nsw i128 %.026.lcssa.i to i8 %45 = or disjoint i8 %44, 48 %46 = getelementptr inbounds i8, ptr %.0.lcssa.i, i64 -1 store i8 %45, ptr %46, align 1 @@ -3618,7 +3618,7 @@ _ZN3fmt2v96detail10to_pointerIcEEPT_NSt3__111conditionalIXsr3std7is_sameIS3_cEE5 br i1 %63, label %64, label %68 64: ; preds = %._crit_edge.i.i - %65 = trunc nuw i128 %.026.lcssa.i.i to i8 + %65 = trunc nuw nsw i128 %.026.lcssa.i.i to i8 %66 = or disjoint i8 %65, 48 %67 = getelementptr inbounds i8, ptr %.0.lcssa.i.i, i64 -1 store i8 %66, ptr %67, align 1 @@ -3846,7 +3846,7 @@ _ZNSt3__120back_insert_iteratorIN3fmt2v96detail6bufferIcEEEaSB8ne190000EOc.exit: br i1 %74, label %75, label %79 75: ; preds = %._crit_edge.i.i.i - %76 = trunc nuw i32 %.0.lcssa.i.i.i to i8 + %76 = trunc nuw nsw i32 %.0.lcssa.i.i.i to i8 %77 = or disjoint i8 %76, 48 %78 = getelementptr inbounds i8, ptr %.023.lcssa.i.i.i, i64 -1 store i8 %77, ptr %78, align 1 @@ -4823,7 +4823,7 @@ define linkonce_odr dso_local ptr @_ZN3fmt2v96detail19write_int_localizedINS0_8a br i1 %31, label %32, label %36 32: ; preds = %._crit_edge.i - %33 = trunc nuw i64 %.0.lcssa.i to i8 + %33 = trunc nuw nsw i64 %.0.lcssa.i to i8 %34 = or disjoint i8 %33, 48 %35 = getelementptr inbounds i8, ptr %.023.lcssa.i, i64 -1 store i8 %34, ptr %35, align 1 @@ -5963,7 +5963,7 @@ _ZN3fmt2v96detail6fill_nINS0_8appenderEmcEET_S4_T0_RKT1_.exit: ; preds = %_ZNSt3 br i1 %54, label %55, label %59 55: ; preds = %._crit_edge.i.i.i - %56 = trunc nuw i32 %.0.lcssa.i.i.i to i8 + %56 = trunc nuw nsw i32 %.0.lcssa.i.i.i to i8 %57 = or disjoint i8 %56, 48 %58 = getelementptr inbounds i8, ptr %.023.lcssa.i.i.i, i64 -1 store i8 %57, ptr %58, align 1 @@ -10459,7 +10459,7 @@ define linkonce_odr dso_local ptr @_ZN3fmt2v96detail17write_significandINS0_8app br i1 %19, label %20, label %24 20: ; preds = %._crit_edge.i.i - %21 = trunc nuw i32 %.0.lcssa.i.i to i8 + %21 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %22 = or disjoint i8 %21, 48 %23 = getelementptr inbounds i8, ptr %.023.lcssa.i.i, i64 -1 store i8 %22, ptr %23, align 1 @@ -10545,7 +10545,7 @@ define linkonce_odr dso_local ptr @_ZN3fmt2v96detail17write_significandINS0_8app br i1 %62, label %63, label %67 63: ; preds = %._crit_edge.i37.i - %64 = trunc nuw i32 %.0.lcssa.i39.i to i8 + %64 = trunc nuw nsw i32 %.0.lcssa.i39.i to i8 %65 = or disjoint i8 %64, 48 %66 = getelementptr inbounds i8, ptr %.023.lcssa.i38.i, i64 -1 store i8 %65, ptr %66, align 1 @@ -11246,7 +11246,7 @@ define linkonce_odr dso_local ptr @_ZN3fmt2v96detail17write_significandIcNS0_8ap br i1 %23, label %24, label %28 24: ; preds = %._crit_edge.i.i.i - %25 = trunc nuw i32 %.0.lcssa.i.i.i to i8 + %25 = trunc nuw nsw i32 %.0.lcssa.i.i.i to i8 %26 = or disjoint i8 %25, 48 %27 = getelementptr inbounds i8, ptr %.023.lcssa.i.i.i, i64 -1 store i8 %26, ptr %27, align 1 @@ -11402,7 +11402,7 @@ _ZNSt3__120back_insert_iteratorIN3fmt2v96detail6bufferIcEEEaSB8ne190000ERKc.exit br i1 %92, label %93, label %97 93: ; preds = %._crit_edge.i.i.i16 - %94 = trunc nuw i32 %.0.lcssa.i.i.i18 to i8 + %94 = trunc nuw nsw i32 %.0.lcssa.i.i.i18 to i8 %95 = or disjoint i8 %94, 48 %96 = getelementptr inbounds i8, ptr %.023.lcssa.i.i.i17, i64 -1 store i8 %95, ptr %96, align 1 @@ -12508,7 +12508,7 @@ _ZN3fmt2v96detail6fill_nINS0_8appenderEicEET_S4_T0_RKT1_.exit: ; preds = %_ZNSt3 br i1 %92, label %93, label %97 93: ; preds = %._crit_edge.i.i.i - %94 = trunc nuw i32 %.0.lcssa.i.i.i to i8 + %94 = trunc nuw nsw i32 %.0.lcssa.i.i.i to i8 %95 = or disjoint i8 %94, 48 %96 = getelementptr inbounds i8, ptr %.023.lcssa.i.i.i, i64 -1 store i8 %95, ptr %96, align 1 @@ -13923,7 +13923,7 @@ define linkonce_odr dso_local ptr @_ZN3fmt2v96detail17write_significandINS0_8app br i1 %18, label %19, label %23 19: ; preds = %._crit_edge.i.i - %20 = trunc nuw i64 %.0.lcssa.i.i to i8 + %20 = trunc nuw nsw i64 %.0.lcssa.i.i to i8 %21 = or disjoint i8 %20, 48 %22 = getelementptr inbounds i8, ptr %.023.lcssa.i.i, i64 -1 store i8 %21, ptr %22, align 1 @@ -14006,7 +14006,7 @@ define linkonce_odr dso_local ptr @_ZN3fmt2v96detail17write_significandINS0_8app br i1 %58, label %59, label %63 59: ; preds = %._crit_edge.i37.i - %60 = trunc nuw i64 %.0.lcssa.i39.i to i8 + %60 = trunc nuw nsw i64 %.0.lcssa.i39.i to i8 %61 = or disjoint i8 %60, 48 %62 = getelementptr inbounds i8, ptr %.023.lcssa.i38.i, i64 -1 store i8 %61, ptr %62, align 1 @@ -14524,7 +14524,7 @@ define linkonce_odr dso_local ptr @_ZN3fmt2v96detail17write_significandIcNS0_8ap br i1 %22, label %23, label %27 23: ; preds = %._crit_edge.i.i.i - %24 = trunc nuw i64 %.0.lcssa.i.i.i to i8 + %24 = trunc nuw nsw i64 %.0.lcssa.i.i.i to i8 %25 = or disjoint i8 %24, 48 %26 = getelementptr inbounds i8, ptr %.023.lcssa.i.i.i, i64 -1 store i8 %25, ptr %26, align 1 @@ -14678,7 +14678,7 @@ _ZNSt3__120back_insert_iteratorIN3fmt2v96detail6bufferIcEEEaSB8ne190000ERKc.exit br i1 %89, label %90, label %94 90: ; preds = %._crit_edge.i.i.i16 - %91 = trunc nuw i64 %.0.lcssa.i.i.i18 to i8 + %91 = trunc nuw nsw i64 %.0.lcssa.i.i.i18 to i8 %92 = or disjoint i8 %91, 48 %93 = getelementptr inbounds i8, ptr %.023.lcssa.i.i.i17, i64 -1 store i8 %92, ptr %93, align 1 @@ -15782,7 +15782,7 @@ _ZN3fmt2v96detail6fill_nINS0_8appenderEicEET_S4_T0_RKT1_.exit: ; preds = %_ZNSt3 br i1 %91, label %92, label %96 92: ; preds = %._crit_edge.i.i.i - %93 = trunc nuw i64 %.0.lcssa.i.i.i to i8 + %93 = trunc nuw nsw i64 %.0.lcssa.i.i.i to i8 %94 = or disjoint i8 %93, 48 %95 = getelementptr inbounds i8, ptr %.023.lcssa.i.i.i, i64 -1 store i8 %94, ptr %95, align 1 @@ -25884,7 +25884,7 @@ _ZN3fmt2v96detail13width_checkerINS1_13error_handlerEEclIxTnNSt3__19enable_ifIXs 35: ; preds = %_ZN3fmt2v96detail13width_checkerINS1_13error_handlerEEclIxTnNSt3__19enable_ifIXsr10is_integerIT_EE5valueEiE4typeELi0EEEyS8_.exit.thread, %_ZN3fmt2v96detail13width_checkerINS1_13error_handlerEEclIxTnNSt3__19enable_ifIXsr10is_integerIT_EE5valueEiE4typeELi0EEEyS8_.exit %.053 = phi i64 [ %8, %_ZN3fmt2v96detail13width_checkerINS1_13error_handlerEEclIxTnNSt3__19enable_ifIXsr10is_integerIT_EE5valueEiE4typeELi0EEEyS8_.exit.thread ], [ %.0, %_ZN3fmt2v96detail13width_checkerINS1_13error_handlerEEclIxTnNSt3__19enable_ifIXsr10is_integerIT_EE5valueEiE4typeELi0EEEyS8_.exit ] - %36 = trunc nuw i64 %.053 to i32 + %36 = trunc nuw nsw i64 %.053 to i32 ret i32 %36 } @@ -26323,7 +26323,7 @@ _ZN3fmt2v96detail17precision_checkerINS1_13error_handlerEEclIxTnNSt3__19enable_i 35: ; preds = %_ZN3fmt2v96detail17precision_checkerINS1_13error_handlerEEclIxTnNSt3__19enable_ifIXsr10is_integerIT_EE5valueEiE4typeELi0EEEyS8_.exit.thread, %_ZN3fmt2v96detail17precision_checkerINS1_13error_handlerEEclIxTnNSt3__19enable_ifIXsr10is_integerIT_EE5valueEiE4typeELi0EEEyS8_.exit %.053 = phi i64 [ %8, %_ZN3fmt2v96detail17precision_checkerINS1_13error_handlerEEclIxTnNSt3__19enable_ifIXsr10is_integerIT_EE5valueEiE4typeELi0EEEyS8_.exit.thread ], [ %.0, %_ZN3fmt2v96detail17precision_checkerINS1_13error_handlerEEclIxTnNSt3__19enable_ifIXsr10is_integerIT_EE5valueEiE4typeELi0EEEyS8_.exit ] - %36 = trunc nuw i64 %.053 to i32 + %36 = trunc nuw nsw i64 %.053 to i32 ret i32 %36 } @@ -26467,7 +26467,7 @@ _ZNSt3__120back_insert_iteratorIN3fmt2v96detail6bufferIcEEEaSB8ne190000EOc.exit: br i1 %74, label %75, label %79 75: ; preds = %._crit_edge.i.i.i - %76 = trunc nuw i64 %.0.lcssa.i.i.i to i8 + %76 = trunc nuw nsw i64 %.0.lcssa.i.i.i to i8 %77 = or disjoint i8 %76, 48 %78 = getelementptr inbounds i8, ptr %.023.lcssa.i.i.i, i64 -1 store i8 %77, ptr %78, align 1 @@ -27716,7 +27716,7 @@ _ZN3fmt2v96detail6fill_nINS0_8appenderEmcEET_S4_T0_RKT1_.exit: ; preds = %_ZNSt3 br i1 %53, label %54, label %58 54: ; preds = %._crit_edge.i.i.i - %55 = trunc nuw i64 %.0.lcssa.i.i.i to i8 + %55 = trunc nuw nsw i64 %.0.lcssa.i.i.i to i8 %56 = or disjoint i8 %55, 48 %57 = getelementptr inbounds i8, ptr %.023.lcssa.i.i.i, i64 -1 store i8 %56, ptr %57, align 1 @@ -29397,7 +29397,7 @@ _ZNSt3__120back_insert_iteratorIN3fmt2v96detail6bufferIcEEEaSB8ne190000EOc.exit: br i1 %76, label %77, label %81 77: ; preds = %._crit_edge.i.i.i - %78 = trunc nuw i128 %.026.lcssa.i.i.i to i8 + %78 = trunc nuw nsw i128 %.026.lcssa.i.i.i to i8 %79 = or disjoint i8 %78, 48 %80 = getelementptr inbounds i8, ptr %.0.lcssa.i.i.i, i64 -1 store i8 %79, ptr %80, align 1 @@ -30020,7 +30020,7 @@ _ZN3fmt2v96detail12count_digitsEo.exit: ; preds = %24, %14, %18, %22 %.026.lcssa.i = phi i128 [ %.sroa.0.0.insert.insert.i.i, %_ZN3fmt2v96detail12count_digitsEo.exit ], [ %32, %.lr.ph.i ] %.0.lcssa.i = phi ptr [ %29, %_ZN3fmt2v96detail12count_digitsEo.exit ], [ %31, %.lr.ph.i ] %39 = icmp samesign ult i128 %.026.lcssa.i, 10 - %extract.t21 = trunc i128 %.026.lcssa.i to i8 + %extract.t21 = trunc nuw nsw i128 %.026.lcssa.i to i8 br i1 %39, label %40, label %43 40: ; preds = %._crit_edge.i.thread, %._crit_edge.i @@ -30803,7 +30803,7 @@ _ZN3fmt2v96detail6fill_nINS0_8appenderEmcEET_S4_T0_RKT1_.exit: ; preds = %_ZNSt3 br i1 %54, label %55, label %59 55: ; preds = %._crit_edge.i.i.i - %56 = trunc nuw i128 %.026.lcssa.i.i.i to i8 + %56 = trunc nuw nsw i128 %.026.lcssa.i.i.i to i8 %57 = or disjoint i8 %56, 48 %58 = getelementptr inbounds i8, ptr %.0.lcssa.i.i.i, i64 -1 store i8 %57, ptr %58, align 1 @@ -33530,7 +33530,7 @@ _ZN3fmt2v96detail10to_pointerIcEEPT_NSt3__111conditionalIXsr3std7is_sameIS3_cEE5 br i1 %35, label %36, label %40 36: ; preds = %._crit_edge.i - %37 = trunc nuw i64 %.0.lcssa.i to i8 + %37 = trunc nuw nsw i64 %.0.lcssa.i to i8 %38 = or disjoint i8 %37, 48 %39 = getelementptr inbounds i8, ptr %.023.lcssa.i, i64 -1 store i8 %38, ptr %39, align 1 @@ -33570,7 +33570,7 @@ _ZN3fmt2v96detail10to_pointerIcEEPT_NSt3__111conditionalIXsr3std7is_sameIS3_cEE5 br i1 %54, label %55, label %59 55: ; preds = %._crit_edge.i.i - %56 = trunc nuw i64 %.0.lcssa.i.i to i8 + %56 = trunc nuw nsw i64 %.0.lcssa.i.i to i8 %57 = or disjoint i8 %56, 48 %58 = getelementptr inbounds i8, ptr %.023.lcssa.i.i, i64 -1 store i8 %57, ptr %58, align 1 diff --git a/bench/tev/optimized/HelpWindow.ll b/bench/tev/optimized/HelpWindow.ll index a793bec8046..f506fb58357 100644 --- a/bench/tev/optimized/HelpWindow.ll +++ b/bench/tev/optimized/HelpWindow.ll @@ -709,7 +709,7 @@ _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ENS_2 _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ENS_24__uninitialized_size_tagEmRKS4_.exit.i: ; preds = %279 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %13, i8 0, i64 24, i1 false), !alias.scope !5 - %290 = trunc nuw i64 %277 to i8 + %290 = trunc nuw nsw i64 %277 to i8 %291 = shl nuw nsw i8 %290, 1 store i8 %291, ptr %13, align 8, !alias.scope !5 %292 = getelementptr inbounds nuw i8, ptr %13, i64 1 @@ -774,7 +774,7 @@ _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ENS_2 _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ENS_24__uninitialized_size_tagEmRKS4_.exit.i382: ; preds = %309 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %15, i8 0, i64 24, i1 false), !alias.scope !8 - %320 = trunc nuw i64 %307 to i8 + %320 = trunc nuw nsw i64 %307 to i8 %321 = shl nuw nsw i8 %320, 1 store i8 %321, ptr %15, align 8, !alias.scope !8 %322 = getelementptr inbounds nuw i8, ptr %15, i64 1 @@ -839,7 +839,7 @@ _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ENS_2 _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ENS_24__uninitialized_size_tagEmRKS4_.exit.i393: ; preds = %339 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %17, i8 0, i64 24, i1 false), !alias.scope !11 - %350 = trunc nuw i64 %337 to i8 + %350 = trunc nuw nsw i64 %337 to i8 %351 = shl nuw nsw i8 %350, 1 store i8 %351, ptr %17, align 8, !alias.scope !11 %352 = getelementptr inbounds nuw i8, ptr %17, i64 1 @@ -905,7 +905,7 @@ _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ENS_2 _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ENS_24__uninitialized_size_tagEmRKS4_.exit.i404: ; preds = %369 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %21, i8 0, i64 24, i1 false), !alias.scope !14 - %380 = trunc nuw i64 %367 to i8 + %380 = trunc nuw nsw i64 %367 to i8 %381 = shl nuw nsw i8 %380, 1 store i8 %381, ptr %21, align 8, !alias.scope !14 %382 = getelementptr inbounds nuw i8, ptr %21, i64 1 @@ -990,7 +990,7 @@ _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ENS_2 _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ENS_24__uninitialized_size_tagEmRKS4_.exit.i418: ; preds = %402 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %23, i8 0, i64 24, i1 false), !alias.scope !23 - %413 = trunc nuw i64 %400 to i8 + %413 = trunc nuw nsw i64 %400 to i8 %414 = shl nuw nsw i8 %413, 1 store i8 %414, ptr %23, align 8, !alias.scope !23 %415 = getelementptr inbounds nuw i8, ptr %23, i64 1 @@ -1055,7 +1055,7 @@ _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ENS_2 _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ENS_24__uninitialized_size_tagEmRKS4_.exit.i429: ; preds = %432 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %25, i8 0, i64 24, i1 false), !alias.scope !26 - %443 = trunc nuw i64 %430 to i8 + %443 = trunc nuw nsw i64 %430 to i8 %444 = shl nuw nsw i8 %443, 1 store i8 %444, ptr %25, align 8, !alias.scope !26 %445 = getelementptr inbounds nuw i8, ptr %25, i64 1 @@ -1120,7 +1120,7 @@ _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ENS_2 _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ENS_24__uninitialized_size_tagEmRKS4_.exit.i440: ; preds = %462 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %27, i8 0, i64 24, i1 false), !alias.scope !29 - %473 = trunc nuw i64 %460 to i8 + %473 = trunc nuw nsw i64 %460 to i8 %474 = shl nuw nsw i8 %473, 1 store i8 %474, ptr %27, align 8, !alias.scope !29 %475 = getelementptr inbounds nuw i8, ptr %27, i64 1 @@ -1185,7 +1185,7 @@ _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ENS_2 _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ENS_24__uninitialized_size_tagEmRKS4_.exit.i451: ; preds = %492 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %29, i8 0, i64 24, i1 false), !alias.scope !32 - %503 = trunc nuw i64 %490 to i8 + %503 = trunc nuw nsw i64 %490 to i8 %504 = shl nuw nsw i8 %503, 1 store i8 %504, ptr %29, align 8, !alias.scope !32 %505 = getelementptr inbounds nuw i8, ptr %29, i64 1 @@ -1250,7 +1250,7 @@ _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ENS_2 _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ENS_24__uninitialized_size_tagEmRKS4_.exit.i462: ; preds = %522 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %31, i8 0, i64 24, i1 false), !alias.scope !35 - %533 = trunc nuw i64 %520 to i8 + %533 = trunc nuw nsw i64 %520 to i8 %534 = shl nuw nsw i8 %533, 1 store i8 %534, ptr %31, align 8, !alias.scope !35 %535 = getelementptr inbounds nuw i8, ptr %31, i64 1 @@ -1505,7 +1505,7 @@ _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ENS_2 _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ENS_24__uninitialized_size_tagEmRKS4_.exit.i514: ; preds = %583 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %53, i8 0, i64 24, i1 false), !alias.scope !44 - %594 = trunc nuw i64 %581 to i8 + %594 = trunc nuw nsw i64 %581 to i8 %595 = shl nuw nsw i8 %594, 1 store i8 %595, ptr %53, align 8, !alias.scope !44 %596 = getelementptr inbounds nuw i8, ptr %53, i64 1 @@ -1570,7 +1570,7 @@ _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ENS_2 _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ENS_24__uninitialized_size_tagEmRKS4_.exit.i525: ; preds = %613 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %55, i8 0, i64 24, i1 false), !alias.scope !47 - %624 = trunc nuw i64 %611 to i8 + %624 = trunc nuw nsw i64 %611 to i8 %625 = shl nuw nsw i8 %624, 1 store i8 %625, ptr %55, align 8, !alias.scope !47 %626 = getelementptr inbounds nuw i8, ptr %55, i64 1 @@ -2639,7 +2639,7 @@ _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ENS_2 _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ENS_24__uninitialized_size_tagEmRKS4_.exit.i639: ; preds = %885 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %101, i8 0, i64 24, i1 false), !alias.scope !50 - %896 = trunc nuw i64 %883 to i8 + %896 = trunc nuw nsw i64 %883 to i8 %897 = shl nuw nsw i8 %896, 1 store i8 %897, ptr %101, align 8, !alias.scope !50 %898 = getelementptr inbounds nuw i8, ptr %101, i64 1 @@ -2704,7 +2704,7 @@ _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ENS_2 _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ENS_24__uninitialized_size_tagEmRKS4_.exit.i650: ; preds = %915 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %103, i8 0, i64 24, i1 false), !alias.scope !53 - %926 = trunc nuw i64 %913 to i8 + %926 = trunc nuw nsw i64 %913 to i8 %927 = shl nuw nsw i8 %926, 1 store i8 %927, ptr %103, align 8, !alias.scope !53 %928 = getelementptr inbounds nuw i8, ptr %103, i64 1 @@ -2783,7 +2783,7 @@ _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ENS_2 _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ENS_24__uninitialized_size_tagEmRKS4_.exit.i665: ; preds = %946 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %107, i8 0, i64 24, i1 false), !alias.scope !56 - %957 = trunc nuw i64 %944 to i8 + %957 = trunc nuw nsw i64 %944 to i8 %958 = shl nuw nsw i8 %957, 1 store i8 %958, ptr %107, align 8, !alias.scope !56 %959 = getelementptr inbounds nuw i8, ptr %107, i64 1 @@ -2870,7 +2870,7 @@ _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ENS_2 _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ENS_24__uninitialized_size_tagEmRKS4_.exit.i680: ; preds = %978 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %111, i8 0, i64 24, i1 false), !alias.scope !59 - %989 = trunc nuw i64 %975 to i8 + %989 = trunc nuw nsw i64 %975 to i8 %990 = shl nuw nsw i8 %989, 1 store i8 %990, ptr %111, align 8, !alias.scope !59 %991 = getelementptr inbounds nuw i8, ptr %111, i64 1 diff --git a/bench/tinygltf/optimized/tiny_gltf.ll b/bench/tinygltf/optimized/tiny_gltf.ll index d183b3b2ff3..417ee676da4 100644 --- a/bench/tinygltf/optimized/tiny_gltf.ll +++ b/bench/tinygltf/optimized/tiny_gltf.ll @@ -17294,7 +17294,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i: ; preds = %72, %70, %66, %62, br label %_ZNSt7__cxx119to_stringEi.exit 113: ; preds = %._crit_edge.i.i - %114 = trunc nuw i32 %.0.lcssa.i.i to i8 + %114 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %115 = or disjoint i8 %114, 48 br label %_ZNSt7__cxx119to_stringEi.exit @@ -17909,7 +17909,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i220: ; preds = %306, %304, %300, %2 br label %_ZNSt7__cxx119to_stringEi.exit230 347: ; preds = %._crit_edge.i.i223 - %348 = trunc nuw i32 %.0.lcssa.i.i224 to i8 + %348 = trunc nuw nsw i32 %.0.lcssa.i.i224 to i8 %349 = or disjoint i8 %348, 48 br label %_ZNSt7__cxx119to_stringEi.exit230 @@ -18448,7 +18448,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i294: ; preds = %508, %506, %502, %4 br label %_ZNSt7__cxx119to_stringEi.exit304 549: ; preds = %._crit_edge.i.i297 - %550 = trunc nuw i32 %.0.lcssa.i.i298 to i8 + %550 = trunc nuw nsw i32 %.0.lcssa.i.i298 to i8 %551 = or disjoint i8 %550, 48 br label %_ZNSt7__cxx119to_stringEi.exit304 @@ -18982,7 +18982,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i368: ; preds = %707, %705, %701, %6 br label %_ZNSt7__cxx119to_stringEi.exit378 748: ; preds = %._crit_edge.i.i371 - %749 = trunc nuw i32 %.0.lcssa.i.i372 to i8 + %749 = trunc nuw nsw i32 %.0.lcssa.i.i372 to i8 %750 = or disjoint i8 %749, 48 br label %_ZNSt7__cxx119to_stringEi.exit378 @@ -19516,7 +19516,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i442: ; preds = %906, %904, %900, %8 br label %_ZNSt7__cxx119to_stringEi.exit452 947: ; preds = %._crit_edge.i.i445 - %948 = trunc nuw i32 %.0.lcssa.i.i446 to i8 + %948 = trunc nuw nsw i32 %.0.lcssa.i.i446 to i8 %949 = or disjoint i8 %948, 48 br label %_ZNSt7__cxx119to_stringEi.exit452 @@ -20255,7 +20255,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit: ; preds = %16, %2, %6, %10, %1 br label %_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.exit 57: ; preds = %._crit_edge.i - %58 = trunc nuw i32 %.0.lcssa.i to i8 + %58 = trunc nuw nsw i32 %.0.lcssa.i to i8 %59 = or disjoint i8 %58, 48 br label %_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.exit @@ -69145,7 +69145,7 @@ _ZNSt8__detail14__to_chars_lenIyEEjT_i.exit: ; preds = %15, %2, %5, %9, %13 br label %_ZNSt8__detail18__to_chars_10_implIyEEvPcjT_.exit 51: ; preds = %._crit_edge.i - %52 = trunc nuw i64 %.0.lcssa.i to i8 + %52 = trunc nuw nsw i64 %.0.lcssa.i to i8 %53 = or disjoint i8 %52, 48 br label %_ZNSt8__detail18__to_chars_10_implIyEEvPcjT_.exit @@ -91978,7 +91978,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i: ; preds = %335, %333, %329, %3 br label %_ZNSt7__cxx119to_stringEi.exit 376: ; preds = %._crit_edge.i.i - %377 = trunc nuw i32 %.0.lcssa.i.i to i8 + %377 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %378 = or disjoint i8 %377, 48 br label %_ZNSt7__cxx119to_stringEi.exit @@ -93714,7 +93714,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i: ; preds = %281, %279, %275, %2 br label %_ZNSt7__cxx119to_stringEi.exit 318: ; preds = %._crit_edge.i.i178 - %319 = trunc nuw i32 %.0.lcssa.i.i to i8 + %319 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %320 = or disjoint i8 %319, 48 br label %_ZNSt7__cxx119to_stringEi.exit @@ -107347,7 +107347,7 @@ _ZL10stbi__get8P13stbi__context.exit318.thread: ; preds = %198, %_ZL10stbi__ge br label %.thread406 260: ; preds = %256 - %.lhs.trunc = trunc nuw i32 %65 to i16 + %.lhs.trunc = trunc nuw nsw i32 %65 to i16 %261 = udiv i16 %.lhs.trunc, 3 %.zext = zext nneg i16 %261 to i32 %262 = mul nuw nsw i32 %.zext, 3 @@ -130766,7 +130766,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i: ; preds = %40, %38, %34, %30, br label %_ZNSt7__cxx119to_stringEi.exit 81: ; preds = %._crit_edge.i.i - %82 = trunc nuw i32 %.0.lcssa.i.i to i8 + %82 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %83 = or disjoint i8 %82, 48 br label %_ZNSt7__cxx119to_stringEi.exit @@ -140409,7 +140409,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i84: ; _ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPKcEEE3addEi.exit86: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i84, %340 %341 = phi ptr [ %.pre.i.i85, %340 ], [ %333, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i84 ] - %342 = trunc i32 %.pr.i to i8 + %342 = trunc nuw nsw i32 %.pr.i to i8 %343 = getelementptr inbounds nuw i8, ptr %341, i64 %331 store i8 %342, ptr %343, align 1, !tbaa !21 store i64 %332, ptr %30, align 8, !tbaa !157 @@ -140617,7 +140617,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i26: ; _ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPKcEEE3addEi.exit28: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i26, %54 %55 = phi ptr [ %.pre.i.i27, %54 ], [ %46, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i26 ] - %56 = trunc i32 %4 to i8 + %56 = trunc nuw nsw i32 %4 to i8 %57 = getelementptr inbounds nuw i8, ptr %55, i64 %44 store i8 %56, ptr %57, align 1, !tbaa !21 store i64 %45, ptr %43, align 8, !tbaa !157 @@ -140946,7 +140946,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i38: ; _ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPKcEEE3addEi.exit40: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i38, %197 %198 = phi ptr [ %.pre.i.i39, %197 ], [ %190, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i38 ] - %199 = trunc i32 %.pr.i to i8 + %199 = trunc nuw nsw i32 %.pr.i to i8 %200 = getelementptr inbounds nuw i8, ptr %198, i64 %188 store i8 %199, ptr %200, align 1, !tbaa !21 store i64 %189, ptr %92, align 8, !tbaa !157 @@ -141016,7 +141016,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i44: ; _ZN8nlohmann6detail5lexerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPKcEEE3addEi.exit46: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i44, %231 %232 = phi ptr [ %.pre.i.i45, %231 ], [ %224, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i44 ] - %233 = trunc i32 %.pr.i to i8 + %233 = trunc nuw nsw i32 %.pr.i to i8 %234 = getelementptr inbounds nuw i8, ptr %232, i64 %222 store i8 %233, ptr %234, align 1, !tbaa !21 store i64 %223, ptr %92, align 8, !tbaa !157 @@ -151100,7 +151100,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit: ; preds = %15, %2, %5, %9, %13 br label %_ZNSt8__detail18__to_chars_10_implImEEvPcjT_.exit 51: ; preds = %._crit_edge.i - %52 = trunc nuw i64 %.0.lcssa.i to i8 + %52 = trunc nuw nsw i64 %.0.lcssa.i to i8 %53 = or disjoint i8 %52, 48 br label %_ZNSt8__detail18__to_chars_10_implImEEvPcjT_.exit @@ -153273,7 +153273,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i: ; preds = %22, %20, %16, %12, br label %_ZNSt7__cxx119to_stringEm.exit 58: ; preds = %._crit_edge.i.i - %59 = trunc nuw i64 %.0.lcssa.i.i to i8 + %59 = trunc nuw nsw i64 %.0.lcssa.i.i to i8 %60 = or disjoint i8 %59, 48 br label %_ZNSt7__cxx119to_stringEm.exit @@ -153464,7 +153464,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i17: ; preds = %109, %107, %103, %9 br label %148 145: ; preds = %._crit_edge.i.i19 - %146 = trunc nuw i64 %.0.lcssa.i.i20 to i8 + %146 = trunc nuw nsw i64 %.0.lcssa.i.i20 to i8 %147 = or disjoint i8 %146, 48 br label %148 @@ -157322,7 +157322,7 @@ _ZN8nlohmann6detail10serializerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basi %.0.lcssa38.i = phi ptr [ %363, %._crit_edge.thread.i94 ], [ %.0.lcssa.i, %._crit_edge.i93 ] %.021.lcssa37.i = phi i64 [ %354, %._crit_edge.thread.i94 ], [ %.021.lcssa.i, %._crit_edge.i93 ] %400 = phi i64 [ 1, %._crit_edge.thread.i94 ], [ %379, %._crit_edge.i93 ] - %401 = trunc nuw i64 %.021.lcssa37.i to i8 + %401 = trunc nuw nsw i64 %.021.lcssa37.i to i8 %402 = or disjoint i8 %401, 48 %403 = getelementptr inbounds i8, ptr %.0.lcssa38.i, i64 -1 store i8 %402, ptr %403, align 1, !tbaa !21 @@ -157642,7 +157642,7 @@ _ZN8nlohmann6detail10serializerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basi %.0.lcssa38.i117 = phi ptr [ %539, %._crit_edge.thread.i122 ], [ %.0.lcssa.i116, %._crit_edge.i114 ] %.021.lcssa37.i118 = phi i64 [ %530, %._crit_edge.thread.i122 ], [ %.021.lcssa.i115, %._crit_edge.i114 ] %576 = phi i64 [ 1, %._crit_edge.thread.i122 ], [ %555, %._crit_edge.i114 ] - %577 = trunc nuw i64 %.021.lcssa37.i118 to i8 + %577 = trunc nuw nsw i64 %.021.lcssa37.i118 to i8 %578 = or disjoint i8 %577, 48 %579 = getelementptr inbounds i8, ptr %.0.lcssa38.i117, i64 -1 store i8 %578, ptr %579, align 1, !tbaa !21 @@ -157794,7 +157794,7 @@ _ZN8nlohmann6detail10serializerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basi %.0.lcssa38.i132 = phi ptr [ %618, %._crit_edge.thread.i137 ], [ %.0.lcssa.i131, %._crit_edge.i129 ] %.021.lcssa37.i133 = phi i64 [ %609, %._crit_edge.thread.i137 ], [ %.021.lcssa.i130, %._crit_edge.i129 ] %655 = phi i64 [ 1, %._crit_edge.thread.i137 ], [ %634, %._crit_edge.i129 ] - %656 = trunc nuw i64 %.021.lcssa37.i133 to i8 + %656 = trunc nuw nsw i64 %.021.lcssa37.i133 to i8 %657 = or disjoint i8 %656, 48 %658 = getelementptr inbounds i8, ptr %.0.lcssa38.i132, i64 -1 store i8 %657, ptr %658, align 1, !tbaa !21 @@ -158889,7 +158889,7 @@ _ZN8nlohmann6detail10serializerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basi %.0.lcssa58 = phi ptr [ %32, %._crit_edge.thread ], [ %.0.lcssa, %._crit_edge ] %.1.lcssa57 = phi i64 [ %1, %._crit_edge.thread ], [ %.1.lcssa, %._crit_edge ] %69 = phi i64 [ 1, %._crit_edge.thread ], [ %48, %._crit_edge ] - %70 = trunc nuw i64 %.1.lcssa57 to i8 + %70 = trunc nuw nsw i64 %.1.lcssa57 to i8 %71 = or disjoint i8 %70, 48 %72 = getelementptr inbounds i8, ptr %.0.lcssa58, i64 -1 store i8 %71, ptr %72, align 1, !tbaa !21 @@ -159032,7 +159032,7 @@ define linkonce_odr noundef nonnull ptr @_ZN8nlohmann6detail8to_charsIdEEPcS2_PK 63: ; preds = %59 %64 = getelementptr i8, ptr %.pn.i, i64 4 store i8 48, ptr %.023.i.i, align 1, !tbaa !21 - %65 = trunc nuw i32 %.0.i.i to i8 + %65 = trunc nuw nsw i32 %.0.i.i to i8 %66 = or disjoint i8 %65, 48 %67 = getelementptr i8, ptr %.pn.i, i64 5 store i8 %66, ptr %64, align 1, !tbaa !21 @@ -159044,7 +159044,7 @@ define linkonce_odr noundef nonnull ptr @_ZN8nlohmann6detail8to_charsIdEEPcS2_PK br i1 %69, label %71, label %77 71: ; preds = %68 - %.lhs.trunc.i.i = trunc nuw i32 %.0.i.i to i8 + %.lhs.trunc.i.i = trunc nuw nsw i32 %.0.i.i to i8 %72 = udiv i8 %.lhs.trunc.i.i, 10 %73 = or disjoint i8 %72, 48 store i8 %73, ptr %.023.i.i, align 1, !tbaa !21 @@ -168413,7 +168413,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i: ; preds = %228, %226, %222, %2 br label %_ZNSt7__cxx119to_stringEm.exit 264: ; preds = %._crit_edge.i.i177 - %265 = trunc nuw i64 %.0.lcssa.i.i to i8 + %265 = trunc nuw nsw i64 %.0.lcssa.i.i to i8 %266 = or disjoint i8 %265, 48 br label %_ZNSt7__cxx119to_stringEm.exit @@ -169088,7 +169088,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i.i: ; preds = %467, %465, %461, %4 br label %506 503: ; preds = %._crit_edge.i.i61.i - %504 = trunc nuw i64 %.0.lcssa.i.i.i to i8 + %504 = trunc nuw nsw i64 %.0.lcssa.i.i.i to i8 %505 = or disjoint i8 %504, 48 br label %506 @@ -177405,7 +177405,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i: ; preds = %115, %113, %109, %1 br label %_ZNSt7__cxx119to_stringEi.exit 156: ; preds = %._crit_edge.i.i - %157 = trunc nuw i32 %.0.lcssa.i.i to i8 + %157 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %158 = or disjoint i8 %157, 48 br label %_ZNSt7__cxx119to_stringEi.exit @@ -178001,7 +178001,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i.i: ; preds = %355, %353, %349, %3 br label %_ZNSt7__cxx119to_stringEi.exit.i 396: ; preds = %._crit_edge.i.i222.i - %397 = trunc nuw i32 %.0.lcssa.i.i.i to i8 + %397 = trunc nuw nsw i32 %.0.lcssa.i.i.i to i8 %398 = or disjoint i8 %397, 48 br label %_ZNSt7__cxx119to_stringEi.exit.i @@ -178568,7 +178568,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i284.i: ; preds = %562, %560, %556, br label %_ZNSt7__cxx119to_stringEi.exit294.i 603: ; preds = %._crit_edge.i.i287.i - %604 = trunc nuw i32 %.0.lcssa.i.i288.i to i8 + %604 = trunc nuw nsw i32 %.0.lcssa.i.i288.i to i8 %605 = or disjoint i8 %604, 48 br label %_ZNSt7__cxx119to_stringEi.exit294.i @@ -179568,7 +179568,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i373.i: ; preds = %909, %907, %903, br label %_ZNSt7__cxx119to_stringEi.exit383.i 950: ; preds = %._crit_edge.i.i376.i - %951 = trunc nuw i32 %.0.lcssa.i.i377.i to i8 + %951 = trunc nuw nsw i32 %.0.lcssa.i.i377.i to i8 %952 = or disjoint i8 %951, 48 br label %_ZNSt7__cxx119to_stringEi.exit383.i @@ -180543,7 +180543,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i526.i: ; preds = %1230, %1228, %122 br label %_ZNSt7__cxx119to_stringEi.exit536.i 1271: ; preds = %._crit_edge.i.i529.i - %1272 = trunc nuw i32 %.0.lcssa.i.i530.i to i8 + %1272 = trunc nuw nsw i32 %.0.lcssa.i.i530.i to i8 %1273 = or disjoint i8 %1272, 48 br label %_ZNSt7__cxx119to_stringEi.exit536.i diff --git a/bench/tokenizers-rs/optimized/1k9vblvd5jyd3qmf.ll b/bench/tokenizers-rs/optimized/1k9vblvd5jyd3qmf.ll index 21cce695c4d..c826e88bb10 100644 --- a/bench/tokenizers-rs/optimized/1k9vblvd5jyd3qmf.ll +++ b/bench/tokenizers-rs/optimized/1k9vblvd5jyd3qmf.ll @@ -7056,7 +7056,7 @@ define internal noundef zeroext i1 @"_ZN58_$LT$alloc..string..String$u20$as$u20$ 8: ; preds = %4 %9 = lshr i32 %1, 6 - %10 = trunc nuw i32 %9 to i8 + %10 = trunc nuw nsw i32 %9 to i8 %11 = or disjoint i8 %10, -64 store i8 %11, ptr %.sroa.0.i, align 4, !alias.scope !1101, !noalias !1098 %12 = trunc i32 %1 to i8 @@ -7068,7 +7068,7 @@ define internal noundef zeroext i1 @"_ZN58_$LT$alloc..string..String$u20$as$u20$ 15: ; preds = %6 %16 = lshr i32 %1, 12 - %17 = trunc nuw i32 %16 to i8 + %17 = trunc nuw nsw i32 %16 to i8 %18 = or disjoint i8 %17, -32 store i8 %18, ptr %.sroa.0.i, align 4, !alias.scope !1101, !noalias !1098 %19 = lshr i32 %1, 6 @@ -11545,13 +11545,13 @@ _ZN3std4hash6random11RandomState3new4KEYS7__getit17h2e060df0334ea3a6E.exit.i.i: br i1 %335, label %345, label %356 336: ; preds = %327 - %337 = trunc nuw i32 %.val7.i.i to i8 + %337 = trunc nuw nsw i32 %.val7.i.i to i8 store i8 %337, ptr %.sroa.0.i.i.i.i, align 4, !alias.scope !1910, !noalias !1909 br label %_ZN4core4char7methods15encode_utf8_raw17hb6850a6d17750408E.exit.i.i.i.i 338: ; preds = %332 %339 = lshr i32 %.val7.i.i, 6 - %340 = trunc nuw i32 %339 to i8 + %340 = trunc nuw nsw i32 %339 to i8 %341 = or disjoint i8 %340, -64 store i8 %341, ptr %.sroa.0.i.i.i.i, align 4, !alias.scope !1910, !noalias !1909 %342 = trunc i32 %.val7.i.i to i8 @@ -11562,7 +11562,7 @@ _ZN3std4hash6random11RandomState3new4KEYS7__getit17h2e060df0334ea3a6E.exit.i.i: 345: ; preds = %334 %346 = lshr i32 %.val7.i.i, 12 - %347 = trunc nuw i32 %346 to i8 + %347 = trunc nuw nsw i32 %346 to i8 %348 = or disjoint i8 %347, -32 store i8 %348, ptr %.sroa.0.i.i.i.i, align 4, !alias.scope !1910, !noalias !1909 %349 = lshr i32 %.val7.i.i, 6 @@ -12442,13 +12442,13 @@ _ZN5alloc7raw_vec14handle_reserve17h2de9d654f1e992b9E.exit.i: ; preds = %.noexc1 br i1 %729, label %739, label %750 730: ; preds = %"_ZN110_$LT$tokenizers..models..bpe..FirstLastIterator$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfc1bc73371b2dba9E.exit.i" - %731 = trunc nuw i32 %.014.i.i to i8 + %731 = trunc nuw nsw i32 %.014.i.i to i8 store i8 %731, ptr %.sroa.0.i, align 4, !alias.scope !2076, !noalias !2018 br label %775 732: ; preds = %726 %733 = lshr i32 %.014.i.i, 6 - %734 = trunc nuw i32 %733 to i8 + %734 = trunc nuw nsw i32 %733 to i8 %735 = or disjoint i8 %734, -64 store i8 %735, ptr %.sroa.0.i, align 4, !alias.scope !2076, !noalias !2018 %736 = trunc i32 %.014.i.i to i8 @@ -12459,7 +12459,7 @@ _ZN5alloc7raw_vec14handle_reserve17h2de9d654f1e992b9E.exit.i: ; preds = %.noexc1 739: ; preds = %728 %740 = lshr i32 %.014.i.i, 12 - %741 = trunc nuw i32 %740 to i8 + %741 = trunc nuw nsw i32 %740 to i8 %742 = or disjoint i8 %741, -32 store i8 %742, ptr %.sroa.0.i, align 4, !alias.scope !2076, !noalias !2018 %743 = lshr i32 %.014.i.i, 6 @@ -17617,13 +17617,13 @@ _ZN3std4hash6random11RandomState3new4KEYS7__getit17h2e060df0334ea3a6E.exit.i.i: br i1 %334, label %344, label %355 335: ; preds = %324 - %336 = trunc nuw i32 %329 to i8 + %336 = trunc nuw nsw i32 %329 to i8 store i8 %336, ptr %.sroa.0112.i, align 4, !alias.scope !3292, !noalias !3216 br label %446 337: ; preds = %331 %338 = lshr i32 %329, 6 - %339 = trunc nuw i32 %338 to i8 + %339 = trunc nuw nsw i32 %338 to i8 %340 = or disjoint i8 %339, -64 store i8 %340, ptr %.sroa.0112.i, align 4, !alias.scope !3292, !noalias !3216 %341 = trunc i32 %329 to i8 @@ -17634,7 +17634,7 @@ _ZN3std4hash6random11RandomState3new4KEYS7__getit17h2e060df0334ea3a6E.exit.i.i: 344: ; preds = %333 %345 = lshr i32 %329, 12 - %346 = trunc nuw i32 %345 to i8 + %346 = trunc nuw nsw i32 %345 to i8 %347 = or disjoint i8 %346, -32 store i8 %347, ptr %.sroa.0112.i, align 4, !alias.scope !3292, !noalias !3216 %348 = lshr i32 %329, 6 @@ -21210,8 +21210,6 @@ define hidden void @"_ZN91_$LT$tokenizers..pre_tokenizers..metaspace..Metaspace$ %38 = getelementptr inbounds nuw i8, ptr %9, i64 30 %39 = load i8, ptr %38, align 2, !range !128, !noundef !15 %40 = icmp eq i8 %39, 2 - %41 = trunc i8 %39 to i1 - %.0 = or i1 %40, %41 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7), !noalias !3923 store i32 0, ptr %7, align 4, !noalias !3923 %42 = invoke { ptr, i64 } @_ZN4core4char7methods15encode_utf8_raw17hb6850a6d17750408E.llvm.14140520316429159617(i32 noundef %35, ptr noalias noundef nonnull align 1 %7, i64 noundef 4) @@ -21279,7 +21277,7 @@ define hidden void @"_ZN91_$LT$tokenizers..pre_tokenizers..metaspace..Metaspace$ call void @llvm.assume(i1 %67) call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %66, ptr nonnull readonly align 1 %43, i64 %44, i1 false), !noalias !3946 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7), !noalias !3923 - %68 = zext i1 %.0 to i8 + %67 = select i1 %40, i8 1, i8 %39 store i64 %65, ptr %0, align 8 %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %66, ptr %.sroa.2.0..sroa_idx, align 8 @@ -21288,7 +21286,7 @@ define hidden void @"_ZN91_$LT$tokenizers..pre_tokenizers..metaspace..Metaspace$ %.sroa.4.0..sroa_idx22 = getelementptr inbounds nuw i8, ptr %0, i64 24 store i32 %35, ptr %.sroa.4.0..sroa_idx22, align 8 %.sroa.523.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 28 - store i8 %68, ptr %.sroa.523.0..sroa_idx, align 4 + store i8 %67, ptr %.sroa.523.0..sroa_idx, align 4 %.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 29 store i8 %37, ptr %.sroa.6.0..sroa_idx, align 1 call void @llvm.experimental.noalias.scope.decl(metadata !3947) diff --git a/bench/tomlplusplus/optimized/toml.ll b/bench/tomlplusplus/optimized/toml.ll index 9886084073b..6d5487e51ee 100644 --- a/bench/tomlplusplus/optimized/toml.ll +++ b/bench/tomlplusplus/optimized/toml.ll @@ -2929,7 +2929,7 @@ define void @_ZN4toml2v34impl15print_to_streamERSoRKNS0_4dateE(ptr noundef nonnu br label %_ZSt12__to_chars_iItENSt9enable_ifIXsr5__or_ISt5__or_IJSt7is_sameINSt9remove_cvIT_E4typeEaES2_IS6_sES2_IS6_iES2_IS6_lES2_IS6_xES2_IS6_nEEES1_IJS2_IS6_hES2_IS6_tES2_IS6_jES2_IS6_mES2_IS6_yES2_IS6_oEEES2_IcS6_EEE5valueESt15to_chars_resultE4typeEPcSP_S4_i.exit 46: ; preds = %._crit_edge.i.i.i - %47 = trunc nuw i32 %.0.lcssa.i.i.i to i8 + %47 = trunc nuw nsw i32 %.0.lcssa.i.i.i to i8 %48 = or disjoint i8 %47, 48 br label %_ZSt12__to_chars_iItENSt9enable_ifIXsr5__or_ISt5__or_IJSt7is_sameINSt9remove_cvIT_E4typeEaES2_IS6_sES2_IS6_iES2_IS6_lES2_IS6_xES2_IS6_nEEES1_IJS2_IS6_hES2_IS6_tES2_IS6_jES2_IS6_mES2_IS6_yES2_IS6_oEEES2_IcS6_EEE5valueESt15to_chars_resultE4typeEPcSP_S4_i.exit @@ -3435,7 +3435,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i.i: ; preds = %135, %133, %129, %1 ._crit_edge.i.i.i54.thread: ; preds = %._crit_edge, %._crit_edge.i.i.i54 %.0.lcssa.i.i.i101 = phi i32 [ %.0.lcssa.i.i.i, %._crit_edge.i.i.i54 ], [ %.017.lcssa, %._crit_edge ] %172 = phi i64 [ %139, %._crit_edge.i.i.i54 ], [ 1, %._crit_edge ] - %173 = trunc nuw i32 %.0.lcssa.i.i.i101 to i8 + %173 = trunc nuw nsw i32 %.0.lcssa.i.i.i101 to i8 %174 = or disjoint i8 %173, 48 br label %_ZNSt8__detail13__to_chars_16IjEENSt9enable_ifIXsr5__or_ISt5__or_IJSt7is_sameINSt9remove_cvIT_E4typeEaES3_IS7_sES3_IS7_iES3_IS7_lES3_IS7_xES3_IS7_nEEES2_IJS3_IS7_hES3_IS7_tES3_IS7_jES3_IS7_mES3_IS7_yES3_IS7_oEEES3_IcS7_EEE5valueESt15to_chars_resultE4typeEPcSQ_S5_.exit.sink.split.i @@ -3604,7 +3604,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i.i: ; preds = %32, %30, %26, %22 br label %_ZNSt8__detail13__to_chars_16IjEENSt9enable_ifIXsr5__or_ISt5__or_IJSt7is_sameINSt9remove_cvIT_E4typeEaES3_IS7_sES3_IS7_iES3_IS7_lES3_IS7_xES3_IS7_nEEES2_IJS3_IS7_hES3_IS7_tES3_IS7_jES3_IS7_mES3_IS7_yES3_IS7_oEEES3_IcS7_EEE5valueESt15to_chars_resultE4typeEPcSQ_S5_.exit.sink.split.i 69: ; preds = %._crit_edge.i.i.i - %70 = trunc nuw i32 %.0.lcssa.i.i.i to i8 + %70 = trunc nuw nsw i32 %.0.lcssa.i.i.i to i8 %71 = or disjoint i8 %70, 48 br label %_ZNSt8__detail13__to_chars_16IjEENSt9enable_ifIXsr5__or_ISt5__or_IJSt7is_sameINSt9remove_cvIT_E4typeEaES3_IS7_sES3_IS7_iES3_IS7_lES3_IS7_xES3_IS7_nEEES2_IJS3_IS7_hES3_IS7_tES3_IS7_jES3_IS7_mES3_IS7_yES3_IS7_oEEES3_IcS7_EEE5valueESt15to_chars_resultE4typeEPcSQ_S5_.exit.sink.split.i @@ -3752,7 +3752,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i.i31: ; preds = %102, %100, %96, %9 ._crit_edge.i.i.i33.thread: ; preds = %88, %._crit_edge.i.i.i33 %.0.lcssa.i.i.i3475 = phi i32 [ %.0.lcssa.i.i.i34, %._crit_edge.i.i.i33 ], [ %.1, %88 ] %139 = phi i64 [ %106, %._crit_edge.i.i.i33 ], [ 1, %88 ] - %140 = trunc nuw i32 %.0.lcssa.i.i.i3475 to i8 + %140 = trunc nuw nsw i32 %.0.lcssa.i.i.i3475 to i8 %141 = or disjoint i8 %140, 48 br label %_ZNSt8__detail13__to_chars_16IjEENSt9enable_ifIXsr5__or_ISt5__or_IJSt7is_sameINSt9remove_cvIT_E4typeEaES3_IS7_sES3_IS7_iES3_IS7_lES3_IS7_xES3_IS7_nEEES2_IJS3_IS7_hES3_IS7_tES3_IS7_jES3_IS7_mES3_IS7_yES3_IS7_oEEES3_IcS7_EEE5valueESt15to_chars_resultE4typeEPcSQ_S5_.exit.sink.split.i35 @@ -3919,7 +3919,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i.i: ; preds = %22, %20, %16, %12 ._crit_edge.i.i.i.thread: ; preds = %8, %._crit_edge.i.i.i %.0.lcssa.i.i.i54 = phi i32 [ %.0.lcssa.i.i.i, %._crit_edge.i.i.i ], [ %6, %8 ] %59 = phi i64 [ %26, %._crit_edge.i.i.i ], [ 1, %8 ] - %60 = trunc nuw i32 %.0.lcssa.i.i.i54 to i8 + %60 = trunc nuw nsw i32 %.0.lcssa.i.i.i54 to i8 %61 = or disjoint i8 %60, 48 br label %_ZNSt8__detail13__to_chars_16IjEENSt9enable_ifIXsr5__or_ISt5__or_IJSt7is_sameINSt9remove_cvIT_E4typeEaES3_IS7_sES3_IS7_iES3_IS7_lES3_IS7_xES3_IS7_nEEES2_IJS3_IS7_hES3_IS7_tES3_IS7_jES3_IS7_mES3_IS7_yES3_IS7_oEEES3_IcS7_EEE5valueESt15to_chars_resultE4typeEPcSQ_S5_.exit.sink.split.i @@ -4047,7 +4047,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i.i15: ; preds = %86, %84, %80, %76 ._crit_edge.i.i.i17.thread: ; preds = %72, %._crit_edge.i.i.i17 %.0.lcssa.i.i.i1860 = phi i32 [ %.0.lcssa.i.i.i18, %._crit_edge.i.i.i17 ], [ %70, %72 ] %123 = phi i64 [ %90, %._crit_edge.i.i.i17 ], [ 1, %72 ] - %124 = trunc nuw i32 %.0.lcssa.i.i.i1860 to i8 + %124 = trunc nuw nsw i32 %.0.lcssa.i.i.i1860 to i8 %125 = or disjoint i8 %124, 48 br label %_ZNSt8__detail13__to_chars_16IjEENSt9enable_ifIXsr5__or_ISt5__or_IJSt7is_sameINSt9remove_cvIT_E4typeEaES3_IS7_sES3_IS7_iES3_IS7_lES3_IS7_xES3_IS7_nEEES2_IJS3_IS7_hES3_IS7_tES3_IS7_jES3_IS7_mES3_IS7_yES3_IS7_oEEES3_IcS7_EEE5valueESt15to_chars_resultE4typeEPcSQ_S5_.exit.sink.split.i19 @@ -7433,7 +7433,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i.i: ; preds = %42, %40, %36, %32 ._crit_edge.i.i.i.thread: ; preds = %29, %._crit_edge.i.i.i %.0.lcssa.i.i.i31 = phi i64 [ %.0.lcssa.i.i.i, %._crit_edge.i.i.i ], [ %27, %29 ] %74 = phi i64 [ %46, %._crit_edge.i.i.i ], [ 1, %29 ] - %75 = trunc nuw i64 %.0.lcssa.i.i.i31 to i8 + %75 = trunc nuw nsw i64 %.0.lcssa.i.i.i31 to i8 %76 = or disjoint i8 %75, 48 br label %_ZNSt8__detail13__to_chars_16ImEENSt9enable_ifIXsr5__or_ISt5__or_IJSt7is_sameINSt9remove_cvIT_E4typeEaES3_IS7_sES3_IS7_iES3_IS7_lES3_IS7_xES3_IS7_nEEES2_IJS3_IS7_hES3_IS7_tES3_IS7_jES3_IS7_mES3_IS7_yES3_IS7_oEEES3_IcS7_EEE5valueESt15to_chars_resultE4typeEPcSQ_S5_.exit.sink.split.i @@ -19876,7 +19876,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i.i: ; preds = %87, %85, %81, %77, br label %_ZNSt8__detail18__to_chars_10_implImEEvPcjT_.exit.i.i 123: ; preds = %._crit_edge.i.i.i - %124 = trunc nuw i64 %.0.lcssa.i.i.i to i8 + %124 = trunc nuw nsw i64 %.0.lcssa.i.i.i to i8 %125 = or disjoint i8 %124, 48 br label %_ZNSt8__detail18__to_chars_10_implImEEvPcjT_.exit.i.i @@ -30908,7 +30908,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i.i.i: ; preds = %21, %19, %15, %11, br label %_ZNSt8__detail13__to_chars_16ImEENSt9enable_ifIXsr5__or_ISt5__or_IJSt7is_sameINSt9remove_cvIT_E4typeEaES3_IS7_sES3_IS7_iES3_IS7_lES3_IS7_xES3_IS7_nEEES2_IJS3_IS7_hES3_IS7_tES3_IS7_jES3_IS7_mES3_IS7_yES3_IS7_oEEES3_IcS7_EEE5valueESt15to_chars_resultE4typeEPcSQ_S5_.exit.sink.split.i.i 57: ; preds = %._crit_edge.i.i.i.i - %58 = trunc nuw i64 %.0.lcssa.i.i.i.i to i8 + %58 = trunc nuw nsw i64 %.0.lcssa.i.i.i.i to i8 %59 = or disjoint i8 %58, 48 br label %_ZNSt8__detail13__to_chars_16ImEENSt9enable_ifIXsr5__or_ISt5__or_IJSt7is_sameINSt9remove_cvIT_E4typeEaES3_IS7_sES3_IS7_iES3_IS7_lES3_IS7_xES3_IS7_nEEES2_IJS3_IS7_hES3_IS7_tES3_IS7_jES3_IS7_mES3_IS7_yES3_IS7_oEEES3_IcS7_EEE5valueESt15to_chars_resultE4typeEPcSQ_S5_.exit.sink.split.i.i @@ -31101,7 +31101,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i: ; preds = %60, %58, %54, %50, br label %_ZNSt8__detail13__to_chars_16ImEENSt9enable_ifIXsr5__or_ISt5__or_IJSt7is_sameINSt9remove_cvIT_E4typeEaES3_IS7_sES3_IS7_iES3_IS7_lES3_IS7_xES3_IS7_nEEES2_IJS3_IS7_hES3_IS7_tES3_IS7_jES3_IS7_mES3_IS7_yES3_IS7_oEEES3_IcS7_EEE5valueESt15to_chars_resultE4typeEPcSQ_S5_.exit.sink.split 96: ; preds = %._crit_edge.i.i - %97 = trunc nuw i64 %.0.lcssa.i.i to i8 + %97 = trunc nuw nsw i64 %.0.lcssa.i.i to i8 %98 = or disjoint i8 %97, 48 br label %_ZNSt8__detail13__to_chars_16ImEENSt9enable_ifIXsr5__or_ISt5__or_IJSt7is_sameINSt9remove_cvIT_E4typeEaES3_IS7_sES3_IS7_iES3_IS7_lES3_IS7_xES3_IS7_nEEES2_IJS3_IS7_hES3_IS7_tES3_IS7_jES3_IS7_mES3_IS7_yES3_IS7_oEEES3_IcS7_EEE5valueESt15to_chars_resultE4typeEPcSQ_S5_.exit.sink.split @@ -31154,7 +31154,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i: ; preds = %60, %58, %54, %50, 126: ; preds = %._crit_edge.i29 %127 = lshr i64 %.028.lcssa.i30, 3 - %128 = trunc nuw i64 %.028.lcssa.i30 to i8 + %128 = trunc nuw nsw i64 %.028.lcssa.i30 to i8 %129 = and i8 %128, 7 %130 = or disjoint i8 %129, 48 %131 = getelementptr inbounds nuw i8, ptr %0, i64 1 @@ -31163,7 +31163,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i: ; preds = %60, %58, %54, %50, 132: ; preds = %126, %._crit_edge.i29 %storemerge.in.in.i = phi i64 [ %127, %126 ], [ %.028.lcssa.i30, %._crit_edge.i29 ] - %storemerge.in.i31 = trunc i64 %storemerge.in.in.i to i8 + %storemerge.in.i31 = trunc nuw nsw i64 %storemerge.in.in.i to i8 %storemerge.i32 = or disjoint i8 %storemerge.in.i31, 48 br label %_ZNSt8__detail13__to_chars_16ImEENSt9enable_ifIXsr5__or_ISt5__or_IJSt7is_sameINSt9remove_cvIT_E4typeEaES3_IS7_sES3_IS7_iES3_IS7_lES3_IS7_xES3_IS7_nEEES2_IJS3_IS7_hES3_IS7_tES3_IS7_jES3_IS7_mES3_IS7_yES3_IS7_oEEES3_IcS7_EEE5valueESt15to_chars_resultE4typeEPcSQ_S5_.exit.sink.split @@ -32938,7 +32938,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit140: ; preds = %_Z 272: ; preds = %270 %273 = lshr i32 %.069, 6 - %274 = trunc nuw i32 %273 to i8 + %274 = trunc nuw nsw i32 %273 to i8 %275 = or disjoint i8 %274, -64 %276 = load i64, ptr %49, align 8, !tbaa !11 %277 = add i64 %276, 1 @@ -33017,7 +33017,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit148: ; preds = %_Z 312: ; preds = %306 %313 = lshr i32 %.069, 12 - %314 = trunc nuw i32 %313 to i8 + %314 = trunc nuw nsw i32 %313 to i8 %315 = or disjoint i8 %314, -32 br i1 %311, label %316, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i149 @@ -33121,7 +33121,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit160: ; preds = %_Z 361: ; preds = %306 %362 = lshr i32 %.069, 18 - %363 = trunc nuw i32 %362 to i8 + %363 = trunc nuw nsw i32 %362 to i8 %364 = or disjoint i8 %363, -16 br i1 %311, label %365, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i161 @@ -35561,7 +35561,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i.i.i.i: ; preds = %22, %20, %16, %1 br label %_ZNSt8__detail13__to_chars_16ImEENSt9enable_ifIXsr5__or_ISt5__or_IJSt7is_sameINSt9remove_cvIT_E4typeEaES3_IS7_sES3_IS7_iES3_IS7_lES3_IS7_xES3_IS7_nEEES2_IJS3_IS7_hES3_IS7_tES3_IS7_jES3_IS7_mES3_IS7_yES3_IS7_oEEES3_IcS7_EEE5valueESt15to_chars_resultE4typeEPcSQ_S5_.exit.sink.split.i.i.i 58: ; preds = %._crit_edge.i.i.i.i.i - %59 = trunc nuw i64 %.0.lcssa.i.i.i.i.i to i8 + %59 = trunc nuw nsw i64 %.0.lcssa.i.i.i.i.i to i8 %60 = or disjoint i8 %59, 48 br label %_ZNSt8__detail13__to_chars_16ImEENSt9enable_ifIXsr5__or_ISt5__or_IJSt7is_sameINSt9remove_cvIT_E4typeEaES3_IS7_sES3_IS7_iES3_IS7_lES3_IS7_xES3_IS7_nEEES2_IJS3_IS7_hES3_IS7_tES3_IS7_jES3_IS7_mES3_IS7_yES3_IS7_oEEES3_IcS7_EEE5valueESt15to_chars_resultE4typeEPcSQ_S5_.exit.sink.split.i.i.i @@ -36450,7 +36450,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i.i.i.i: ; preds = %29, %27, %23, %1 br label %_ZNSt8__detail18__to_chars_10_implImEEvPcjT_.exit.i.i.i.i 65: ; preds = %._crit_edge.i.i.i.i.i - %66 = trunc nuw i64 %.0.lcssa.i.i.i.i.i to i8 + %66 = trunc nuw nsw i64 %.0.lcssa.i.i.i.i.i to i8 %67 = or disjoint i8 %66, 48 br label %_ZNSt8__detail18__to_chars_10_implImEEvPcjT_.exit.i.i.i.i @@ -36661,7 +36661,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i: ; preds = %68, %66, %62, %58, br label %_ZNSt8__detail18__to_chars_10_implImEEvPcjT_.exit.i 104: ; preds = %._crit_edge.i.i - %105 = trunc nuw i64 %.0.lcssa.i.i to i8 + %105 = trunc nuw nsw i64 %.0.lcssa.i.i to i8 %106 = or disjoint i8 %105, 48 br label %_ZNSt8__detail18__to_chars_10_implImEEvPcjT_.exit.i @@ -36720,7 +36720,7 @@ _ZNSt8__detail18__to_chars_10_implImEEvPcjT_.exit.i: ; preds = %104, %96 135: ; preds = %._crit_edge.i34 %136 = lshr i64 %.028.lcssa.i35, 3 - %137 = trunc nuw i64 %.028.lcssa.i35 to i8 + %137 = trunc nuw nsw i64 %.028.lcssa.i35 to i8 %138 = and i8 %137, 7 %139 = or disjoint i8 %138, 48 %140 = getelementptr inbounds nuw i8, ptr %.026, i64 1 @@ -36729,7 +36729,7 @@ _ZNSt8__detail18__to_chars_10_implImEEvPcjT_.exit.i: ; preds = %104, %96 141: ; preds = %135, %._crit_edge.i34 %storemerge.in.in.i = phi i64 [ %136, %135 ], [ %.028.lcssa.i35, %._crit_edge.i34 ] - %storemerge.in.i36 = trunc i64 %storemerge.in.in.i to i8 + %storemerge.in.i36 = trunc nuw nsw i64 %storemerge.in.in.i to i8 %storemerge.i37 = or disjoint i8 %storemerge.in.i36, 48 store i8 %storemerge.i37, ptr %.026, align 1, !tbaa !15 %142 = getelementptr inbounds nuw i8, ptr %.026, i64 %115 @@ -42103,7 +42103,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i: ; preds = %71, %69, %65, %61, br label %_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.exit.i 111: ; preds = %._crit_edge.i.i - %112 = trunc nuw i32 %.0.lcssa.i.i to i8 + %112 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %113 = or disjoint i8 %112, 48 br label %_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.exit.i @@ -42162,7 +42162,7 @@ _ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.exit.i: ; preds = %111, %101 142: ; preds = %._crit_edge.i34 %143 = lshr i32 %.028.lcssa.i35, 3 - %144 = trunc nuw i32 %.028.lcssa.i35 to i8 + %144 = trunc nuw nsw i32 %.028.lcssa.i35 to i8 %145 = and i8 %144, 7 %146 = or disjoint i8 %145, 48 %147 = getelementptr inbounds nuw i8, ptr %.026, i64 1 @@ -42171,7 +42171,7 @@ _ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.exit.i: ; preds = %111, %101 148: ; preds = %142, %._crit_edge.i34 %storemerge.in.in.i = phi i32 [ %143, %142 ], [ %.028.lcssa.i35, %._crit_edge.i34 ] - %storemerge.in.i36 = trunc i32 %storemerge.in.in.i to i8 + %storemerge.in.i36 = trunc nuw nsw i32 %storemerge.in.in.i to i8 %storemerge.i37 = or disjoint i8 %storemerge.in.i36, 48 store i8 %storemerge.i37, ptr %.026, align 1, !tbaa !15 %149 = getelementptr inbounds nuw i8, ptr %.026, i64 %122 @@ -42506,7 +42506,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i: ; preds = %71, %69, %65, %61, br label %_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.exit.i 111: ; preds = %._crit_edge.i.i - %112 = trunc nuw i32 %.0.lcssa.i.i to i8 + %112 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %113 = or disjoint i8 %112, 48 br label %_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.exit.i @@ -42565,7 +42565,7 @@ _ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.exit.i: ; preds = %111, %101 142: ; preds = %._crit_edge.i34 %143 = lshr i32 %.028.lcssa.i35, 3 - %144 = trunc nuw i32 %.028.lcssa.i35 to i8 + %144 = trunc nuw nsw i32 %.028.lcssa.i35 to i8 %145 = and i8 %144, 7 %146 = or disjoint i8 %145, 48 %147 = getelementptr inbounds nuw i8, ptr %.026, i64 1 @@ -42574,7 +42574,7 @@ _ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.exit.i: ; preds = %111, %101 148: ; preds = %142, %._crit_edge.i34 %storemerge.in.in.i = phi i32 [ %143, %142 ], [ %.028.lcssa.i35, %._crit_edge.i34 ] - %storemerge.in.i36 = trunc i32 %storemerge.in.in.i to i8 + %storemerge.in.i36 = trunc nuw nsw i32 %storemerge.in.in.i to i8 %storemerge.i37 = or disjoint i8 %storemerge.in.i36, 48 store i8 %storemerge.i37, ptr %.026, align 1, !tbaa !15 %149 = getelementptr inbounds nuw i8, ptr %.026, i64 %122 @@ -42905,7 +42905,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i: ; preds = %70, %68, %64, %60, br label %_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.exit.i 110: ; preds = %._crit_edge.i.i - %111 = trunc nuw i32 %.0.lcssa.i.i to i8 + %111 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %112 = or disjoint i8 %111, 48 br label %_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.exit.i @@ -42964,7 +42964,7 @@ _ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.exit.i: ; preds = %110, %100 141: ; preds = %._crit_edge.i34 %142 = lshr i32 %.028.lcssa.i35, 3 - %143 = trunc nuw i32 %.028.lcssa.i35 to i8 + %143 = trunc nuw nsw i32 %.028.lcssa.i35 to i8 %144 = and i8 %143, 7 %145 = or disjoint i8 %144, 48 %146 = getelementptr inbounds nuw i8, ptr %.026, i64 1 @@ -42973,7 +42973,7 @@ _ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.exit.i: ; preds = %110, %100 147: ; preds = %141, %._crit_edge.i34 %storemerge.in.in.i = phi i32 [ %142, %141 ], [ %.028.lcssa.i35, %._crit_edge.i34 ] - %storemerge.in.i36 = trunc i32 %storemerge.in.in.i to i8 + %storemerge.in.i36 = trunc nuw nsw i32 %storemerge.in.in.i to i8 %storemerge.i37 = or disjoint i8 %storemerge.in.i36, 48 store i8 %storemerge.i37, ptr %.026, align 1, !tbaa !15 %148 = getelementptr inbounds nuw i8, ptr %.026, i64 %121 @@ -43297,7 +43297,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i: ; preds = %68, %66, %62, %58, br label %_ZNSt8__detail18__to_chars_10_implImEEvPcjT_.exit.i 104: ; preds = %._crit_edge.i.i - %105 = trunc nuw i64 %.0.lcssa.i.i to i8 + %105 = trunc nuw nsw i64 %.0.lcssa.i.i to i8 %106 = or disjoint i8 %105, 48 br label %_ZNSt8__detail18__to_chars_10_implImEEvPcjT_.exit.i @@ -43356,7 +43356,7 @@ _ZNSt8__detail18__to_chars_10_implImEEvPcjT_.exit.i: ; preds = %104, %96 135: ; preds = %._crit_edge.i34 %136 = lshr i64 %.028.lcssa.i35, 3 - %137 = trunc nuw i64 %.028.lcssa.i35 to i8 + %137 = trunc nuw nsw i64 %.028.lcssa.i35 to i8 %138 = and i8 %137, 7 %139 = or disjoint i8 %138, 48 %140 = getelementptr inbounds nuw i8, ptr %.026, i64 1 @@ -43365,7 +43365,7 @@ _ZNSt8__detail18__to_chars_10_implImEEvPcjT_.exit.i: ; preds = %104, %96 141: ; preds = %135, %._crit_edge.i34 %storemerge.in.in.i = phi i64 [ %136, %135 ], [ %.028.lcssa.i35, %._crit_edge.i34 ] - %storemerge.in.i36 = trunc i64 %storemerge.in.in.i to i8 + %storemerge.in.i36 = trunc nuw nsw i64 %storemerge.in.in.i to i8 %storemerge.i37 = or disjoint i8 %storemerge.in.i36, 48 store i8 %storemerge.i37, ptr %.026, align 1, !tbaa !15 %142 = getelementptr inbounds nuw i8, ptr %.026, i64 %115 @@ -43947,7 +43947,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i: ; preds = %53, %51, %.lr.ph.i. br label %_ZNSt8__detail13__to_chars_16IjEENSt9enable_ifIXsr5__or_ISt5__or_IJSt7is_sameINSt9remove_cvIT_E4typeEaES3_IS7_sES3_IS7_iES3_IS7_lES3_IS7_xES3_IS7_nEEES2_IJS3_IS7_hES3_IS7_tES3_IS7_jES3_IS7_mES3_IS7_yES3_IS7_oEEES3_IcS7_EEE5valueESt15to_chars_resultE4typeEPcSQ_S5_.exit.sink.split 91: ; preds = %._crit_edge.i.i - %92 = trunc nuw i32 %.0.lcssa.i.i to i8 + %92 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %93 = or disjoint i8 %92, 48 br label %_ZNSt8__detail13__to_chars_16IjEENSt9enable_ifIXsr5__or_ISt5__or_IJSt7is_sameINSt9remove_cvIT_E4typeEaES3_IS7_sES3_IS7_iES3_IS7_lES3_IS7_xES3_IS7_nEEES2_IJS3_IS7_hES3_IS7_tES3_IS7_jES3_IS7_mES3_IS7_yES3_IS7_oEEES3_IcS7_EEE5valueESt15to_chars_resultE4typeEPcSQ_S5_.exit.sink.split @@ -44000,7 +44000,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i: ; preds = %53, %51, %.lr.ph.i. 121: ; preds = %._crit_edge.i29 %122 = lshr i32 %.028.lcssa.i30, 3 - %123 = trunc nuw i32 %.028.lcssa.i30 to i8 + %123 = trunc nuw nsw i32 %.028.lcssa.i30 to i8 %124 = and i8 %123, 7 %125 = or disjoint i8 %124, 48 %126 = getelementptr inbounds nuw i8, ptr %0, i64 1 @@ -44009,7 +44009,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i: ; preds = %53, %51, %.lr.ph.i. 127: ; preds = %121, %._crit_edge.i29 %storemerge.in.in.i = phi i32 [ %122, %121 ], [ %.028.lcssa.i30, %._crit_edge.i29 ] - %storemerge.in.i31 = trunc i32 %storemerge.in.in.i to i8 + %storemerge.in.i31 = trunc nuw nsw i32 %storemerge.in.in.i to i8 %storemerge.i32 = or disjoint i8 %storemerge.in.i31, 48 br label %_ZNSt8__detail13__to_chars_16IjEENSt9enable_ifIXsr5__or_ISt5__or_IJSt7is_sameINSt9remove_cvIT_E4typeEaES3_IS7_sES3_IS7_iES3_IS7_lES3_IS7_xES3_IS7_nEEES2_IJS3_IS7_hES3_IS7_tES3_IS7_jES3_IS7_mES3_IS7_yES3_IS7_oEEES3_IcS7_EEE5valueESt15to_chars_resultE4typeEPcSQ_S5_.exit.sink.split @@ -44319,7 +44319,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i: ; preds = %62, %60, %56, %52, br label %_ZNSt8__detail13__to_chars_16IjEENSt9enable_ifIXsr5__or_ISt5__or_IJSt7is_sameINSt9remove_cvIT_E4typeEaES3_IS7_sES3_IS7_iES3_IS7_lES3_IS7_xES3_IS7_nEEES2_IJS3_IS7_hES3_IS7_tES3_IS7_jES3_IS7_mES3_IS7_yES3_IS7_oEEES3_IcS7_EEE5valueESt15to_chars_resultE4typeEPcSQ_S5_.exit.sink.split 102: ; preds = %._crit_edge.i.i - %103 = trunc nuw i32 %.0.lcssa.i.i to i8 + %103 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %104 = or disjoint i8 %103, 48 br label %_ZNSt8__detail13__to_chars_16IjEENSt9enable_ifIXsr5__or_ISt5__or_IJSt7is_sameINSt9remove_cvIT_E4typeEaES3_IS7_sES3_IS7_iES3_IS7_lES3_IS7_xES3_IS7_nEEES2_IJS3_IS7_hES3_IS7_tES3_IS7_jES3_IS7_mES3_IS7_yES3_IS7_oEEES3_IcS7_EEE5valueESt15to_chars_resultE4typeEPcSQ_S5_.exit.sink.split @@ -44372,7 +44372,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i: ; preds = %62, %60, %56, %52, 132: ; preds = %._crit_edge.i29 %133 = lshr i32 %.028.lcssa.i30, 3 - %134 = trunc nuw i32 %.028.lcssa.i30 to i8 + %134 = trunc nuw nsw i32 %.028.lcssa.i30 to i8 %135 = and i8 %134, 7 %136 = or disjoint i8 %135, 48 %137 = getelementptr inbounds nuw i8, ptr %0, i64 1 @@ -44381,7 +44381,7 @@ _ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i: ; preds = %62, %60, %56, %52, 138: ; preds = %132, %._crit_edge.i29 %storemerge.in.in.i = phi i32 [ %133, %132 ], [ %.028.lcssa.i30, %._crit_edge.i29 ] - %storemerge.in.i31 = trunc i32 %storemerge.in.in.i to i8 + %storemerge.in.i31 = trunc nuw nsw i32 %storemerge.in.in.i to i8 %storemerge.i32 = or disjoint i8 %storemerge.in.i31, 48 br label %_ZNSt8__detail13__to_chars_16IjEENSt9enable_ifIXsr5__or_ISt5__or_IJSt7is_sameINSt9remove_cvIT_E4typeEaES3_IS7_sES3_IS7_iES3_IS7_lES3_IS7_xES3_IS7_nEEES2_IJS3_IS7_hES3_IS7_tES3_IS7_jES3_IS7_mES3_IS7_yES3_IS7_oEEES3_IcS7_EEE5valueESt15to_chars_resultE4typeEPcSQ_S5_.exit.sink.split @@ -44684,7 +44684,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i: ; preds = %60, %58, %54, %50, br label %_ZNSt8__detail13__to_chars_16ImEENSt9enable_ifIXsr5__or_ISt5__or_IJSt7is_sameINSt9remove_cvIT_E4typeEaES3_IS7_sES3_IS7_iES3_IS7_lES3_IS7_xES3_IS7_nEEES2_IJS3_IS7_hES3_IS7_tES3_IS7_jES3_IS7_mES3_IS7_yES3_IS7_oEEES3_IcS7_EEE5valueESt15to_chars_resultE4typeEPcSQ_S5_.exit.sink.split 96: ; preds = %._crit_edge.i.i - %97 = trunc nuw i64 %.0.lcssa.i.i to i8 + %97 = trunc nuw nsw i64 %.0.lcssa.i.i to i8 %98 = or disjoint i8 %97, 48 br label %_ZNSt8__detail13__to_chars_16ImEENSt9enable_ifIXsr5__or_ISt5__or_IJSt7is_sameINSt9remove_cvIT_E4typeEaES3_IS7_sES3_IS7_iES3_IS7_lES3_IS7_xES3_IS7_nEEES2_IJS3_IS7_hES3_IS7_tES3_IS7_jES3_IS7_mES3_IS7_yES3_IS7_oEEES3_IcS7_EEE5valueESt15to_chars_resultE4typeEPcSQ_S5_.exit.sink.split @@ -44737,7 +44737,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i: ; preds = %60, %58, %54, %50, 126: ; preds = %._crit_edge.i29 %127 = lshr i64 %.028.lcssa.i30, 3 - %128 = trunc nuw i64 %.028.lcssa.i30 to i8 + %128 = trunc nuw nsw i64 %.028.lcssa.i30 to i8 %129 = and i8 %128, 7 %130 = or disjoint i8 %129, 48 %131 = getelementptr inbounds nuw i8, ptr %0, i64 1 @@ -44746,7 +44746,7 @@ _ZNSt8__detail14__to_chars_lenImEEjT_i.exit.i: ; preds = %60, %58, %54, %50, 132: ; preds = %126, %._crit_edge.i29 %storemerge.in.in.i = phi i64 [ %127, %126 ], [ %.028.lcssa.i30, %._crit_edge.i29 ] - %storemerge.in.i31 = trunc i64 %storemerge.in.in.i to i8 + %storemerge.in.i31 = trunc nuw nsw i64 %storemerge.in.in.i to i8 %storemerge.i32 = or disjoint i8 %storemerge.in.i31, 48 br label %_ZNSt8__detail13__to_chars_16ImEENSt9enable_ifIXsr5__or_ISt5__or_IJSt7is_sameINSt9remove_cvIT_E4typeEaES3_IS7_sES3_IS7_iES3_IS7_lES3_IS7_xES3_IS7_nEEES2_IJS3_IS7_hES3_IS7_tES3_IS7_jES3_IS7_mES3_IS7_yES3_IS7_oEEES3_IcS7_EEE5valueESt15to_chars_resultE4typeEPcSQ_S5_.exit.sink.split diff --git a/bench/turborepo-rs/optimized/3wg34qzs64td8o5fq33fcg5rk.ll b/bench/turborepo-rs/optimized/3wg34qzs64td8o5fq33fcg5rk.ll index 789697bd132..5f9fecf86a0 100644 --- a/bench/turborepo-rs/optimized/3wg34qzs64td8o5fq33fcg5rk.ll +++ b/bench/turborepo-rs/optimized/3wg34qzs64td8o5fq33fcg5rk.ll @@ -1927,12 +1927,12 @@ _RINvNtCs8mTrBI1stz4_15turborepo_vt1004term11extend_itoalEB4_.exit196: ; preds = 703: ; preds = %644 %704 = trunc nuw i8 %647 to i1 - %705 = trunc i8 %.sroa.017.7 to i1 + %705 = trunc nuw i8 %.sroa.017.7 to i1 br i1 %704, label %712, label %711 706: ; preds = %644, %_RINvNtCs8mTrBI1stz4_15turborepo_vt1004term11extend_itoalEB4_.exit202, %_RINvNtCs8mTrBI1stz4_15turborepo_vt1004term11extend_itoalEB4_.exit199 %707 = phi i64 [ %645, %644 ], [ %764, %_RINvNtCs8mTrBI1stz4_15turborepo_vt1004term11extend_itoalEB4_.exit202 ], [ %738, %_RINvNtCs8mTrBI1stz4_15turborepo_vt1004term11extend_itoalEB4_.exit199 ] - %.sroa.017.20 = phi i8 [ %.sroa.017.7, %644 ], [ %.sroa.017.25, %_RINvNtCs8mTrBI1stz4_15turborepo_vt1004term11extend_itoalEB4_.exit202 ], [ %.sroa.017.24, %_RINvNtCs8mTrBI1stz4_15turborepo_vt1004term11extend_itoalEB4_.exit199 ] + %.sroa.017.20 = phi i8 [ %.sroa.017.7, %644 ], [ 0, %_RINvNtCs8mTrBI1stz4_15turborepo_vt1004term11extend_itoalEB4_.exit202 ], [ 0, %_RINvNtCs8mTrBI1stz4_15turborepo_vt1004term11extend_itoalEB4_.exit199 ] %708 = getelementptr inbounds nuw i8, ptr %0, i64 2 %709 = load i8, ptr %708, align 1, !range !51, !noundef !4 %710 = icmp eq i8 %709, 2 @@ -1965,7 +1965,6 @@ _RNvMs_NtCs68wO5nsWeTG_5alloc3vecINtB4_3VechE4pushCs8mTrBI1stz4_15turborepo_vt10 722: ; preds = %711, %_RNvMs_NtCs68wO5nsWeTG_5alloc3vecINtB4_3VechE4pushCs8mTrBI1stz4_15turborepo_vt100.llvm.3209305459455205536.exit197 %723 = phi i64 [ %721, %_RNvMs_NtCs68wO5nsWeTG_5alloc3vecINtB4_3VechE4pushCs8mTrBI1stz4_15turborepo_vt100.llvm.3209305459455205536.exit197 ], [ %645, %711 ] - %.sroa.017.24 = phi i8 [ %.sroa.017.7, %_RNvMs_NtCs68wO5nsWeTG_5alloc3vecINtB4_3VechE4pushCs8mTrBI1stz4_15turborepo_vt100.llvm.3209305459455205536.exit197 ], [ 0, %711 ] call void @llvm.experimental.noalias.scope.decl(metadata !306) call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %8), !noalias !306 %724 = call { ptr, i64 } @_RNvXsb_CsfbvjWzJraAt_4itoalNtNtB5_7private6Sealed5write.llvm.2772946472389925136(i32 noundef 23, ptr noalias noundef nonnull align 1 dereferenceable(11) %8), !noalias !306 @@ -2017,7 +2016,6 @@ _RNvMs_NtCs68wO5nsWeTG_5alloc3vecINtB4_3VechE4pushCs8mTrBI1stz4_15turborepo_vt10 748: ; preds = %712, %_RNvMs_NtCs68wO5nsWeTG_5alloc3vecINtB4_3VechE4pushCs8mTrBI1stz4_15turborepo_vt100.llvm.3209305459455205536.exit200 %749 = phi i64 [ %747, %_RNvMs_NtCs68wO5nsWeTG_5alloc3vecINtB4_3VechE4pushCs8mTrBI1stz4_15turborepo_vt100.llvm.3209305459455205536.exit200 ], [ %645, %712 ] - %.sroa.017.25 = phi i8 [ %.sroa.017.7, %_RNvMs_NtCs68wO5nsWeTG_5alloc3vecINtB4_3VechE4pushCs8mTrBI1stz4_15turborepo_vt100.llvm.3209305459455205536.exit200 ], [ 0, %712 ] call void @llvm.experimental.noalias.scope.decl(metadata !315) call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %7), !noalias !315 %750 = call { ptr, i64 } @_RNvXsb_CsfbvjWzJraAt_4itoalNtNtB5_7private6Sealed5write.llvm.2772946472389925136(i32 noundef 3, ptr noalias noundef nonnull align 1 dereferenceable(11) %7), !noalias !315 @@ -2050,12 +2048,12 @@ _RINvNtCs8mTrBI1stz4_15turborepo_vt1004term11extend_itoalEB4_.exit202: ; preds = 765: ; preds = %706 %766 = trunc nuw i8 %709 to i1 - %767 = trunc i8 %.sroa.017.20 to i1 + %767 = trunc nuw i8 %.sroa.017.20 to i1 br i1 %766, label %774, label %773 768: ; preds = %706, %_RINvNtCs8mTrBI1stz4_15turborepo_vt1004term11extend_itoalEB4_.exit208, %_RINvNtCs8mTrBI1stz4_15turborepo_vt1004term11extend_itoalEB4_.exit205 %769 = phi i64 [ %707, %706 ], [ %826, %_RINvNtCs8mTrBI1stz4_15turborepo_vt1004term11extend_itoalEB4_.exit208 ], [ %800, %_RINvNtCs8mTrBI1stz4_15turborepo_vt1004term11extend_itoalEB4_.exit205 ] - %.sroa.017.23 = phi i8 [ %.sroa.017.20, %706 ], [ %.sroa.017.27, %_RINvNtCs8mTrBI1stz4_15turborepo_vt1004term11extend_itoalEB4_.exit208 ], [ %.sroa.017.26, %_RINvNtCs8mTrBI1stz4_15turborepo_vt1004term11extend_itoalEB4_.exit205 ] + %.sroa.017.23 = phi i8 [ %.sroa.017.20, %706 ], [ 0, %_RINvNtCs8mTrBI1stz4_15turborepo_vt1004term11extend_itoalEB4_.exit208 ], [ 0, %_RINvNtCs8mTrBI1stz4_15turborepo_vt1004term11extend_itoalEB4_.exit205 ] %770 = getelementptr inbounds nuw i8, ptr %0, i64 3 %771 = load i8, ptr %770, align 1, !range !51, !noundef !4 %772 = icmp eq i8 %771, 2 @@ -2088,7 +2086,6 @@ _RNvMs_NtCs68wO5nsWeTG_5alloc3vecINtB4_3VechE4pushCs8mTrBI1stz4_15turborepo_vt10 784: ; preds = %773, %_RNvMs_NtCs68wO5nsWeTG_5alloc3vecINtB4_3VechE4pushCs8mTrBI1stz4_15turborepo_vt100.llvm.3209305459455205536.exit203 %785 = phi i64 [ %783, %_RNvMs_NtCs68wO5nsWeTG_5alloc3vecINtB4_3VechE4pushCs8mTrBI1stz4_15turborepo_vt100.llvm.3209305459455205536.exit203 ], [ %707, %773 ] - %.sroa.017.26 = phi i8 [ %.sroa.017.20, %_RNvMs_NtCs68wO5nsWeTG_5alloc3vecINtB4_3VechE4pushCs8mTrBI1stz4_15turborepo_vt100.llvm.3209305459455205536.exit203 ], [ 0, %773 ] call void @llvm.experimental.noalias.scope.decl(metadata !324) call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %6), !noalias !324 %786 = call { ptr, i64 } @_RNvXsb_CsfbvjWzJraAt_4itoalNtNtB5_7private6Sealed5write.llvm.2772946472389925136(i32 noundef 24, ptr noalias noundef nonnull align 1 dereferenceable(11) %6), !noalias !324 @@ -2140,7 +2137,6 @@ _RNvMs_NtCs68wO5nsWeTG_5alloc3vecINtB4_3VechE4pushCs8mTrBI1stz4_15turborepo_vt10 810: ; preds = %774, %_RNvMs_NtCs68wO5nsWeTG_5alloc3vecINtB4_3VechE4pushCs8mTrBI1stz4_15turborepo_vt100.llvm.3209305459455205536.exit206 %811 = phi i64 [ %809, %_RNvMs_NtCs68wO5nsWeTG_5alloc3vecINtB4_3VechE4pushCs8mTrBI1stz4_15turborepo_vt100.llvm.3209305459455205536.exit206 ], [ %707, %774 ] - %.sroa.017.27 = phi i8 [ %.sroa.017.20, %_RNvMs_NtCs68wO5nsWeTG_5alloc3vecINtB4_3VechE4pushCs8mTrBI1stz4_15turborepo_vt100.llvm.3209305459455205536.exit206 ], [ 0, %774 ] call void @llvm.experimental.noalias.scope.decl(metadata !333) call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %5), !noalias !333 %812 = call { ptr, i64 } @_RNvXsb_CsfbvjWzJraAt_4itoalNtNtB5_7private6Sealed5write.llvm.2772946472389925136(i32 noundef 4, ptr noalias noundef nonnull align 1 dereferenceable(11) %5), !noalias !333 @@ -2173,7 +2169,7 @@ _RINvNtCs8mTrBI1stz4_15turborepo_vt1004term11extend_itoalEB4_.exit208: ; preds = 827: ; preds = %768 %828 = trunc nuw i8 %771 to i1 - %829 = trunc i8 %.sroa.017.23 to i1 + %829 = trunc nuw i8 %.sroa.017.23 to i1 br i1 %828, label %841, label %840 830: ; preds = %768, %_RINvNtCs8mTrBI1stz4_15turborepo_vt1004term11extend_itoalEB4_.exit215, %_RINvNtCs8mTrBI1stz4_15turborepo_vt1004term11extend_itoalEB4_.exit212 diff --git a/bench/typst-rs/optimized/2d3c2n5y91mtl0x0.ll b/bench/typst-rs/optimized/2d3c2n5y91mtl0x0.ll index c1c62209481..fff751f7950 100644 --- a/bench/typst-rs/optimized/2d3c2n5y91mtl0x0.ll +++ b/bench/typst-rs/optimized/2d3c2n5y91mtl0x0.ll @@ -26071,14 +26071,14 @@ define hidden noundef zeroext i1 @"_ZN60_$LT$ecow..string..EcoString$u20$as$u20$ 11: ; preds = %7 %12 = lshr i32 %1, 6 - %13 = trunc nuw i32 %12 to i8 + %13 = trunc nuw nsw i32 %12 to i8 %14 = or disjoint i8 %13, -64 store i8 %14, ptr %5, align 4, !alias.scope !5208, !noalias !5205 br label %_ZN4core4char7methods15encode_utf8_raw17hb4a1fb525f58c43bE.exit.i 15: ; preds = %9 %16 = lshr i32 %1, 12 - %17 = trunc nuw i32 %16 to i8 + %17 = trunc nuw nsw i32 %16 to i8 %18 = or disjoint i8 %17, -32 store i8 %18, ptr %5, align 4, !alias.scope !5208, !noalias !5205 %19 = lshr i32 %1, 6 @@ -26118,7 +26118,7 @@ _ZN4core4char7methods15encode_utf8_raw17hb4a1fb525f58c43bE.exit.i: ; preds = %23 br label %_ZN4ecow6string9EcoString4push17ha76aaffb08413f6eE.exit .critedge.i: ; preds = %2 - %40 = trunc nuw i32 %1 to i8 + %40 = trunc nuw nsw i32 %1 to i8 tail call void @llvm.experimental.noalias.scope.decl(metadata !5211) %41 = getelementptr inbounds nuw i8, ptr %0, i64 15 %42 = load i8, ptr %41, align 1, !alias.scope !5214, !noundef !7 @@ -125060,7 +125060,7 @@ define hidden void @"_ZN57_$LT$T$u20$as$u20$typst..foundations..content..Bounds$ ; Function Attrs: nonlazybind uwtable define hidden noundef zeroext i1 @"_ZN57_$LT$T$u20$as$u20$typst..foundations..content..Bounds$GT$6dyn_eq17h090fcb69e29704c3E"(ptr noalias noundef readonly align 1 captures(none) dereferenceable(1) %0, ptr noalias noundef readonly align 8 dereferenceable(24) %1) unnamed_addr #1 { %3 = tail call noundef zeroext i1 @_ZN5typst11foundations7content7Content2is17hb42f69756f5d455cE(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %1) - br i1 %3, label %4, label %"_ZN5typst4text9linebreak1_88_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$typst..text..linebreak..LinebreakElem$GT$2eq17hbe94666d23ff395fE.exit" + br i1 %3, label %4, label %23 4: ; preds = %2 %5 = load ptr, ptr %1, align 8, !nonnull !7, !noundef !7 @@ -125082,21 +125082,12 @@ define hidden noundef zeroext i1 @"_ZN57_$LT$T$u20$as$u20$typst..foundations..co tail call void @llvm.experimental.noalias.scope.decl(metadata !21934) tail call void @llvm.experimental.noalias.scope.decl(metadata !21937) %21 = load i8, ptr %0, align 1, !range !1085, !alias.scope !21934, !noalias !21937, !noundef !7 - %22 = icmp eq i8 %21, 2 - %23 = load i8, ptr %20, align 1, !range !1085, !alias.scope !21937, !noalias !21934, !noundef !7 - %24 = icmp eq i8 %23, 2 - %brmerge.i = or i1 %22, %24 - %.mux.i = and i1 %22, %24 - br i1 %brmerge.i, label %"_ZN5typst4text9linebreak1_88_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$typst..text..linebreak..LinebreakElem$GT$2eq17hbe94666d23ff395fE.exit", label %25 - -25: ; preds = %4 - %26 = xor i8 %23, %21 - %27 = trunc i8 %26 to i1 - %28 = xor i1 %27, true - br label %"_ZN5typst4text9linebreak1_88_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$typst..text..linebreak..LinebreakElem$GT$2eq17hbe94666d23ff395fE.exit" - -"_ZN5typst4text9linebreak1_88_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$typst..text..linebreak..LinebreakElem$GT$2eq17hbe94666d23ff395fE.exit": ; preds = %25, %4, %2 - %.0 = phi i1 [ false, %2 ], [ %28, %25 ], [ %.mux.i, %4 ] + %22 = load i8, ptr %20, align 1, !range !1085, !alias.scope !21937, !noalias !21934, !noundef !7 + %.0.i = icmp eq i8 %22, %21 + br label %23 + +23:; preds = %2, %4 + %.0 = phi i1 [ %.0.i, %4 ], [ false, %2 ] ret i1 %.0 } @@ -125133,19 +125124,18 @@ define hidden noundef zeroext i1 @"_ZN57_$LT$T$u20$as$u20$typst..foundations..co %25 = icmp eq i8 %24, 2 %26 = getelementptr i8, ptr %19, i64 48 %27 = load i8, ptr %26, align 8, !range !1085, !alias.scope !21942, !noalias !21939, !noundef !7 - %28 = icmp eq i8 %27, 2 - %brmerge.i = or i1 %25, %28 - %.mux.i = and i1 %25, %28 - br i1 %brmerge.i, label %"_ZN5typst6layout7spacing1_80_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$typst..layout..spacing..HElem$GT$2eq17hdc71878b57ef0325E.exit", label %29 + br i1 %25, label %28, label %30 29: ; preds = %22 - %30 = xor i8 %27, %24 - %31 = trunc i8 %30 to i1 - %32 = xor i1 %31, true + %29 = icmp eq i8 %27, 2 + br label %"_ZN5typst6layout7spacing1_80_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$typst..layout..spacing..HElem$GT$2eq17hdc71878b57ef0325E.exit" + +"_ZN5typst6layout7spacing1_80_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$typst..layout..spacing..HElem$GT$2eq17hdc71878b57ef0325E.exit": ; preds = %22 + %.not2.i = icmp eq i8 %24, %27 br label %"_ZN5typst6layout7spacing1_80_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$typst..layout..spacing..HElem$GT$2eq17hdc71878b57ef0325E.exit" -"_ZN5typst6layout7spacing1_80_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$typst..layout..spacing..HElem$GT$2eq17hdc71878b57ef0325E.exit": ; preds = %29, %22, %4, %2 - %.0 = phi i1 [ false, %2 ], [ %32, %29 ], [ false, %4 ], [ %.mux.i, %22 ] +"_ZN5typst6layout7spacing1_80_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$typst..layout..spacing..HElem$GT$2eq17hdc71878b57ef0325E.exit": ; preds = %30, %28, %4, %2 + %.0 = phi i1 [ false, %2 ], [ %29, %28 ], [ false, %4 ], [ %.not2.i, %30 ] ret i1 %.0 } @@ -140637,7 +140627,7 @@ _ZN5typst11foundations6styles10StyleChain3get17h5a7a544ce9f998dfE.exit.i: ; pred br label %"_ZN5typst4text1_39_$LT$impl$u20$typst..text..TextElem$GT$12hyphenate_in17hc356e554ca2d706bE.exit" 46: ; preds = %_ZN5typst11foundations6styles10StyleChain3get17h5a7a544ce9f998dfE.exit.i - %47 = trunc i8 %42 to i1 + %47 = trunc nuw i8 %42 to i1 br label %"_ZN5typst4text1_39_$LT$impl$u20$typst..text..TextElem$GT$12hyphenate_in17hc356e554ca2d706bE.exit" "_ZN5typst4text1_39_$LT$impl$u20$typst..text..TextElem$GT$12hyphenate_in17hc356e554ca2d706bE.exit": ; preds = %44, %46 @@ -142909,7 +142899,7 @@ _ZN4core5slice5ascii8is_ascii17h00fd71ffd9c41faeE.exit.thread9: ; preds = %13, % br i1 %25, label %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20make_ascii_lowercase17h9bc6c58b2f89260fE.exit", label %.lr.ph.i6 "_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20make_ascii_lowercase17h9bc6c58b2f89260fE.exit": ; preds = %.lr.ph.i6 - %26 = trunc nuw i64 %2 to i8 + %26 = trunc nuw nsw i64 %2 to i8 %27 = getelementptr inbounds nuw i8, ptr %0, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(3) %27, ptr noundef nonnull align 1 dereferenceable(3) %4, i64 3, i1 false) %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 11 @@ -143132,7 +143122,7 @@ _ZN4core5slice5ascii8is_ascii17h00fd71ffd9c41faeE.exit.thread10: ; preds = %13, "_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20make_ascii_lowercase17h9bc6c58b2f89260fE.exit": ; preds = %.lr.ph.i7 %26 = load <4 x i8>, ptr %4, align 4 - %27 = trunc nuw i64 %2 to i8 + %27 = trunc nuw nsw i64 %2 to i8 %28 = getelementptr inbounds nuw i8, ptr %0, i64 8 store <4 x i8> %26, ptr %28, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 12 @@ -149185,7 +149175,7 @@ define noundef zeroext i1 @"_ZN5typst6layout7spacing1_95_$LT$impl$u20$typst..fou br i1 %.not, label %7, label %3 3: ; preds = %2 - %trunc = trunc i8 %switch.select2.i to i1 + %trunc = trunc nuw i8 %switch.select2.i to i1 %switch = xor i1 %trunc, true %4 = getelementptr inbounds nuw i8, ptr %0, i64 32 %5 = load i8, ptr %4, align 8, !range !1085 @@ -149209,7 +149199,7 @@ define void @"_ZN5typst6layout7spacing1_95_$LT$impl$u20$typst..foundations..elem br i1 %5, label %7, label %6 6: ; preds = %3 - %trunc = trunc i8 %switch.select2.i to i1 + %trunc = trunc nuw i8 %switch.select2.i to i1 br i1 %trunc, label %9, label %8 7: ; preds = %3 @@ -149255,7 +149245,7 @@ define void @"_ZN5typst6layout7spacing1_95_$LT$impl$u20$typst..foundations..elem br i1 %7, label %9, label %8 8: ; preds = %4 - %trunc = trunc i8 %switch.select2.i to i1 + %trunc = trunc nuw i8 %switch.select2.i to i1 br i1 %trunc, label %11, label %10 9: ; preds = %4 @@ -149340,7 +149330,7 @@ define void @"_ZN5typst6layout7spacing1_95_$LT$impl$u20$typst..foundations..elem br i1 %5, label %7, label %6 6: ; preds = %3 - %trunc = trunc i8 %switch.select2.i to i1 + %trunc = trunc nuw i8 %switch.select2.i to i1 br i1 %trunc, label %9, label %8 7: ; preds = %3 @@ -149852,20 +149842,19 @@ define noundef zeroext i1 @"_ZN5typst6layout7spacing1_80_$LT$impl$u20$core..cmp. %7 = icmp eq i8 %6, 2 %8 = getelementptr inbounds nuw i8, ptr %1, i64 32 %9 = load i8, ptr %8, align 8, !range !1085, !noundef !7 - %10 = icmp eq i8 %9, 2 - %brmerge = or i1 %7, %10 - %.mux = and i1 %7, %10 - br i1 %brmerge, label %11, label %12 + br i1 %7, label %12, label %13 -11: ; preds = %4, %2, %12 - %.0 = phi i1 [ %15, %12 ], [ false, %2 ], [ %.mux, %4 ] +11: ; preds = %13, %2, %12 + %.0 = phi i1 [ %12, %12 ], [ false, %2 ], [ %.not2, %13 ] ret i1 %.0 12: ; preds = %4 - %13 = xor i8 %9, %6 - %14 = trunc i8 %13 to i1 - %15 = xor i1 %14, true + %12 = icmp eq i8 %9, 2 br label %11 + +13:; preds = %4 + %.not2 = icmp eq i8 %6, %9 + br label %10 } ; Function Attrs: nonlazybind uwtable @@ -153382,7 +153371,7 @@ define void @"_ZN5typst5model4link1_94_$LT$impl$u20$typst..foundations..element. br i1 %5, label %7, label %6 6: ; preds = %3 - %trunc = trunc i8 %switch.select2.i to i1 + %trunc = trunc nuw i8 %switch.select2.i to i1 br i1 %trunc, label %11, label %8 7: ; preds = %3 @@ -153551,7 +153540,7 @@ define void @"_ZN5typst5model4link1_94_$LT$impl$u20$typst..foundations..element. br i1 %6, label %8, label %7 7: ; preds = %4 - %trunc = trunc i8 %switch.select2.i to i1 + %trunc = trunc nuw i8 %switch.select2.i to i1 br i1 %trunc, label %12, label %9 8: ; preds = %4 @@ -158433,7 +158422,7 @@ define noundef zeroext i1 @"_ZN5typst5model6strong1_98_$LT$impl$u20$typst..found br i1 %.not, label %6, label %3 3: ; preds = %2 - %trunc = trunc i8 %switch.select2.i to i1 + %trunc = trunc nuw i8 %switch.select2.i to i1 %4 = load i64, ptr %0, align 8, !range !1086 %5 = trunc nuw i64 %4 to i1 %.1 = select i1 %trunc, i1 true, i1 %5 @@ -158454,7 +158443,7 @@ define void @"_ZN5typst5model6strong1_98_$LT$impl$u20$typst..foundations..elemen br i1 %4, label %6, label %5 5: ; preds = %3 - %trunc = trunc i8 %switch.select2.i to i1 + %trunc = trunc nuw i8 %switch.select2.i to i1 br i1 %trunc, label %9, label %7 6: ; preds = %3 @@ -158519,7 +158508,7 @@ define void @"_ZN5typst5model6strong1_98_$LT$impl$u20$typst..foundations..elemen br i1 %6, label %8, label %7 7: ; preds = %4 - %trunc = trunc i8 %switch.select2.i to i1 + %trunc = trunc nuw i8 %switch.select2.i to i1 br i1 %trunc, label %26, label %9 8: ; preds = %4 @@ -158623,7 +158612,7 @@ define void @"_ZN5typst5model6strong1_98_$LT$impl$u20$typst..foundations..elemen br i1 %5, label %7, label %6 6: ; preds = %3 - %trunc = trunc i8 %switch.select2.i to i1 + %trunc = trunc nuw i8 %switch.select2.i to i1 br i1 %trunc, label %23, label %8 7: ; preds = %3 @@ -164932,7 +164921,7 @@ define void @"_ZN88_$LT$typst..text..lang..WritingScript$u20$as$u20$typst..found 61: ; preds = %.lr.ph.i7.i %62 = load i32, ptr %3, align 4, !noalias !30102 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3), !noalias !30102 - %63 = trunc nuw i64 %.sroa.3.0.i to i40 + %63 = trunc nuw nsw i64 %.sroa.3.0.i to i40 %.sroa.5.sroa.0.sroa.6.0.insert.shift = shl nuw nsw i40 %63, 32 %.sroa.5.sroa.0.sroa.0.0.insert.ext = zext i32 %62 to i40 %.sroa.5.sroa.0.sroa.0.0.insert.insert = or disjoint i40 %.sroa.5.sroa.0.sroa.6.0.insert.shift, %.sroa.5.sroa.0.sroa.0.0.insert.ext @@ -165493,7 +165482,7 @@ define void @"_ZN79_$LT$typst..text..lang..Lang$u20$as$u20$typst..foundations..c %.sroa.5.11.insert.shift = shl nuw nsw i64 %.sroa.3.0.i, 24 %.sroa.5.11.insert.insert = or disjoint i64 %.sroa.5.11.insert.shift, %.sroa.5.8.insert.ext call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %3) - %.sroa.65.8.extract.trunc = trunc nuw i64 %.sroa.5.11.insert.insert to i32 + %.sroa.65.8.extract.trunc = trunc nuw nsw i64 %.sroa.5.11.insert.insert to i32 %62 = getelementptr inbounds nuw i8, ptr %0, i64 1 store i32 %.sroa.65.8.extract.trunc, ptr %62, align 1 br label %64 diff --git a/bench/typst-rs/optimized/4m3ebbqd1xx21e5m.ll b/bench/typst-rs/optimized/4m3ebbqd1xx21e5m.ll index 5a38185677f..d0399040fb1 100644 --- a/bench/typst-rs/optimized/4m3ebbqd1xx21e5m.ll +++ b/bench/typst-rs/optimized/4m3ebbqd1xx21e5m.ll @@ -24044,7 +24044,7 @@ define internal fastcc void @_ZN5alloc6string6String4push17h5bf80ac19761e8d5E(pt 8: ; preds = %4 %9 = lshr i32 %1, 6 - %10 = trunc nuw i32 %9 to i8 + %10 = trunc nuw nsw i32 %9 to i8 %11 = or disjoint i8 %10, -64 store i8 %11, ptr %.sroa.0, align 4, !alias.scope !5841 %12 = trunc i32 %1 to i8 @@ -24056,7 +24056,7 @@ define internal fastcc void @_ZN5alloc6string6String4push17h5bf80ac19761e8d5E(pt 15: ; preds = %6 %16 = lshr i32 %1, 12 - %17 = trunc nuw i32 %16 to i8 + %17 = trunc nuw nsw i32 %16 to i8 %18 = or disjoint i8 %17, -32 store i8 %18, ptr %.sroa.0, align 4, !alias.scope !5841 %19 = lshr i32 %1, 6 @@ -24125,7 +24125,7 @@ _ZN4core4char7methods15encode_utf8_raw17hb4a1fb525f58c43bE.exit: ; preds = %8, % br label %79 .critedge: ; preds = %2 - %54 = trunc nuw i32 %1 to i8 + %54 = trunc nuw nsw i32 %1 to i8 tail call void @llvm.experimental.noalias.scope.decl(metadata !5856) %55 = getelementptr inbounds nuw i8, ptr %0, i64 16 %56 = load i64, ptr %55, align 8, !alias.scope !5856, !noundef !4 @@ -51640,14 +51640,14 @@ define internal noundef zeroext i1 @"_ZN60_$LT$ecow..string..EcoString$u20$as$u2 11: ; preds = %7 %12 = lshr i32 %1, 6 - %13 = trunc nuw i32 %12 to i8 + %13 = trunc nuw nsw i32 %12 to i8 %14 = or disjoint i8 %13, -64 store i8 %14, ptr %5, align 4, !alias.scope !8634, !noalias !8631 br label %_ZN4core4char7methods15encode_utf8_raw17hb4a1fb525f58c43bE.exit.i 15: ; preds = %9 %16 = lshr i32 %1, 12 - %17 = trunc nuw i32 %16 to i8 + %17 = trunc nuw nsw i32 %16 to i8 %18 = or disjoint i8 %17, -32 store i8 %18, ptr %5, align 4, !alias.scope !8634, !noalias !8631 %19 = lshr i32 %1, 6 @@ -51687,7 +51687,7 @@ _ZN4core4char7methods15encode_utf8_raw17hb4a1fb525f58c43bE.exit.i: ; preds = %23 br label %_ZN4ecow6string9EcoString4push17ha76aaffb08413f6eE.exit .critedge.i: ; preds = %2 - %40 = trunc nuw i32 %1 to i8 + %40 = trunc nuw nsw i32 %1 to i8 tail call void @llvm.experimental.noalias.scope.decl(metadata !8637) %41 = getelementptr inbounds nuw i8, ptr %0, i64 15 %42 = load i8, ptr %41, align 1, !alias.scope !8640, !noundef !4 @@ -64104,7 +64104,7 @@ _ZN5alloc7raw_vec11finish_grow17h9b8b8a0ec08387c9E.exit.i.i.i.i230: ; preds = %3 br i1 %.not136, label %396, label %344 344: ; preds = %342 - %345 = trunc i8 %343 to i1 + %345 = trunc nuw i8 %343 to i1 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %51) %346 = load ptr, ptr %.0116, align 8, !nonnull !4, !noundef !4 %347 = getelementptr inbounds nuw i8, ptr %.0116, i64 8 @@ -68605,7 +68605,7 @@ define hidden void @_ZN5typst6layout6inline9linebreak17h081493bc55008af7E(ptr no %8 = getelementptr inbounds nuw i8, ptr %2, i64 165 %9 = load i8, ptr %8, align 1, !range !565, !alias.scope !12035 %.0.in.i = select i1 %7, i8 %9, i8 %6 - %.0.i = trunc i8 %.0.in.i to i1 + %.0.i = trunc nuw i8 %.0.in.i to i1 br i1 %.0.i, label %11, label %10 10: ; preds = %4 @@ -79190,22 +79190,9 @@ define void @"_ZN5typst4text9linebreak1_100_$LT$impl$u20$typst..foundations..ele ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable define noundef zeroext i1 @"_ZN5typst4text9linebreak1_88_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$typst..text..linebreak..LinebreakElem$GT$2eq17hbe94666d23ff395fE"(ptr noalias noundef readonly align 1 captures(none) dereferenceable(1) %0, ptr noalias noundef readonly align 1 captures(none) dereferenceable(1) %1) unnamed_addr #16 { %3 = load i8, ptr %0, align 1, !range !1931, !noundef !4 - %4 = icmp eq i8 %3, 2 - %5 = load i8, ptr %1, align 1, !range !1931, !noundef !4 - %6 = icmp eq i8 %5, 2 - %brmerge = or i1 %4, %6 - %.mux = and i1 %4, %6 - br i1 %brmerge, label %7, label %8 - -7: ; preds = %2, %8 - %.0 = phi i1 [ %11, %8 ], [ %.mux, %2 ] + %4 = load i8, ptr %1, align 1, !range !1931, !noundef !4 + %.0 = icmp eq i8 %4, %3 ret i1 %.0 - -8: ; preds = %2 - %9 = xor i8 %5, %3 - %10 = trunc i8 %9 to i1 - %11 = xor i1 %10, true - br label %7 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/unicode-normalization-rs/optimized/kwscsepwptyv51i.ll b/bench/unicode-normalization-rs/optimized/kwscsepwptyv51i.ll index 7409aa70db9..4e970324f8d 100644 --- a/bench/unicode-normalization-rs/optimized/kwscsepwptyv51i.ll +++ b/bench/unicode-normalization-rs/optimized/kwscsepwptyv51i.ll @@ -178,7 +178,7 @@ define hidden void @_ZN4core4iter6traits8iterator8Iterator4fold17h174e2c69d9c944 unreachable 74: ; preds = %52 - %.lhs.trunc.i.i = trunc nuw i32 %53 to i16 + %.lhs.trunc.i.i = trunc nuw nsw i32 %53 to i16 %75 = urem i16 %.lhs.trunc.i.i, 28 %.not.i.i = icmp eq i16 %75, 0 %..i.i = select i1 %.not.i.i, i64 2, i64 3 @@ -272,7 +272,7 @@ _ZN21unicode_normalization11stream_safe20classify_nonstarters17hdc3d352c4dbebd42 102: ; preds = %92 %103 = lshr i32 %.0.i1014.i, 12 - %104 = trunc nuw i32 %103 to i8 + %104 = trunc nuw nsw i32 %103 to i8 %105 = or disjoint i8 %104, -32 store i8 %105, ptr %.sroa.0.i.i.i, align 4, !alias.scope !39, !noalias !36 %106 = lshr i32 %.0.i1014.i, 6 @@ -288,7 +288,7 @@ _ZN21unicode_normalization11stream_safe20classify_nonstarters17hdc3d352c4dbebd42 113: ; preds = %92 %114 = lshr i32 %.0.i1014.i, 18 - %115 = trunc i32 %114 to i8 + %115 = trunc nuw nsw i32 %114 to i8 %116 = or disjoint i8 %115, -16 store i8 %116, ptr %.sroa.0.i.i.i, align 4, !alias.scope !39, !noalias !36 %117 = lshr i32 %.0.i1014.i, 12 @@ -339,7 +339,7 @@ _ZN4core4char7methods15encode_utf8_raw17h0195287417066071E.exit.i.i.i: ; preds = br label %"_ZN4core4iter6traits8iterator8Iterator8for_each4call28_$u7b$$u7b$closure$u7d$$u7d$17ha6cebfed4dedef8bE.exit" .critedge.i.i.i: ; preds = %88 - %140 = trunc nuw i32 %.0.i1014.i to i8 + %140 = trunc nuw nsw i32 %.0.i1014.i to i8 %141 = load i64, ptr %7, align 8, !alias.scope !52, !noundef !7 %142 = load i64, ptr %1, align 8, !alias.scope !52, !noundef !7 %143 = icmp eq i64 %141, %142 diff --git a/bench/velox/optimized/SsdFile.ll b/bench/velox/optimized/SsdFile.ll index 151f0d594ca..16bd8beec2a 100644 --- a/bench/velox/optimized/SsdFile.ll +++ b/bench/velox/optimized/SsdFile.ll @@ -4317,16 +4317,11 @@ invoke.cont39: ; preds = %invoke.cont39.prehe %and.i = and i64 %retval.sroa.0.0.copyload.i, 281474976710655 %10 = inttoptr i64 %and.i to ptr %add.ptr = getelementptr inbounds i8, ptr %call.i, i64 %offset.048 - %conv46 = trunc i64 %.sroa.speculated to i32 - %cmp5.i = icmp sgt i32 %conv46, 0 - br i1 %cmp5.i, label %for.body.preheader.i, label %invoke.cont54 + %cmp5.i = icmp sgt i64 %.sroa.speculated, 0 + br i1 %cmp5.i, label %for.body.i, label %invoke.cont54 -for.body.preheader.i: ; preds = %invoke.cont39 - %wide.trip.count.i = and i64 %.sroa.speculated, 2147483647 - br label %for.body.i - -for.body.i: ; preds = %for.inc.i, %for.body.preheader.i - %indvars.iv.i = phi i64 [ 0, %for.body.preheader.i ], [ %indvars.iv.next.i, %for.inc.i ] +for.body.preheader.i: ; preds = %invoke.cont39, %for.inc.i + %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %for.inc.i ], [ 0, %invoke.cont39 ] %arrayidx.i = getelementptr inbounds nuw i8, ptr %10, i64 %indvars.iv.i %11 = load i8, ptr %arrayidx.i, align 1 %arrayidx2.i = getelementptr inbounds nuw i8, ptr %add.ptr, i64 %indvars.iv.i @@ -4336,7 +4331,7 @@ for.body.i: ; preds = %for.inc.i, %for.bod for.inc.i: ; preds = %for.body.i %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i + %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %.sroa.speculated br i1 %exitcond.not.i, label %invoke.cont54, label %for.body.i, !llvm.loop !41 if.then50: ; preds = %for.body.i diff --git a/bench/wasmedge/optimized/alias.ll b/bench/wasmedge/optimized/alias.ll index f8b4873c0b7..ef01ff96e8d 100644 --- a/bench/wasmedge/optimized/alias.ll +++ b/bench/wasmedge/optimized/alias.ll @@ -2057,7 +2057,7 @@ _ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valu br i1 %39, label %40, label %44 40: ; preds = %._crit_edge.i - %41 = trunc nuw i32 %.0.lcssa.i to i8 + %41 = trunc nuw nsw i32 %.0.lcssa.i to i8 %42 = or disjoint i8 %41, 48 %43 = getelementptr inbounds i8, ptr %.023.lcssa.i, i64 -1 store i8 %42, ptr %43, align 1 @@ -2126,7 +2126,7 @@ _ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSEOc.exit: ; preds = %51 br i1 %72, label %73, label %77 73: ; preds = %._crit_edge.i.i - %74 = trunc nuw i32 %.0.lcssa.i.i to i8 + %74 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %75 = or disjoint i8 %74, 48 %76 = getelementptr inbounds i8, ptr %.023.lcssa.i.i, i64 -1 store i8 %75, ptr %76, align 1 @@ -2257,7 +2257,7 @@ _ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valu br i1 %33, label %34, label %38 34: ; preds = %._crit_edge.i - %35 = trunc nuw i32 %.0.lcssa.i to i8 + %35 = trunc nuw nsw i32 %.0.lcssa.i to i8 %36 = or disjoint i8 %35, 48 %37 = getelementptr inbounds i8, ptr %.023.lcssa.i, i64 -1 store i8 %36, ptr %37, align 1 @@ -2299,7 +2299,7 @@ _ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valu br i1 %54, label %55, label %59 55: ; preds = %._crit_edge.i.i - %56 = trunc nuw i32 %.0.lcssa.i.i to i8 + %56 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %57 = or disjoint i8 %56, 48 %58 = getelementptr inbounds i8, ptr %.023.lcssa.i.i, i64 -1 store i8 %57, ptr %58, align 1 @@ -2443,7 +2443,7 @@ _ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valu br i1 %40, label %41, label %45 41: ; preds = %._crit_edge.i - %42 = trunc nuw i64 %.0.lcssa.i to i8 + %42 = trunc nuw nsw i64 %.0.lcssa.i to i8 %43 = or disjoint i8 %42, 48 %44 = getelementptr inbounds i8, ptr %.023.lcssa.i, i64 -1 store i8 %43, ptr %44, align 1 @@ -2510,7 +2510,7 @@ _ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSEOc.exit: ; preds = %51 br i1 %71, label %72, label %76 72: ; preds = %._crit_edge.i.i - %73 = trunc nuw i64 %.0.lcssa.i.i to i8 + %73 = trunc nuw nsw i64 %.0.lcssa.i.i to i8 %74 = or disjoint i8 %73, 48 %75 = getelementptr inbounds i8, ptr %.023.lcssa.i.i, i64 -1 store i8 %74, ptr %75, align 1 @@ -2643,7 +2643,7 @@ _ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valu br i1 %35, label %36, label %40 36: ; preds = %._crit_edge.i - %37 = trunc nuw i64 %.0.lcssa.i to i8 + %37 = trunc nuw nsw i64 %.0.lcssa.i to i8 %38 = or disjoint i8 %37, 48 %39 = getelementptr inbounds i8, ptr %.023.lcssa.i, i64 -1 store i8 %38, ptr %39, align 1 @@ -2683,7 +2683,7 @@ _ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valu br i1 %54, label %55, label %59 55: ; preds = %._crit_edge.i.i - %56 = trunc nuw i64 %.0.lcssa.i.i to i8 + %56 = trunc nuw nsw i64 %.0.lcssa.i.i to i8 %57 = or disjoint i8 %56, 48 %58 = getelementptr inbounds i8, ptr %.023.lcssa.i.i, i64 -1 store i8 %57, ptr %58, align 1 @@ -2873,7 +2873,7 @@ _ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valu br i1 %49, label %50, label %54 50: ; preds = %._crit_edge.i - %51 = trunc nuw i128 %.026.lcssa.i to i8 + %51 = trunc nuw nsw i128 %.026.lcssa.i to i8 %52 = or disjoint i8 %51, 48 %53 = getelementptr inbounds i8, ptr %.0.lcssa.i, i64 -1 store i8 %52, ptr %53, align 1 @@ -2944,7 +2944,7 @@ _ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSEOc.exit: ; preds = %61 br i1 %82, label %83, label %87 83: ; preds = %._crit_edge.i.i - %84 = trunc nuw i128 %.026.lcssa.i.i to i8 + %84 = trunc nuw nsw i128 %.026.lcssa.i.i to i8 %85 = or disjoint i8 %84, 48 %86 = getelementptr inbounds i8, ptr %.0.lcssa.i.i, i64 -1 store i8 %85, ptr %86, align 1 @@ -3103,7 +3103,7 @@ _ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valu br i1 %42, label %43, label %47 43: ; preds = %._crit_edge.i - %44 = trunc nuw i128 %.026.lcssa.i to i8 + %44 = trunc nuw nsw i128 %.026.lcssa.i to i8 %45 = or disjoint i8 %44, 48 %46 = getelementptr inbounds i8, ptr %.0.lcssa.i, i64 -1 store i8 %45, ptr %46, align 1 @@ -3147,7 +3147,7 @@ _ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valu br i1 %63, label %64, label %68 64: ; preds = %._crit_edge.i.i - %65 = trunc nuw i128 %.026.lcssa.i.i to i8 + %65 = trunc nuw nsw i128 %.026.lcssa.i.i to i8 %66 = or disjoint i8 %65, 48 %67 = getelementptr inbounds i8, ptr %.0.lcssa.i.i, i64 -1 store i8 %66, ptr %67, align 1 @@ -3361,7 +3361,7 @@ _ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSEOc.exit: ; preds = %50 br i1 %74, label %75, label %79 75: ; preds = %._crit_edge.i.i.i - %76 = trunc nuw i32 %.0.lcssa.i.i.i to i8 + %76 = trunc nuw nsw i32 %.0.lcssa.i.i.i to i8 %77 = or disjoint i8 %76, 48 %78 = getelementptr inbounds i8, ptr %.023.lcssa.i.i.i, i64 -1 store i8 %77, ptr %78, align 1 @@ -4268,7 +4268,7 @@ define linkonce_odr ptr @_ZN3fmt2v86detail19write_int_localizedINS0_8appenderEmc br i1 %31, label %32, label %36 32: ; preds = %._crit_edge.i - %33 = trunc nuw i64 %.0.lcssa.i to i8 + %33 = trunc nuw nsw i64 %.0.lcssa.i to i8 %34 = or disjoint i8 %33, 48 %35 = getelementptr inbounds i8, ptr %.023.lcssa.i, i64 -1 store i8 %34, ptr %35, align 1 @@ -5267,7 +5267,7 @@ _ZN3fmt2v86detail6fill_nINS0_8appenderEmcEET_S4_T0_RKT1_.exit: ; preds = %_ZNSt2 br i1 %54, label %55, label %59 55: ; preds = %._crit_edge.i.i.i - %56 = trunc nuw i32 %.0.lcssa.i.i.i to i8 + %56 = trunc nuw nsw i32 %.0.lcssa.i.i.i to i8 %57 = or disjoint i8 %56, 48 %58 = getelementptr inbounds i8, ptr %.023.lcssa.i.i.i, i64 -1 store i8 %57, ptr %58, align 1 @@ -8299,7 +8299,7 @@ define linkonce_odr hidden ptr @_ZN3fmt2v86detail17write_significandINS0_8append br i1 %19, label %20, label %24 20: ; preds = %._crit_edge.i.i - %21 = trunc nuw i32 %.0.lcssa.i.i to i8 + %21 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %22 = or disjoint i8 %21, 48 %23 = getelementptr inbounds i8, ptr %.023.lcssa.i.i, i64 -1 store i8 %22, ptr %23, align 1 @@ -8385,7 +8385,7 @@ define linkonce_odr hidden ptr @_ZN3fmt2v86detail17write_significandINS0_8append br i1 %62, label %63, label %67 63: ; preds = %._crit_edge.i37.i - %64 = trunc nuw i32 %.0.lcssa.i39.i to i8 + %64 = trunc nuw nsw i32 %.0.lcssa.i39.i to i8 %65 = or disjoint i8 %64, 48 %66 = getelementptr inbounds i8, ptr %.023.lcssa.i38.i, i64 -1 store i8 %65, ptr %66, align 1 @@ -9045,7 +9045,7 @@ define linkonce_odr ptr @_ZN3fmt2v86detail17write_significandIcNS0_8appenderEjNS br i1 %24, label %25, label %29 25: ; preds = %._crit_edge.i.i.i - %26 = trunc nuw i32 %.0.lcssa.i.i.i to i8 + %26 = trunc nuw nsw i32 %.0.lcssa.i.i.i to i8 %27 = or disjoint i8 %26, 48 %28 = getelementptr inbounds i8, ptr %.023.lcssa.i.i.i, i64 -1 store i8 %27, ptr %28, align 1 @@ -9190,7 +9190,7 @@ _ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSERKc.exit.i: ; preds = br i1 %90, label %91, label %95 91: ; preds = %._crit_edge.i.i.i16 - %92 = trunc nuw i32 %.0.lcssa.i.i.i18 to i8 + %92 = trunc nuw nsw i32 %.0.lcssa.i.i.i18 to i8 %93 = or disjoint i8 %92, 48 %94 = getelementptr inbounds i8, ptr %.023.lcssa.i.i.i17, i64 -1 store i8 %93, ptr %94, align 1 @@ -10292,7 +10292,7 @@ _ZN3fmt2v86detail6fill_nINS0_8appenderEicEET_S4_T0_RKT1_.exit: ; preds = %_ZNSt2 br i1 %92, label %93, label %97 93: ; preds = %._crit_edge.i.i.i - %94 = trunc nuw i32 %.0.lcssa.i.i.i to i8 + %94 = trunc nuw nsw i32 %.0.lcssa.i.i.i to i8 %95 = or disjoint i8 %94, 48 %96 = getelementptr inbounds i8, ptr %.023.lcssa.i.i.i, i64 -1 store i8 %95, ptr %96, align 1 @@ -11167,7 +11167,7 @@ define linkonce_odr hidden ptr @_ZN3fmt2v86detail17write_significandINS0_8append br i1 %18, label %19, label %23 19: ; preds = %._crit_edge.i.i - %20 = trunc nuw i64 %.0.lcssa.i.i to i8 + %20 = trunc nuw nsw i64 %.0.lcssa.i.i to i8 %21 = or disjoint i8 %20, 48 %22 = getelementptr inbounds i8, ptr %.023.lcssa.i.i, i64 -1 store i8 %21, ptr %22, align 1 @@ -11250,7 +11250,7 @@ define linkonce_odr hidden ptr @_ZN3fmt2v86detail17write_significandINS0_8append br i1 %58, label %59, label %63 59: ; preds = %._crit_edge.i37.i - %60 = trunc nuw i64 %.0.lcssa.i39.i to i8 + %60 = trunc nuw nsw i64 %.0.lcssa.i39.i to i8 %61 = or disjoint i8 %60, 48 %62 = getelementptr inbounds i8, ptr %.023.lcssa.i38.i, i64 -1 store i8 %61, ptr %62, align 1 @@ -11727,7 +11727,7 @@ define linkonce_odr ptr @_ZN3fmt2v86detail17write_significandIcNS0_8appenderEmNS br i1 %23, label %24, label %28 24: ; preds = %._crit_edge.i.i.i - %25 = trunc nuw i64 %.0.lcssa.i.i.i to i8 + %25 = trunc nuw nsw i64 %.0.lcssa.i.i.i to i8 %26 = or disjoint i8 %25, 48 %27 = getelementptr inbounds i8, ptr %.023.lcssa.i.i.i, i64 -1 store i8 %26, ptr %27, align 1 @@ -11870,7 +11870,7 @@ _ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSERKc.exit.i: ; preds = br i1 %87, label %88, label %92 88: ; preds = %._crit_edge.i.i.i16 - %89 = trunc nuw i64 %.0.lcssa.i.i.i18 to i8 + %89 = trunc nuw nsw i64 %.0.lcssa.i.i.i18 to i8 %90 = or disjoint i8 %89, 48 %91 = getelementptr inbounds i8, ptr %.023.lcssa.i.i.i17, i64 -1 store i8 %90, ptr %91, align 1 @@ -12895,7 +12895,7 @@ _ZN3fmt2v86detail6fill_nINS0_8appenderEicEET_S4_T0_RKT1_.exit: ; preds = %_ZNSt2 br i1 %91, label %92, label %96 92: ; preds = %._crit_edge.i.i.i - %93 = trunc nuw i64 %.0.lcssa.i.i.i to i8 + %93 = trunc nuw nsw i64 %.0.lcssa.i.i.i to i8 %94 = or disjoint i8 %93, 48 %95 = getelementptr inbounds i8, ptr %.023.lcssa.i.i.i, i64 -1 store i8 %94, ptr %95, align 1 @@ -19341,7 +19341,7 @@ _ZN3fmt2v86detail13width_checkerINS1_13error_handlerEEclIxTnNSt9enable_ifIXsr10i 36: ; preds = %_ZN3fmt2v86detail13width_checkerINS1_13error_handlerEEclIxTnNSt9enable_ifIXsr10is_integerIT_EE5valueEiE4typeELi0EEEyS7_.exit.thread, %_ZN3fmt2v86detail13width_checkerINS1_13error_handlerEEclIxTnNSt9enable_ifIXsr10is_integerIT_EE5valueEiE4typeELi0EEEyS7_.exit %.065 = phi i64 [ %9, %_ZN3fmt2v86detail13width_checkerINS1_13error_handlerEEclIxTnNSt9enable_ifIXsr10is_integerIT_EE5valueEiE4typeELi0EEEyS7_.exit.thread ], [ %.0, %_ZN3fmt2v86detail13width_checkerINS1_13error_handlerEEclIxTnNSt9enable_ifIXsr10is_integerIT_EE5valueEiE4typeELi0EEEyS7_.exit ] - %37 = trunc nuw i64 %.065 to i32 + %37 = trunc nuw nsw i64 %.065 to i32 ret i32 %37 } @@ -19808,7 +19808,7 @@ _ZN3fmt2v86detail17precision_checkerINS1_13error_handlerEEclIxTnNSt9enable_ifIXs 36: ; preds = %_ZN3fmt2v86detail17precision_checkerINS1_13error_handlerEEclIxTnNSt9enable_ifIXsr10is_integerIT_EE5valueEiE4typeELi0EEEyS7_.exit.thread, %_ZN3fmt2v86detail17precision_checkerINS1_13error_handlerEEclIxTnNSt9enable_ifIXsr10is_integerIT_EE5valueEiE4typeELi0EEEyS7_.exit %.065 = phi i64 [ %9, %_ZN3fmt2v86detail17precision_checkerINS1_13error_handlerEEclIxTnNSt9enable_ifIXsr10is_integerIT_EE5valueEiE4typeELi0EEEyS7_.exit.thread ], [ %.0, %_ZN3fmt2v86detail17precision_checkerINS1_13error_handlerEEclIxTnNSt9enable_ifIXsr10is_integerIT_EE5valueEiE4typeELi0EEEyS7_.exit ] - %37 = trunc nuw i64 %.065 to i32 + %37 = trunc nuw nsw i64 %.065 to i32 ret i32 %37 } @@ -19952,7 +19952,7 @@ _ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSEOc.exit: ; preds = %51 br i1 %74, label %75, label %79 75: ; preds = %._crit_edge.i.i.i - %76 = trunc nuw i64 %.0.lcssa.i.i.i to i8 + %76 = trunc nuw nsw i64 %.0.lcssa.i.i.i to i8 %77 = or disjoint i8 %76, 48 %78 = getelementptr inbounds i8, ptr %.023.lcssa.i.i.i, i64 -1 store i8 %77, ptr %78, align 1 @@ -21115,7 +21115,7 @@ _ZN3fmt2v86detail6fill_nINS0_8appenderEmcEET_S4_T0_RKT1_.exit: ; preds = %_ZNSt2 br i1 %53, label %54, label %58 54: ; preds = %._crit_edge.i.i.i - %55 = trunc nuw i64 %.0.lcssa.i.i.i to i8 + %55 = trunc nuw nsw i64 %.0.lcssa.i.i.i to i8 %56 = or disjoint i8 %55, 48 %57 = getelementptr inbounds i8, ptr %.023.lcssa.i.i.i, i64 -1 store i8 %56, ptr %57, align 1 @@ -22659,7 +22659,7 @@ _ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSEOc.exit: ; preds = %55 br i1 %79, label %80, label %84 80: ; preds = %._crit_edge.i.i.i - %81 = trunc nuw i128 %.026.lcssa.i.i.i to i8 + %81 = trunc nuw nsw i128 %.026.lcssa.i.i.i to i8 %82 = or disjoint i8 %81, 48 %83 = getelementptr inbounds i8, ptr %.0.lcssa.i.i.i, i64 -1 store i8 %82, ptr %83, align 1 @@ -23552,7 +23552,7 @@ _ZN3fmt2v86detail12count_digitsEo.exit: ; preds = %24, %14, %18, %22 %.026.lcssa.i = phi i128 [ %.sroa.0.0.insert.insert.i.i, %_ZN3fmt2v86detail12count_digitsEo.exit ], [ %32, %.lr.ph.i ] %.0.lcssa.i = phi ptr [ %29, %_ZN3fmt2v86detail12count_digitsEo.exit ], [ %31, %.lr.ph.i ] %39 = icmp samesign ult i128 %.026.lcssa.i, 10 - %extract.t21 = trunc i128 %.026.lcssa.i to i8 + %extract.t21 = trunc nuw nsw i128 %.026.lcssa.i to i8 br i1 %39, label %40, label %43 40: ; preds = %._crit_edge.i.thread, %._crit_edge.i @@ -24267,7 +24267,7 @@ _ZN3fmt2v86detail6fill_nINS0_8appenderEmcEET_S4_T0_RKT1_.exit: ; preds = %_ZNSt2 br i1 %54, label %55, label %59 55: ; preds = %._crit_edge.i.i.i - %56 = trunc nuw i128 %.026.lcssa.i.i.i to i8 + %56 = trunc nuw nsw i128 %.026.lcssa.i.i.i to i8 %57 = or disjoint i8 %56, 48 %58 = getelementptr inbounds i8, ptr %.0.lcssa.i.i.i, i64 -1 store i8 %57, ptr %58, align 1 diff --git a/bench/wasmedge/optimized/jit.ll b/bench/wasmedge/optimized/jit.ll index 909940e6ab8..7aa5065e11f 100644 --- a/bench/wasmedge/optimized/jit.ll +++ b/bench/wasmedge/optimized/jit.ll @@ -2362,7 +2362,7 @@ _ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valu br i1 %39, label %40, label %44 40: ; preds = %._crit_edge.i - %41 = trunc nuw i32 %.0.lcssa.i to i8 + %41 = trunc nuw nsw i32 %.0.lcssa.i to i8 %42 = or disjoint i8 %41, 48 %43 = getelementptr inbounds i8, ptr %.023.lcssa.i, i64 -1 store i8 %42, ptr %43, align 1 @@ -2431,7 +2431,7 @@ _ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSEOc.exit: ; preds = %51 br i1 %72, label %73, label %77 73: ; preds = %._crit_edge.i.i - %74 = trunc nuw i32 %.0.lcssa.i.i to i8 + %74 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %75 = or disjoint i8 %74, 48 %76 = getelementptr inbounds i8, ptr %.023.lcssa.i.i, i64 -1 store i8 %75, ptr %76, align 1 @@ -2562,7 +2562,7 @@ _ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valu br i1 %33, label %34, label %38 34: ; preds = %._crit_edge.i - %35 = trunc nuw i32 %.0.lcssa.i to i8 + %35 = trunc nuw nsw i32 %.0.lcssa.i to i8 %36 = or disjoint i8 %35, 48 %37 = getelementptr inbounds i8, ptr %.023.lcssa.i, i64 -1 store i8 %36, ptr %37, align 1 @@ -2604,7 +2604,7 @@ _ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valu br i1 %54, label %55, label %59 55: ; preds = %._crit_edge.i.i - %56 = trunc nuw i32 %.0.lcssa.i.i to i8 + %56 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %57 = or disjoint i8 %56, 48 %58 = getelementptr inbounds i8, ptr %.023.lcssa.i.i, i64 -1 store i8 %57, ptr %58, align 1 @@ -2748,7 +2748,7 @@ _ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valu br i1 %40, label %41, label %45 41: ; preds = %._crit_edge.i - %42 = trunc nuw i64 %.0.lcssa.i to i8 + %42 = trunc nuw nsw i64 %.0.lcssa.i to i8 %43 = or disjoint i8 %42, 48 %44 = getelementptr inbounds i8, ptr %.023.lcssa.i, i64 -1 store i8 %43, ptr %44, align 1 @@ -2815,7 +2815,7 @@ _ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSEOc.exit: ; preds = %51 br i1 %71, label %72, label %76 72: ; preds = %._crit_edge.i.i - %73 = trunc nuw i64 %.0.lcssa.i.i to i8 + %73 = trunc nuw nsw i64 %.0.lcssa.i.i to i8 %74 = or disjoint i8 %73, 48 %75 = getelementptr inbounds i8, ptr %.023.lcssa.i.i, i64 -1 store i8 %74, ptr %75, align 1 @@ -2948,7 +2948,7 @@ _ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valu br i1 %35, label %36, label %40 36: ; preds = %._crit_edge.i - %37 = trunc nuw i64 %.0.lcssa.i to i8 + %37 = trunc nuw nsw i64 %.0.lcssa.i to i8 %38 = or disjoint i8 %37, 48 %39 = getelementptr inbounds i8, ptr %.023.lcssa.i, i64 -1 store i8 %38, ptr %39, align 1 @@ -2988,7 +2988,7 @@ _ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valu br i1 %54, label %55, label %59 55: ; preds = %._crit_edge.i.i - %56 = trunc nuw i64 %.0.lcssa.i.i to i8 + %56 = trunc nuw nsw i64 %.0.lcssa.i.i to i8 %57 = or disjoint i8 %56, 48 %58 = getelementptr inbounds i8, ptr %.023.lcssa.i.i, i64 -1 store i8 %57, ptr %58, align 1 @@ -3178,7 +3178,7 @@ _ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valu br i1 %49, label %50, label %54 50: ; preds = %._crit_edge.i - %51 = trunc nuw i128 %.026.lcssa.i to i8 + %51 = trunc nuw nsw i128 %.026.lcssa.i to i8 %52 = or disjoint i8 %51, 48 %53 = getelementptr inbounds i8, ptr %.0.lcssa.i, i64 -1 store i8 %52, ptr %53, align 1 @@ -3249,7 +3249,7 @@ _ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSEOc.exit: ; preds = %61 br i1 %82, label %83, label %87 83: ; preds = %._crit_edge.i.i - %84 = trunc nuw i128 %.026.lcssa.i.i to i8 + %84 = trunc nuw nsw i128 %.026.lcssa.i.i to i8 %85 = or disjoint i8 %84, 48 %86 = getelementptr inbounds i8, ptr %.0.lcssa.i.i, i64 -1 store i8 %85, ptr %86, align 1 @@ -3408,7 +3408,7 @@ _ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valu br i1 %42, label %43, label %47 43: ; preds = %._crit_edge.i - %44 = trunc nuw i128 %.026.lcssa.i to i8 + %44 = trunc nuw nsw i128 %.026.lcssa.i to i8 %45 = or disjoint i8 %44, 48 %46 = getelementptr inbounds i8, ptr %.0.lcssa.i, i64 -1 store i8 %45, ptr %46, align 1 @@ -3452,7 +3452,7 @@ _ZN3fmt2v86detail10to_pointerIcEEPT_NSt11conditionalIXsr3std7is_sameIS3_cEE5valu br i1 %63, label %64, label %68 64: ; preds = %._crit_edge.i.i - %65 = trunc nuw i128 %.026.lcssa.i.i to i8 + %65 = trunc nuw nsw i128 %.026.lcssa.i.i to i8 %66 = or disjoint i8 %65, 48 %67 = getelementptr inbounds i8, ptr %.0.lcssa.i.i, i64 -1 store i8 %66, ptr %67, align 1 @@ -3676,7 +3676,7 @@ _ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSEOc.exit: ; preds = %55 br i1 %79, label %80, label %84 80: ; preds = %._crit_edge.i.i.i - %81 = trunc nuw i32 %.0.lcssa.i.i.i to i8 + %81 = trunc nuw nsw i32 %.0.lcssa.i.i.i to i8 %82 = or disjoint i8 %81, 48 %83 = getelementptr inbounds i8, ptr %.023.lcssa.i.i.i, i64 -1 store i8 %82, ptr %83, align 1 @@ -4526,7 +4526,7 @@ define linkonce_odr ptr @_ZN3fmt2v86detail19write_int_localizedINS0_8appenderEmc br i1 %31, label %32, label %36 32: ; preds = %._crit_edge.i - %33 = trunc nuw i64 %.0.lcssa.i to i8 + %33 = trunc nuw nsw i64 %.0.lcssa.i to i8 %34 = or disjoint i8 %33, 48 %35 = getelementptr inbounds i8, ptr %.023.lcssa.i, i64 -1 store i8 %34, ptr %35, align 1 @@ -5492,7 +5492,7 @@ _ZN3fmt2v86detail6fill_nINS0_8appenderEmcEET_S4_T0_RKT1_.exit: ; preds = %_ZNSt2 br i1 %54, label %55, label %59 55: ; preds = %._crit_edge.i.i.i - %56 = trunc nuw i32 %.0.lcssa.i.i.i to i8 + %56 = trunc nuw nsw i32 %.0.lcssa.i.i.i to i8 %57 = or disjoint i8 %56, 48 %58 = getelementptr inbounds i8, ptr %.023.lcssa.i.i.i, i64 -1 store i8 %57, ptr %58, align 1 @@ -8557,7 +8557,7 @@ define linkonce_odr hidden ptr @_ZN3fmt2v86detail17write_significandINS0_8append br i1 %19, label %20, label %24 20: ; preds = %._crit_edge.i.i - %21 = trunc nuw i32 %.0.lcssa.i.i to i8 + %21 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %22 = or disjoint i8 %21, 48 %23 = getelementptr inbounds i8, ptr %.023.lcssa.i.i, i64 -1 store i8 %22, ptr %23, align 1 @@ -8643,7 +8643,7 @@ define linkonce_odr hidden ptr @_ZN3fmt2v86detail17write_significandINS0_8append br i1 %62, label %63, label %67 63: ; preds = %._crit_edge.i37.i - %64 = trunc nuw i32 %.0.lcssa.i39.i to i8 + %64 = trunc nuw nsw i32 %.0.lcssa.i39.i to i8 %65 = or disjoint i8 %64, 48 %66 = getelementptr inbounds i8, ptr %.023.lcssa.i38.i, i64 -1 store i8 %65, ptr %66, align 1 @@ -9303,7 +9303,7 @@ define linkonce_odr ptr @_ZN3fmt2v86detail17write_significandIcNS0_8appenderEjNS br i1 %24, label %25, label %29 25: ; preds = %._crit_edge.i.i.i - %26 = trunc nuw i32 %.0.lcssa.i.i.i to i8 + %26 = trunc nuw nsw i32 %.0.lcssa.i.i.i to i8 %27 = or disjoint i8 %26, 48 %28 = getelementptr inbounds i8, ptr %.023.lcssa.i.i.i, i64 -1 store i8 %27, ptr %28, align 1 @@ -9448,7 +9448,7 @@ _ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSERKc.exit.i: ; preds = br i1 %90, label %91, label %95 91: ; preds = %._crit_edge.i.i.i14 - %92 = trunc nuw i32 %.0.lcssa.i.i.i16 to i8 + %92 = trunc nuw nsw i32 %.0.lcssa.i.i.i16 to i8 %93 = or disjoint i8 %92, 48 %94 = getelementptr inbounds i8, ptr %.023.lcssa.i.i.i15, i64 -1 store i8 %93, ptr %94, align 1 @@ -10477,7 +10477,7 @@ _ZN3fmt2v86detail6fill_nINS0_8appenderEicEET_S4_T0_RKT1_.exit: ; preds = %_ZNSt2 br i1 %92, label %93, label %97 93: ; preds = %._crit_edge.i.i.i - %94 = trunc nuw i32 %.0.lcssa.i.i.i to i8 + %94 = trunc nuw nsw i32 %.0.lcssa.i.i.i to i8 %95 = or disjoint i8 %94, 48 %96 = getelementptr inbounds i8, ptr %.023.lcssa.i.i.i, i64 -1 store i8 %95, ptr %96, align 1 @@ -11388,7 +11388,7 @@ define linkonce_odr hidden ptr @_ZN3fmt2v86detail17write_significandINS0_8append br i1 %18, label %19, label %23 19: ; preds = %._crit_edge.i.i - %20 = trunc nuw i64 %.0.lcssa.i.i to i8 + %20 = trunc nuw nsw i64 %.0.lcssa.i.i to i8 %21 = or disjoint i8 %20, 48 %22 = getelementptr inbounds i8, ptr %.023.lcssa.i.i, i64 -1 store i8 %21, ptr %22, align 1 @@ -11471,7 +11471,7 @@ define linkonce_odr hidden ptr @_ZN3fmt2v86detail17write_significandINS0_8append br i1 %58, label %59, label %63 59: ; preds = %._crit_edge.i37.i - %60 = trunc nuw i64 %.0.lcssa.i39.i to i8 + %60 = trunc nuw nsw i64 %.0.lcssa.i39.i to i8 %61 = or disjoint i8 %60, 48 %62 = getelementptr inbounds i8, ptr %.023.lcssa.i38.i, i64 -1 store i8 %61, ptr %62, align 1 @@ -11948,7 +11948,7 @@ define linkonce_odr ptr @_ZN3fmt2v86detail17write_significandIcNS0_8appenderEmNS br i1 %23, label %24, label %28 24: ; preds = %._crit_edge.i.i.i - %25 = trunc nuw i64 %.0.lcssa.i.i.i to i8 + %25 = trunc nuw nsw i64 %.0.lcssa.i.i.i to i8 %26 = or disjoint i8 %25, 48 %27 = getelementptr inbounds i8, ptr %.023.lcssa.i.i.i, i64 -1 store i8 %26, ptr %27, align 1 @@ -12091,7 +12091,7 @@ _ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSERKc.exit.i: ; preds = br i1 %87, label %88, label %92 88: ; preds = %._crit_edge.i.i.i14 - %89 = trunc nuw i64 %.0.lcssa.i.i.i16 to i8 + %89 = trunc nuw nsw i64 %.0.lcssa.i.i.i16 to i8 %90 = or disjoint i8 %89, 48 %91 = getelementptr inbounds i8, ptr %.023.lcssa.i.i.i15, i64 -1 store i8 %90, ptr %91, align 1 @@ -13063,7 +13063,7 @@ _ZN3fmt2v86detail6fill_nINS0_8appenderEicEET_S4_T0_RKT1_.exit: ; preds = %_ZNSt2 br i1 %91, label %92, label %96 92: ; preds = %._crit_edge.i.i.i - %93 = trunc nuw i64 %.0.lcssa.i.i.i to i8 + %93 = trunc nuw nsw i64 %.0.lcssa.i.i.i to i8 %94 = or disjoint i8 %93, 48 %95 = getelementptr inbounds i8, ptr %.023.lcssa.i.i.i, i64 -1 store i8 %94, ptr %95, align 1 @@ -20105,7 +20105,7 @@ _ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSEOc.exit: ; preds = %56 br i1 %79, label %80, label %84 80: ; preds = %._crit_edge.i.i.i - %81 = trunc nuw i64 %.0.lcssa.i.i.i to i8 + %81 = trunc nuw nsw i64 %.0.lcssa.i.i.i to i8 %82 = or disjoint i8 %81, 48 %83 = getelementptr inbounds i8, ptr %.023.lcssa.i.i.i, i64 -1 store i8 %82, ptr %83, align 1 @@ -21268,7 +21268,7 @@ _ZN3fmt2v86detail6fill_nINS0_8appenderEmcEET_S4_T0_RKT1_.exit: ; preds = %_ZNSt2 br i1 %53, label %54, label %58 54: ; preds = %._crit_edge.i.i.i - %55 = trunc nuw i64 %.0.lcssa.i.i.i to i8 + %55 = trunc nuw nsw i64 %.0.lcssa.i.i.i to i8 %56 = or disjoint i8 %55, 48 %57 = getelementptr inbounds i8, ptr %.023.lcssa.i.i.i, i64 -1 store i8 %56, ptr %57, align 1 @@ -22822,7 +22822,7 @@ _ZNSt20back_insert_iteratorIN3fmt2v86detail6bufferIcEEEaSEOc.exit: ; preds = %60 br i1 %84, label %85, label %89 85: ; preds = %._crit_edge.i.i.i - %86 = trunc nuw i128 %.026.lcssa.i.i.i to i8 + %86 = trunc nuw nsw i128 %.026.lcssa.i.i.i to i8 %87 = or disjoint i8 %86, 48 %88 = getelementptr inbounds i8, ptr %.0.lcssa.i.i.i, i64 -1 store i8 %87, ptr %88, align 1 @@ -23715,7 +23715,7 @@ _ZN3fmt2v86detail12count_digitsEo.exit: ; preds = %24, %14, %18, %22 %.026.lcssa.i = phi i128 [ %.sroa.0.0.insert.insert.i.i, %_ZN3fmt2v86detail12count_digitsEo.exit ], [ %32, %.lr.ph.i ] %.0.lcssa.i = phi ptr [ %29, %_ZN3fmt2v86detail12count_digitsEo.exit ], [ %31, %.lr.ph.i ] %39 = icmp samesign ult i128 %.026.lcssa.i, 10 - %extract.t21 = trunc i128 %.026.lcssa.i to i8 + %extract.t21 = trunc nuw nsw i128 %.026.lcssa.i to i8 br i1 %39, label %40, label %43 40: ; preds = %._crit_edge.i.thread, %._crit_edge.i @@ -24430,7 +24430,7 @@ _ZN3fmt2v86detail6fill_nINS0_8appenderEmcEET_S4_T0_RKT1_.exit: ; preds = %_ZNSt2 br i1 %54, label %55, label %59 55: ; preds = %._crit_edge.i.i.i - %56 = trunc nuw i128 %.026.lcssa.i.i.i to i8 + %56 = trunc nuw nsw i128 %.026.lcssa.i.i.i to i8 %57 = or disjoint i8 %56, 48 %58 = getelementptr inbounds i8, ptr %.0.lcssa.i.i.i, i64 -1 store i8 %57, ptr %58, align 1 diff --git a/bench/xgboost/optimized/context.ll b/bench/xgboost/optimized/context.ll index 673cca43c6e..0c66aa6d213 100644 --- a/bench/xgboost/optimized/context.ll +++ b/bench/xgboost/optimized/context.ll @@ -1856,7 +1856,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i: ; p br label %_ZNSt7__cxx119to_stringEi.exit 63: ; preds = %._crit_edge.i.i16 - %64 = trunc nuw i32 %.0.lcssa.i.i to i8 + %64 = trunc nuw nsw i32 %.0.lcssa.i.i to i8 %65 = or disjoint i8 %64, 48 br label %_ZNSt7__cxx119to_stringEi.exit @@ -2117,7 +2117,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i38: ; br label %_ZNSt7__cxx119to_stringEi.exit46 176: ; preds = %._crit_edge.i.i39 - %177 = trunc nuw i32 %.0.lcssa.i.i40 to i8 + %177 = trunc nuw nsw i32 %.0.lcssa.i.i40 to i8 %178 = or disjoint i8 %177, 48 br label %_ZNSt7__cxx119to_stringEi.exit46 @@ -2378,7 +2378,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i75: ; br label %_ZNSt7__cxx119to_stringEi.exit83 289: ; preds = %._crit_edge.i.i76 - %290 = trunc nuw i32 %.0.lcssa.i.i77 to i8 + %290 = trunc nuw nsw i32 %.0.lcssa.i.i77 to i8 %291 = or disjoint i8 %290, 48 br label %_ZNSt7__cxx119to_stringEi.exit83 @@ -2639,7 +2639,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit.i112: br label %_ZNSt7__cxx119to_stringEi.exit120 402: ; preds = %._crit_edge.i.i113 - %403 = trunc nuw i32 %.0.lcssa.i.i114 to i8 + %403 = trunc nuw nsw i32 %.0.lcssa.i.i114 to i8 %404 = or disjoint i8 %403, 48 br label %_ZNSt7__cxx119to_stringEi.exit120 @@ -39499,22 +39499,23 @@ _ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i: ; preds = %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE6_M_strISA_EENSt9enable_ifIXsr8__detail20__is_contiguous_iterIT_EE5valueENSB_13__string_viewEE4typeEv.exit9.i.i %bcmp.i = tail call i32 @bcmp(ptr %.sroa.0.2.i.i.i, ptr %.sroa.0.2.i2.i.i, i64 %.sroa.speculated.i.i.i) - %.not14.i.i.i = icmp eq i32 %bcmp.i, 0 - br i1 %.not14.i.i.i, label %select.unfold.i.i.i, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit - -select.unfold.i.i.i: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i, %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE6_M_strISA_EENSt9enable_ifIXsr8__detail20__is_contiguous_iterIT_EE5valueENSB_13__string_viewEE4typeEv.exit9.i.i + %.not14.i.i.i = icmp ne i32 %bcmp.i, 0 %63 = sub i64 %.sroa.4.2.i.i.i, %.sroa.4.2.i3.i.i %64 = icmp sgt i64 %63, 2147483647 - br i1 %64, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit, label %65 + %or.cond.i = select i1 %.not14.i.i.i, i1 true, i1 %64 + br i1 %or.cond.i, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit, label %65 + +select.unfold.i.i.i: ; preds = %_ZNKSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEE6_M_strISA_EENSt9enable_ifIXsr8__detail20__is_contiguous_iterIT_EE5valueENSB_13__string_viewEE4typeEv.exit9.i.i + %.old.i = sub i64 %.sroa.4.2.i.i.i, %.sroa.4.2.i3.i.i + %.old2.i = icmp sgt i64 %.old.i, 2147483647 + br i1 %.old2.i, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit, label %65 -65: ; preds = %select.unfold.i.i.i - %spec.select1522.i.i.i = tail call i64 @llvm.smax.i64(i64 %63, i64 -2147483648) - %66 = and i64 %spec.select1522.i.i.i, 4294967295 - %67 = icmp eq i64 %66, 0 +65: ; preds = %select.unfold.i.i.i, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i + %66 = icmp eq i64 %.sroa.4.2.i.i.i, %.sroa.4.2.i3.i.i br label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit _ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit: ; preds = %65, %select.unfold.i.i.i, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i, %9, %11, %15, %21, %2 - %.0 = phi i1 [ true, %2 ], [ false, %21 ], [ false, %15 ], [ false, %11 ], [ false, %9 ], [ false, %select.unfold.i.i.i ], [ %67, %65 ], [ false, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i ] + %.0 = phi i1 [ true, %2 ], [ false, %21 ], [ false, %15 ], [ false, %11 ], [ false, %9 ], [ false, %select.unfold.i.i.i ], [ %66, %65 ], [ false, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i ] ret i1 %.0 } diff --git a/bench/yalantinglibs/optimized/client.ll b/bench/yalantinglibs/optimized/client.ll index 77e05cd8699..edd6d1a7717 100644 --- a/bench/yalantinglibs/optimized/client.ll +++ b/bench/yalantinglibs/optimized/client.ll @@ -11999,7 +11999,7 @@ if.then.i: ; preds = %if.then br label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit _ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit: ; preds = %if.then, %if.then.i - %2 = phi i8 [ %.pre, %if.then.i ], [ %1, %if.then ] + %2 = phi i8 [ %1, %if.then ], [ %.pre, %if.then.i ] %shutdown_ = getelementptr inbounds nuw i8, ptr %this, i64 241 store i8 1, ptr %shutdown_, align 1 %stopped_.i = getelementptr inbounds nuw i8, ptr %this, i64 240 @@ -12171,7 +12171,6 @@ if.then.i: ; preds = %entry br label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit _ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit: ; preds = %entry, %if.then.i - %.sink.i = phi i8 [ 1, %if.then.i ], [ 0, %entry ] %shutdown_ = getelementptr inbounds nuw i8, ptr %this, i64 241 store i8 1, ptr %shutdown_, align 1 %thread_ = getelementptr inbounds nuw i8, ptr %this, i64 248 @@ -12213,36 +12212,23 @@ if.then.i4: ; preds = %land.lhs.true.i %vfn.i = getelementptr inbounds nuw i8, ptr %vtable.i, i64 8 %6 = load ptr, ptr %vfn.i, align 8 invoke void %6(ptr noundef nonnull align 8 dereferenceable(8) %5) - to label %if.end unwind label %lpad.loopexit.split-lp + to label %if.end unwind label %lpad.loopexit -lpad.loopexit: ; preds = %if.then15 - %lpad.loopexit37 = landingpad { ptr, i32 } - cleanup - br label %lpad - -lpad.loopexit.split-lp: ; preds = %if.then.i4, %if.then.i16 - %lock.sroa.5.0.ph = phi i8 [ %.sink.i, %if.then.i4 ], [ 0, %if.then.i16 ] +lpad.loopexit: ; preds = %if.then.i4 %lpad.loopexit.split-lp38 = landingpad { ptr, i32 } cleanup - %7 = trunc nuw i8 %lock.sroa.5.0.ph to i1 - br label %lpad - -lpad: ; preds = %lpad.loopexit.split-lp, %lpad.loopexit - %lock.sroa.5.0 = phi i1 [ false, %lpad.loopexit ], [ %7, %lpad.loopexit.split-lp ] - %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit37, %lpad.loopexit ], [ %lpad.loopexit.split-lp38, %lpad.loopexit.split-lp ] - br i1 %lock.sroa.5.0, label %if.then.i6, label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockD2Ev.exit + br i1 %tobool.i, label %if.then.i6, label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockD2Ev.exit if.then.i6: ; preds = %lpad %mutex_2.i = getelementptr inbounds nuw i8, ptr %this, i64 56 - %call.i.i7 = call i32 @pthread_mutex_unlock(ptr noundef nonnull align 8 dereferenceable(40) %mutex_2.i) #32 + %call.i.i7 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull align 8 dereferenceable(40) %mutex_2.i) #32 br label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockD2Ev.exit _ZN4asio6detail27conditionally_enabled_mutex11scoped_lockD2Ev.exit: ; preds = %lpad, %if.then.i6 - resume { ptr, i32 } %lpad.phi + resume { ptr, i32 } %lpad.loopexit.split-lp38 if.end: ; preds = %land.lhs.true.i, %_ZN4asio6detail27conditionally_enabled_event10signal_allERNS0_27conditionally_enabled_mutex11scoped_lockE.exit.i, %if.then.i4, %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit - %tobool.i9 = trunc nuw i8 %.sink.i to i1 - br i1 %tobool.i9, label %if.then.i10, label %invoke.cont2 + br i1 %tobool.i, label %if.then.i10, label %invoke.cont2 if.then.i10: ; preds = %if.end %8 = load i8, ptr %enabled_.i, align 8 @@ -12267,17 +12253,14 @@ if.then5: ; preds = %invoke.cont2 if.then.i16: ; preds = %if.then5 %11 = load i64, ptr %9, align 8 - %call.i17 = invoke i32 @pthread_join(i64 noundef %11, ptr noundef null) - to label %invoke.cont7 unwind label %lpad.loopexit.split-lp - -invoke.cont7: ; preds = %if.then.i16 + %call.i17 = tail call i32 @pthread_join(i64 noundef %11, ptr noundef null) store i8 1, ptr %joined_.i, align 8 %.pre = load ptr, ptr %thread_, align 8 %isnull = icmp eq ptr %.pre, null br i1 %isnull, label %delete.end, label %delete.notnull -delete.notnull: ; preds = %if.then5, %invoke.cont7 - %12 = phi ptr [ %.pre, %invoke.cont7 ], [ %9, %if.then5 ] +delete.notnull: ; preds = %if.then5, %if.then.i16 + %12 = phi ptr [ %.pre, %if.then.i16 ], [ %9, %if.then5 ] %joined_.i18 = getelementptr inbounds nuw i8, ptr %12, i64 8 %13 = load i8, ptr %joined_.i18, align 8 %tobool.i19 = trunc i8 %13 to i1 @@ -12292,7 +12275,7 @@ _ZN4asio6detail12posix_threadD2Ev.exit: ; preds = %delete.notnull, %if tail call void @_ZdlPv(ptr noundef nonnull %12) #33 br label %delete.end -delete.end: ; preds = %_ZN4asio6detail12posix_threadD2Ev.exit, %invoke.cont7 +delete.end: ; preds = %_ZN4asio6detail12posix_threadD2Ev.exit, %if.then.i16 store ptr null, ptr %thread_, align 8 br label %if.end10 @@ -12331,14 +12314,11 @@ if.then15: ; preds = %invoke.cont14 store i32 0, ptr %ref.tmp.i, align 8 %call.i.i23 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3_V215system_categoryEv() #34 store ptr %call.i.i23, ptr %_M_cat.i.i, align 8 - invoke void %18(ptr noundef null, ptr noundef nonnull align 8 dereferenceable(20) %16, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i, i64 noundef 0) - to label %_ZN4asio6detail19scheduler_operation7destroyEv.exit unwind label %lpad.loopexit - -_ZN4asio6detail19scheduler_operation7destroyEv.exit: ; preds = %if.then15 + call void %17(ptr noundef null, ptr noundef nonnull align 8 dereferenceable(20) %16, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i, i64 noundef 0) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp.i) br label %if.end17 -if.end17: ; preds = %_ZN4asio6detail19scheduler_operation7destroyEv.exit, %invoke.cont14 +if.end17: ; preds = %if.then15, %invoke.cont14 %19 = load ptr, ptr %op_queue_, align 8 %cmp.i = icmp eq ptr %19, null br i1 %cmp.i, label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockD2Ev.exit31, label %if.then.i21, !llvm.loop !144 diff --git a/bench/yalantinglibs/optimized/client_pool.ll b/bench/yalantinglibs/optimized/client_pool.ll index aa61cc9f80e..8482760b26f 100644 --- a/bench/yalantinglibs/optimized/client_pool.ll +++ b/bench/yalantinglibs/optimized/client_pool.ll @@ -8477,7 +8477,7 @@ if.then.i.i.i115: ; preds = %while.end.i.i.i if.else.i.i.i114: ; preds = %if.end8.i, %while.end.i.i.i %__val.addr.0.lcssa.i.i.i140 = phi i32 [ %__val.addr.0.lcssa.i.i.i, %while.end.i.i.i ], [ %file_number, %if.end8.i ] %conv.i26.i130134139 = phi i64 [ %conv.i26.i, %while.end.i.i.i ], [ 1, %if.end8.i ] - %12 = trunc nuw i32 %__val.addr.0.lcssa.i.i.i140 to i8 + %12 = trunc nuw nsw i32 %__val.addr.0.lcssa.i.i.i140 to i8 %conv.i.i.i = or disjoint i8 %12, 48 br label %_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.exit.i.i @@ -10781,7 +10781,7 @@ if.then.i.i.i: ; preds = %while.end.i.i.i if.else.i.i.i: ; preds = %if.end5.i, %while.end.i.i.i %__val.addr.0.lcssa.i.i.i19 = phi i32 [ %__val.addr.0.lcssa.i.i.i, %while.end.i.i.i ], [ %tid, %if.end5.i ] %retval.0.i.i.i111418 = phi i32 [ %retval.0.i.i.i, %while.end.i.i.i ], [ 1, %if.end5.i ] - %10 = trunc nuw i32 %__val.addr.0.lcssa.i.i.i19 to i8 + %10 = trunc nuw nsw i32 %__val.addr.0.lcssa.i.i.i19 to i8 %conv.i.i.i = or disjoint i8 %10, 48 br label %return.sink.split.i @@ -22371,7 +22371,6 @@ if.then.i: ; preds = %entry br label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit _ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit: ; preds = %entry, %if.then.i - %.sink.i = phi i8 [ 1, %if.then.i ], [ 0, %entry ] %shutdown_ = getelementptr inbounds nuw i8, ptr %this, i64 241 store i8 1, ptr %shutdown_, align 1 %thread_ = getelementptr inbounds nuw i8, ptr %this, i64 248 @@ -22415,34 +22414,21 @@ if.then.i4: ; preds = %land.lhs.true.i invoke void %6(ptr noundef nonnull align 8 dereferenceable(8) %5) to label %if.end unwind label %lpad.loopexit.split-lp -lpad.loopexit: ; preds = %if.then15 - %lpad.loopexit37 = landingpad { ptr, i32 } - cleanup - br label %lpad - -lpad.loopexit.split-lp: ; preds = %if.then.i4, %if.then.i16 - %lock.sroa.5.0.ph = phi i8 [ %.sink.i, %if.then.i4 ], [ 0, %if.then.i16 ] +lpad.loopexit.split-lp: ; preds = %if.then.i4 %lpad.loopexit.split-lp38 = landingpad { ptr, i32 } cleanup - %7 = trunc nuw i8 %lock.sroa.5.0.ph to i1 - br label %lpad - -lpad: ; preds = %lpad.loopexit.split-lp, %lpad.loopexit - %lock.sroa.5.0 = phi i1 [ false, %lpad.loopexit ], [ %7, %lpad.loopexit.split-lp ] - %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit37, %lpad.loopexit ], [ %lpad.loopexit.split-lp38, %lpad.loopexit.split-lp ] - br i1 %lock.sroa.5.0, label %if.then.i6, label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockD2Ev.exit + br i1 %tobool.i, label %if.then.i6, label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockD2Ev.exit if.then.i6: ; preds = %lpad %mutex_2.i = getelementptr inbounds nuw i8, ptr %this, i64 56 - %call.i.i7 = call i32 @pthread_mutex_unlock(ptr noundef nonnull align 8 dereferenceable(40) %mutex_2.i) #30 + %call.i.i7 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull align 8 dereferenceable(40) %mutex_2.i) #30 br label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockD2Ev.exit _ZN4asio6detail27conditionally_enabled_mutex11scoped_lockD2Ev.exit: ; preds = %lpad, %if.then.i6 - resume { ptr, i32 } %lpad.phi + resume { ptr, i32 } %lpad.loopexit.split-lp38 if.end: ; preds = %land.lhs.true.i, %_ZN4asio6detail27conditionally_enabled_event10signal_allERNS0_27conditionally_enabled_mutex11scoped_lockE.exit.i, %if.then.i4, %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit - %tobool.i9 = trunc nuw i8 %.sink.i to i1 - br i1 %tobool.i9, label %if.then.i10, label %invoke.cont2 + br i1 %tobool.i, label %if.then.i10, label %invoke.cont2 if.then.i10: ; preds = %if.end %8 = load i8, ptr %enabled_.i, align 8 @@ -22467,17 +22453,14 @@ if.then5: ; preds = %invoke.cont2 if.then.i16: ; preds = %if.then5 %11 = load i64, ptr %9, align 8 - %call.i17 = invoke i32 @pthread_join(i64 noundef %11, ptr noundef null) - to label %invoke.cont7 unwind label %lpad.loopexit.split-lp - -invoke.cont7: ; preds = %if.then.i16 + %call.i17 = tail call i32 @pthread_join(i64 noundef %11, ptr noundef null) store i8 1, ptr %joined_.i, align 8 %.pre = load ptr, ptr %thread_, align 8 %isnull = icmp eq ptr %.pre, null br i1 %isnull, label %delete.end, label %delete.notnull -delete.notnull: ; preds = %if.then5, %invoke.cont7 - %12 = phi ptr [ %.pre, %invoke.cont7 ], [ %9, %if.then5 ] +delete.notnull: ; preds = %if.then5, %if.then.i16 + %12 = phi ptr [ %.pre, %if.then.i16 ], [ %9, %if.then5 ] %joined_.i18 = getelementptr inbounds nuw i8, ptr %12, i64 8 %13 = load i8, ptr %joined_.i18, align 8 %tobool.i19 = trunc i8 %13 to i1 @@ -22492,7 +22475,7 @@ _ZN4asio6detail12posix_threadD2Ev.exit: ; preds = %delete.notnull, %if tail call void @_ZdlPv(ptr noundef nonnull %12) #37 br label %delete.end -delete.end: ; preds = %_ZN4asio6detail12posix_threadD2Ev.exit, %invoke.cont7 +delete.end: ; preds = %_ZN4asio6detail12posix_threadD2Ev.exit, %if.then.i16 store ptr null, ptr %thread_, align 8 br label %if.end10 @@ -22531,14 +22514,11 @@ if.then15: ; preds = %invoke.cont14 store i32 0, ptr %ref.tmp.i, align 8 %call.i.i23 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3_V215system_categoryEv() #41 store ptr %call.i.i23, ptr %_M_cat.i.i, align 8 - invoke void %18(ptr noundef null, ptr noundef nonnull align 8 dereferenceable(20) %16, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i, i64 noundef 0) - to label %_ZN4asio6detail19scheduler_operation7destroyEv.exit unwind label %lpad.loopexit - -_ZN4asio6detail19scheduler_operation7destroyEv.exit: ; preds = %if.then15 + call void %17(ptr noundef null, ptr noundef nonnull align 8 dereferenceable(20) %16, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i, i64 noundef 0) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp.i) br label %if.end17 -if.end17: ; preds = %_ZN4asio6detail19scheduler_operation7destroyEv.exit, %invoke.cont14 +if.end17: ; preds = %if.then15, %invoke.cont14 %19 = load ptr, ptr %op_queue_, align 8 %cmp.i = icmp eq ptr %19, null br i1 %cmp.i, label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockD2Ev.exit31, label %if.then.i21, !llvm.loop !369 @@ -43739,7 +43719,7 @@ if.then.i.i.i1: ; preds = %while.end.i.i.i if.else.i.i.i: ; preds = %if.end5.i, %while.end.i.i.i %__val.addr.0.lcssa.i.i.i19 = phi i32 [ %__val.addr.0.lcssa.i.i.i, %while.end.i.i.i ], [ %0, %if.end5.i ] %retval.0.i.i.i111418 = phi i32 [ %retval.0.i.i.i, %while.end.i.i.i ], [ 1, %if.end5.i ] - %6 = trunc nuw i32 %__val.addr.0.lcssa.i.i.i19 to i8 + %6 = trunc nuw nsw i32 %__val.addr.0.lcssa.i.i.i19 to i8 %conv.i.i.i = or disjoint i8 %6, 48 br label %return.sink.split.i @@ -44209,7 +44189,7 @@ if.then.i.i.i1: ; preds = %while.end.i.i.i br label %_ZNSt8__detail18__to_chars_10_implImEEvPcjT_.exit.i.i if.else.i.i.i: ; preds = %while.end.i.i.i - %5 = trunc nuw i64 %__val.addr.0.lcssa.i.i.i to i8 + %5 = trunc nuw nsw i64 %__val.addr.0.lcssa.i.i.i to i8 %conv.i.i.i = or disjoint i8 %5, 48 br label %_ZNSt8__detail18__to_chars_10_implImEEvPcjT_.exit.i.i @@ -44752,7 +44732,7 @@ entry: if.then: ; preds = %entry %add = add nuw nsw i64 %sub, 1 - %div.rhs.trunc = trunc nuw i64 %add to i32 + %div.rhs.trunc = trunc nuw nsw i64 %add to i32 %div22 = udiv i32 2147483645, %div.rhs.trunc %div.zext = zext nneg i32 %div22 to i64 %mul = mul nuw nsw i64 %add, %div.zext @@ -44769,7 +44749,7 @@ do.body: ; preds = %do.body, %if.then do.end: ; preds = %do.body store i64 %rem.i.i.i, ptr %__urng, align 8 - %div7.lhs.trunc = trunc nsw i64 %sub5 to i32 + %div7.lhs.trunc = trunc nuw nsw i64 %sub5 to i32 %div723 = udiv i32 %div7.lhs.trunc, %div22 %div7.zext = zext nneg i32 %div723 to i64 br label %if.end26 @@ -47574,7 +47554,7 @@ if.then.i.i.i1: ; preds = %while.end.i.i.i br label %_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.exit.i.i if.else.i.i.i: ; preds = %while.end.i.i.i - %6 = trunc nuw i32 %__val.addr.0.lcssa.i.i.i to i8 + %6 = trunc nuw nsw i32 %__val.addr.0.lcssa.i.i.i to i8 %conv.i.i.i = or disjoint i8 %6, 48 br label %_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.exit.i.i @@ -60899,7 +60879,7 @@ if.then.i.i.i1: ; preds = %while.end.i.i.i if.else.i.i.i: ; preds = %if.end5.i, %while.end.i.i.i %__val.addr.0.lcssa.i.i.i19 = phi i64 [ %__val.addr.0.lcssa.i.i.i, %while.end.i.i.i ], [ %0, %if.end5.i ] %retval.0.i.i.i111418 = phi i32 [ %retval.0.i.i.i, %while.end.i.i.i ], [ 1, %if.end5.i ] - %5 = trunc nuw i64 %__val.addr.0.lcssa.i.i.i19 to i8 + %5 = trunc nuw nsw i64 %__val.addr.0.lcssa.i.i.i19 to i8 %conv.i.i.i = or disjoint i8 %5, 48 br label %return.sink.split.i diff --git a/bench/yalantinglibs/optimized/client_pools.ll b/bench/yalantinglibs/optimized/client_pools.ll index 713fab1a04f..b022bece6ad 100644 --- a/bench/yalantinglibs/optimized/client_pools.ll +++ b/bench/yalantinglibs/optimized/client_pools.ll @@ -11259,7 +11259,7 @@ if.then.i.i.i115: ; preds = %while.end.i.i.i if.else.i.i.i114: ; preds = %if.end8.i, %while.end.i.i.i %__val.addr.0.lcssa.i.i.i140 = phi i32 [ %__val.addr.0.lcssa.i.i.i, %while.end.i.i.i ], [ %file_number, %if.end8.i ] %conv.i26.i130134139 = phi i64 [ %conv.i26.i, %while.end.i.i.i ], [ 1, %if.end8.i ] - %12 = trunc nuw i32 %__val.addr.0.lcssa.i.i.i140 to i8 + %12 = trunc nuw nsw i32 %__val.addr.0.lcssa.i.i.i140 to i8 %conv.i.i.i = or disjoint i8 %12, 48 br label %_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.exit.i.i @@ -13478,7 +13478,7 @@ if.then.i.i.i: ; preds = %while.end.i.i.i if.else.i.i.i: ; preds = %if.end5.i, %while.end.i.i.i %__val.addr.0.lcssa.i.i.i19 = phi i32 [ %__val.addr.0.lcssa.i.i.i, %while.end.i.i.i ], [ %tid, %if.end5.i ] %retval.0.i.i.i111418 = phi i32 [ %retval.0.i.i.i, %while.end.i.i.i ], [ 1, %if.end5.i ] - %10 = trunc nuw i32 %__val.addr.0.lcssa.i.i.i19 to i8 + %10 = trunc nuw nsw i32 %__val.addr.0.lcssa.i.i.i19 to i8 %conv.i.i.i = or disjoint i8 %10, 48 br label %return.sink.split.i @@ -19951,7 +19951,7 @@ if.then.i: ; preds = %if.then br label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit _ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit: ; preds = %if.then, %if.then.i - %2 = phi i8 [ %.pre, %if.then.i ], [ %1, %if.then ] + %2 = phi i8 [ %1, %if.then ], [ %.pre, %if.then.i ] %shutdown_ = getelementptr inbounds nuw i8, ptr %this, i64 241 store i8 1, ptr %shutdown_, align 1 %stopped_.i = getelementptr inbounds nuw i8, ptr %this, i64 240 @@ -20123,7 +20123,6 @@ if.then.i: ; preds = %entry br label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit _ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit: ; preds = %entry, %if.then.i - %.sink.i = phi i8 [ 1, %if.then.i ], [ 0, %entry ] %shutdown_ = getelementptr inbounds nuw i8, ptr %this, i64 241 store i8 1, ptr %shutdown_, align 1 %thread_ = getelementptr inbounds nuw i8, ptr %this, i64 248 @@ -20167,34 +20166,21 @@ if.then.i4: ; preds = %land.lhs.true.i invoke void %6(ptr noundef nonnull align 8 dereferenceable(8) %5) to label %if.end unwind label %lpad.loopexit.split-lp -lpad.loopexit: ; preds = %if.then15 - %lpad.loopexit37 = landingpad { ptr, i32 } - cleanup - br label %lpad - -lpad.loopexit.split-lp: ; preds = %if.then.i4, %if.then.i16 - %lock.sroa.5.0.ph = phi i8 [ %.sink.i, %if.then.i4 ], [ 0, %if.then.i16 ] +lpad.loopexit.split-lp: ; preds = %if.then.i4 %lpad.loopexit.split-lp38 = landingpad { ptr, i32 } cleanup - %7 = trunc nuw i8 %lock.sroa.5.0.ph to i1 - br label %lpad - -lpad: ; preds = %lpad.loopexit.split-lp, %lpad.loopexit - %lock.sroa.5.0 = phi i1 [ false, %lpad.loopexit ], [ %7, %lpad.loopexit.split-lp ] - %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit37, %lpad.loopexit ], [ %lpad.loopexit.split-lp38, %lpad.loopexit.split-lp ] - br i1 %lock.sroa.5.0, label %if.then.i6, label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockD2Ev.exit + br i1 %tobool.i, label %if.then.i6, label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockD2Ev.exit if.then.i6: ; preds = %lpad %mutex_2.i = getelementptr inbounds nuw i8, ptr %this, i64 56 - %call.i.i7 = call i32 @pthread_mutex_unlock(ptr noundef nonnull align 8 dereferenceable(40) %mutex_2.i) #26 + %call.i.i7 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull align 8 dereferenceable(40) %mutex_2.i) #26 br label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockD2Ev.exit _ZN4asio6detail27conditionally_enabled_mutex11scoped_lockD2Ev.exit: ; preds = %lpad, %if.then.i6 - resume { ptr, i32 } %lpad.phi + resume { ptr, i32 } %lpad.loopexit.split-lp38 if.end: ; preds = %land.lhs.true.i, %_ZN4asio6detail27conditionally_enabled_event10signal_allERNS0_27conditionally_enabled_mutex11scoped_lockE.exit.i, %if.then.i4, %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit - %tobool.i9 = trunc nuw i8 %.sink.i to i1 - br i1 %tobool.i9, label %if.then.i10, label %invoke.cont2 + br i1 %tobool.i, label %if.then.i10, label %invoke.cont2 if.then.i10: ; preds = %if.end %8 = load i8, ptr %enabled_.i, align 8 @@ -20219,17 +20205,14 @@ if.then5: ; preds = %invoke.cont2 if.then.i16: ; preds = %if.then5 %11 = load i64, ptr %9, align 8 - %call.i17 = invoke i32 @pthread_join(i64 noundef %11, ptr noundef null) - to label %invoke.cont7 unwind label %lpad.loopexit.split-lp - -invoke.cont7: ; preds = %if.then.i16 + %call.i17 = tail call i32 @pthread_join(i64 noundef %11, ptr noundef null) store i8 1, ptr %joined_.i, align 8 %.pre = load ptr, ptr %thread_, align 8 %isnull = icmp eq ptr %.pre, null br i1 %isnull, label %delete.end, label %delete.notnull -delete.notnull: ; preds = %if.then5, %invoke.cont7 - %12 = phi ptr [ %.pre, %invoke.cont7 ], [ %9, %if.then5 ] +delete.notnull: ; preds = %if.then5, %if.then.i16 + %12 = phi ptr [ %.pre, %if.then.i16 ], [ %9, %if.then5 ] %joined_.i18 = getelementptr inbounds nuw i8, ptr %12, i64 8 %13 = load i8, ptr %joined_.i18, align 8 %tobool.i19 = trunc i8 %13 to i1 @@ -20244,7 +20227,7 @@ _ZN4asio6detail12posix_threadD2Ev.exit: ; preds = %delete.notnull, %if tail call void @_ZdlPv(ptr noundef nonnull %12) #37 br label %delete.end -delete.end: ; preds = %_ZN4asio6detail12posix_threadD2Ev.exit, %invoke.cont7 +delete.end: ; preds = %_ZN4asio6detail12posix_threadD2Ev.exit, %if.then.i16 store ptr null, ptr %thread_, align 8 br label %if.end10 @@ -20283,14 +20266,11 @@ if.then15: ; preds = %invoke.cont14 store i32 0, ptr %ref.tmp.i, align 8 %call.i.i23 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3_V215system_categoryEv() #41 store ptr %call.i.i23, ptr %_M_cat.i.i, align 8 - invoke void %18(ptr noundef null, ptr noundef nonnull align 8 dereferenceable(20) %16, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i, i64 noundef 0) - to label %_ZN4asio6detail19scheduler_operation7destroyEv.exit unwind label %lpad.loopexit - -_ZN4asio6detail19scheduler_operation7destroyEv.exit: ; preds = %if.then15 + call void %17(ptr noundef null, ptr noundef nonnull align 8 dereferenceable(20) %16, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i, i64 noundef 0) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp.i) br label %if.end17 -if.end17: ; preds = %_ZN4asio6detail19scheduler_operation7destroyEv.exit, %invoke.cont14 +if.end17: ; preds = %if.then15, %invoke.cont14 %19 = load ptr, ptr %op_queue_, align 8 %cmp.i = icmp eq ptr %19, null br i1 %cmp.i, label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockD2Ev.exit31, label %if.then.i21, !llvm.loop !140 @@ -51206,7 +51186,7 @@ if.then.i.i.i1: ; preds = %while.end.i.i.i if.else.i.i.i: ; preds = %if.end5.i, %while.end.i.i.i %__val.addr.0.lcssa.i.i.i19 = phi i32 [ %__val.addr.0.lcssa.i.i.i, %while.end.i.i.i ], [ %0, %if.end5.i ] %retval.0.i.i.i111418 = phi i32 [ %retval.0.i.i.i, %while.end.i.i.i ], [ 1, %if.end5.i ] - %6 = trunc nuw i32 %__val.addr.0.lcssa.i.i.i19 to i8 + %6 = trunc nuw nsw i32 %__val.addr.0.lcssa.i.i.i19 to i8 %conv.i.i.i = or disjoint i8 %6, 48 br label %return.sink.split.i @@ -51676,7 +51656,7 @@ if.then.i.i.i1: ; preds = %while.end.i.i.i br label %_ZNSt8__detail18__to_chars_10_implImEEvPcjT_.exit.i.i if.else.i.i.i: ; preds = %while.end.i.i.i - %5 = trunc nuw i64 %__val.addr.0.lcssa.i.i.i to i8 + %5 = trunc nuw nsw i64 %__val.addr.0.lcssa.i.i.i to i8 %conv.i.i.i = or disjoint i8 %5, 48 br label %_ZNSt8__detail18__to_chars_10_implImEEvPcjT_.exit.i.i @@ -52219,7 +52199,7 @@ entry: if.then: ; preds = %entry %add = add nuw nsw i64 %sub, 1 - %div.rhs.trunc = trunc nuw i64 %add to i32 + %div.rhs.trunc = trunc nuw nsw i64 %add to i32 %div22 = udiv i32 2147483645, %div.rhs.trunc %div.zext = zext nneg i32 %div22 to i64 %mul = mul nuw nsw i64 %add, %div.zext @@ -52236,7 +52216,7 @@ do.body: ; preds = %do.body, %if.then do.end: ; preds = %do.body store i64 %rem.i.i.i, ptr %__urng, align 8 - %div7.lhs.trunc = trunc nsw i64 %sub5 to i32 + %div7.lhs.trunc = trunc nuw nsw i64 %sub5 to i32 %div723 = udiv i32 %div7.lhs.trunc, %div22 %div7.zext = zext nneg i32 %div723 to i64 br label %if.end26 @@ -55041,7 +55021,7 @@ if.then.i.i.i1: ; preds = %while.end.i.i.i br label %_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.exit.i.i if.else.i.i.i: ; preds = %while.end.i.i.i - %6 = trunc nuw i32 %__val.addr.0.lcssa.i.i.i to i8 + %6 = trunc nuw nsw i32 %__val.addr.0.lcssa.i.i.i to i8 %conv.i.i.i = or disjoint i8 %6, 48 br label %_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.exit.i.i @@ -68363,7 +68343,7 @@ if.then.i.i.i1: ; preds = %while.end.i.i.i if.else.i.i.i: ; preds = %if.end5.i, %while.end.i.i.i %__val.addr.0.lcssa.i.i.i19 = phi i64 [ %__val.addr.0.lcssa.i.i.i, %while.end.i.i.i ], [ %0, %if.end5.i ] %retval.0.i.i.i111418 = phi i32 [ %retval.0.i.i.i, %while.end.i.i.i ], [ 1, %if.end5.i ] - %5 = trunc nuw i64 %__val.addr.0.lcssa.i.i.i19 to i8 + %5 = trunc nuw nsw i64 %__val.addr.0.lcssa.i.i.i19 to i8 %conv.i.i.i = or disjoint i8 %5, 48 br label %return.sink.split.i diff --git a/bench/yalantinglibs/optimized/concurrent_clients.ll b/bench/yalantinglibs/optimized/concurrent_clients.ll index f282483f69c..89a8b3948ed 100644 --- a/bench/yalantinglibs/optimized/concurrent_clients.ll +++ b/bench/yalantinglibs/optimized/concurrent_clients.ll @@ -8457,7 +8457,7 @@ if.then.i.i.i115: ; preds = %while.end.i.i.i if.else.i.i.i114: ; preds = %if.end8.i, %while.end.i.i.i %__val.addr.0.lcssa.i.i.i140 = phi i32 [ %__val.addr.0.lcssa.i.i.i, %while.end.i.i.i ], [ %file_number, %if.end8.i ] %conv.i26.i130134139 = phi i64 [ %conv.i26.i, %while.end.i.i.i ], [ 1, %if.end8.i ] - %12 = trunc nuw i32 %__val.addr.0.lcssa.i.i.i140 to i8 + %12 = trunc nuw nsw i32 %__val.addr.0.lcssa.i.i.i140 to i8 %conv.i.i.i = or disjoint i8 %12, 48 br label %_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.exit.i.i @@ -10759,7 +10759,7 @@ if.then.i.i.i: ; preds = %while.end.i.i.i if.else.i.i.i: ; preds = %if.end5.i, %while.end.i.i.i %__val.addr.0.lcssa.i.i.i19 = phi i32 [ %__val.addr.0.lcssa.i.i.i, %while.end.i.i.i ], [ %tid, %if.end5.i ] %retval.0.i.i.i111418 = phi i32 [ %retval.0.i.i.i, %while.end.i.i.i ], [ 1, %if.end5.i ] - %10 = trunc nuw i32 %__val.addr.0.lcssa.i.i.i19 to i8 + %10 = trunc nuw nsw i32 %__val.addr.0.lcssa.i.i.i19 to i8 %conv.i.i.i = or disjoint i8 %10, 48 br label %return.sink.split.i @@ -13411,7 +13411,7 @@ if.then.i: ; preds = %if.then br label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit _ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit: ; preds = %if.then, %if.then.i - %2 = phi i8 [ %.pre, %if.then.i ], [ %1, %if.then ] + %2 = phi i8 [ %1, %if.then ], [ %.pre, %if.then.i ] %shutdown_ = getelementptr inbounds nuw i8, ptr %this, i64 241 store i8 1, ptr %shutdown_, align 1 %stopped_.i = getelementptr inbounds nuw i8, ptr %this, i64 240 @@ -13583,7 +13583,6 @@ if.then.i: ; preds = %entry br label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit _ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit: ; preds = %entry, %if.then.i - %.sink.i = phi i8 [ 1, %if.then.i ], [ 0, %entry ] %shutdown_ = getelementptr inbounds nuw i8, ptr %this, i64 241 store i8 1, ptr %shutdown_, align 1 %thread_ = getelementptr inbounds nuw i8, ptr %this, i64 248 @@ -13627,34 +13626,21 @@ if.then.i4: ; preds = %land.lhs.true.i invoke void %6(ptr noundef nonnull align 8 dereferenceable(8) %5) to label %if.end unwind label %lpad.loopexit.split-lp -lpad.loopexit: ; preds = %if.then15 - %lpad.loopexit37 = landingpad { ptr, i32 } - cleanup - br label %lpad - -lpad.loopexit.split-lp: ; preds = %if.then.i4, %if.then.i16 - %lock.sroa.5.0.ph = phi i8 [ %.sink.i, %if.then.i4 ], [ 0, %if.then.i16 ] +lpad.loopexit.split-lp: ; preds = %if.then.i4 %lpad.loopexit.split-lp38 = landingpad { ptr, i32 } cleanup - %7 = trunc nuw i8 %lock.sroa.5.0.ph to i1 - br label %lpad - -lpad: ; preds = %lpad.loopexit.split-lp, %lpad.loopexit - %lock.sroa.5.0 = phi i1 [ false, %lpad.loopexit ], [ %7, %lpad.loopexit.split-lp ] - %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit37, %lpad.loopexit ], [ %lpad.loopexit.split-lp38, %lpad.loopexit.split-lp ] - br i1 %lock.sroa.5.0, label %if.then.i6, label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockD2Ev.exit + br i1 %tobool.i, label %if.then.i6, label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockD2Ev.exit if.then.i6: ; preds = %lpad %mutex_2.i = getelementptr inbounds nuw i8, ptr %this, i64 56 - %call.i.i7 = call i32 @pthread_mutex_unlock(ptr noundef nonnull align 8 dereferenceable(40) %mutex_2.i) #30 + %call.i.i7 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull align 8 dereferenceable(40) %mutex_2.i) #30 br label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockD2Ev.exit _ZN4asio6detail27conditionally_enabled_mutex11scoped_lockD2Ev.exit: ; preds = %lpad, %if.then.i6 - resume { ptr, i32 } %lpad.phi + resume { ptr, i32 } %lpad.loopexit.split-lp38 if.end: ; preds = %land.lhs.true.i, %_ZN4asio6detail27conditionally_enabled_event10signal_allERNS0_27conditionally_enabled_mutex11scoped_lockE.exit.i, %if.then.i4, %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit - %tobool.i9 = trunc nuw i8 %.sink.i to i1 - br i1 %tobool.i9, label %if.then.i10, label %invoke.cont2 + br i1 %tobool.i, label %if.then.i10, label %invoke.cont2 if.then.i10: ; preds = %if.end %8 = load i8, ptr %enabled_.i, align 8 @@ -13679,17 +13665,14 @@ if.then5: ; preds = %invoke.cont2 if.then.i16: ; preds = %if.then5 %11 = load i64, ptr %9, align 8 - %call.i17 = invoke i32 @pthread_join(i64 noundef %11, ptr noundef null) - to label %invoke.cont7 unwind label %lpad.loopexit.split-lp - -invoke.cont7: ; preds = %if.then.i16 + %call.i17 = tail call i32 @pthread_join(i64 noundef %11, ptr noundef null) store i8 1, ptr %joined_.i, align 8 %.pre = load ptr, ptr %thread_, align 8 %isnull = icmp eq ptr %.pre, null br i1 %isnull, label %delete.end, label %delete.notnull -delete.notnull: ; preds = %if.then5, %invoke.cont7 - %12 = phi ptr [ %.pre, %invoke.cont7 ], [ %9, %if.then5 ] +delete.notnull: ; preds = %if.then5, %if.then.i16 + %12 = phi ptr [ %.pre, %if.then.i16 ], [ %9, %if.then5 ] %joined_.i18 = getelementptr inbounds nuw i8, ptr %12, i64 8 %13 = load i8, ptr %joined_.i18, align 8 %tobool.i19 = trunc i8 %13 to i1 @@ -13704,7 +13687,7 @@ _ZN4asio6detail12posix_threadD2Ev.exit: ; preds = %delete.notnull, %if tail call void @_ZdlPv(ptr noundef nonnull %12) #37 br label %delete.end -delete.end: ; preds = %_ZN4asio6detail12posix_threadD2Ev.exit, %invoke.cont7 +delete.end: ; preds = %_ZN4asio6detail12posix_threadD2Ev.exit, %if.then.i16 store ptr null, ptr %thread_, align 8 br label %if.end10 @@ -13743,14 +13726,11 @@ if.then15: ; preds = %invoke.cont14 store i32 0, ptr %ref.tmp.i, align 8 %call.i.i23 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3_V215system_categoryEv() #41 store ptr %call.i.i23, ptr %_M_cat.i.i, align 8 - invoke void %18(ptr noundef null, ptr noundef nonnull align 8 dereferenceable(20) %16, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i, i64 noundef 0) - to label %_ZN4asio6detail19scheduler_operation7destroyEv.exit unwind label %lpad.loopexit - -_ZN4asio6detail19scheduler_operation7destroyEv.exit: ; preds = %if.then15 + call void %17(ptr noundef null, ptr noundef nonnull align 8 dereferenceable(20) %16, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i, i64 noundef 0) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp.i) br label %if.end17 -if.end17: ; preds = %_ZN4asio6detail19scheduler_operation7destroyEv.exit, %invoke.cont14 +if.end17: ; preds = %if.then15, %invoke.cont14 %19 = load ptr, ptr %op_queue_, align 8 %cmp.i = icmp eq ptr %19, null br i1 %cmp.i, label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockD2Ev.exit31, label %if.then.i21, !llvm.loop !124 diff --git a/bench/yalantinglibs/optimized/data_gen.ll b/bench/yalantinglibs/optimized/data_gen.ll index 51a9e44d130..d3f2abdc0c5 100644 --- a/bench/yalantinglibs/optimized/data_gen.ll +++ b/bench/yalantinglibs/optimized/data_gen.ll @@ -10783,7 +10783,7 @@ if.then.i: ; preds = %while.end.i br label %_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.exit if.else.i: ; preds = %while.end.i - %11 = trunc nuw i32 %__val.addr.0.lcssa.i to i8 + %11 = trunc nuw nsw i32 %__val.addr.0.lcssa.i to i8 %conv.i = or disjoint i8 %11, 48 br label %_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.exit @@ -19471,7 +19471,7 @@ if.then.i: ; preds = %if.then br label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit _ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit: ; preds = %if.then, %if.then.i - %2 = phi i8 [ %.pre, %if.then.i ], [ %1, %if.then ] + %2 = phi i8 [ %1, %if.then ], [ %.pre, %if.then.i ] %shutdown_ = getelementptr inbounds nuw i8, ptr %this, i64 241 store i8 1, ptr %shutdown_, align 1 %stopped_.i = getelementptr inbounds nuw i8, ptr %this, i64 240 @@ -19643,7 +19643,6 @@ if.then.i: ; preds = %entry br label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit _ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit: ; preds = %entry, %if.then.i - %.sink.i = phi i8 [ 1, %if.then.i ], [ 0, %entry ] %shutdown_ = getelementptr inbounds nuw i8, ptr %this, i64 241 store i8 1, ptr %shutdown_, align 1 %thread_ = getelementptr inbounds nuw i8, ptr %this, i64 248 @@ -19687,34 +19686,21 @@ if.then.i4: ; preds = %land.lhs.true.i invoke void %6(ptr noundef nonnull align 8 dereferenceable(8) %5) to label %if.end unwind label %lpad.loopexit.split-lp -lpad.loopexit: ; preds = %if.then15 - %lpad.loopexit37 = landingpad { ptr, i32 } - cleanup - br label %lpad - -lpad.loopexit.split-lp: ; preds = %if.then.i4, %if.then.i16 - %lock.sroa.5.0.ph = phi i8 [ %.sink.i, %if.then.i4 ], [ 0, %if.then.i16 ] +lpad.loopexit.split-lp: ; preds = %if.then.i4 %lpad.loopexit.split-lp38 = landingpad { ptr, i32 } cleanup - %7 = trunc nuw i8 %lock.sroa.5.0.ph to i1 - br label %lpad - -lpad: ; preds = %lpad.loopexit.split-lp, %lpad.loopexit - %lock.sroa.5.0 = phi i1 [ false, %lpad.loopexit ], [ %7, %lpad.loopexit.split-lp ] - %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit37, %lpad.loopexit ], [ %lpad.loopexit.split-lp38, %lpad.loopexit.split-lp ] - br i1 %lock.sroa.5.0, label %if.then.i6, label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockD2Ev.exit + br i1 %tobool.i, label %if.then.i6, label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockD2Ev.exit if.then.i6: ; preds = %lpad %mutex_2.i = getelementptr inbounds nuw i8, ptr %this, i64 56 - %call.i.i7 = call i32 @pthread_mutex_unlock(ptr noundef nonnull align 8 dereferenceable(40) %mutex_2.i) #27 + %call.i.i7 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull align 8 dereferenceable(40) %mutex_2.i) #27 br label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockD2Ev.exit _ZN4asio6detail27conditionally_enabled_mutex11scoped_lockD2Ev.exit: ; preds = %lpad, %if.then.i6 - resume { ptr, i32 } %lpad.phi + resume { ptr, i32 } %lpad.loopexit.split-lp38 if.end: ; preds = %land.lhs.true.i, %_ZN4asio6detail27conditionally_enabled_event10signal_allERNS0_27conditionally_enabled_mutex11scoped_lockE.exit.i, %if.then.i4, %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit - %tobool.i9 = trunc nuw i8 %.sink.i to i1 - br i1 %tobool.i9, label %if.then.i10, label %invoke.cont2 + br i1 %tobool.i, label %if.then.i10, label %invoke.cont2 if.then.i10: ; preds = %if.end %8 = load i8, ptr %enabled_.i, align 8 @@ -19739,17 +19725,14 @@ if.then5: ; preds = %invoke.cont2 if.then.i16: ; preds = %if.then5 %11 = load i64, ptr %9, align 8 - %call.i17 = invoke i32 @pthread_join(i64 noundef %11, ptr noundef null) - to label %invoke.cont7 unwind label %lpad.loopexit.split-lp - -invoke.cont7: ; preds = %if.then.i16 + %call.i17 = tail call i32 @pthread_join(i64 noundef %11, ptr noundef null) store i8 1, ptr %joined_.i, align 8 %.pre = load ptr, ptr %thread_, align 8 %isnull = icmp eq ptr %.pre, null br i1 %isnull, label %delete.end, label %delete.notnull -delete.notnull: ; preds = %if.then5, %invoke.cont7 - %12 = phi ptr [ %.pre, %invoke.cont7 ], [ %9, %if.then5 ] +delete.notnull: ; preds = %if.then5, %if.then.i16 + %12 = phi ptr [ %.pre, %if.then.i16 ], [ %9, %if.then5 ] %joined_.i18 = getelementptr inbounds nuw i8, ptr %12, i64 8 %13 = load i8, ptr %joined_.i18, align 8 %tobool.i19 = trunc i8 %13 to i1 @@ -19764,7 +19747,7 @@ _ZN4asio6detail12posix_threadD2Ev.exit: ; preds = %delete.notnull, %if tail call void @_ZdlPv(ptr noundef nonnull %12) #35 br label %delete.end -delete.end: ; preds = %_ZN4asio6detail12posix_threadD2Ev.exit, %invoke.cont7 +delete.end: ; preds = %_ZN4asio6detail12posix_threadD2Ev.exit, %if.then.i16 store ptr null, ptr %thread_, align 8 br label %if.end10 @@ -19803,14 +19786,11 @@ if.then15: ; preds = %invoke.cont14 store i32 0, ptr %ref.tmp.i, align 8 %call.i.i23 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3_V215system_categoryEv() #40 store ptr %call.i.i23, ptr %_M_cat.i.i, align 8 - invoke void %18(ptr noundef null, ptr noundef nonnull align 8 dereferenceable(20) %16, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i, i64 noundef 0) - to label %_ZN4asio6detail19scheduler_operation7destroyEv.exit unwind label %lpad.loopexit - -_ZN4asio6detail19scheduler_operation7destroyEv.exit: ; preds = %if.then15 + call void %17(ptr noundef null, ptr noundef nonnull align 8 dereferenceable(20) %16, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i, i64 noundef 0) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp.i) br label %if.end17 -if.end17: ; preds = %_ZN4asio6detail19scheduler_operation7destroyEv.exit, %invoke.cont14 +if.end17: ; preds = %if.then15, %invoke.cont14 %19 = load ptr, ptr %op_queue_, align 8 %cmp.i = icmp eq ptr %19, null br i1 %cmp.i, label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockD2Ev.exit31, label %if.then.i21, !llvm.loop !227 @@ -36920,7 +36900,7 @@ if.then.i: ; preds = %while.end.i br label %_ZNSt8__detail18__to_chars_10_implImEEvPcjT_.exit if.else.i: ; preds = %while.end.i - %10 = trunc nuw i64 %__val.addr.0.lcssa.i to i8 + %10 = trunc nuw nsw i64 %__val.addr.0.lcssa.i to i8 %conv.i = or disjoint i8 %10, 48 br label %_ZNSt8__detail18__to_chars_10_implImEEvPcjT_.exit @@ -85728,7 +85708,7 @@ if.then.i.i.i115: ; preds = %while.end.i.i.i if.else.i.i.i114: ; preds = %if.end8.i, %while.end.i.i.i %__val.addr.0.lcssa.i.i.i140 = phi i32 [ %__val.addr.0.lcssa.i.i.i, %while.end.i.i.i ], [ %file_number, %if.end8.i ] %conv.i26.i130134139 = phi i64 [ %conv.i26.i, %while.end.i.i.i ], [ 1, %if.end8.i ] - %12 = trunc nuw i32 %__val.addr.0.lcssa.i.i.i140 to i8 + %12 = trunc nuw nsw i32 %__val.addr.0.lcssa.i.i.i140 to i8 %conv.i.i.i = or disjoint i8 %12, 48 br label %_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.exit.i.i @@ -87716,7 +87696,7 @@ if.then.i.i.i: ; preds = %while.end.i.i.i if.else.i.i.i: ; preds = %if.end5.i, %while.end.i.i.i %__val.addr.0.lcssa.i.i.i19 = phi i32 [ %__val.addr.0.lcssa.i.i.i, %while.end.i.i.i ], [ %tid, %if.end5.i ] %retval.0.i.i.i111418 = phi i32 [ %retval.0.i.i.i, %while.end.i.i.i ], [ 1, %if.end5.i ] - %10 = trunc nuw i32 %__val.addr.0.lcssa.i.i.i19 to i8 + %10 = trunc nuw nsw i32 %__val.addr.0.lcssa.i.i.i19 to i8 %conv.i.i.i = or disjoint i8 %10, 48 br label %return.sink.split.i diff --git a/bench/yalantinglibs/optimized/file_server.ll b/bench/yalantinglibs/optimized/file_server.ll index 47655aefa14..93e75315dd3 100644 --- a/bench/yalantinglibs/optimized/file_server.ll +++ b/bench/yalantinglibs/optimized/file_server.ll @@ -7834,7 +7834,7 @@ if.then.i.i.i115: ; preds = %while.end.i.i.i if.else.i.i.i114: ; preds = %if.end8.i, %while.end.i.i.i %__val.addr.0.lcssa.i.i.i140 = phi i32 [ %__val.addr.0.lcssa.i.i.i, %while.end.i.i.i ], [ %file_number, %if.end8.i ] %conv.i26.i130134139 = phi i64 [ %conv.i26.i, %while.end.i.i.i ], [ 1, %if.end8.i ] - %12 = trunc nuw i32 %__val.addr.0.lcssa.i.i.i140 to i8 + %12 = trunc nuw nsw i32 %__val.addr.0.lcssa.i.i.i140 to i8 %conv.i.i.i = or disjoint i8 %12, 48 br label %_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.exit.i.i @@ -10142,7 +10142,7 @@ if.then.i.i.i: ; preds = %while.end.i.i.i if.else.i.i.i: ; preds = %if.end5.i, %while.end.i.i.i %__val.addr.0.lcssa.i.i.i19 = phi i32 [ %__val.addr.0.lcssa.i.i.i, %while.end.i.i.i ], [ %tid, %if.end5.i ] %retval.0.i.i.i111418 = phi i32 [ %retval.0.i.i.i, %while.end.i.i.i ], [ 1, %if.end5.i ] - %10 = trunc nuw i32 %__val.addr.0.lcssa.i.i.i19 to i8 + %10 = trunc nuw nsw i32 %__val.addr.0.lcssa.i.i.i19 to i8 %conv.i.i.i = or disjoint i8 %10, 48 br label %return.sink.split.i @@ -12802,7 +12802,7 @@ if.then.i: ; preds = %if.then br label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit _ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit: ; preds = %if.then, %if.then.i - %2 = phi i8 [ %.pre, %if.then.i ], [ %1, %if.then ] + %2 = phi i8 [ %1, %if.then ], [ %.pre, %if.then.i ] %shutdown_ = getelementptr inbounds nuw i8, ptr %this, i64 241 store i8 1, ptr %shutdown_, align 1 %stopped_.i = getelementptr inbounds nuw i8, ptr %this, i64 240 @@ -12974,7 +12974,6 @@ if.then.i: ; preds = %entry br label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit _ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit: ; preds = %entry, %if.then.i - %.sink.i = phi i8 [ 1, %if.then.i ], [ 0, %entry ] %shutdown_ = getelementptr inbounds nuw i8, ptr %this, i64 241 store i8 1, ptr %shutdown_, align 1 %thread_ = getelementptr inbounds nuw i8, ptr %this, i64 248 @@ -13018,34 +13017,21 @@ if.then.i4: ; preds = %land.lhs.true.i invoke void %6(ptr noundef nonnull align 8 dereferenceable(8) %5) to label %if.end unwind label %lpad.loopexit.split-lp -lpad.loopexit: ; preds = %if.then15 - %lpad.loopexit37 = landingpad { ptr, i32 } - cleanup - br label %lpad - -lpad.loopexit.split-lp: ; preds = %if.then.i4, %if.then.i16 - %lock.sroa.5.0.ph = phi i8 [ %.sink.i, %if.then.i4 ], [ 0, %if.then.i16 ] +lpad.loopexit.split-lp: ; preds = %if.then.i4 %lpad.loopexit.split-lp38 = landingpad { ptr, i32 } cleanup - %7 = trunc nuw i8 %lock.sroa.5.0.ph to i1 - br label %lpad - -lpad: ; preds = %lpad.loopexit.split-lp, %lpad.loopexit - %lock.sroa.5.0 = phi i1 [ false, %lpad.loopexit ], [ %7, %lpad.loopexit.split-lp ] - %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit37, %lpad.loopexit ], [ %lpad.loopexit.split-lp38, %lpad.loopexit.split-lp ] - br i1 %lock.sroa.5.0, label %if.then.i6, label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockD2Ev.exit + br i1 %tobool.i, label %if.then.i6, label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockD2Ev.exit if.then.i6: ; preds = %lpad %mutex_2.i = getelementptr inbounds nuw i8, ptr %this, i64 56 - %call.i.i7 = call i32 @pthread_mutex_unlock(ptr noundef nonnull align 8 dereferenceable(40) %mutex_2.i) #34 + %call.i.i7 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull align 8 dereferenceable(40) %mutex_2.i) #34 br label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockD2Ev.exit _ZN4asio6detail27conditionally_enabled_mutex11scoped_lockD2Ev.exit: ; preds = %lpad, %if.then.i6 - resume { ptr, i32 } %lpad.phi + resume { ptr, i32 } %lpad.loopexit.split-lp38 if.end: ; preds = %land.lhs.true.i, %_ZN4asio6detail27conditionally_enabled_event10signal_allERNS0_27conditionally_enabled_mutex11scoped_lockE.exit.i, %if.then.i4, %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit - %tobool.i9 = trunc nuw i8 %.sink.i to i1 - br i1 %tobool.i9, label %if.then.i10, label %invoke.cont2 + br i1 %tobool.i, label %if.then.i10, label %invoke.cont2 if.then.i10: ; preds = %if.end %8 = load i8, ptr %enabled_.i, align 8 @@ -13070,17 +13056,14 @@ if.then5: ; preds = %invoke.cont2 if.then.i16: ; preds = %if.then5 %11 = load i64, ptr %9, align 8 - %call.i17 = invoke i32 @pthread_join(i64 noundef %11, ptr noundef null) - to label %invoke.cont7 unwind label %lpad.loopexit.split-lp - -invoke.cont7: ; preds = %if.then.i16 + %call.i17 = tail call i32 @pthread_join(i64 noundef %11, ptr noundef null) store i8 1, ptr %joined_.i, align 8 %.pre = load ptr, ptr %thread_, align 8 %isnull = icmp eq ptr %.pre, null br i1 %isnull, label %delete.end, label %delete.notnull -delete.notnull: ; preds = %if.then5, %invoke.cont7 - %12 = phi ptr [ %.pre, %invoke.cont7 ], [ %9, %if.then5 ] +delete.notnull: ; preds = %if.then5, %if.then.i16 + %12 = phi ptr [ %.pre, %if.then.i16 ], [ %9, %if.then5 ] %joined_.i18 = getelementptr inbounds nuw i8, ptr %12, i64 8 %13 = load i8, ptr %joined_.i18, align 8 %tobool.i19 = trunc i8 %13 to i1 @@ -13095,7 +13078,7 @@ _ZN4asio6detail12posix_threadD2Ev.exit: ; preds = %delete.notnull, %if tail call void @_ZdlPv(ptr noundef nonnull %12) #37 br label %delete.end -delete.end: ; preds = %_ZN4asio6detail12posix_threadD2Ev.exit, %invoke.cont7 +delete.end: ; preds = %_ZN4asio6detail12posix_threadD2Ev.exit, %if.then.i16 store ptr null, ptr %thread_, align 8 br label %if.end10 @@ -13134,14 +13117,11 @@ if.then15: ; preds = %invoke.cont14 store i32 0, ptr %ref.tmp.i, align 8 %call.i.i23 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3_V215system_categoryEv() #40 store ptr %call.i.i23, ptr %_M_cat.i.i, align 8 - invoke void %18(ptr noundef null, ptr noundef nonnull align 8 dereferenceable(20) %16, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i, i64 noundef 0) - to label %_ZN4asio6detail19scheduler_operation7destroyEv.exit unwind label %lpad.loopexit - -_ZN4asio6detail19scheduler_operation7destroyEv.exit: ; preds = %if.then15 + call void %17(ptr noundef null, ptr noundef nonnull align 8 dereferenceable(20) %16, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i, i64 noundef 0) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp.i) br label %if.end17 -if.end17: ; preds = %_ZN4asio6detail19scheduler_operation7destroyEv.exit, %invoke.cont14 +if.end17: ; preds = %if.then15, %invoke.cont14 %19 = load ptr, ptr %op_queue_, align 8 %cmp.i = icmp eq ptr %19, null br i1 %cmp.i, label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockD2Ev.exit31, label %if.then.i21, !llvm.loop !96 @@ -52132,7 +52112,7 @@ if.then.i: ; preds = %while.end.i br label %_ZNSt8__detail18__to_chars_10_implImEEvPcjT_.exit if.else.i: ; preds = %while.end.i - %10 = trunc nuw i64 %__val.addr.0.lcssa.i to i8 + %10 = trunc nuw nsw i64 %__val.addr.0.lcssa.i to i8 %conv.i = or disjoint i8 %10, 48 br label %_ZNSt8__detail18__to_chars_10_implImEEvPcjT_.exit diff --git a/bench/yyjson/optimized/yyjson.ll b/bench/yyjson/optimized/yyjson.ll index cdd9b5eb683..50416c0e787 100644 --- a/bench/yyjson/optimized/yyjson.ll +++ b/bench/yyjson/optimized/yyjson.ll @@ -11455,7 +11455,7 @@ read_number.exit433: ; preds = %1173, %.loopexit429 %1879 = add nuw nsw i32 %1878, 1024 %1880 = add nsw i32 %1878, -56613888 %1881 = lshr i32 %1880, 18 - %1882 = trunc i32 %1881 to i8 + %1882 = trunc nuw nsw i32 %1881 to i8 %1883 = or i8 %1882, -16 %1884 = getelementptr inbounds nuw i8, ptr %.0.i706, i64 1 store i8 %1883, ptr %.0.i706, align 1, !tbaa !75 @@ -13348,7 +13348,7 @@ read_null.exit824: ; preds = %2176 %2770 = add nuw nsw i32 %2769, 1024 %2771 = add nsw i32 %2769, -56613888 %2772 = lshr i32 %2771, 18 - %2773 = trunc i32 %2772 to i8 + %2773 = trunc nuw nsw i32 %2772 to i8 %2774 = or i8 %2773, -16 %2775 = getelementptr inbounds nuw i8, ptr %.0.i790, i64 1 store i8 %2774, ptr %.0.i790, align 1, !tbaa !75 @@ -14535,7 +14535,7 @@ read_string.exit816: ; preds = %.split.loop.exit476 %3375 = add nuw nsw i32 %3374, 1024 %3376 = add nsw i32 %3374, -56613888 %3377 = lshr i32 %3376, 18 - %3378 = trunc i32 %3377 to i8 + %3378 = trunc nuw nsw i32 %3377 to i8 %3379 = or i8 %3378, -16 %3380 = getelementptr inbounds nuw i8, ptr %.0.i748, i64 1 store i8 %3379, ptr %.0.i748, align 1, !tbaa !75 @@ -21741,7 +21741,7 @@ read_number.exit: ; preds = %6211, %.loopexit419 %6915 = add nuw nsw i32 %6914, 1024 %6916 = add nsw i32 %6914, -56613888 %6917 = lshr i32 %6916, 18 - %6918 = trunc i32 %6917 to i8 + %6918 = trunc nuw nsw i32 %6917 to i8 %6919 = or i8 %6918, -16 %6920 = getelementptr inbounds nuw i8, ptr %.0.i591, i64 1 store i8 %6919, ptr %.0.i591, align 1, !tbaa !75 @@ -23421,7 +23421,7 @@ read_null.exit: ; preds = %7212 %7732 = add nuw nsw i32 %7731, 1024 %7733 = add nsw i32 %7731, -56613888 %7734 = lshr i32 %7733, 18 - %7735 = trunc i32 %7734 to i8 + %7735 = trunc nuw nsw i32 %7734 to i8 %7736 = or i8 %7735, -16 %7737 = getelementptr inbounds nuw i8, ptr %.0.i664, i64 1 store i8 %7736, ptr %.0.i664, align 1, !tbaa !75 @@ -24597,7 +24597,7 @@ read_string.exit690: ; preds = %.split.loop.exit537 %8335 = add nuw nsw i32 %8334, 1024 %8336 = add nsw i32 %8334, -56613888 %8337 = lshr i32 %8336, 18 - %8338 = trunc i32 %8337 to i8 + %8338 = trunc nuw nsw i32 %8337 to i8 %8339 = or i8 %8338, -16 %8340 = getelementptr inbounds nuw i8, ptr %.0.i622, i64 1 store i8 %8339, ptr %.0.i622, align 1, !tbaa !75 @@ -31782,7 +31782,7 @@ read_number.exit: ; preds = %1293, %1032 %1627 = add nuw nsw i32 %1626, 1024 %1628 = add nsw i32 %1626, -56613888 %1629 = lshr i32 %1628, 18 - %1630 = trunc i32 %1629 to i8 + %1630 = trunc nuw nsw i32 %1629 to i8 %1631 = or i8 %1630, -16 %1632 = getelementptr inbounds nuw i8, ptr %.0.i181, i64 1 store i8 %1631, ptr %.0.i181, align 1, !tbaa !75 diff --git a/bench/zed-rs/optimized/20fr88unk1byt75zzz5ooa6xr.ll b/bench/zed-rs/optimized/20fr88unk1byt75zzz5ooa6xr.ll index 9e696d0cc29..f3d564b5741 100644 --- a/bench/zed-rs/optimized/20fr88unk1byt75zzz5ooa6xr.ll +++ b/bench/zed-rs/optimized/20fr88unk1byt75zzz5ooa6xr.ll @@ -10904,31 +10904,33 @@ define hidden noundef nonnull ptr @_ZN4core5slice4sort6shared5pivot11median3_rec tail call void @llvm.experimental.noalias.scope.decl(metadata !2245), !noalias !2248 %22 = load ptr, ptr %21, align 8, !alias.scope !2245, !noalias !2249, !nonnull !5, !align !36, !noundef !5 %23 = tail call noundef i8 @"_ZN4gpui6window21WindowHandle$LT$V$GT$9is_active17h53cf1b25541560ddE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.sroa.0.0, ptr noalias noundef nonnull align 8 dereferenceable(1176) %22), !range !37, !noalias !2251 - %24 = trunc i8 %23 to i1 + %.not.i = icmp eq i8 %23, 2 + %24 = xor i8 %23, 1 + %25 = select i1 %.not.i, i8 0, i8 %24 tail call void @llvm.experimental.noalias.scope.decl(metadata !2252), !noalias !2248 %25 = load ptr, ptr %21, align 8, !alias.scope !2252, !noalias !2255, !nonnull !5, !align !36, !noundef !5 %26 = tail call noundef i8 @"_ZN4gpui6window21WindowHandle$LT$V$GT$9is_active17h53cf1b25541560ddE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.sroa.04.0, ptr noalias noundef nonnull align 8 dereferenceable(1176) %25), !range !37, !noalias !2257 - %27 = icmp ne i8 %26, 2 - %28 = trunc i8 %26 to i1 - %.sroa.0.0.i2.i = xor i1 %27, %28 - %29 = icmp eq i8 %23, 2 - %30 = xor i1 %29, %24 - %31 = and i1 %30, %.sroa.0.0.i2.i + %27 = icmp eq i8 %26, 2 + %28 = xor i8 %26, 1 + %29 = select i1 %27, i8 0, i8 %28 + %29 = sub nsw i8 %25, %29 + %31 = icmp eq i8 %29, -1 tail call void @llvm.experimental.noalias.scope.decl(metadata !2258) %32 = load ptr, ptr %4, align 8, !alias.scope !2258, !noalias !2261, !nonnull !5, !align !36, !noundef !5 tail call void @llvm.experimental.noalias.scope.decl(metadata !2264) %33 = load ptr, ptr %32, align 8, !alias.scope !2264, !noalias !2267, !nonnull !5, !align !36, !noundef !5 %34 = tail call noundef i8 @"_ZN4gpui6window21WindowHandle$LT$V$GT$9is_active17h53cf1b25541560ddE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.sroa.0.0, ptr noalias noundef nonnull align 8 dereferenceable(1176) %33), !range !37, !noalias !2269 - %35 = trunc i8 %34 to i1 + %.not.i12 = icmp eq i8 %34, 2 + %35 = xor i8 %34, 1 + %36 = select i1 %.not.i12, i8 0, i8 %35 tail call void @llvm.experimental.noalias.scope.decl(metadata !2270) %36 = load ptr, ptr %32, align 8, !alias.scope !2270, !noalias !2273, !nonnull !5, !align !36, !noundef !5 %37 = tail call noundef i8 @"_ZN4gpui6window21WindowHandle$LT$V$GT$9is_active17h53cf1b25541560ddE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.sroa.08.0, ptr noalias noundef nonnull align 8 dereferenceable(1176) %36), !range !37, !noalias !2275 - %38 = icmp ne i8 %37, 2 - %39 = trunc i8 %37 to i1 - %.sroa.0.0.i2.i12 = xor i1 %38, %39 - %40 = icmp eq i8 %34, 2 - %41 = xor i1 %40, %35 - %42 = and i1 %41, %.sroa.0.0.i2.i12 + %38 = icmp eq i8 %37, 2 + %39 = xor i8 %37, 1 + %40 = select i1 %38, i8 0, i8 %39 + %40 = sub nsw i8 %36, %40 + %41 = icmp eq i8 %40, -1 %43 = xor i1 %31, %42 br i1 %43, label %_ZN4core5slice4sort6shared5pivot7median317he3aa0f9e81a4b962E.llvm.7428513249094624621.exit, label %44 @@ -10938,16 +10940,17 @@ define hidden noundef nonnull ptr @_ZN4core5slice4sort6shared5pivot11median3_rec tail call void @llvm.experimental.noalias.scope.decl(metadata !2282) %46 = load ptr, ptr %45, align 8, !alias.scope !2282, !noalias !2285, !nonnull !5, !align !36, !noundef !5 %47 = tail call noundef i8 @"_ZN4gpui6window21WindowHandle$LT$V$GT$9is_active17h53cf1b25541560ddE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.sroa.04.0, ptr noalias noundef nonnull align 8 dereferenceable(1176) %46), !range !37, !noalias !2287 - %48 = trunc i8 %47 to i1 + %.not.i14 = icmp eq i8 %47, 2 + %48 = xor i8 %47, 1 + %49 = select i1 %.not.i14, i8 0, i8 %48 tail call void @llvm.experimental.noalias.scope.decl(metadata !2288) %49 = load ptr, ptr %45, align 8, !alias.scope !2288, !noalias !2291, !nonnull !5, !align !36, !noundef !5 %50 = tail call noundef i8 @"_ZN4gpui6window21WindowHandle$LT$V$GT$9is_active17h53cf1b25541560ddE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.sroa.08.0, ptr noalias noundef nonnull align 8 dereferenceable(1176) %49), !range !37, !noalias !2293 - %51 = icmp ne i8 %50, 2 - %52 = trunc i8 %50 to i1 - %.sroa.0.0.i2.i13 = xor i1 %51, %52 - %53 = icmp eq i8 %47, 2 - %54 = xor i1 %53, %48 - %55 = and i1 %54, %.sroa.0.0.i2.i13 + %51 = icmp eq i8 %50, 2 + %52 = xor i8 %50, 1 + %53 = select i1 %51, i8 0, i8 %52 + %54 = sub nsw i8 %49, %53 + %55 = icmp eq i8 %54, -1 %56 = xor i1 %31, %55 %..i = select i1 %56, ptr %.sroa.08.0, ptr %.sroa.04.0 br label %_ZN4core5slice4sort6shared5pivot7median317he3aa0f9e81a4b962E.llvm.7428513249094624621.exit @@ -13557,29 +13560,31 @@ define hidden noundef range(i64 0, 768614336404564651) i64 @_ZN4core5slice4sort6 tail call void @llvm.experimental.noalias.scope.decl(metadata !3078), !noalias !3081 %15 = load ptr, ptr %14, align 8, !alias.scope !3078, !noalias !3082, !nonnull !5, !align !36, !noundef !5 %16 = tail call noundef i8 @"_ZN4gpui6window21WindowHandle$LT$V$GT$9is_active17h53cf1b25541560ddE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %0, ptr noalias noundef nonnull align 8 dereferenceable(1176) %15), !range !37, !noalias !3084 - %17 = trunc i8 %16 to i1 + %.not.i = icmp eq i8 %16, 2 + %17 = xor i8 %16, 1 + %18 = select i1 %.not.i, i8 0, i8 %17 tail call void @llvm.experimental.noalias.scope.decl(metadata !3085), !noalias !3081 %18 = load ptr, ptr %14, align 8, !alias.scope !3085, !noalias !3088, !nonnull !5, !align !36, !noundef !5 %19 = tail call noundef i8 @"_ZN4gpui6window21WindowHandle$LT$V$GT$9is_active17h53cf1b25541560ddE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %7, ptr noalias noundef nonnull align 8 dereferenceable(1176) %18), !range !37, !noalias !3090 - %20 = icmp ne i8 %19, 2 - %21 = trunc i8 %19 to i1 - %.sroa.0.0.i2.i = xor i1 %20, %21 - %22 = icmp eq i8 %16, 2 - %23 = xor i1 %22, %17 - %24 = and i1 %23, %.sroa.0.0.i2.i + %20 = icmp eq i8 %19, 2 + %21 = xor i8 %19, 1 + %22 = select i1 %20, i8 0, i8 %21 + %23 = sub nsw i8 %18, %22 + %24 = icmp eq i8 %23, -1 tail call void @llvm.experimental.noalias.scope.decl(metadata !3091) %25 = load ptr, ptr %14, align 8, !alias.scope !3091, !noalias !3094, !nonnull !5, !align !36, !noundef !5 %26 = tail call noundef i8 @"_ZN4gpui6window21WindowHandle$LT$V$GT$9is_active17h53cf1b25541560ddE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %0, ptr noalias noundef nonnull align 8 dereferenceable(1176) %25), !range !37, !noalias !3100 - %27 = trunc i8 %26 to i1 + %.not.i2 = icmp eq i8 %26, 2 + %27 = xor i8 %26, 1 + %28 = select i1 %.not.i2, i8 0, i8 %27 tail call void @llvm.experimental.noalias.scope.decl(metadata !3101) %28 = load ptr, ptr %14, align 8, !alias.scope !3101, !noalias !3104, !nonnull !5, !align !36, !noundef !5 %29 = tail call noundef i8 @"_ZN4gpui6window21WindowHandle$LT$V$GT$9is_active17h53cf1b25541560ddE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %8, ptr noalias noundef nonnull align 8 dereferenceable(1176) %28), !range !37, !noalias !3106 - %30 = icmp ne i8 %29, 2 - %31 = trunc i8 %29 to i1 - %.sroa.0.0.i2.i2 = xor i1 %30, %31 - %32 = icmp eq i8 %26, 2 - %33 = xor i1 %32, %27 - %34 = and i1 %33, %.sroa.0.0.i2.i2 + %30 = icmp eq i8 %29, 2 + %31 = xor i8 %29, 1 + %32 = select i1 %30, i8 0, i8 %31 + %32 = sub nsw i8 %28, %32 + %34 = icmp eq i8 %32, -1 %35 = xor i1 %24, %34 br i1 %35, label %_ZN4core5slice4sort6shared5pivot7median317he3aa0f9e81a4b962E.llvm.7428513249094624621.exit, label %36 @@ -13587,16 +13592,17 @@ define hidden noundef range(i64 0, 768614336404564651) i64 @_ZN4core5slice4sort6 tail call void @llvm.experimental.noalias.scope.decl(metadata !3107) %37 = load ptr, ptr %14, align 8, !alias.scope !3107, !noalias !3110, !nonnull !5, !align !36, !noundef !5 %38 = tail call noundef i8 @"_ZN4gpui6window21WindowHandle$LT$V$GT$9is_active17h53cf1b25541560ddE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %7, ptr noalias noundef nonnull align 8 dereferenceable(1176) %37), !range !37, !noalias !3116 - %39 = trunc i8 %38 to i1 + %.not.i4 = icmp eq i8 %38, 2 + %39 = xor i8 %38, 1 + %40 = select i1 %.not.i4, i8 0, i8 %39 tail call void @llvm.experimental.noalias.scope.decl(metadata !3117) %40 = load ptr, ptr %14, align 8, !alias.scope !3117, !noalias !3120, !nonnull !5, !align !36, !noundef !5 %41 = tail call noundef i8 @"_ZN4gpui6window21WindowHandle$LT$V$GT$9is_active17h53cf1b25541560ddE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %8, ptr noalias noundef nonnull align 8 dereferenceable(1176) %40), !range !37, !noalias !3122 - %42 = icmp ne i8 %41, 2 - %43 = trunc i8 %41 to i1 - %.sroa.0.0.i2.i3 = xor i1 %42, %43 - %44 = icmp eq i8 %38, 2 - %45 = xor i1 %44, %39 - %46 = and i1 %45, %.sroa.0.0.i2.i3 + %42 = icmp eq i8 %41, 2 + %43 = xor i8 %41, 1 + %44 = select i1 %42, i8 0, i8 %43 + %45 = sub nsw i8 %40, %44 + %46 = icmp eq i8 %45, -1 %47 = xor i1 %24, %46 %..i = select i1 %47, ptr %8, ptr %7 br label %_ZN4core5slice4sort6shared5pivot7median317he3aa0f9e81a4b962E.llvm.7428513249094624621.exit @@ -17748,29 +17754,31 @@ define hidden noundef nonnull ptr @_ZN4core5slice4sort6shared5pivot7median317he3 tail call void @llvm.experimental.noalias.scope.decl(metadata !4309) %6 = load ptr, ptr %5, align 8, !alias.scope !4309, !noalias !4312, !nonnull !5, !align !36, !noundef !5 %7 = tail call noundef i8 @"_ZN4gpui6window21WindowHandle$LT$V$GT$9is_active17h53cf1b25541560ddE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %0, ptr noalias noundef nonnull align 8 dereferenceable(1176) %6), !range !37, !noalias !4314 - %8 = trunc i8 %7 to i1 + %.not.i = icmp eq i8 %7, 2 + %8 = xor i8 %7, 1 + %9 = select i1 %.not.i, i8 0, i8 %8 tail call void @llvm.experimental.noalias.scope.decl(metadata !4315) %9 = load ptr, ptr %5, align 8, !alias.scope !4315, !noalias !4318, !nonnull !5, !align !36, !noundef !5 %10 = tail call noundef i8 @"_ZN4gpui6window21WindowHandle$LT$V$GT$9is_active17h53cf1b25541560ddE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %1, ptr noalias noundef nonnull align 8 dereferenceable(1176) %9), !range !37, !noalias !4320 - %11 = icmp ne i8 %10, 2 - %12 = trunc i8 %10 to i1 - %.sroa.0.0.i2.i = xor i1 %11, %12 - %13 = icmp eq i8 %7, 2 - %14 = xor i1 %13, %8 - %15 = and i1 %14, %.sroa.0.0.i2.i + %11 = icmp eq i8 %10, 2 + %12 = xor i8 %10, 1 + %13 = select i1 %11, i8 0, i8 %12 + %14 = sub nsw i8 %9, %13 + %15 = icmp eq i8 %14, -1 tail call void @llvm.experimental.noalias.scope.decl(metadata !4321) %16 = load ptr, ptr %5, align 8, !alias.scope !4321, !noalias !4324, !nonnull !5, !align !36, !noundef !5 %17 = tail call noundef i8 @"_ZN4gpui6window21WindowHandle$LT$V$GT$9is_active17h53cf1b25541560ddE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %0, ptr noalias noundef nonnull align 8 dereferenceable(1176) %16), !range !37, !noalias !4330 - %18 = trunc i8 %17 to i1 + %.not.i1 = icmp eq i8 %17, 2 + %18 = xor i8 %17, 1 + %19 = select i1 %.not.i1, i8 0, i8 %18 tail call void @llvm.experimental.noalias.scope.decl(metadata !4331) %19 = load ptr, ptr %5, align 8, !alias.scope !4331, !noalias !4334, !nonnull !5, !align !36, !noundef !5 %20 = tail call noundef i8 @"_ZN4gpui6window21WindowHandle$LT$V$GT$9is_active17h53cf1b25541560ddE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %2, ptr noalias noundef nonnull align 8 dereferenceable(1176) %19), !range !37, !noalias !4336 - %21 = icmp ne i8 %20, 2 - %22 = trunc i8 %20 to i1 - %.sroa.0.0.i2.i1 = xor i1 %21, %22 - %23 = icmp eq i8 %17, 2 - %24 = xor i1 %23, %18 - %25 = and i1 %24, %.sroa.0.0.i2.i1 + %21 = icmp eq i8 %20, 2 + %22 = xor i8 %20, 1 + %23 = select i1 %21, i8 0, i8 %22 + %24 = sub nsw i8 %19, %23 + %25 = icmp eq i8 %24, -1 %26 = xor i1 %15, %25 br i1 %26, label %39, label %27 @@ -17778,16 +17786,17 @@ define hidden noundef nonnull ptr @_ZN4core5slice4sort6shared5pivot7median317he3 tail call void @llvm.experimental.noalias.scope.decl(metadata !4337) %28 = load ptr, ptr %5, align 8, !alias.scope !4337, !noalias !4340, !nonnull !5, !align !36, !noundef !5 %29 = tail call noundef i8 @"_ZN4gpui6window21WindowHandle$LT$V$GT$9is_active17h53cf1b25541560ddE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %1, ptr noalias noundef nonnull align 8 dereferenceable(1176) %28), !range !37, !noalias !4346 - %30 = trunc i8 %29 to i1 + %.not.i3 = icmp eq i8 %29, 2 + %30 = xor i8 %29, 1 + %31 = select i1 %.not.i3, i8 0, i8 %30 tail call void @llvm.experimental.noalias.scope.decl(metadata !4347) %31 = load ptr, ptr %5, align 8, !alias.scope !4347, !noalias !4350, !nonnull !5, !align !36, !noundef !5 %32 = tail call noundef i8 @"_ZN4gpui6window21WindowHandle$LT$V$GT$9is_active17h53cf1b25541560ddE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %2, ptr noalias noundef nonnull align 8 dereferenceable(1176) %31), !range !37, !noalias !4352 - %33 = icmp ne i8 %32, 2 - %34 = trunc i8 %32 to i1 - %.sroa.0.0.i2.i2 = xor i1 %33, %34 - %35 = icmp eq i8 %29, 2 - %36 = xor i1 %35, %30 - %37 = and i1 %36, %.sroa.0.0.i2.i2 + %33 = icmp eq i8 %32, 2 + %34 = xor i8 %32, 1 + %35 = select i1 %33, i8 0, i8 %34 + %36 = sub nsw i8 %31, %35 + %36 = icmp eq i8 %36, -1 %38 = xor i1 %15, %37 %. = select i1 %38, ptr %2, ptr %1 br label %39 @@ -22228,7 +22237,7 @@ define internal noundef zeroext i1 @"_ZN58_$LT$alloc..string..String$u20$as$u20$ 8: ; preds = %4 %9 = lshr i32 %1, 6 - %10 = trunc nuw i32 %9 to i8 + %10 = trunc nuw nsw i32 %9 to i8 %11 = or disjoint i8 %10, -64 store i8 %11, ptr %.sroa.0.i, align 4, !alias.scope !5145, !noalias !5142 %12 = trunc i32 %1 to i8 @@ -22240,7 +22249,7 @@ define internal noundef zeroext i1 @"_ZN58_$LT$alloc..string..String$u20$as$u20$ 15: ; preds = %6 %16 = lshr i32 %1, 12 - %17 = trunc nuw i32 %16 to i8 + %17 = trunc nuw nsw i32 %16 to i8 %18 = or disjoint i8 %17, -32 store i8 %18, ptr %.sroa.0.i, align 4, !alias.scope !5145, !noalias !5142 %19 = lshr i32 %1, 6 @@ -32637,16 +32646,17 @@ define hidden noundef zeroext i1 @"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT tail call void @llvm.experimental.noalias.scope.decl(metadata !8056) %5 = load ptr, ptr %4, align 8, !alias.scope !8056, !noalias !8059, !nonnull !5, !align !36, !noundef !5 %6 = tail call noundef i8 @"_ZN4gpui6window21WindowHandle$LT$V$GT$9is_active17h53cf1b25541560ddE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %1, ptr noalias noundef nonnull align 8 dereferenceable(1176) %5), !range !37, !noalias !8056 - %7 = trunc i8 %6 to i1 + %.not = icmp eq i8 %6, 2 + %7 = xor i8 %6, 1 + %8 = select i1 %.not, i8 0, i8 %7 tail call void @llvm.experimental.noalias.scope.decl(metadata !8061) %8 = load ptr, ptr %4, align 8, !alias.scope !8061, !noalias !8064, !nonnull !5, !align !36, !noundef !5 %9 = tail call noundef i8 @"_ZN4gpui6window21WindowHandle$LT$V$GT$9is_active17h53cf1b25541560ddE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %2, ptr noalias noundef nonnull align 8 dereferenceable(1176) %8), !range !37, !noalias !8061 - %10 = icmp ne i8 %9, 2 - %11 = trunc i8 %9 to i1 - %.sroa.0.0.i2 = xor i1 %10, %11 - %12 = icmp eq i8 %6, 2 - %13 = xor i1 %12, %7 - %14 = and i1 %13, %.sroa.0.0.i2 + %10 = icmp eq i8 %9, 2 + %11 = xor i8 %9, 1 + %12 = select i1 %10, i8 0, i8 %11 + %13 = sub nsw i8 %8, %12 + %14 = icmp eq i8 %13, -1 ret i1 %14 } @@ -75758,8 +75768,9 @@ define hidden noundef zeroext i1 @"_ZN9workspace6reload28_$u7b$$u7b$closure$u7d$ %3 = load ptr, ptr %0, align 8, !nonnull !5, !align !36, !noundef !5 %4 = tail call noundef i8 @"_ZN4gpui6window21WindowHandle$LT$V$GT$9is_active17h53cf1b25541560ddE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %1, ptr noalias noundef nonnull align 8 dereferenceable(1176) %3), !range !37 %5 = icmp ne i8 %4, 2 - %6 = trunc i8 %4 to i1 - %.sroa.0.0 = xor i1 %5, %6 + %6 = trunc nuw i8 %4 to i1 + %.sroa.0.0 = xor i1 %6, true + %.sroa.0.0 = select i1 %5, i1 %7, i1 false ret i1 %.sroa.0.0 } diff --git a/bench/zed-rs/optimized/6a257z75npqxppetnyj7rxh76.ll b/bench/zed-rs/optimized/6a257z75npqxppetnyj7rxh76.ll index e8748214e94..9bda4d8f7a0 100644 --- a/bench/zed-rs/optimized/6a257z75npqxppetnyj7rxh76.ll +++ b/bench/zed-rs/optimized/6a257z75npqxppetnyj7rxh76.ll @@ -18288,13 +18288,14 @@ define hidden void @_ZN4core5slice4sort6stable5merge5merge17h4590e76b23b729f3E(p to label %.noexc22 unwind label %.loopexit .noexc22: ; preds = %.noexc - %22 = trunc i8 %20 to i1 - %23 = icmp ne i8 %21, 2 - %24 = trunc i8 %21 to i1 - %.sroa.0.0.i5.i.i = xor i1 %23, %24 - %25 = icmp eq i8 %20, 2 - %26 = xor i1 %25, %22 - %27 = and i1 %26, %.sroa.0.0.i5.i.i + %.not.i.i = icmp eq i8 %20, 2 + %22 = xor i8 %20, 1 + %23 = select i1 %.not.i.i, i8 0, i8 %22 + %.not2.i.i = icmp eq i8 %21, 2 + %24 = xor i8 %21, 1 + %25 = select i1 %.not2.i.i, i8 0, i8 %24 + %26 = sub nsw i8 %23, %25 + %27 = icmp eq i8 %26, -1 %..i = select i1 %27, ptr %17, ptr %18 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 8 dereferenceable(24) %..i, i64 24, i1 false), !noalias !5311 %28 = xor i1 %27, true @@ -18316,27 +18317,28 @@ define hidden void @_ZN4core5slice4sort6stable5merge5merge17h4590e76b23b729f3E(p tail call void @llvm.assume(i1 %36) br label %37 -37: ; preds = %.noexc29, %.lr.ph.i - %.sroa.13.3 = phi ptr [ %0, %.lr.ph.i ], [ %51, %.noexc29 ] - %.sroa.0.2 = phi ptr [ %2, %.lr.ph.i ], [ %48, %.noexc29 ] - %.sroa.0.02.i = phi ptr [ %13, %.lr.ph.i ], [ %50, %.noexc29 ] +37: ; preds = %.noexc30, %.lr.ph.i + %.sroa.13.3 = phi ptr [ %0, %.lr.ph.i ], [ %51, %.noexc30 ] + %.sroa.0.2 = phi ptr [ %2, %.lr.ph.i ], [ %48, %.noexc30 ] + %.sroa.0.02.i = phi ptr [ %13, %.lr.ph.i ], [ %50, %.noexc30 ] %.val4.i.i24 = load ptr, ptr %.val, align 8, !noalias !5312, !nonnull !11, !align !88, !noundef !11 %38 = invoke noundef i8 @"_ZN4gpui6window21WindowHandle$LT$V$GT$9is_active17h53cf1b25541560ddE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.sroa.0.02.i, ptr noalias noundef nonnull align 8 dereferenceable(1176) %.val4.i.i24) - to label %.noexc28 unwind label %.loopexit.split-lp - -.noexc28: ; preds = %37 - %.val3.i.i25 = load ptr, ptr %.val, align 8, !noalias !5312, !nonnull !11, !align !88, !noundef !11 - %39 = invoke noundef i8 @"_ZN4gpui6window21WindowHandle$LT$V$GT$9is_active17h53cf1b25541560ddE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.sroa.0.2, ptr noalias noundef nonnull align 8 dereferenceable(1176) %.val3.i.i25) to label %.noexc29 unwind label %.loopexit.split-lp -.noexc29: ; preds = %.noexc28 - %40 = trunc i8 %38 to i1 - %41 = icmp ne i8 %39, 2 - %42 = trunc i8 %39 to i1 - %.sroa.0.0.i5.i.i26 = xor i1 %41, %42 - %43 = icmp eq i8 %38, 2 - %44 = xor i1 %43, %40 - %45 = and i1 %44, %.sroa.0.0.i5.i.i26 +.noexc29: ; preds = %37 + %.val3.i.i26 = load ptr, ptr %.val, align 8, !noalias !5312, !nonnull !11, !align !88, !noundef !11 + %39 = invoke noundef i8 @"_ZN4gpui6window21WindowHandle$LT$V$GT$9is_active17h53cf1b25541560ddE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.sroa.0.2, ptr noalias noundef nonnull align 8 dereferenceable(1176) %.val3.i.i26) + to label %.noexc30 unwind label %.loopexit.split-lp + +.noexc30:; preds = %.noexc29 + %.not.i.i25 = icmp eq i8 %38, 2 + %40 = xor i8 %38, 1 + %41 = select i1 %.not.i.i25, i8 0, i8 %40 + %.not2.i.i27 = icmp eq i8 %39, 2 + %42 = xor i8 %39, 1 + %43 = select i1 %.not2.i.i27, i8 0, i8 %42 + %44 = sub nsw i8 %41, %43 + %45 = icmp eq i8 %44, -1 %46 = xor i1 %45, true %.sroa.05.0.i = select i1 %45, ptr %.sroa.0.02.i, ptr %.sroa.0.2 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.13.3, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.05.0.i, i64 24, i1 false), !noalias !5318 @@ -18350,10 +18352,10 @@ define hidden void @_ZN4core5slice4sort6stable5merge5merge17h4590e76b23b729f3E(p %or.cond.i27 = select i1 %52, i1 %53, i1 false br i1 %or.cond.i27, label %37, label %"_ZN4core5slice4sort6stable5merge19MergeState$LT$T$GT$10merge_down17haed7f88b4bc4aadfE.exit" -"_ZN4core5slice4sort6stable5merge19MergeState$LT$T$GT$10merge_down17haed7f88b4bc4aadfE.exit": ; preds = %.noexc29, %.noexc22, %35 - %.sroa.13.1 = phi ptr [ %0, %35 ], [ %30, %.noexc22 ], [ %51, %.noexc29 ] - %.sroa.7.1 = phi ptr [ %16, %35 ], [ %32, %.noexc22 ], [ %16, %.noexc29 ] - %.sroa.0.1 = phi ptr [ %2, %35 ], [ %2, %.noexc22 ], [ %48, %.noexc29 ] +"_ZN4core5slice4sort6stable5merge19MergeState$LT$T$GT$10merge_down17haed7f88b4bc4aadfE.exit": ; preds = %.noexc30, %.noexc22, %35 + %.sroa.13.1 = phi ptr [ %0, %35 ], [ %30, %.noexc22 ], [ %51, %.noexc30 ] + %.sroa.7.1 = phi ptr [ %16, %35 ], [ %32, %.noexc22 ], [ %16, %.noexc30 ] + %.sroa.0.1 = phi ptr [ %2, %35 ], [ %2, %.noexc22 ], [ %48, %.noexc30 ] %54 = ptrtoint ptr %.sroa.7.1 to i64 %55 = ptrtoint ptr %.sroa.0.1 to i64 %56 = sub nuw i64 %54, %55 @@ -18368,7 +18370,7 @@ define hidden void @_ZN4core5slice4sort6stable5merge5merge17h4590e76b23b729f3E(p cleanup br label %58 -.loopexit.split-lp: ; preds = %.noexc28, %37 +.loopexit.split-lp: ; preds = %.noexc29, %37 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup br label %58 @@ -24569,7 +24571,7 @@ define internal noundef zeroext i1 @"_ZN58_$LT$alloc..string..String$u20$as$u20$ 8: ; preds = %4 %9 = lshr i32 %1, 6 - %10 = trunc nuw i32 %9 to i8 + %10 = trunc nuw nsw i32 %9 to i8 %11 = or disjoint i8 %10, -64 store i8 %11, ptr %.sroa.0.i, align 4, !alias.scope !6020, !noalias !6017 %12 = trunc i32 %1 to i8 @@ -24581,7 +24583,7 @@ define internal noundef zeroext i1 @"_ZN58_$LT$alloc..string..String$u20$as$u20$ 15: ; preds = %6 %16 = lshr i32 %1, 12 - %17 = trunc nuw i32 %16 to i8 + %17 = trunc nuw nsw i32 %16 to i8 %18 = or disjoint i8 %17, -32 store i8 %18, ptr %.sroa.0.i, align 4, !alias.scope !6020, !noalias !6017 %19 = lshr i32 %1, 6 @@ -50125,7 +50127,7 @@ define hidden noundef range(i8 0, 4) i8 @"_ZN78_$LT$util..LogErrorFuture$LT$F$GT %.sroa.0.0814 = phi i8 [ %8, %"_ZN78_$LT$gpui..executor..Task$LT$T$GT$$u20$as$u20$core..future..future..Future$GT$4poll17hbc5b1a062c3e8045E.exit.thread" ], [ %14, %"_ZN78_$LT$gpui..executor..Task$LT$T$GT$$u20$as$u20$core..future..future..Future$GT$4poll17hbc5b1a062c3e8045E.exit" ] %.sroa.6.113 = phi i8 [ %.sroa.6.1.copyload, %"_ZN78_$LT$gpui..executor..Task$LT$T$GT$$u20$as$u20$core..future..future..Future$GT$4poll17hbc5b1a062c3e8045E.exit.thread" ], [ %.sroa.6.1.copyload5, %"_ZN78_$LT$gpui..executor..Task$LT$T$GT$$u20$as$u20$core..future..future..Future$GT$4poll17hbc5b1a062c3e8045E.exit" ] %.sroa.96.112 = phi ptr [ %.sroa.96.1.copyload, %"_ZN78_$LT$gpui..executor..Task$LT$T$GT$$u20$as$u20$core..future..future..Future$GT$4poll17hbc5b1a062c3e8045E.exit.thread" ], [ %.sroa.96.1.copyload7, %"_ZN78_$LT$gpui..executor..Task$LT$T$GT$$u20$as$u20$core..future..future..Future$GT$4poll17hbc5b1a062c3e8045E.exit" ] - %trunc = trunc i8 %.sroa.0.0814 to i1 + %trunc = trunc nuw i8 %.sroa.0.0814 to i1 br i1 %trunc, label %20, label %18 18: ; preds = %17 diff --git a/bench/zed-rs/optimized/8uq0kpgi8jqekwanrrlvbr0h1.ll b/bench/zed-rs/optimized/8uq0kpgi8jqekwanrrlvbr0h1.ll index f4d419866bf..ffd4ffc768f 100644 --- a/bench/zed-rs/optimized/8uq0kpgi8jqekwanrrlvbr0h1.ll +++ b/bench/zed-rs/optimized/8uq0kpgi8jqekwanrrlvbr0h1.ll @@ -15416,27 +15416,28 @@ define hidden void @_ZN4core5slice4sort6stable5drift4sort17hed1ff93f6701d273E(pt %.val5.i = load ptr, ptr %5, align 8, !alias.scope !3148, !noalias !3150, !nonnull !25, !align !119, !noundef !25 %.val4.i.i = load ptr, ptr %.val5.i, align 8, !noalias !3152, !nonnull !25, !align !119, !noundef !25 %29 = tail call noundef i8 @"_ZN4gpui6window21WindowHandle$LT$V$GT$9is_active17h53cf1b25541560ddE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %28, ptr noalias noundef nonnull align 8 dereferenceable(1176) %.val4.i.i), !range !3156, !noalias !3157 - %30 = trunc i8 %29 to i1 + %.not.i.i = icmp eq i8 %29, 2 + %30 = xor i8 %29, 1 + %31 = select i1 %.not.i.i, i8 0, i8 %30 %.val3.i.i = load ptr, ptr %.val5.i, align 8, !noalias !3158, !nonnull !25, !align !119, !noundef !25 %31 = tail call noundef i8 @"_ZN4gpui6window21WindowHandle$LT$V$GT$9is_active17h53cf1b25541560ddE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %23, ptr noalias noundef nonnull align 8 dereferenceable(1176) %.val3.i.i), !range !3156, !noalias !3159 - %32 = icmp ne i8 %31, 2 - %33 = trunc i8 %31 to i1 - %.sroa.0.0.i5.i.i = xor i1 %32, %33 - %34 = icmp eq i8 %29, 2 - %35 = xor i1 %34, %30 - %36 = and i1 %35, %.sroa.0.0.i5.i.i - %.not32.i = icmp eq i64 %22, 2 - br i1 %36, label %.preheader.i, label %.preheader21.i - -.preheader21.i: ; preds = %27 - br i1 %.not32.i, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7reverse17ha3daad0569725daeE.exit.i", label %.lr.ph.preheader.i - -.lr.ph.preheader.i: ; preds = %.preheader21.i + %32 = icmp eq i8 %31, 2 + %33 = xor i8 %31, 1 + %34 = select i1 %32, i8 0, i8 %33 + %35 = sub nsw i8 %31, %34 + %36 = icmp eq i8 %35, -1 + %.not34.i = icmp eq i64 %22, 2 + br i1 %36, label %.preheader.i, label %.preheader23.i + +.preheader23.i: ; preds = %27 + br i1 %.not34.i, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7reverse17ha3daad0569725daeE.exit.i", label %.lr.ph.preheader.i + +.lr.ph.preheader.i: ; preds = %.preheader23.i %invariant.gep.i = getelementptr i8, ptr %23, i64 -24 br label %.lr.ph.i .preheader.i: ; preds = %27 - br i1 %.not32.i, label %.lr.ph.preheader.i.i.preheader.i, label %.lr.ph27.preheader.i + br i1 %.not34.i, label %.lr.ph.preheader.i.i.preheader.i, label %.lr.ph27.preheader.i .lr.ph27.preheader.i: ; preds = %.preheader.i %invariant.gep51.i = getelementptr i8, ptr %23, i64 -24 @@ -15448,15 +15449,16 @@ define hidden void @_ZN4core5slice4sort6stable5drift4sort17hed1ff93f6701d273E(pt %gep.i = getelementptr { { { { i32, i32 } }, { { i64, i64 } } }, {} }, ptr %invariant.gep.i, i64 %.sroa.01.1.i23.i %.val4.i6.i = load ptr, ptr %.val5.i, align 8, !noalias !3160, !nonnull !25, !align !119, !noundef !25 %38 = tail call noundef i8 @"_ZN4gpui6window21WindowHandle$LT$V$GT$9is_active17h53cf1b25541560ddE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %37, ptr noalias noundef nonnull align 8 dereferenceable(1176) %.val4.i6.i), !range !3156, !noalias !3164 - %39 = trunc i8 %38 to i1 - %.val3.i7.i = load ptr, ptr %.val5.i, align 8, !noalias !3160, !nonnull !25, !align !119, !noundef !25 - %40 = tail call noundef i8 @"_ZN4gpui6window21WindowHandle$LT$V$GT$9is_active17h53cf1b25541560ddE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %gep.i, ptr noalias noundef nonnull align 8 dereferenceable(1176) %.val3.i7.i), !range !3156, !noalias !3159 - %41 = icmp ne i8 %40, 2 - %42 = trunc i8 %40 to i1 - %.sroa.0.0.i5.i8.i = xor i1 %41, %42 - %43 = icmp eq i8 %38, 2 - %44 = xor i1 %43, %39 - %45 = and i1 %44, %.sroa.0.0.i5.i8.i + %.not.i7.i = icmp eq i8 %38, 2 + %39 = xor i8 %38, 1 + %40 = select i1 %.not.i7.i, i8 0, i8 %39 + %.val3.i8.i = load ptr, ptr %.val5.i, align 8, !noalias !3160, !nonnull !25, !align !119, !noundef !25 + %41 = tail call noundef i8 @"_ZN4gpui6window21WindowHandle$LT$V$GT$9is_active17h53cf1b25541560ddE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %gep.i, ptr noalias noundef nonnull align 8 dereferenceable(1176) %.val3.i8.i), !range !3156, !noalias !3159 + %.not2.i9.i = icmp eq i8 %41, 2 + %42 = xor i8 %41, 1 + %43 = select i1 %.not2.i9.i, i8 0, i8 %42 + %44 = sub nsw i8 %40, %43 + %45 = icmp eq i8 %44, -1 br i1 %45, label %_ZN4core5slice4sort6shared17find_existing_run17ha5e2a811d4f4fed1E.exit.i, label %46 46: ; preds = %.lr.ph.i @@ -15470,15 +15472,16 @@ define hidden void @_ZN4core5slice4sort6stable5drift4sort17hed1ff93f6701d273E(pt %gep52.i = getelementptr { { { { i32, i32 } }, { { i64, i64 } } }, {} }, ptr %invariant.gep51.i, i64 %.sroa.01.0.i26.i %.val4.i9.i = load ptr, ptr %.val5.i, align 8, !noalias !3165, !nonnull !25, !align !119, !noundef !25 %49 = tail call noundef i8 @"_ZN4gpui6window21WindowHandle$LT$V$GT$9is_active17h53cf1b25541560ddE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %48, ptr noalias noundef nonnull align 8 dereferenceable(1176) %.val4.i9.i), !range !3156, !noalias !3169 - %50 = trunc i8 %49 to i1 - %.val3.i10.i = load ptr, ptr %.val5.i, align 8, !noalias !3165, !nonnull !25, !align !119, !noundef !25 - %51 = tail call noundef i8 @"_ZN4gpui6window21WindowHandle$LT$V$GT$9is_active17h53cf1b25541560ddE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %gep52.i, ptr noalias noundef nonnull align 8 dereferenceable(1176) %.val3.i10.i), !range !3156, !noalias !3159 - %52 = icmp ne i8 %51, 2 - %53 = trunc i8 %51 to i1 - %.sroa.0.0.i5.i11.i = xor i1 %52, %53 - %54 = icmp eq i8 %49, 2 - %55 = xor i1 %54, %50 - %56 = and i1 %55, %.sroa.0.0.i5.i11.i + %.not.i11.i = icmp eq i8 %49, 2 + %50 = xor i8 %49, 1 + %51 = select i1 %.not.i11.i, i8 0, i8 %50 + %.val3.i12.i = load ptr, ptr %.val5.i, align 8, !noalias !3165, !nonnull !25, !align !119, !noundef !25 + %52 = tail call noundef i8 @"_ZN4gpui6window21WindowHandle$LT$V$GT$9is_active17h53cf1b25541560ddE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %gep54.i, ptr noalias noundef nonnull align 8 dereferenceable(1176) %.val3.i12.i), !range !3156, !noalias !3159 + %.not2.i13.i = icmp eq i8 %52, 2 + %53 = xor i8 %52, 1 + %54 = select i1 %.not2.i13.i, i8 0, i8 %53 + %55 = sub nsw i8 %51, %54 + %56 = icmp eq i8 %55, -1 br i1 %56, label %57, label %_ZN4core5slice4sort6shared17find_existing_run17ha5e2a811d4f4fed1E.exit.i 57: ; preds = %.lr.ph27.i @@ -15508,8 +15511,8 @@ _ZN4core5slice4sort6shared17find_existing_run17ha5e2a811d4f4fed1E.exit.i: ; pred %65 = or disjoint i64 %64, 1 br label %_ZN4core5slice4sort6stable5drift10create_run17h2eef50d28f50c0d3E.exit -"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7reverse17ha3daad0569725daeE.exit.i": ; preds = %_ZN4core10intrinsics10typed_swap17h5a1bdcd2a6ffd261E.exit.i.i.i, %.preheader21.i, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hc37058ead822a7a6E.exit.i", %60, %25 - %.sroa.0.0.i1720.i = phi i64 [ %.sroa.0.0.i.i, %60 ], [ 1, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hc37058ead822a7a6E.exit.i" ], [ %22, %25 ], [ 2, %.preheader21.i ], [ %.sroa.0.0.i384548.i, %_ZN4core10intrinsics10typed_swap17h5a1bdcd2a6ffd261E.exit.i.i.i ] +"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7reverse17ha3daad0569725daeE.exit.i": ; preds = %_ZN4core10intrinsics10typed_swap17h5a1bdcd2a6ffd261E.exit.i.i.i, %.preheader23.i, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hc37058ead822a7a6E.exit.i", %60, %25 + %.sroa.0.0.i1720.i = phi i64 [ %.sroa.0.0.i.i, %60 ], [ 1, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hc37058ead822a7a6E.exit.i" ], [ %22, %25 ], [ 2, %.preheader23.i ], [ %.sroa.0.0.i384548.i, %_ZN4core10intrinsics10typed_swap17h5a1bdcd2a6ffd261E.exit.i.i.i ] %66 = shl i64 %.sroa.0.0.i1720.i, 1 %67 = or disjoint i64 %66, 1 br label %_ZN4core5slice4sort6stable5drift10create_run17h2eef50d28f50c0d3E.exit @@ -16877,14 +16880,14 @@ define hidden noundef zeroext i1 @"_ZN58_$LT$alloc..string..String$u20$as$u20$co 8: ; preds = %4 %9 = lshr i32 %1, 6 - %10 = trunc nuw i32 %9 to i8 + %10 = trunc nuw nsw i32 %9 to i8 %11 = or disjoint i8 %10, -64 store i8 %11, ptr %.sroa.0.i, align 4, !alias.scope !3308, !noalias !3305 br label %_ZN4core4char7methods15encode_utf8_raw17h922ae18bb09655a8E.exit.i 12: ; preds = %6 %13 = lshr i32 %1, 12 - %14 = trunc nuw i32 %13 to i8 + %14 = trunc nuw nsw i32 %13 to i8 %15 = or disjoint i8 %14, -32 store i8 %15, ptr %.sroa.0.i, align 4, !alias.scope !3308, !noalias !3305 %16 = lshr i32 %1, 6 diff --git a/bench/zed-rs/optimized/8x58xp4s22l8izlb56sviitm3.ll b/bench/zed-rs/optimized/8x58xp4s22l8izlb56sviitm3.ll index 44074cab050..71658c951ce 100644 --- a/bench/zed-rs/optimized/8x58xp4s22l8izlb56sviitm3.ll +++ b/bench/zed-rs/optimized/8x58xp4s22l8izlb56sviitm3.ll @@ -24375,58 +24375,50 @@ define noundef zeroext i1 @"_ZN63_$LT$tasks_ui..modal..Rerun$u20$as$u20$gpui..ac %23 = icmp eq i8 %22, 2 %24 = getelementptr inbounds nuw i8, ptr %7, i64 25 %25 = load i8, ptr %24, align 1, !range !267, !alias.scope !4360, !noalias !4355, !noundef !9 - %26 = icmp eq i8 %25, 2 - br i1 %23, label %27, label %28 + br i1 %23, label %26, label %28 27: ; preds = %20 - br i1 %26, label %29, label %"_ZN4core6option15Option$LT$T$GT$6map_or17h00ca648b2c6df840E.exit" + %27 = icmp eq i8 %25, 2 + br i1 %27, label %29, label %"_ZN4core6option15Option$LT$T$GT$6map_or17h00ca648b2c6df840E.exit" 28: ; preds = %20 - br i1 %26, label %"_ZN4core6option15Option$LT$T$GT$6map_or17h00ca648b2c6df840E.exit", label %36 + %.not7.i.i.i = icmp eq i8 %22, %25 + br i1 %.not7.i.i.i, label %29, label %"_ZN4core6option15Option$LT$T$GT$6map_or17h00ca648b2c6df840E.exit" -29: ; preds = %36, %27 +29: ; preds = %28, %27 %30 = getelementptr inbounds nuw i8, ptr %0, i64 26 %31 = load i8, ptr %30, align 2, !range !267, !alias.scope !4355, !noalias !4360, !noundef !9 %32 = icmp eq i8 %31, 2 %33 = getelementptr inbounds nuw i8, ptr %7, i64 26 %34 = load i8, ptr %33, align 2, !range !267, !alias.scope !4360, !noalias !4355, !noundef !9 - %35 = icmp eq i8 %34, 2 - br i1 %32, label %39, label %40 + br i1 %32, label %35, label %37 -36: ; preds = %28 - %37 = xor i8 %25, %22 - %38 = trunc i8 %37 to i1 - br i1 %38, label %"_ZN4core6option15Option$LT$T$GT$6map_or17h00ca648b2c6df840E.exit", label %29 +36: ; preds = %29 + %36 = icmp eq i8 %34, 2 + br i1 %36, label %38, label %"_ZN4core6option15Option$LT$T$GT$6map_or17h00ca648b2c6df840E.exit" 39: ; preds = %29 - br i1 %35, label %41, label %"_ZN4core6option15Option$LT$T$GT$6map_or17h00ca648b2c6df840E.exit" - -40: ; preds = %29 - br i1 %35, label %"_ZN4core6option15Option$LT$T$GT$6map_or17h00ca648b2c6df840E.exit", label %46 - -41: ; preds = %46, %39 - %42 = load i64, ptr %0, align 8, !range !80, !alias.scope !4355, !noalias !4360, !noundef !9 - %43 = icmp eq i64 %42, -9223372036854775808 - %44 = load i64, ptr %7, align 8, !range !80, !alias.scope !4360, !noalias !4355, !noundef !9 - %45 = icmp eq i64 %44, -9223372036854775808 - %brmerge.i.i.i = or i1 %43, %45 - %.mux.i.i.i = and i1 %43, %45 - br i1 %brmerge.i.i.i, label %"_ZN4core6option15Option$LT$T$GT$6map_or17h00ca648b2c6df840E.exit", label %49 - -46: ; preds = %40 - %47 = xor i8 %34, %31 - %48 = trunc i8 %47 to i1 - br i1 %48, label %"_ZN4core6option15Option$LT$T$GT$6map_or17h00ca648b2c6df840E.exit", label %41 - -49: ; preds = %41 - %50 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %.val4.i.i.i = load i64, ptr %50, align 8, !alias.scope !4355, !noalias !4360, !noundef !9 - %51 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %.val6.i.i.i = load i64, ptr %51, align 8, !alias.scope !4360, !noalias !4355, !noundef !9 + %.not8.i.i.i = icmp eq i8 %31, %34 + br i1 %.not8.i.i.i, label %38, label %"_ZN4core6option15Option$LT$T$GT$6map_or17h00ca648b2c6df840E.exit" + +40: ; preds = %39, %35 + %39 = load i64, ptr %0, align 8, !range !80, !alias.scope !4355, !noalias !4360, !noundef !9 + %40 = icmp eq i64 %39, -9223372036854775808 + %41 = load i64, ptr %7, align 8, !range !80, !alias.scope !4360, !noalias !4355, !noundef !9 + %42 = icmp eq i64 %41, -9223372036854775808 + %brmerge.i.i.i = or i1 %40, %42 + %.mux.i.i.i = and i1 %40, %42 + br i1 %brmerge.i.i.i, label %"_ZN4core6option15Option$LT$T$GT$6map_or17h00ca648b2c6df840E.exit", label %43 + +41: ; preds = %38 + %44 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %.val4.i.i.i = load i64, ptr %44, align 8, !alias.scope !4355, !noalias !4360, !noundef !9 + %45 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %.val6.i.i.i = load i64, ptr %45, align 8, !alias.scope !4360, !noalias !4355, !noundef !9 %.not.i.i.i.i.i = icmp eq i64 %.val4.i.i.i, %.val6.i.i.i br i1 %.not.i.i.i.i.i, label %52, label %"_ZN4core6option15Option$LT$T$GT$6map_or17h00ca648b2c6df840E.exit" -52: ; preds = %49 +52: ; preds = %43 %53 = getelementptr inbounds nuw i8, ptr %7, i64 8 %.val5.i.i.i = load ptr, ptr %53, align 8, !alias.scope !4360, !noalias !4355, !nonnull !9, !noundef !9 %54 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -24435,8 +24427,8 @@ define noundef zeroext i1 @"_ZN63_$LT$tasks_ui..modal..Rerun$u20$as$u20$gpui..ac %55 = icmp eq i32 %bcmp.i.i.i.i.i, 0 br label %"_ZN4core6option15Option$LT$T$GT$6map_or17h00ca648b2c6df840E.exit" -"_ZN4core6option15Option$LT$T$GT$6map_or17h00ca648b2c6df840E.exit": ; preds = %3, %15, %27, %28, %36, %39, %40, %41, %46, %49, %52 - %.sroa.02.0.i = phi i1 [ false, %3 ], [ false, %40 ], [ false, %39 ], [ false, %28 ], [ false, %27 ], [ false, %15 ], [ false, %46 ], [ false, %36 ], [ %55, %52 ], [ false, %49 ], [ %.mux.i.i.i, %41 ] +"_ZN4core6option15Option$LT$T$GT$6map_or17h00ca648b2c6df840E.exit": ; preds = %3, %15, %27, %28, %36, %39, %40, %41, %46 + %.sroa.02.0.i = phi i1 [ false, %3 ], [ false, %37 ], [ false, %35 ], [ false, %28 ], [ false, %26 ], [ false, %15 ], [ %49, %46 ], [ false, %43 ], [ %.mux.i.i.i, %40 ] ret i1 %.sroa.02.0.i } diff --git a/bench/zed-rs/optimized/a9o648rm8h3erlto15zyd64wi.ll b/bench/zed-rs/optimized/a9o648rm8h3erlto15zyd64wi.ll index e2c098061d6..6f758c3d6bd 100644 --- a/bench/zed-rs/optimized/a9o648rm8h3erlto15zyd64wi.ll +++ b/bench/zed-rs/optimized/a9o648rm8h3erlto15zyd64wi.ll @@ -132931,14 +132931,14 @@ define internal noundef zeroext i1 @"_ZN58_$LT$alloc..string..String$u20$as$u20$ 8: ; preds = %4 %9 = lshr i32 %1, 6 - %10 = trunc nuw i32 %9 to i8 + %10 = trunc nuw nsw i32 %9 to i8 %11 = or disjoint i8 %10, -64 store i8 %11, ptr %.sroa.0.i, align 4, !alias.scope !35697, !noalias !35694 br label %_ZN4core4char7methods15encode_utf8_raw17h922ae18bb09655a8E.exit.i 12: ; preds = %6 %13 = lshr i32 %1, 12 - %14 = trunc nuw i32 %13 to i8 + %14 = trunc nuw nsw i32 %13 to i8 %15 = or disjoint i8 %14, -32 store i8 %15, ptr %.sroa.0.i, align 4, !alias.scope !35697, !noalias !35694 %16 = lshr i32 %1, 6 @@ -142857,7 +142857,7 @@ define hidden void @_ZN7similar4text14TextDiffConfig4diff17he214e02865130389E.ll %26 = getelementptr inbounds nuw i8, ptr %1, i64 25 %27 = load i8, ptr %26, align 1, !range !82, !noundef !21 %28 = icmp eq i8 %27, 2 - %29 = trunc i8 %27 to i1 + %29 = trunc nuw i8 %27 to i1 %spec.select = select i1 %28, i1 %4, i1 %29 %30 = getelementptr inbounds nuw i8, ptr %0, i64 24 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %30, ptr noundef nonnull align 8 dereferenceable(24) %2, i64 24, i1 false) @@ -159750,9 +159750,8 @@ define hidden noundef range(i8 -1, 2) i8 @"_ZN7project21sort_worktree_entries28_ define noundef zeroext i1 @"_ZN88_$LT$project..lsp_command..PrepareRename$u20$as$u20$project..lsp_command..LspCommand$GT$18check_capabilities17h6269c028bb22a9e8E"(ptr noalias noundef readonly align 4 captures(none) dereferenceable(8) %0, ptr noalias noundef align 8 captures(none) dereferenceable(1280) %1) unnamed_addr #2 { %3 = getelementptr inbounds nuw i8, ptr %1, i64 1250 %4 = load i8, ptr %3, align 2, !range !1660, !noundef !21 - %switch = icmp samesign ult i8 %4, 2 - %5 = trunc i8 %4 to i1 - %spec.select = and i1 %switch, %5 + %spec.select4 = tail call i8 @llvm.umin.i8(i8 %4, i8 2) + %5 = trunc i8 %spec.select4 to i1 tail call void @"_ZN4core3ptr51drop_in_place$LT$lsp..AdapterServerCapabilities$GT$17hade325882c368b19E"(ptr noalias noundef nonnull align 8 dereferenceable(1280) %1) ret i1 %spec.select } @@ -173977,7 +173976,7 @@ define noundef zeroext i1 @"_ZN88_$LT$project..lsp_command..GetReferences$u20$as br i1 %5, label %7, label %6 6: ; preds = %2 - %trunc = trunc i8 %4 to i1 + %trunc = trunc nuw i8 %4 to i1 br i1 %trunc, label %7, label %8 7: ; preds = %6, %2, %8 @@ -182001,7 +182000,7 @@ define noundef zeroext i1 @"_ZN83_$LT$project..lsp_command..GetHover$u20$as$u20$ br i1 %5, label %7, label %6 6: ; preds = %2 - %trunc = trunc i8 %4 to i1 + %trunc = trunc nuw i8 %4 to i1 br i1 %trunc, label %7, label %8 7: ; preds = %6, %2, %8 @@ -206854,6 +206853,9 @@ declare double @llvm.fabs.f64(double) #51 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umax.i64(i64, i64) #51 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i8 @llvm.umin.i8(i8, i8) #51 + attributes #0 = { mustprogress nofree norecurse noreturn nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #2 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c5409e09ef4..de4c9a1c177 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/130504 export COMPTIME_MODE=0 # Please rebase manually