diff --git a/bench/abc/optimized/extraUtilCanon.ll b/bench/abc/optimized/extraUtilCanon.ll index a2e812e320f..f9433ebd12b 100644 --- a/bench/abc/optimized/extraUtilCanon.ll +++ b/bench/abc/optimized/extraUtilCanon.ll @@ -427,9 +427,9 @@ define internal fastcc i32 @Extra_TruthCanonN_rec(i32 noundef %0, ptr noundef %1 br label %215 208: ; preds = %.loopexit - switch i32 %0, label %215 [ - i32 5, label %209 - i32 6, label %213 + switch i32 %24, label %215 [ + i32 4, label %209 + i32 5, label %213 ] 209: ; preds = %208 diff --git a/bench/actix-rs/optimized/4pmtvrahn6eloepe.ll b/bench/actix-rs/optimized/4pmtvrahn6eloepe.ll index dc541175a9a..4fba77fa9ad 100644 --- a/bench/actix-rs/optimized/4pmtvrahn6eloepe.ll +++ b/bench/actix-rs/optimized/4pmtvrahn6eloepe.ll @@ -205,6 +205,7 @@ target triple = "x86_64-unknown-linux-gnu" @anon.3dfc7285fed8fa297aed43441a3d1c46.1.llvm.10144161557925507027 = external hidden unnamed_addr constant <{ ptr, [16 x i8] }>, align 8 @str.0.llvm.10144161557925507027 = external hidden unnamed_addr constant [25 x i8] @_ZN6brotli3enc4util10kLog2Table17h3d7a587af6dc9265E = external local_unnamed_addr global [256 x float] +@switch.table._ZN6brotli3enc17compress_fragment26BrotliCompressFragmentFast17hcd5548c609f0d180E = private unnamed_addr constant [7 x i64] [i64 15, i64 poison, i64 13, i64 poison, i64 11, i64 poison, i64 9], align 8 ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write, inaccessiblemem: write) uwtable define hidden void @"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$3new17h2219825847fd2d78E"(ptr noalias noundef writeonly sret({ { ptr, ptr, {} }, { ptr, ptr, {} }, i64, i64, i64 }) align 8 captures(none) dereferenceable(56) initializes((0, 56)) %0, ptr noundef nonnull %1, ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4) unnamed_addr #0 personality ptr @rust_eh_personality { @@ -3851,13 +3852,13 @@ define hidden void @_ZN6brotli3enc17compress_fragment26BrotliCompressFragmentFas 21: ; preds = %18 %22 = tail call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %7, i1 false) - %23 = xor i64 %22, 63 - switch i64 %23, label %28 [ - i64 9, label %.sink.split2 - i64 11, label %.sink.split2 - i64 13, label %.sink.split2 - i64 15, label %.sink.split2 - ] + %switch.tableidx = add nsw i64 %22, -48 + %23 = icmp ult i64 %switch.tableidx, 7 + %switch.maskindex = trunc i64 %switch.tableidx to i8 + %switch.shifted = lshr i8 85, %switch.maskindex + %switch.lobit = trunc i8 %switch.shifted to i1 + %or.cond = select i1 %23, i1 %switch.lobit, i1 false + br i1 %or.cond, label %switch.lookup, label %28 .sink.split: ; preds = %18, %35 tail call void @_ZN6brotli3enc26compress_fragment_two_pass15BrotliWriteBits17hf4851fa4b68a36a6E(i64 noundef 1, i64 noundef 1, ptr noalias noundef nonnull align 8 dereferenceable(8) %15, ptr noalias noundef nonnull align 1 %16, i64 noundef %17) @@ -3871,11 +3872,13 @@ define hidden void @_ZN6brotli3enc17compress_fragment26BrotliCompressFragmentFas 27: ; preds = %.sink.split, %35 ret void -.sink.split2: ; preds = %21, %21, %21, %21 - tail call void @_ZN6brotli3enc17compress_fragment30BrotliCompressFragmentFastImpl17h24e109efb8be68e4E.llvm.2002727345234535996(ptr noalias noundef nonnull align 1 %0, ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2, i64 noundef %3, i32 noundef %4, ptr noalias noundef nonnull align 4 %5, i64 noundef %6, i64 noundef %23, ptr noalias noundef nonnull align 1 %8, i64 noundef %9, ptr noalias noundef nonnull align 2 %10, i64 noundef %11, ptr noalias noundef nonnull align 8 dereferenceable(8) %12, ptr noalias noundef nonnull align 1 %13, i64 noundef %14, ptr noalias noundef nonnull align 8 dereferenceable(8) %15, ptr noalias noundef nonnull align 1 %16, i64 noundef %17) +.sink.split2: ; preds = %21 + %switch.gep = getelementptr inbounds nuw [7 x i64], ptr @switch.table._ZN6brotli3enc17compress_fragment26BrotliCompressFragmentFast17hcd5548c609f0d180E, i64 0, i64 %switch.tableidx + %switch.load = load i64, ptr %switch.gep, align 8 + tail call void @_ZN6brotli3enc17compress_fragment30BrotliCompressFragmentFastImpl17h24e109efb8be68e4E.llvm.2002727345234535996(ptr noalias noundef nonnull align 1 %0, ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2, i64 noundef %3, i32 noundef %4, ptr noalias noundef nonnull align 4 %5, i64 noundef %6, i64 noundef %switch.load, ptr noalias noundef nonnull align 1 %8, i64 noundef %9, ptr noalias noundef nonnull align 2 %10, i64 noundef %11, ptr noalias noundef nonnull align 8 dereferenceable(8) %12, ptr noalias noundef nonnull align 1 %13, i64 noundef %14, ptr noalias noundef nonnull align 8 dereferenceable(8) %15, ptr noalias noundef nonnull align 1 %16, i64 noundef %17) br label %28 -28: ; preds = %.sink.split2, %21 +28: ; preds = %21, %.sink.split2 %29 = load i64, ptr %15, align 8, !noundef !13 %30 = sub i64 %29, %19 %31 = shl i64 %3, 3 diff --git a/bench/arrow/optimized/fixed-dtoa.ll b/bench/arrow/optimized/fixed-dtoa.ll index 9ae1b5bfed9..6456ff90877 100644 --- a/bench/arrow/optimized/fixed-dtoa.ll +++ b/bench/arrow/optimized/fixed-dtoa.ll @@ -757,17 +757,17 @@ define internal fastcc void @_ZN14arrow_vendored17double_conversionL15FillFracti br label %_ZN14arrow_vendored17double_conversionL7RoundUpENS0_6VectorIcEEPiS3_.exit 57: ; preds = %6 - switch i32 %1, label %59 [ - i32 -64, label %_ZN14arrow_vendored17double_conversion7UInt1285ShiftEi.exit - i32 -128, label %58 + %58 = sub nsw i32 -64, %1 + switch i32 %58, label %60 [ + i32 0, label %_ZN14arrow_vendored17double_conversion7UInt1285ShiftEi.exit + i32 64, label %59 ] 58: ; preds = %57 br label %_ZN14arrow_vendored17double_conversion7UInt1285ShiftEi.exit 59: ; preds = %57 - %60 = sub nsw i32 -64, %1 - %61 = zext nneg i32 %60 to i64 + %61 = zext nneg i32 %58 to i64 %62 = add nsw i32 %1, 128 %63 = zext nneg i32 %62 to i64 %64 = shl i64 %0, %63 @@ -775,8 +775,8 @@ define internal fastcc void @_ZN14arrow_vendored17double_conversionL15FillFracti br label %_ZN14arrow_vendored17double_conversion7UInt1285ShiftEi.exit _ZN14arrow_vendored17double_conversion7UInt1285ShiftEi.exit: ; preds = %57, %58, %59 - %.sroa.17.1 = phi i64 [ %64, %59 ], [ 0, %57 ], [ %0, %58 ] - %.sroa.0.1 = phi i64 [ %65, %59 ], [ %0, %57 ], [ 0, %58 ] + %.sroa.17.1 = phi i64 [ %64, %60 ], [ 0, %57 ], [ %0, %59 ] + %.sroa.0.1 = phi i64 [ %65, %60 ], [ %0, %57 ], [ 0, %59 ] %66 = icmp sgt i32 %2, 0 br i1 %66, label %.lr.ph.preheader, label %._crit_edge diff --git a/bench/brotli/optimized/compress_fragment.ll b/bench/brotli/optimized/compress_fragment.ll index 5a80c294288..96a6db6487e 100644 --- a/bench/brotli/optimized/compress_fragment.ll +++ b/bench/brotli/optimized/compress_fragment.ll @@ -15,12 +15,11 @@ define hidden void @BrotliCompressFragmentFast(ptr noundef %0, ptr noundef %1, i 11: ; preds = %8 %12 = trunc i64 %5 to i32 %13 = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %12, i1 true) - %14 = xor i32 %13, 31 - switch i32 %14, label %19 [ - i32 9, label %15 - i32 11, label %16 - i32 13, label %17 - i32 15, label %18 + switch i32 %13, label %18 [ + i32 22, label %14 + i32 20, label %15 + i32 18, label %16 + i32 16, label %17 ] 15: ; preds = %11 @@ -127,7 +126,7 @@ define hidden void @BrotliCompressFragmentFast(ptr noundef %0, ptr noundef %1, i br label %.sink.split .sink.split: ; preds = %8, %73 - %.sink75 = phi i64 [ %74, %73 ], [ %9, %8 ] + %.sink75 = phi i64 [ %74, %72 ], [ %9, %8 ] %75 = lshr i64 %.sink75, 3 %76 = getelementptr inbounds nuw i8, ptr %7, i64 %75 %77 = load i8, ptr %76, align 1, !tbaa !7, !noalias !33 diff --git a/bench/brotli/optimized/compress_fragment_two_pass.ll b/bench/brotli/optimized/compress_fragment_two_pass.ll index c20768947eb..264581b21ba 100644 --- a/bench/brotli/optimized/compress_fragment_two_pass.ll +++ b/bench/brotli/optimized/compress_fragment_two_pass.ll @@ -12,18 +12,17 @@ define hidden void @BrotliCompressFragmentTwoPass(ptr noundef %0, ptr noundef %1 %11 = load i64, ptr %8, align 8, !tbaa !3 %12 = trunc i64 %7 to i32 %13 = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %12, i1 true) - %14 = xor i32 %13, 31 - switch i32 %14, label %25 [ - i32 8, label %15 - i32 9, label %16 - i32 10, label %17 - i32 11, label %18 - i32 12, label %19 - i32 13, label %20 - i32 14, label %21 + switch i32 %13, label %24 [ + i32 24, label %15 + i32 22, label %15 + i32 21, label %16 + i32 20, label %17 + i32 19, label %18 + i32 18, label %19 + i32 17, label %20 + i32 16, label %21 i32 15, label %22 - i32 16, label %23 - i32 17, label %24 + i32 14, label %23 ] 15: ; preds = %10 @@ -66,7 +65,7 @@ define hidden void @BrotliCompressFragmentTwoPass(ptr noundef %0, ptr noundef %1 tail call fastcc void @BrotliCompressFragmentTwoPassImpl17(ptr noundef %0, ptr noundef %1, i64 noundef %2, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef nonnull %8, ptr noundef %9) br label %25 -25: ; preds = %10, %24, %23, %22, %21, %20, %19, %18, %17, %16, %15 +25: ; preds = %10, %23, %22, %21, %20, %19, %18, %17, %16, %15, %14 %26 = load i64, ptr %8, align 8, !tbaa !3 %27 = sub i64 %26, %11 %28 = shl i64 %2, 3 diff --git a/bench/clamav/optimized/pdf.ll b/bench/clamav/optimized/pdf.ll index f6c08d6b0b1..f5a0f3dbf9a 100644 --- a/bench/clamav/optimized/pdf.ll +++ b/bench/clamav/optimized/pdf.ll @@ -9640,10 +9640,10 @@ aes_128cbc_encrypt.exit: ; preds = %36, %._crit_edge.i %53 = urem i32 %51, 3 %54 = shl nuw nsw i32 %53, 4 %55 = add nuw nsw i32 %54, 32 - switch i32 %53, label %default.unreachable [ - i32 0, label %56 - i32 1, label %58 - i32 2, label %60 + switch i32 %55, label %62 [ + i32 32, label %56 + i32 48, label %58 + i32 64, label %60 ] 56: ; preds = %52 @@ -9661,10 +9661,7 @@ aes_128cbc_encrypt.exit: ; preds = %36, %._crit_edge.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %6, ptr noundef nonnull align 16 dereferenceable(64) %9, i64 64, i1 false) br label %62 -default.unreachable: ; preds = %52 - unreachable - -62: ; preds = %56, %58, %60 +default.unreachable: ; preds = %52, %56, %58, %60 %63 = add nuw nsw i32 %.040, 1 br label %15 diff --git a/bench/cmake/optimized/cmCPackArchiveGenerator.ll b/bench/cmake/optimized/cmCPackArchiveGenerator.ll index f4f2ea3737c..04e9c9ae91f 100644 --- a/bench/cmake/optimized/cmCPackArchiveGenerator.ll +++ b/bench/cmake/optimized/cmCPackArchiveGenerator.ll @@ -3853,7 +3853,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i: ; ._crit_edge.i.i.i: ; preds = %.noexc207, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i %448 = phi ptr [ %446, %.noexc207 ], [ %442, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i ] - %cond = icmp eq i64 %436, 2 + %cond = icmp eq i64 %444, 1 br i1 %cond, label %449, label %451 449: ; preds = %._crit_edge.i.i.i diff --git a/bench/coreutils-rs/optimized/4tt85gim3dxp9l65.ll b/bench/coreutils-rs/optimized/4tt85gim3dxp9l65.ll index b472e8f068a..36937af2164 100644 --- a/bench/coreutils-rs/optimized/4tt85gim3dxp9l65.ll +++ b/bench/coreutils-rs/optimized/4tt85gim3dxp9l65.ll @@ -1892,8 +1892,7 @@ _ZN7uu_uniq29should_extract_obs_skip_chars17h24d3295a10ed3060E.exit.thread87: ; %356 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 2 %357 = load i8, ptr %356, align 1, !alias.scope !363, !noalias !362, !noundef !5 %358 = icmp sgt i8 %357, -65 - %359 = add i64 %.sroa.6.0, -2 - br i1 %358, label %363, label %362 + br i1 %358, label %362, label %361 360: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit109.i", %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h747a3907e075213dE.exit.i49" %.not.i76.i = icmp eq i64 %.sroa.6.0, 2 @@ -1912,43 +1911,40 @@ _ZN7uu_uniq29should_extract_obs_skip_chars17h24d3295a10ed3060E.exit.thread87: ; unreachable 363: ; preds = %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit.i" - %.not.i78.i = icmp eq i64 %359, 10 - br i1 %.not.i78.i, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit81.i", label %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit84.i" - -"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit81.i": ; preds = %363 - %bcmp.i80.i = call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(10) %356, ptr noundef nonnull dereferenceable(10) @anon.214c278de846444a79471cc977c3727a.17.llvm.11559448534686651217, i64 10), !alias.scope !372, !noalias !362 - %364 = icmp eq i32 %bcmp.i80.i, 0 - br label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit109.i" - -"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit84.i": ; preds = %363 switch i64 %.sroa.6.0, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit109.i" [ + i64 12, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit81.i" i64 13, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit88.i" i64 7, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit102.i" i64 14, label %368 ] -"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit88.i": ; preds = %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit84.i" +"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit88.i": ; preds = %362 + %bcmp.i80.i = call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(10) %356, ptr noundef nonnull dereferenceable(10) @anon.214c278de846444a79471cc977c3727a.17.llvm.11559448534686651217, i64 10), !alias.scope !372, !noalias !362 + %363 = icmp eq i32 %bcmp.i80.i, 0 + br label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit109.i" + +"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit88.i": ; preds = %362 %bcmp.i87.i = call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(11) %356, ptr noundef nonnull dereferenceable(11) @anon.214c278de846444a79471cc977c3727a.16.llvm.11559448534686651217, i64 11), !alias.scope !376, !noalias !362 %365 = icmp eq i32 %bcmp.i87.i, 0 br i1 %365, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit109.i", label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit95.i" "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit95.i": ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit88.i" - %bcmp.i94.i = call i32 @bcmp(ptr nonnull readonly align 1 %356, ptr nonnull @anon.214c278de846444a79471cc977c3727a.12.llvm.11559448534686651217, i64 %359), !alias.scope !380, !noalias !362 + %bcmp.i94.i = call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(11) %356, ptr noundef nonnull dereferenceable(11) @anon.214c278de846444a79471cc977c3727a.12.llvm.11559448534686651217, i64 11), !alias.scope !380, !noalias !362 %366 = icmp eq i32 %bcmp.i94.i, 0 br label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit109.i" -"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit102.i": ; preds = %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit84.i" +"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit102.i": ; preds = %362 %bcmp.i101.i = call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(5) %356, ptr noundef nonnull dereferenceable(5) @anon.214c278de846444a79471cc977c3727a.20.llvm.11559448534686651217, i64 5), !alias.scope !384, !noalias !362 %367 = icmp eq i32 %bcmp.i101.i, 0 br label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit109.i" -368: ; preds = %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit84.i" +368: ; preds = %363 %bcmp.i108.i = call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(12) %356, ptr noundef nonnull dereferenceable(12) @anon.214c278de846444a79471cc977c3727a.11.llvm.11559448534686651217, i64 12), !alias.scope !388, !noalias !362 %369 = icmp eq i32 %bcmp.i108.i, 0 br label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit109.i" -"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit109.i": ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit95.i", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit81.i", %368, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit102.i", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit88.i", %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit84.i", %354 - %.075.shrunk.i = phi i1 [ true, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit88.i" ], [ %369, %368 ], [ false, %354 ], [ %367, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit102.i" ], [ false, %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit84.i" ], [ %364, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit81.i" ], [ %366, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit95.i" ] +"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit109.i": ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit95.i", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit81.i", %362, %368, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit102.i", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit88.i", %354 + %.075.shrunk.i = phi i1 [ true, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit88.i" ], [ %369, %367 ], [ false, %354 ], [ %367, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit102.i" ], [ %363, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit81.i" ], [ false, %362 ], [ %365, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit95.i" ] %.075.i = zext i1 %.075.shrunk.i to i8 store i8 %.075.i, ptr %4, align 1, !alias.scope !351, !noalias !392 br label %360 @@ -1969,7 +1965,7 @@ _ZN7uu_uniq29should_extract_obs_skip_chars17h24d3295a10ed3060E.exit.thread87: ; br i1 %.not.i.i, label %_ZN7uu_uniq24handle_preceding_options17h40bafb116252b841E.exit.thread99.sink.split, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h747a3907e075213dE.exit122.i" "_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h747a3907e075213dE.exit122.i.sink.split": ; preds = %360, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit.i51", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit113.i", %371, %.thread102 - %.sink = phi i8 [ 0, %.thread102 ], [ 1, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit113.i" ], [ 1, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit.i51" ], [ 0, %360 ], [ %373, %371 ] + %.sink = phi i8 [ 0, %.thread102 ], [ 1, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit113.i" ], [ 1, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha3fb72a66dd3ffebE.exit.i51" ], [ 0, %359 ], [ %372, %370 ] store i8 %.sink, ptr %5, align 1, !alias.scope !353, !noalias !401 br label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h747a3907e075213dE.exit122.i" @@ -2017,7 +2013,7 @@ _ZN7uu_uniq24handle_preceding_options17h40bafb116252b841E.exit.thread99: ; preds .thread71: ; preds = %216, %109, %.thread78, %.thread %.pn69 = phi { ptr, i32 } [ %.pn70, %.thread ], [ %lpad.thr_comm, %.thread78 ], [ %.pn41.i, %109 ], [ %.pn.i, %216 ] invoke void @"_ZN4core3ptr47drop_in_place$LT$std..ffi..os_str..OsString$GT$17h94488995ab5acdf4E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1) #18 - to label %386 unwind label %384 + to label %385 unwind label %384 .thread: ; preds = %335, %350, %39 %.pn70 = phi { ptr, i32 } [ %lpad.thr_comm.split-lp, %39 ], [ %336, %335 ], [ %351, %350 ] diff --git a/bench/cpython/optimized/_codecs_iso2022.ll b/bench/cpython/optimized/_codecs_iso2022.ll index 6e21aa22d6d..2b266836002 100644 --- a/bench/cpython/optimized/_codecs_iso2022.ll +++ b/bench/cpython/optimized/_codecs_iso2022.ll @@ -1251,11 +1251,11 @@ switch.lookup: ; preds = %switch.hole_check, 60: ; preds = %40 %61 = add nsw i64 %.05487.i, 1 - switch i64 %.05487.i, label %iso2022processesc.exit [ - i64 -1, label %.thread159 - i64 2, label %62 - i64 3, label %73 - i64 5, label %81 + switch i64 %61, label %.thread159 [ + i64 0, label %.thread159 + i64 3, label %62 + i64 4, label %73 + i64 6, label %81 ] 62: ; preds = %60 @@ -1362,10 +1362,6 @@ iso2022processesc.exit.thread150: ; preds = %97, %105 store ptr %109, ptr %2, align 8, !tbaa !39 br label %307 -iso2022processesc.exit: ; preds = %60 - %.not123 = icmp eq i64 %61, 0 - br i1 %.not123, label %307, label %.thread159 - 110: ; preds = %switch.hole_check, %36 %111 = load ptr, ptr %8, align 8, !tbaa !47 %112 = load i32, ptr %111, align 8, !tbaa !64 @@ -1740,14 +1736,17 @@ PyUnicode_WRITE.exit: ; preds = %278, %281, %284 %306 = sub nsw i64 %.0142167, %304 br label %307 -307: ; preds = %iso2022processesc.exit, %193, %202, %211, %225, %301, %183, %iso2022processesc.exit.thread150, %iso2022processg2.exit, %30, %25 - %.1143 = phi i64 [ %28, %30 ], [ %28, %25 ], [ %228, %225 ], [ %306, %301 ], [ %179, %iso2022processg2.exit ], [ %188, %183 ], [ %197, %193 ], [ %206, %202 ], [ %214, %211 ], [ %107, %iso2022processesc.exit.thread150 ], [ %.0142167, %iso2022processesc.exit ] - %.1104 = phi ptr [ %.0103168, %30 ], [ %.0103168, %25 ], [ %.0103168, %225 ], [ %.3106, %301 ], [ %.0103168, %iso2022processg2.exit ], [ %.0103168, %183 ], [ %.0103168, %193 ], [ %.0103168, %202 ], [ %.0103168, %211 ], [ %.0103168, %iso2022processesc.exit.thread150 ], [ %.0103168, %iso2022processesc.exit ] +307: ; preds = %193, %202, %211, %225, %301, %183, %iso2022processesc.exit.thread150, %iso2022processg2.exit, %30, %25 + %.1143 = phi i64 [ %28, %30 ], [ %28, %25 ], [ %228, %225 ], [ %306, %301 ], [ %179, %iso2022processg2.exit ], [ %188, %183 ], [ %197, %193 ], [ %206, %202 ], [ %214, %211 ], [ %107, %iso2022processesc.exit.thread150 ] + %.1104 = phi ptr [ %.0103168, %30 ], [ %.0103168, %25 ], [ %.0103168, %225 ], [ %.3106, %301 ], [ %.0103168, %iso2022processg2.exit ], [ %.0103168, %183 ], [ %.0103168, %193 ], [ %.0103168, %202 ], [ %.0103168, %211 ], [ %.0103168, %iso2022processesc.exit.thread150 ] %308 = icmp sgt i64 %.1143, 0 br i1 %308, label %15, label %.thread159 -.thread159: ; preds = %307, %22, %34, %iso2022processesc.exit, %115, %180, %207, %217, %222, %.loopexit, %254, %259, %105, %60, %68, %73, %74, %93, %89, %85, %81, %122, %118, %133, %143, %156, %161, %164, %167, %160, %170, %173, %117, %272, %switch.lookup, %57, %5, %249 - %.5 = phi i64 [ %251, %249 ], [ 0, %5 ], [ 1, %57 ], [ -2, %switch.lookup ], [ 0, %307 ], [ -4, %22 ], [ -2, %34 ], [ %61, %iso2022processesc.exit ], [ -2, %115 ], [ -4, %180 ], [ -4, %207 ], [ 1, %217 ], [ -4, %222 ], [ -2, %.loopexit ], [ -4, %254 ], [ -4, %259 ], [ %61, %105 ], [ 1, %60 ], [ 3, %68 ], [ 4, %73 ], [ 4, %74 ], [ 6, %93 ], [ 6, %89 ], [ 6, %85 ], [ 6, %81 ], [ -4, %122 ], [ 3, %118 ], [ -4, %133 ], [ -4, %143 ], [ -4, %156 ], [ -4, %161 ], [ -4, %164 ], [ -4, %167 ], [ 3, %160 ], [ 3, %170 ], [ -4, %173 ], [ -3, %117 ], [ -4, %272 ] +.thread159: ; preds = %60 + br label %.thread159 + +.thread159: ; preds = %307, %22, %34, %115, %180, %207, %217, %222, %.loopexit, %254, %259, %105, %68, %73, %74, %93, %89, %85, %81, %122, %118, %133, %143, %156, %161, %164, %167, %160, %170, %173, %117, %272, %switch.lookup, %57, %60, %.thread159.loopexit254, %5, %249 + %.5 = phi i64 [ %251, %249 ], [ 0, %5 ], [ %61, %60 ], [ 1, %57 ], [ -2, %switch.lookup ], [ 0, %307 ], [ -4, %22 ], [ -2, %34 ], [ -2, %115 ], [ -4, %180 ], [ -4, %207 ], [ 1, %217 ], [ -4, %222 ], [ -2, %.loopexit ], [ -4, %254 ], [ -4, %259 ], [ %61, %105 ], [ 3, %68 ], [ 4, %73 ], [ 4, %74 ], [ 6, %93 ], [ 6, %89 ], [ 6, %85 ], [ 6, %81 ], [ -4, %122 ], [ 3, %118 ], [ -4, %133 ], [ -4, %143 ], [ -4, %156 ], [ -4, %161 ], [ -4, %164 ], [ -4, %167 ], [ 3, %160 ], [ 3, %170 ], [ -4, %173 ], [ -3, %117 ], [ -4, %272 ], [ 1, %.thread159.loopexit254 ] ret i64 %.5 } diff --git a/bench/csmith/optimized/CGOptions.ll b/bench/csmith/optimized/CGOptions.ll index bde76734f82..7d299db46cf 100644 --- a/bench/csmith/optimized/CGOptions.ll +++ b/bench/csmith/optimized/CGOptions.ll @@ -3449,9 +3449,9 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i: ; ._crit_edge.i.i.i: ; preds = %.noexc25, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i %83 = phi ptr [ %81, %.noexc25 ], [ %35, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i ] - switch i64 %74, label %86 [ - i64 16, label %84 - i64 15, label %87 + switch i64 %79, label %86 [ + i64 1, label %84 + i64 0, label %87 ] 84: ; preds = %._crit_edge.i.i.i @@ -3626,9 +3626,9 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i41: ._crit_edge.i.i.i43: ; preds = %.noexc46, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i41 %134 = phi ptr [ %132, %.noexc46 ], [ %39, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i41 ] - switch i64 %125, label %137 [ - i64 16, label %135 - i64 15, label %138 + switch i64 %130, label %137 [ + i64 1, label %135 + i64 0, label %138 ] 135: ; preds = %._crit_edge.i.i.i43 diff --git a/bench/curl/optimized/cookie.ll b/bench/curl/optimized/cookie.ll index 02c26b4412c..9495f1b8c97 100644 --- a/bench/curl/optimized/cookie.ll +++ b/bench/curl/optimized/cookie.ll @@ -1380,9 +1380,9 @@ sanitize_cookie_path.exit.i96: ; preds = %.thread.i.i99, %402 br i1 %.not.i87, label %457, label %359, !llvm.loop !109 457: ; preds = %455 - switch i32 %.2.i, label %parse_cookie_header.exit.thread [ - i32 5, label %458 - i32 6, label %parse_cookie_header.exit + switch i32 %456, label %parse_cookie_header.exit.thread [ + i32 6, label %458 + i32 7, label %parse_cookie_header.exit ] 458: ; preds = %457 diff --git a/bench/darktable/optimized/ciff.ll b/bench/darktable/optimized/ciff.ll index 8644d17e9c4..e51bdb745d0 100644 --- a/bench/darktable/optimized/ciff.ll +++ b/bench/darktable/optimized/ciff.ll @@ -510,9 +510,9 @@ define void @_ZN6LibRaw10parse_ciffEiii(ptr noundef nonnull align 8 dereferencea %261 = zext i16 %260 to i32 %262 = add nsw i32 %261, -2 %263 = sdiv i32 %262, 8 - %264 = add i16 %260, -10 - %.not274 = icmp ult i16 %264, 8 - br i1 %.not274, label %.preheader381.preheader, label %.preheader383 + %264 = add nsw i32 %263, -1 + %.not274 = icmp eq i32 %264, 0 + br i1 %.not274, label %.loopexit384, label %.preheader383 .preheader383: ; preds = %259, %.preheader383 %.2399 = phi i32 [ %271, %.preheader383 ], [ 0, %259 ] @@ -527,19 +527,16 @@ define void @_ZN6LibRaw10parse_ciffEiii(ptr noundef nonnull align 8 dereferencea %exitcond440.not = icmp eq i32 %271, 4 br i1 %exitcond440.not, label %.loopexit384, label %.preheader383, !llvm.loop !99 -.loopexit384: ; preds = %.preheader383 +.loopexit384: ; preds = %.preheader383, %259 %272 = icmp ugt i16 %260, 65 - br i1 %272, label %273, label %.preheader381.preheader - -.preheader381.preheader: ; preds = %259, %.loopexit384 - br label %.preheader381 + br i1 %272, label %273, label %.preheader381 273: ; preds = %.loopexit384 tail call void @_ZN6LibRaw15Canon_WBpresetsEii(ptr noundef nonnull align 8 dereferenceable(767680) %0, i32 noundef 0, i32 noundef 0) br label %.loopexit382 -.preheader381: ; preds = %.preheader381.preheader, %.preheader381 - %indvars.iv441 = phi i64 [ %indvars.iv.next442, %.preheader381 ], [ 0, %.preheader381.preheader ] +.preheader381: ; preds = %.loopexit384, %.preheader381 + %indvars.iv441 = phi i64 [ %indvars.iv.next442, %.preheader381 ], [ 0, %.loopexit384 ] %274 = getelementptr inbounds nuw [4 x i32], ptr %54, i64 0, i64 %indvars.iv441 %275 = load i32, ptr %274, align 4, !tbaa !98 %276 = sitofp i32 %275 to float @@ -550,9 +547,9 @@ define void @_ZN6LibRaw10parse_ciffEiii(ptr noundef nonnull align 8 dereferencea br i1 %exitcond444.not, label %.loopexit382, label %.preheader381, !llvm.loop !100 .loopexit382: ; preds = %.preheader381, %273 - switch i32 %263, label %.loopexit372.preheader [ - i32 8, label %278 - i32 10, label %.preheader380 + switch i32 %264, label %.loopexit372.preheader [ + i32 7, label %278 + i32 9, label %.preheader380 ] 278: ; preds = %.loopexit382 diff --git a/bench/darktable/optimized/collect.ll b/bench/darktable/optimized/collect.ll index c479e10b170..2e74b0bb5d2 100644 --- a/bench/darktable/optimized/collect.ll +++ b/bench/darktable/optimized/collect.ll @@ -1099,15 +1099,15 @@ switch.lookup: ; preds = %1 call void @llvm.lifetime.start.p0(ptr nonnull %6) store ptr null, ptr %6, align 8, !tbaa !98 switch i32 %24, label %90 [ - i32 2, label %67 - i32 18, label %69 - i32 16, label %73 - i32 10, label %82 - i32 11, label %88 - i32 12, label %84 - i32 13, label %85 - i32 14, label %86 - i32 15, label %87 + i32 1, label %67 + i32 17, label %69 + i32 15, label %73 + i32 9, label %82 + i32 10, label %88 + i32 11, label %84 + i32 12, label %85 + i32 13, label %86 + i32 14, label %87 ] 67: ; preds = %52 @@ -1762,13 +1762,13 @@ split_path.exit.thread: ; preds = %242, %239, %315, %s %322 = load ptr, ptr %319, align 8, !tbaa !73 call void @gtk_tree_view_collapse_all(ptr noundef %322) #16 switch i32 %24, label %.critedge308 [ - i32 15, label %323 i32 14, label %323 i32 13, label %323 i32 12, label %323 i32 11, label %323 i32 10, label %323 - i32 18, label %346 + i32 9, label %323 + i32 17, label %346 ] 323: ; preds = %318, %318, %318, %318, %318, %318 @@ -2055,26 +2055,26 @@ define internal fastcc void @_list_view(ptr noundef %0) unnamed_addr #1 { call void @llvm.lifetime.start.p0(ptr nonnull %5) call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) %5, i8 0, i64 1024, i1 false) switch i32 %16, label %134 [ - i32 4, label %55 - i32 31, label %58 - i32 30, label %65 - i32 17, label %70 - i32 19, label %73 - i32 5, label %81 - i32 37, label %84 - i32 38, label %87 - i32 39, label %90 - i32 40, label %93 - i32 8, label %96 - i32 9, label %99 - i32 6, label %102 - i32 7, label %105 - i32 42, label %108 - i32 3, label %111 - i32 41, label %114 - i32 32, label %117 - i32 33, label %120 - i32 36, label %131 + i32 3, label %55 + i32 30, label %58 + i32 29, label %65 + i32 16, label %70 + i32 18, label %73 + i32 4, label %81 + i32 36, label %84 + i32 37, label %87 + i32 38, label %90 + i32 39, label %93 + i32 7, label %96 + i32 8, label %99 + i32 5, label %102 + i32 6, label %105 + i32 41, label %108 + i32 2, label %111 + i32 40, label %114 + i32 31, label %117 + i32 32, label %120 + i32 35, label %131 ] 55: ; preds = %39 @@ -2313,8 +2313,8 @@ define internal fastcc void @_list_view(ptr noundef %0) unnamed_addr #1 { %177 = call ptr @g_type_check_instance_cast(ptr noundef %36, i64 noundef %47) #16 call void @gtk_list_store_append(ptr noundef %177, ptr noundef nonnull %4) #16 switch i32 %16, label %195 [ - i32 1, label %178 - i32 36, label %183 + i32 0, label %178 + i32 35, label %183 ] 178: ; preds = %176 @@ -2438,12 +2438,12 @@ define internal fastcc void @_list_view(ptr noundef %0) unnamed_addr #1 { %222 = call ptr @g_type_check_instance_cast(ptr noundef %221, i64 noundef %45) #16 %223 = call ptr @gtk_tree_view_get_selection(ptr noundef %222) #16 switch i32 %16, label %224 [ - i32 36, label %225 - i32 17, label %225 - i32 9, label %225 + i32 35, label %225 + i32 16, label %225 i32 8, label %225 i32 7, label %225 i32 6, label %225 + i32 5, label %225 ] 224: ; preds = %217 @@ -2477,16 +2477,16 @@ define internal fastcc void @_list_view(ptr noundef %0) unnamed_addr #1 { 236: ; preds = %233 switch i32 %16, label %237 [ - i32 36, label %239 - i32 33, label %239 + i32 35, label %239 i32 32, label %239 - i32 9, label %239 + i32 31, label %239 i32 8, label %239 - i32 6, label %239 + i32 7, label %239 i32 5, label %239 i32 4, label %239 i32 3, label %239 - i32 1, label %239 + i32 2, label %239 + i32 0, label %239 ] 237: ; preds = %236 @@ -2524,12 +2524,12 @@ define internal fastcc void @_list_view(ptr noundef %0) unnamed_addr #1 { %254 = call ptr @gtk_tree_view_get_selection(ptr noundef %253) #16 call void @gtk_tree_selection_unselect_all(ptr noundef %254) #16 switch i32 %16, label %292 [ - i32 36, label %255 - i32 17, label %255 - i32 9, label %255 + i32 35, label %255 + i32 16, label %255 i32 8, label %255 i32 7, label %255 i32 6, label %255 + i32 5, label %255 ] 255: ; preds = %251, %251, %251, %251, %251, %251 @@ -4605,14 +4605,15 @@ define internal fastcc void @_set_tooltip(ptr noundef readonly captures(none) %0 %4 = tail call ptr @dt_bauhaus_combobox_get_data(ptr noundef %3) #16 %5 = ptrtoint ptr %4 to i64 %6 = trunc i64 %5 to i32 - switch i32 %6, label %13 [ - i32 17, label %7 - i32 9, label %7 + %7 = add i32 %6, -1 + switch i32 %7, label %14 [ + i32 16, label %7 i32 8, label %7 i32 7, label %7 i32 6, label %7 - i32 36, label %10 - i32 10, label %15 + i32 5, label %8 + i32 35, label %11 + i32 9, label %16 ] 7: ; preds = %1, %1, %1, %1, %1 @@ -4638,11 +4639,11 @@ define internal fastcc void @_set_tooltip(ptr noundef readonly captures(none) %0 18: ; preds = %13 %19 = getelementptr inbounds nuw i8, ptr %0, i64 24 %20 = load ptr, ptr %19, align 8, !tbaa !80 - switch i32 %6, label %24 [ - i32 3, label %25 - i32 18, label %21 - i32 16, label %22 - i32 2, label %23 + switch i32 %7, label %25 [ + i32 2, label %25 + i32 17, label %21 + i32 15, label %22 + i32 1, label %23 ] 21: ; preds = %18 @@ -4658,8 +4659,8 @@ define internal fastcc void @_set_tooltip(ptr noundef readonly captures(none) %0 br label %25 25: ; preds = %18, %10, %22, %24, %23, %21, %15, %7 - %.str.64.sink = phi ptr [ @.str.64, %10 ], [ @.str.68, %22 ], [ @.str.70, %24 ], [ @.str.69, %23 ], [ @.str.67, %21 ], [ @.str.65, %15 ], [ @.str.63, %7 ], [ @.str.66, %18 ] - %.sink = phi ptr [ %12, %10 ], [ %20, %22 ], [ %20, %24 ], [ %20, %23 ], [ %20, %21 ], [ %17, %15 ], [ %9, %7 ], [ %20, %18 ] + %.str.64.sink = phi ptr [ @.str.64, %11 ], [ @.str.68, %23 ], [ @.str.70, %25 ], [ @.str.69, %24 ], [ @.str.67, %22 ], [ @.str.65, %16 ], [ @.str.63, %8 ], [ @.str.66, %19 ] + %.sink = phi ptr [ %12, %11 ], [ %20, %23 ], [ %21, %25 ], [ %20, %24 ], [ %20, %22 ], [ %17, %16 ], [ %9, %8 ], [ %20, %19 ] %26 = tail call ptr @dcgettext(ptr noundef null, ptr noundef nonnull %.str.64.sink, i32 noundef 5) #16 tail call void @gtk_widget_set_tooltip_text(ptr noundef %.sink, ptr noundef %26) #16 %27 = getelementptr inbounds nuw i8, ptr %0, i64 24 @@ -6203,8 +6204,8 @@ define internal fastcc void @row_activated_with_event(ptr noundef %0, ptr nounde 43: ; preds = %36 switch i32 %31, label %_combo_set_active_collection.exit [ - i32 1, label %44 - i32 2, label %49 + i32 0, label %44 + i32 1, label %49 ] 44: ; preds = %43 @@ -6239,15 +6240,15 @@ define internal fastcc void @row_activated_with_event(ptr noundef %0, ptr nounde switch.early.test: ; preds = %57 switch i32 %31, label %_combo_set_active_collection.exit [ - i32 36, label %59 - i32 17, label %59 - i32 9, label %59 + i32 35, label %59 + i32 16, label %59 i32 8, label %59 i32 7, label %59 i32 6, label %59 - i32 18, label %72 - i32 16, label %72 - i32 2, label %72 + i32 5, label %59 + i32 17, label %72 + i32 15, label %72 + i32 1, label %72 ] 59: ; preds = %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %57 @@ -6277,9 +6278,9 @@ switch.early.test: ; preds = %57 71: ; preds = %54 switch i32 %31, label %_combo_set_active_collection.exit [ - i32 18, label %72 - i32 16, label %72 - i32 2, label %72 + i32 17, label %72 + i32 15, label %72 + i32 1, label %72 ] 72: ; preds = %switch.early.test, %switch.early.test, %switch.early.test, %71, %71, %71 @@ -6380,10 +6381,10 @@ _combo_set_active_collection.exit: ; preds = %52, %49, %47, %44, switch.early.test109: ; preds = %121 switch i32 %31, label %138 [ - i32 31, label %125 i32 30, label %125 - i32 19, label %125 - i32 16, label %125 + i32 29, label %125 + i32 18, label %125 + i32 15, label %125 ] 125: ; preds = %switch.early.test109, %switch.early.test109, %switch.early.test109, %switch.early.test109, %121, %_combo_set_active_collection.exit diff --git a/bench/eastl/optimized/BenchmarkString.ll b/bench/eastl/optimized/BenchmarkString.ll index a8153fbe390..74e62dc363b 100644 --- a/bench/eastl/optimized/BenchmarkString.ll +++ b/bench/eastl/optimized/BenchmarkString.ll @@ -2588,28 +2588,27 @@ if.else40.i2626: ; preds = %if.else33.i2618 %sub.ptr.lhs.cast42.i2627 = ptrtoint ptr %add.ptr30.i to i64 %sub.ptr.sub44.i2629 = sub i64 %sub.ptr.lhs.cast42.i2627, %sub.ptr.lhs.cast.i2621 %sub.ptr.div45.i2630 = ashr exact i64 %sub.ptr.sub44.i2629, 1 - switch i64 %sub.ptr.div45.i2630, label %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_moveEPDsPKDsm.exit93.i2631 [ + switch i64 %sub.ptr.div45.i2630, label %if.end.i.i91.i2639 [ i64 1, label %if.then.i90.i2638 - i64 0, label %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_moveEPDsPKDsm.exit93.i2631.thread + i64 0, label %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_moveEPDsPKDsm.exit93.i2631 ] if.then.i90.i2638: ; preds = %if.else40.i2626 %222 = load i16, ptr %pReplace1_16, align 16 store i16 %222, ptr %add.ptr.i2596, align 2 - br label %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_moveEPDsPKDsm.exit93.i2631.thread + br label %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_moveEPDsPKDsm.exit93.i2631 -_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_moveEPDsPKDsm.exit93.i2631.thread: ; preds = %if.then.i90.i2638, %if.else40.i2626 - %add.ptr46.i26323895 = getelementptr inbounds i8, ptr %add.ptr.i2596, i64 %sub.ptr.sub44.i2629 - %add.ptr47.i26333896 = getelementptr inbounds nuw i8, ptr %add.ptr.i2596, i64 16 - br label %if.end.i.i95.i2636 - -_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_moveEPDsPKDsm.exit93.i2631: ; preds = %if.else40.i2626 +_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_moveEPDsPKDsm.exit93.i2631.thread: ; preds = %if.else40.i2626 call void @llvm.memmove.p0.p0.i64(ptr align 2 %add.ptr.i2596, ptr nonnull align 16 %pReplace1_16, i64 %sub.ptr.sub44.i2629, i1 false) + br label %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_moveEPDsPKDsm.exit93.i2631 + +_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_moveEPDsPKDsm.exit93.i2631: ; preds = %if.end.i.i91.i2639, %if.then.i90.i2638, %if.else40.i2626 %add.ptr46.i2632 = getelementptr inbounds i8, ptr %add.ptr.i2596, i64 %sub.ptr.sub44.i2629 %add.ptr47.i2633 = getelementptr inbounds nuw i8, ptr %add.ptr.i2596, i64 16 - switch i64 %sub.ptr.div45.i2630, label %if.end.i.i95.i2636 [ - i64 7, label %if.then.i94.i2635 - i64 8, label %call3.i.i.noexc + %sub48.i2634 = sub nsw i64 8, %sub.ptr.div45.i2630 + switch i64 %sub48.i2634, label %if.end.i.i95.i2636 [ + i64 1, label %if.then.i94.i2635 + i64 0, label %call3.i.i.noexc ] if.then.i94.i2635: ; preds = %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_moveEPDsPKDsm.exit93.i2631 @@ -2617,11 +2616,9 @@ if.then.i94.i2635: ; preds = %_ZNSt7__cxx1112basi store i16 %223, ptr %add.ptr46.i2632, align 2 br label %call3.i.i.noexc -if.end.i.i95.i2636: ; preds = %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_moveEPDsPKDsm.exit93.i2631.thread, %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_moveEPDsPKDsm.exit93.i2631 - %add.ptr47.i26333898 = phi ptr [ %add.ptr47.i26333896, %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_moveEPDsPKDsm.exit93.i2631.thread ], [ %add.ptr47.i2633, %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_moveEPDsPKDsm.exit93.i2631 ] - %add.ptr46.i26323897 = phi ptr [ %add.ptr46.i26323895, %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_moveEPDsPKDsm.exit93.i2631.thread ], [ %add.ptr46.i2632, %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_moveEPDsPKDsm.exit93.i2631 ] - %mul.i.i96.i2637 = sub i64 16, %sub.ptr.sub44.i2629 - call void @llvm.memcpy.p0.p0.i64(ptr align 2 %add.ptr46.i26323897, ptr nonnull align 2 %add.ptr47.i26333898, i64 %mul.i.i96.i2637, i1 false) +if.end.i.i95.i2636: ; preds = %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_moveEPDsPKDsm.exit93.i2631 + %mul.i.i96.i2637 = shl i64 %sub48.i2634, 1 + call void @llvm.memcpy.p0.p0.i64(ptr align 2 %add.ptr46.i2632, ptr nonnull align 2 %add.ptr47.i2633, i64 %mul.i.i96.i2637, i1 false) br label %call3.i.i.noexc _ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE8capacityEv.exit.i2895: ; preds = %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE8capacityEv.exit.i2592, %if.else53.i2653.thread @@ -3233,9 +3230,10 @@ land.lhs.true.i.i.i: ; preds = %if.end.i.i call5.i.i.i.i.i.noexc: ; preds = %land.lhs.true.i.i.i %286 = load i64, ptr %_M_string_length.i.i.i.i, align 8 - switch i64 %286, label %if.end.i.i.i.i [ - i64 0, label %if.then.i4.i.i - i64 -1, label %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_copyEPDsPKDsm.exit.i.i + %add.i.i652 = add i64 %286, 1 + switch i64 %add.i.i652, label %if.end.i.i.i.i [ + i64 1, label %if.then.i4.i.i + i64 0, label %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_copyEPDsPKDsm.exit.i.i ] if.then.i4.i.i: ; preds = %call5.i.i.i.i.i.noexc @@ -3244,8 +3242,7 @@ if.then.i4.i.i: ; preds = %call5.i.i.i.i.i.noe br label %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_copyEPDsPKDsm.exit.i.i if.end.i.i.i.i: ; preds = %call5.i.i.i.i.i.noexc - %add.i.i652 = shl i64 %286, 1 - %mul.i.i.i11.i = add i64 %add.i.i652, 2 + %add.i.i652 = shl i64 %add.i.i652, 1 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 2 %call5.i.i.i.i.i659, ptr align 2 %283, i64 %mul.i.i.i11.i, i1 false) br label %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_copyEPDsPKDsm.exit.i.i diff --git a/bench/ffmpeg/optimized/dca_lbr.ll b/bench/ffmpeg/optimized/dca_lbr.ll index a795361f38c..889bcc23007 100644 --- a/bench/ffmpeg/optimized/dca_lbr.ll +++ b/bench/ffmpeg/optimized/dca_lbr.ll @@ -4882,13 +4882,16 @@ parse_vlc.exit114: ; preds = %get_vlc2.exit.i109, 214: ; preds = %211, %207 %.1 = phi i32 [ %210, %207 ], [ %213, %211 ] - switch i32 %.0.i101, label %.lr.ph [ - i32 1, label %216 - i32 3, label %229 - i32 0, label %.loopexit + switch i32 %132, label %.preheader [ + i32 2, label %216 + i32 4, label %229 ] .lr.ph: ; preds = %214 + %.not89141 = icmp eq i32 %.0.i101, 0 + br i1 %.not89141, label %.loopexit, label %.lr.ph + +.lr.ph: ; preds = %.preheader %215 = sub nsw i32 %.1, %.081145 %wide.trip.count = zext nneg i32 %132 to i64 %invariant.gep = getelementptr i8, ptr %1, i64 %79 @@ -4969,7 +4972,7 @@ parse_vlc.exit114: ; preds = %get_vlc2.exit.i109, %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %.loopexit, label %258, !llvm.loop !189 -.loopexit: ; preds = %258, %214, %234, %246, %219, %224 +.loopexit: ; preds = %258, %.lr.ph, %234, %246, %219, %224 %264 = add nsw i32 %132, %.082143 %265 = icmp slt i32 %264, 7 br i1 %265, label %parse_vlc.exit, label %266, !llvm.loop !190 diff --git a/bench/ffmpeg/optimized/evc.ll b/bench/ffmpeg/optimized/evc.ll index 503cb84f30c..f412fc5b883 100644 --- a/bench/ffmpeg/optimized/evc.ll +++ b/bench/ffmpeg/optimized/evc.ll @@ -92,15 +92,16 @@ evc_get_nalu_type.exit: ; preds = %34 br i1 %39, label %evcc_write.exit, label %40 40: ; preds = %evc_get_nalu_type.exit - %switch.tableidx = add nsw i8 %36, -25 - %41 = icmp ult i8 %switch.tableidx, 5 - %switch.shifted = lshr i8 23, %switch.tableidx + %switch.tableidx = add nsw i32 %37, -25 + %41 = icmp ult i32 %switch.tableidx, 5 + %switch.maskindex = trunc i32 %switch.tableidx to i8 + %switch.shifted = lshr i8 23, %switch.maskindex %switch.lobit = trunc i8 %switch.shifted to i1 %or.cond = select i1 %41, i1 %switch.lobit, i1 false br i1 %or.cond, label %switch.lookup, label %.critedge switch.lookup: ; preds = %40 - %42 = zext nneg i8 %switch.tableidx to i64 + %42 = zext nneg i32 %switch.tableidx to i64 %switch.gep = getelementptr inbounds nuw [5 x i64], ptr @switch.table.ff_isom_write_evcc, i64 0, i64 %42 %switch.load = load i64, ptr %switch.gep, align 8 %43 = trunc nuw nsw i32 %38 to i8 diff --git a/bench/fish-rs/optimized/2jegnuo3b7uy1oojff5kt8alk.ll b/bench/fish-rs/optimized/2jegnuo3b7uy1oojff5kt8alk.ll index 96200048674..50173d67f2e 100644 --- a/bench/fish-rs/optimized/2jegnuo3b7uy1oojff5kt8alk.ll +++ b/bench/fish-rs/optimized/2jegnuo3b7uy1oojff5kt8alk.ll @@ -26813,8 +26813,8 @@ _ZN4fish12input_common16InputEventQueuer15paste_push_char17h13f2b7ae864f6143E.ex br i1 %.not15.i, label %.loopexit61.i, label %524, !prof !2624 .sink.split.i: ; preds = %.noexc27.i, %170, %.thread496.i - %.sroa.9.127.ph.i = phi i64 [ %.sroa.9.0.copyload10.i, %.thread496.i ], [ %.sroa.9.0.copyload12.i, %170 ], [ 0, %.noexc27.i ] - %.ph.i = phi i64 [ %.sroa.05.0.copyload6.i, %.thread496.i ], [ %.pr.i, %170 ], [ -9223372036854775806, %.noexc27.i ] + %.sroa.9.127.ph.i = phi i64 [ %.sroa.9.0.copyload10.i, %.thread499.i ], [ %.sroa.9.0.copyload12.i, %170 ], [ 0, %.noexc27.i ] + %.ph.i = phi i64 [ %.sroa.05.0.copyload6.i, %.thread499.i ], [ %.pr.i, %170 ], [ -9223372036854775806, %.noexc27.i ] call void @llvm.lifetime.end.p0(ptr nonnull %35) call void @llvm.lifetime.end.p0(ptr nonnull %36) call void @llvm.lifetime.end.p0(ptr nonnull %48) @@ -26869,9 +26869,9 @@ _ZN4fish12input_common16InputEventQueuer15paste_push_char17h13f2b7ae864f6143E.ex br i1 %2, label %543, label %540 537: ; preds = %531 - switch i64 %525, label %"_ZN4core3ptr50drop_in_place$LT$fish..input_common..CharEvent$GT$17h93255d0e75c3776eE.exit.i" [ - i64 -9223372036854775807, label %539 - i64 -9223372036854775808, label %538 + switch i64 %527, label %"_ZN4core3ptr50drop_in_place$LT$fish..input_common..CharEvent$GT$17h93255d0e75c3776eE.exit.i" [ + i64 2, label %539 + i64 1, label %538 ] 538: ; preds = %537 diff --git a/bench/fish-rs/optimized/djai6kkt8m7zi9lpt05bwt9kh.ll b/bench/fish-rs/optimized/djai6kkt8m7zi9lpt05bwt9kh.ll index a63649fb618..6676b375a7c 100644 --- a/bench/fish-rs/optimized/djai6kkt8m7zi9lpt05bwt9kh.ll +++ b/bench/fish-rs/optimized/djai6kkt8m7zi9lpt05bwt9kh.ll @@ -34391,9 +34391,9 @@ _ZN4fish15parse_execution16ExecutionContext14eval_statement17h6de23f5d4cb587d2E. to label %.body.i unwind label %138 .body.i: ; preds = %299, %295, %258, %224, %216, %209, %163, %.loopexit.split-lp.i, %.loopexit.i, %150, %147, %144, %140, %135, %78, %75 - %.pn37.pn.i = phi { ptr, i32 } [ %.pn37.i, %216 ], [ %210, %209 ], [ %.pn.i, %299 ], [ %296, %295 ], [ %225, %224 ], [ %.pn36.i.i, %150 ], [ %76, %75 ], [ %76, %78 ], [ %lpad.thr_comm.split-lp.i.i, %140 ], [ %lpad.thr_comm.split-lp.i.i, %135 ], [ %145, %147 ], [ %145, %144 ], [ %164, %163 ], [ %259, %258 ], [ %lpad.loopexit.i, %.loopexit.i ], [ %lpad.loopexit.split-lp.i, %.loopexit.split-lp.i ] + %.pn37.pn.i = phi { ptr, i32 } [ %.pn37.i, %216 ], [ %210, %209 ], [ %.pn.i, %300 ], [ %297, %296 ], [ %225, %224 ], [ %.pn36.i.i, %150 ], [ %76, %75 ], [ %76, %78 ], [ %lpad.thr_comm.split-lp.i.i, %140 ], [ %lpad.thr_comm.split-lp.i.i, %135 ], [ %145, %147 ], [ %145, %144 ], [ %164, %163 ], [ %259, %259 ], [ %lpad.loopexit.i, %.loopexit.i ], [ %lpad.loopexit.split-lp.i, %.loopexit.split-lp.i ] invoke void @"_ZN4core3ptr55drop_in_place$LT$widestring..utfstring..Utf32String$GT$17ha7bfb33de0f2dd54E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %34) #27 - to label %300 unwind label %213 + to label %301 unwind label %213 .loopexit.i: ; preds = %.lr.ph.i.i %lpad.loopexit.i = landingpad { ptr, i32 } @@ -34647,20 +34647,21 @@ _ZN4fish15parse_execution16ExecutionContext14eval_statement17h6de23f5d4cb587d2E. 227: ; preds = %226 call void @llvm.lifetime.end.p0(ptr nonnull %26), !noalias !2544 - %228 = icmp ne i8 %223, 5 - call void @llvm.assume(i1 %228) - switch i8 %223, label %235 [ - i8 8, label %229 - i8 7, label %245 + %228 = add nsw i8 %223, -2 + %229 = icmp ne i8 %228, 3 + call void @llvm.assume(i1 %229) + switch i8 %228, label %236 [ + i8 6, label %230 + i8 5, label %246 ] 229: ; preds = %227 %230 = invoke noundef nonnull align 8 ptr @_ZN4fish17operation_context16OperationContext6parser17h64f85a28a082b19cE(ptr noalias noundef nonnull readonly align 8 dereferenceable(64) %1) - to label %231 unwind label %.loopexit.split-lp.i + to label %232 unwind label %.loopexit.split-lp.i 231: ; preds = %229 %232 = invoke noundef zeroext i1 @_ZN4fish6parser6Parser29function_stack_is_overflowing17h211c283bed5609b4E(ptr noundef nonnull align 8 %230) - to label %233 unwind label %.loopexit.split-lp.i + to label %234 unwind label %.loopexit.split-lp.i 233: ; preds = %231 br i1 %232, label %234, label %235 @@ -34668,7 +34669,7 @@ _ZN4fish15parse_execution16ExecutionContext14eval_statement17h6de23f5d4cb587d2E. 234: ; preds = %249, %233 call void @llvm.lifetime.start.p0(ptr nonnull %19), !noalias !2544 invoke void @_ZN4fish3ast4Node16try_source_range17h44d43c83ab8bffc5E(ptr noalias noundef nonnull sret([12 x i8]) align 4 captures(none) dereferenceable(12) %19, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %68) - to label %250 unwind label %.loopexit.split-lp.i + to label %251 unwind label %.loopexit.split-lp.i 235: ; preds = %249, %233, %227 %236 = invoke { ptr, ptr } @"_ZN84_$LT$$RF$fish..ast..JobList$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17h782f391dd94830edE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %68) @@ -34678,11 +34679,11 @@ _ZN4fish15parse_execution16ExecutionContext14eval_statement17h6de23f5d4cb587d2E. %237 = extractvalue { ptr, ptr } %236, 0 %238 = extractvalue { ptr, ptr } %236, 1 %239 = icmp ne ptr %238, null - call void @llvm.assume(i1 %239) - %240 = icmp ne ptr %237, null call void @llvm.assume(i1 %240) - %241 = icmp eq ptr %237, %238 - br i1 %241, label %_ZN4fish15parse_execution16ExecutionContext13eval_job_list17hbc0158d669db39f4E.exit, label %.lr.ph.i.i + %241 = icmp ne ptr %237, null + call void @llvm.assume(i1 %241) + %242 = icmp eq ptr %238, %239 + br i1 %242, label %_ZN4fish15parse_execution16ExecutionContext13eval_job_list17hbc0158d669db39f4E.exit, label %.lr.ph.i.i .lr.ph.i.i: ; preds = %.noexc51.i, %.noexc52.i %.sroa.02.03.i.i = phi ptr [ %243, %.noexc52.i ], [ %237, %.noexc51.i ] @@ -34696,11 +34697,11 @@ _ZN4fish15parse_execution16ExecutionContext14eval_statement17h6de23f5d4cb587d2E. 245: ; preds = %227 %246 = invoke noundef nonnull align 8 ptr @_ZN4fish17operation_context16OperationContext6parser17h64f85a28a082b19cE(ptr noalias noundef nonnull readonly align 8 dereferenceable(64) %1) - to label %247 unwind label %.loopexit.split-lp.i + to label %248 unwind label %.loopexit.split-lp.i 247: ; preds = %245 %248 = invoke noundef zeroext i1 @_ZN4fish6parser6Parser22is_eval_depth_exceeded17ha9add7bd2028d87bE(ptr noundef nonnull align 8 %246) - to label %249 unwind label %.loopexit.split-lp.i + to label %250 unwind label %.loopexit.split-lp.i 249: ; preds = %247 br i1 %248, label %234, label %235 @@ -34724,7 +34725,7 @@ _ZN4fish15parse_execution16ExecutionContext14eval_statement17h6de23f5d4cb587d2E. %.sroa.5.0..sroa_idx.i54.i = getelementptr inbounds nuw i8, ptr %7, i64 16 store i64 0, ptr %.sroa.5.0..sroa_idx.i54.i, align 8, !noalias !2580 %257 = invoke noundef i8 @"_ZN80_$LT$fish..parse_constants..ParseErrorCode$u20$as$u20$core..default..Default$GT$7default17h479ab436c53b6579E"() - to label %262 unwind label %258, !noalias !2577 + to label %263 unwind label %258, !noalias !2577 258: ; preds = %250 %259 = landingpad { ptr, i32 } @@ -34746,7 +34747,7 @@ _ZN4fish15parse_execution16ExecutionContext14eval_statement17h6de23f5d4cb587d2E. call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %264, i8 0, i64 16, i1 false), !alias.scope !2577, !noalias !2544 call void @llvm.lifetime.end.p0(ptr nonnull %7), !noalias !2580 %265 = invoke noundef i64 @_ZN4fish15parse_constants11SourceRange5start17h44e58a82a11f4040E(i32 noundef %.sroa.07.0.i, i32 noundef %.sroa.49.0.i) - to label %268 unwind label %266 + to label %269 unwind label %266 266: ; preds = %291, %268, %262 %267 = landingpad { ptr, i32 } @@ -34756,7 +34757,7 @@ _ZN4fish15parse_execution16ExecutionContext14eval_statement17h6de23f5d4cb587d2E. 268: ; preds = %262 store i64 %265, ptr %264, align 8, !noalias !2544 %269 = invoke noundef i64 @_ZN4fish15parse_constants11SourceRange6length17h5cd82ccdda9e2c1aE(i32 noundef %.sroa.07.0.i, i32 noundef %.sroa.49.0.i) - to label %270 unwind label %266 + to label %271 unwind label %266 270: ; preds = %268 %271 = getelementptr inbounds nuw i8, ptr %25, i64 32 @@ -34771,19 +34772,19 @@ _ZN4fish15parse_execution16ExecutionContext14eval_statement17h6de23f5d4cb587d2E. store i64 0, ptr %.sroa.5.0..sroa_idx25.i, align 8, !noalias !2544 call void @llvm.lifetime.start.p0(ptr nonnull %22), !noalias !2544 %272 = invoke { ptr, i64 } @_ZN4fish5wutil7gettext19wgettext_static_str17h75ad7378645c7566E(ptr noalias noundef nonnull readonly align 4 @anon.1d0b41a8d45d477c3029ec78f9b8b434.586, i64 noundef 80) - to label %275 unwind label %273 + to label %276 unwind label %273 273: ; preds = %281, %275, %270 %274 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr55drop_in_place$LT$widestring..utfstring..Utf32String$GT$17ha7bfb33de0f2dd54E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %23) #27 - to label %299 unwind label %213 + to label %300 unwind label %213 275: ; preds = %270 %276 = extractvalue { ptr, i64 } %272, 0 %277 = extractvalue { ptr, i64 } %272, 1 invoke void @_ZN11fish_printf11printf_impl14sprintf_locale17h7fe8b6d690351b57E(ptr noalias noundef nonnull sret([16 x i8]) align 8 captures(none) dereferenceable(16) %22, ptr noalias noundef nonnull align 8 dereferenceable(24) %23, ptr noalias noundef nonnull readonly align 4 %276, i64 noundef %277, ptr noalias noundef readonly align 4 dereferenceable(16) @anon.1d0b41a8d45d477c3029ec78f9b8b434.125, ptr noalias noundef nonnull align 8 inttoptr (i64 8 to ptr), i64 noundef 0) - to label %278 unwind label %273 + to label %279 unwind label %273 278: ; preds = %275 call void @llvm.experimental.noalias.scope.decl(metadata !2581) @@ -34807,7 +34808,7 @@ _ZN4fish15parse_execution16ExecutionContext14eval_statement17h6de23f5d4cb587d2E. call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %24, ptr noundef nonnull align 8 dereferenceable(24) %23, i64 24, i1 false), !noalias !2544 call void @llvm.lifetime.end.p0(ptr nonnull %23), !noalias !2544 invoke void @"_ZN4core3ptr55drop_in_place$LT$widestring..utfstring..Utf32String$GT$17ha7bfb33de0f2dd54E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %25) - to label %287 unwind label %285 + to label %288 unwind label %285 285: ; preds = %284 %286 = landingpad { ptr, i32 } @@ -34836,7 +34837,7 @@ _ZN4fish15parse_execution16ExecutionContext14eval_statement17h6de23f5d4cb587d2E. %294 = getelementptr inbounds nuw i8, ptr %21, i64 16 store i64 1, ptr %294, align 8, !noalias !2544 invoke fastcc void @_ZN4fish15parse_execution16ExecutionContext13report_errors17h49a96acccc23638dE(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %0, ptr noalias noundef nonnull readonly align 8 dereferenceable(64) %1, i32 noundef 1, ptr noalias noundef readonly align 8 dereferenceable(24) %21) - to label %297 unwind label %295 + to label %298 unwind label %295 295: ; preds = %292 %296 = landingpad { ptr, i32 } @@ -34847,14 +34848,14 @@ _ZN4fish15parse_execution16ExecutionContext14eval_statement17h6de23f5d4cb587d2E. 297: ; preds = %292 call void @llvm.lifetime.end.p0(ptr nonnull %25), !noalias !2544 invoke void @"_ZN4core3ptr77drop_in_place$LT$alloc..vec..Vec$LT$fish..parse_constants..ParseError$GT$$GT$17h9c5290192c123773E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %21) - to label %298 unwind label %.loopexit.split-lp.i + to label %299 unwind label %.loopexit.split-lp.i 298: ; preds = %297 call void @llvm.lifetime.end.p0(ptr nonnull %21), !noalias !2544 br label %_ZN4fish15parse_execution16ExecutionContext13eval_job_list17hbc0158d669db39f4E.exit 299: ; preds = %285, %273, %266 - %.pn.i = phi { ptr, i32 } [ %267, %266 ], [ %286, %285 ], [ %274, %273 ] + %.pn.i = phi { ptr, i32 } [ %267, %267 ], [ %286, %286 ], [ %274, %274 ] invoke void @"_ZN4core3ptr55drop_in_place$LT$widestring..utfstring..Utf32String$GT$17ha7bfb33de0f2dd54E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %25) #27 to label %.body.i unwind label %213 @@ -34862,7 +34863,7 @@ _ZN4fish15parse_execution16ExecutionContext14eval_statement17h6de23f5d4cb587d2E. resume { ptr, i32 } %.pn37.pn.i _ZN4fish15parse_execution16ExecutionContext13eval_job_list17hbc0158d669db39f4E.exit: ; preds = %.noexc52.i, %212, %.noexc51.i, %298 - %.sroa.0.1.i = phi i8 [ 0, %.noexc51.i ], [ 3, %298 ], [ 3, %212 ], [ %242, %.noexc52.i ] + %.sroa.0.1.i = phi i8 [ 0, %.noexc51.i ], [ 3, %299 ], [ 3, %212 ], [ %242, %.noexc52.i ] call void @"_ZN4core3ptr55drop_in_place$LT$widestring..utfstring..Utf32String$GT$17ha7bfb33de0f2dd54E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %34) call void @llvm.lifetime.end.p0(ptr nonnull %34), !noalias !2544 br label %_ZN4fish15parse_execution16ExecutionContext14eval_statement17h6de23f5d4cb587d2E.exit diff --git a/bench/foundations-rs/optimized/arf09deisv3jfcmugkb162mqc.ll b/bench/foundations-rs/optimized/arf09deisv3jfcmugkb162mqc.ll index b73c0e2ed6f..28889149633 100644 --- a/bench/foundations-rs/optimized/arf09deisv3jfcmugkb162mqc.ll +++ b/bench/foundations-rs/optimized/arf09deisv3jfcmugkb162mqc.ll @@ -16268,11 +16268,12 @@ _ZN5hyper5proto2h14conn5State4idle17hc2ce422357fad8a8E.exit: ; preds = %31, %"_Z 10: ; preds = %1 %11 = load i64, ptr %8, align 8, !range !478, !noundef !4 - %12 = icmp ne i64 %11, 4 - tail call void @llvm.assume(i1 %12) - switch i64 %11, label %_ZN5hyper5proto2h14conn5State4idle17hc2ce422357fad8a8E.exit [ - i64 5, label %18 - i64 6, label %22 + %12 = add nsw i64 %11, -3 + %13 = icmp ne i64 %12, 1 + tail call void @llvm.assume(i1 %13) + switch i64 %12, label %_ZN5hyper5proto2h14conn5State4idle17hc2ce422357fad8a8E.exit [ + i64 2, label %19 + i64 3, label %23 ] 13: ; preds = %1 @@ -16329,7 +16330,7 @@ _ZN5hyper5proto2h14conn5State4idle17hc2ce422357fad8a8E.exit: ; preds = %31, %"_Z 36: ; preds = %33 %37 = load atomic i8, ptr getelementptr inbounds nuw (i8, ptr @_ZN5hyper5proto2h14conn5State14try_keep_alive10__CALLSITE17hc0c3fee7d3134820E, i64 16) monotonic, align 8 - switch i8 %37, label %39 [ + switch i8 %37, label %40 [ i8 0, label %38 i8 1, label %42 i8 2, label %42 @@ -16345,7 +16346,7 @@ _ZN5hyper5proto2h14conn5State4idle17hc2ce422357fad8a8E.exit: ; preds = %31, %"_Z br i1 %41, label %38, label %42 42: ; preds = %36, %36, %39 - %.sroa.01.0 = phi i8 [ %40, %39 ], [ %37, %36 ], [ %37, %36 ] + %.sroa.01.0 = phi i8 [ %40, %40 ], [ %37, %37 ], [ %37, %37 ] %43 = load ptr, ptr @_ZN5hyper5proto2h14conn5State14try_keep_alive10__CALLSITE17hc0c3fee7d3134820E, align 8, !nonnull !4, !align !24, !noundef !4 %44 = tail call noundef zeroext i1 @_ZN7tracing15__macro_support12__is_enabled17h84e04cb52732a18dE(ptr noalias noundef nonnull readonly align 8 dereferenceable(120) %43, i8 noundef %.sroa.01.0) br i1 %44, label %45, label %38 @@ -16426,11 +16427,12 @@ _ZN5hyper5proto2h14conn5State4idle17h371f4b0cbbaa0d12E.exit: ; preds = %31, %"_Z 10: ; preds = %1 %11 = load i64, ptr %8, align 8, !range !478, !noundef !4 - %12 = icmp ne i64 %11, 4 - tail call void @llvm.assume(i1 %12) - switch i64 %11, label %_ZN5hyper5proto2h14conn5State4idle17h371f4b0cbbaa0d12E.exit [ - i64 5, label %18 - i64 6, label %22 + %12 = add nsw i64 %11, -3 + %13 = icmp ne i64 %12, 1 + tail call void @llvm.assume(i1 %13) + switch i64 %12, label %_ZN5hyper5proto2h14conn5State4idle17h371f4b0cbbaa0d12E.exit [ + i64 2, label %19 + i64 3, label %23 ] 13: ; preds = %1 @@ -16487,7 +16489,7 @@ _ZN5hyper5proto2h14conn5State4idle17h371f4b0cbbaa0d12E.exit: ; preds = %31, %"_Z 36: ; preds = %33 %37 = load atomic i8, ptr getelementptr inbounds nuw (i8, ptr @_ZN5hyper5proto2h14conn5State14try_keep_alive10__CALLSITE17hc0c3fee7d3134820E, i64 16) monotonic, align 8 - switch i8 %37, label %39 [ + switch i8 %37, label %40 [ i8 0, label %38 i8 1, label %42 i8 2, label %42 @@ -16503,7 +16505,7 @@ _ZN5hyper5proto2h14conn5State4idle17h371f4b0cbbaa0d12E.exit: ; preds = %31, %"_Z br i1 %41, label %38, label %42 42: ; preds = %36, %36, %39 - %.sroa.01.0 = phi i8 [ %40, %39 ], [ %37, %36 ], [ %37, %36 ] + %.sroa.01.0 = phi i8 [ %40, %40 ], [ %37, %37 ], [ %37, %37 ] %43 = load ptr, ptr @_ZN5hyper5proto2h14conn5State14try_keep_alive10__CALLSITE17hc0c3fee7d3134820E, align 8, !nonnull !4, !align !24, !noundef !4 %44 = tail call noundef zeroext i1 @_ZN7tracing15__macro_support12__is_enabled17h84e04cb52732a18dE(ptr noalias noundef nonnull readonly align 8 dereferenceable(120) %43, i8 noundef %.sroa.01.0) br i1 %44, label %45, label %38 diff --git a/bench/grpc/optimized/parser.ll b/bench/grpc/optimized/parser.ll index 20605572430..a1580e1339b 100644 --- a/bench/grpc/optimized/parser.ll +++ b/bench/grpc/optimized/parser.ll @@ -8899,8 +8899,7 @@ _ZN4absl12lts_2024072210StartsWithESt17basic_string_viewIcSt11char_traitsIcEES4_ br i1 %3, label %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit, label %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit _ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit: ; preds = %_ZN4absl12lts_2024072210StartsWithESt17basic_string_viewIcSt11char_traitsIcEES4_.exit - %4 = add i64 %0, -16 - %5 = getelementptr inbounds nuw i8, ptr %1, i64 16 + %4 = getelementptr inbounds nuw i8, ptr %1, i64 16 switch i64 %0, label %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit [ i64 19, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i i64 21, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i39 @@ -8912,93 +8911,93 @@ _ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit: ; preds = %_ZN4ab ] _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i: ; preds = %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit - %bcmp.i38 = tail call i32 @bcmp(ptr nonnull %5, ptr nonnull @.str.4, i64 %4) + %bcmp.i38 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(3) %4, ptr noundef nonnull dereferenceable(3) @.str.4, i64 3) %6 = icmp eq i32 %bcmp.i38, 0 %spec.select = zext i1 %6 to i32 br label %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i39: ; preds = %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit - %bcmp.i40 = tail call i32 @bcmp(ptr nonnull %5, ptr nonnull @.str.5, i64 %4) + %bcmp.i40 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(5) %4, ptr noundef nonnull dereferenceable(5) @.str.5, i64 5) %7 = icmp eq i32 %bcmp.i40, 0 %spec.select164 = select i1 %7, i32 5, i32 0 br label %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i43: ; preds = %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit - %bcmp.i44 = tail call i32 @bcmp(ptr nonnull %5, ptr nonnull @.str.6, i64 %4) + %bcmp.i44 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(6) %4, ptr noundef nonnull dereferenceable(6) @.str.6, i64 6) %8 = icmp eq i32 %bcmp.i44, 0 %spec.select165 = select i1 %8, i32 3, i32 0 br label %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i47: ; preds = %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit - %bcmp.i48 = tail call i32 @bcmp(ptr nonnull %5, ptr nonnull @.str.7, i64 %4) + %bcmp.i48 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(8) %4, ptr noundef nonnull dereferenceable(8) @.str.7, i64 8) %9 = icmp eq i32 %bcmp.i48, 0 %spec.select166 = select i1 %9, i32 8, i32 0 br label %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i51: ; preds = %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit - %bcmp.i52 = tail call i32 @bcmp(ptr nonnull %5, ptr nonnull @.str.8, i64 %4) + %bcmp.i52 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(9) %4, ptr noundef nonnull dereferenceable(9) @.str.8, i64 9) %10 = icmp eq i32 %bcmp.i52, 0 br i1 %10, label %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i55 _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i55: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i51 - %bcmp.i56 = tail call i32 @bcmp(ptr nonnull %5, ptr nonnull @.str.9, i64 %4) + %bcmp.i56 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(9) %4, ptr noundef nonnull dereferenceable(9) @.str.9, i64 9) %11 = icmp eq i32 %bcmp.i56, 0 br i1 %11, label %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i59 _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i59: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i55 - %bcmp.i60 = tail call i32 @bcmp(ptr nonnull %5, ptr nonnull @.str.10, i64 %4) + %bcmp.i60 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(9) %4, ptr noundef nonnull dereferenceable(9) @.str.10, i64 9) %12 = icmp eq i32 %bcmp.i60, 0 br i1 %12, label %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i63 _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i63: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i59 - %bcmp.i64 = tail call i32 @bcmp(ptr nonnull %5, ptr nonnull @.str.11, i64 %4) + %bcmp.i64 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(9) %4, ptr noundef nonnull dereferenceable(9) @.str.11, i64 9) %13 = icmp eq i32 %bcmp.i64, 0 br i1 %13, label %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i67 _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i67: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i63 - %bcmp.i68 = tail call i32 @bcmp(ptr nonnull %5, ptr nonnull @.str.12, i64 %4) + %bcmp.i68 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(9) %4, ptr noundef nonnull dereferenceable(9) @.str.12, i64 9) %14 = icmp eq i32 %bcmp.i68, 0 %spec.select167 = select i1 %14, i32 9, i32 0 br label %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i71: ; preds = %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit - %bcmp.i72 = tail call i32 @bcmp(ptr nonnull %5, ptr nonnull @.str.13, i64 %4) + %bcmp.i72 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(10) %4, ptr noundef nonnull dereferenceable(10) @.str.13, i64 10) %15 = icmp eq i32 %bcmp.i72, 0 br i1 %15, label %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i75 _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i75: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i71 - %bcmp.i76 = tail call i32 @bcmp(ptr nonnull %5, ptr nonnull @.str.14, i64 %4) + %bcmp.i76 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(10) %4, ptr noundef nonnull dereferenceable(10) @.str.14, i64 10) %16 = icmp eq i32 %bcmp.i76, 0 br i1 %16, label %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i79 _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i79: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i75 - %bcmp.i80 = tail call i32 @bcmp(ptr nonnull %5, ptr nonnull @.str.15, i64 %4) + %bcmp.i80 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(10) %4, ptr noundef nonnull dereferenceable(10) @.str.15, i64 10) %17 = icmp eq i32 %bcmp.i80, 0 br i1 %17, label %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i83 _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i83: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i79 - %bcmp.i84 = tail call i32 @bcmp(ptr nonnull %5, ptr nonnull @.str.16, i64 %4) + %bcmp.i84 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(10) %4, ptr noundef nonnull dereferenceable(10) @.str.16, i64 10) %18 = icmp eq i32 %bcmp.i84, 0 %spec.select168 = select i1 %18, i32 2, i32 0 br label %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i87: ; preds = %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit - %bcmp.i88 = tail call i32 @bcmp(ptr nonnull %5, ptr nonnull @.str.17, i64 %4) + %bcmp.i88 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(11) %4, ptr noundef nonnull dereferenceable(11) @.str.17, i64 11) %19 = icmp eq i32 %bcmp.i88, 0 br i1 %19, label %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i91 _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i91: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i87 - %bcmp.i92 = tail call i32 @bcmp(ptr nonnull %5, ptr nonnull @.str.18, i64 %4) + %bcmp.i92 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(11) %4, ptr noundef nonnull dereferenceable(11) @.str.18, i64 11) %20 = icmp eq i32 %bcmp.i92, 0 br i1 %20, label %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i95 _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i95: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i91 - %bcmp.i96 = tail call i32 @bcmp(ptr nonnull %5, ptr nonnull @.str.19, i64 %4) + %bcmp.i96 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(11) %4, ptr noundef nonnull dereferenceable(11) @.str.19, i64 11) %21 = icmp eq i32 %bcmp.i96, 0 br i1 %21, label %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i99 _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i99: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i95 - %bcmp.i100 = tail call i32 @bcmp(ptr nonnull %5, ptr nonnull @.str.20, i64 %4) + %bcmp.i100 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(11) %4, ptr noundef nonnull dereferenceable(11) @.str.20, i64 11) %22 = icmp eq i32 %bcmp.i100, 0 %spec.select169 = select i1 %22, i32 2, i32 0 br label %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit diff --git a/bench/harfbuzz/optimized/hb-subset-input.ll b/bench/harfbuzz/optimized/hb-subset-input.ll index 59701f9f4bd..0938dc32484 100644 --- a/bench/harfbuzz/optimized/hb-subset-input.ll +++ b/bench/harfbuzz/optimized/hb-subset-input.ll @@ -1132,10 +1132,10 @@ define dso_local range(i32 0, 2) i32 @hb_subset_axis_range_from_string(ptr nound br label %58 .thread50: ; preds = %32, %.thread55 - %indvars6772 = trunc i64 %indvars.iv to i32 + %indvars6772 = trunc i64 %indvars.iv.next to i32 switch i32 %indvars6772, label %58 [ - i32 1, label %49 - i32 2, label %.thread50.thread + i32 2, label %49 + i32 3, label %.thread50.thread ] 49: ; preds = %.thread50 diff --git a/bench/hyperscan/optimized/ng_depth.ll b/bench/hyperscan/optimized/ng_depth.ll index eaa0ea3073e..27e9dbed77d 100644 --- a/bench/hyperscan/optimized/ng_depth.ll +++ b/bench/hyperscan/optimized/ng_depth.ll @@ -1271,17 +1271,17 @@ _ZN3ue2L17depthFromDistanceEi.exit.i: ; preds = %26, %25, %_ZNSt6vec %.sroa.0.0.i.i = phi i32 [ 2147483647, %25 ], [ -2147483648, %_ZNSt6vectorIN3ue214NFAVertexDepthESaIS1_EE2atEm.exit ], [ %24, %26 ] %30 = getelementptr inbounds nuw i32, ptr %.val20, i64 %14 %31 = load i32, ptr %30, align 4 - switch i32 %31, label %33 [ - i32 -2147483647, label %_ZN3ue2L9getDepthsEjRKSt6vectorIiSaIiEES4_.exit - i32 -2147483646, label %32 + %32 = sub nsw i32 0, %31 + switch i32 %32, label %34 [ + i32 2147483647, label %_ZN3ue2L9getDepthsEjRKSt6vectorIiSaIiEES4_.exit + i32 2147483646, label %33 ] 32: ; preds = %_ZN3ue2L17depthFromDistanceEi.exit.i br label %_ZN3ue2L9getDepthsEjRKSt6vectorIiSaIiEES4_.exit 33: ; preds = %_ZN3ue2L17depthFromDistanceEi.exit.i - %34 = sub nsw i32 0, %31 - %35 = icmp ugt i32 %34, 2147483646 + %35 = icmp ugt i32 %32, 2147483646 br i1 %35, label %36, label %_ZN3ue2L9getDepthsEjRKSt6vectorIiSaIiEES4_.exit 36: ; preds = %33 @@ -1290,7 +1290,7 @@ _ZN3ue2L17depthFromDistanceEi.exit.i: ; preds = %26, %25, %_ZNSt6vec unreachable _ZN3ue2L9getDepthsEjRKSt6vectorIiSaIiEES4_.exit: ; preds = %_ZN3ue2L17depthFromDistanceEi.exit.i, %32, %33 - %.sroa.0.0.i3.i = phi i32 [ 2147483647, %32 ], [ -2147483648, %_ZN3ue2L17depthFromDistanceEi.exit.i ], [ %34, %33 ] + %.sroa.0.0.i3.i = phi i32 [ 2147483647, %33 ], [ -2147483648, %_ZN3ue2L17depthFromDistanceEi.exit.i ], [ %32, %34 ] %.sroa.2.0.insert.ext.i = zext i32 %.sroa.0.0.i3.i to i64 %.sroa.2.0.insert.shift.i = shl nuw i64 %.sroa.2.0.insert.ext.i, 32 %.sroa.04.0.insert.ext.i = zext i32 %.sroa.0.0.i.i to i64 @@ -2211,17 +2211,17 @@ _ZN3ue2L17depthFromDistanceEi.exit.i: ; preds = %27, %26, %_ZNSt6vec %.sroa.0.0.i.i = phi i32 [ 2147483647, %26 ], [ -2147483648, %_ZNSt6vectorIN3ue217NFAVertexRevDepthESaIS1_EE2atEm.exit ], [ %25, %27 ] %31 = getelementptr inbounds nuw i32, ptr %.val20, i64 %15 %32 = load i32, ptr %31, align 4 - switch i32 %32, label %34 [ - i32 -2147483647, label %_ZN3ue2L9getDepthsEjRKSt6vectorIiSaIiEES4_.exit - i32 -2147483646, label %33 + %33 = sub nsw i32 0, %32 + switch i32 %33, label %35 [ + i32 2147483647, label %_ZN3ue2L9getDepthsEjRKSt6vectorIiSaIiEES4_.exit + i32 2147483646, label %34 ] 33: ; preds = %_ZN3ue2L17depthFromDistanceEi.exit.i br label %_ZN3ue2L9getDepthsEjRKSt6vectorIiSaIiEES4_.exit 34: ; preds = %_ZN3ue2L17depthFromDistanceEi.exit.i - %35 = sub nsw i32 0, %32 - %36 = icmp ugt i32 %35, 2147483646 + %36 = icmp ugt i32 %33, 2147483646 br i1 %36, label %37, label %_ZN3ue2L9getDepthsEjRKSt6vectorIiSaIiEES4_.exit 37: ; preds = %34 @@ -2230,7 +2230,7 @@ _ZN3ue2L17depthFromDistanceEi.exit.i: ; preds = %27, %26, %_ZNSt6vec unreachable _ZN3ue2L9getDepthsEjRKSt6vectorIiSaIiEES4_.exit: ; preds = %_ZN3ue2L17depthFromDistanceEi.exit.i, %33, %34 - %.sroa.0.0.i3.i = phi i32 [ 2147483647, %33 ], [ -2147483648, %_ZN3ue2L17depthFromDistanceEi.exit.i ], [ %35, %34 ] + %.sroa.0.0.i3.i = phi i32 [ 2147483647, %34 ], [ -2147483648, %_ZN3ue2L17depthFromDistanceEi.exit.i ], [ %33, %35 ] %.sroa.2.0.insert.ext.i = zext i32 %.sroa.0.0.i3.i to i64 %.sroa.2.0.insert.shift.i = shl nuw i64 %.sroa.2.0.insert.ext.i, 32 %.sroa.04.0.insert.ext.i = zext i32 %.sroa.0.0.i.i to i64 @@ -2557,17 +2557,17 @@ _ZN3ue2L17depthFromDistanceEi.exit.i: ; preds = %26, %25, %_ZNSt6vec %.sroa.0.0.i.i = phi i32 [ 2147483647, %25 ], [ -2147483648, %_ZNSt6vectorIN3ue218NFAVertexBidiDepthESaIS1_EE2atEm.exit ], [ %24, %26 ] %30 = getelementptr inbounds nuw i32, ptr %.val20, i64 %14 %31 = load i32, ptr %30, align 4 - switch i32 %31, label %33 [ - i32 -2147483647, label %_ZN3ue2L9getDepthsEjRKSt6vectorIiSaIiEES4_.exit - i32 -2147483646, label %32 + %32 = sub nsw i32 0, %31 + switch i32 %32, label %34 [ + i32 2147483647, label %_ZN3ue2L9getDepthsEjRKSt6vectorIiSaIiEES4_.exit + i32 2147483646, label %33 ] 32: ; preds = %_ZN3ue2L17depthFromDistanceEi.exit.i br label %_ZN3ue2L9getDepthsEjRKSt6vectorIiSaIiEES4_.exit 33: ; preds = %_ZN3ue2L17depthFromDistanceEi.exit.i - %34 = sub nsw i32 0, %31 - %35 = icmp ugt i32 %34, 2147483646 + %35 = icmp ugt i32 %32, 2147483646 br i1 %35, label %36, label %_ZN3ue2L9getDepthsEjRKSt6vectorIiSaIiEES4_.exit 36: ; preds = %33 @@ -2576,7 +2576,7 @@ _ZN3ue2L17depthFromDistanceEi.exit.i: ; preds = %26, %25, %_ZNSt6vec unreachable _ZN3ue2L9getDepthsEjRKSt6vectorIiSaIiEES4_.exit: ; preds = %_ZN3ue2L17depthFromDistanceEi.exit.i, %32, %33 - %.sroa.0.0.i3.i = phi i32 [ 2147483647, %32 ], [ -2147483648, %_ZN3ue2L17depthFromDistanceEi.exit.i ], [ %34, %33 ] + %.sroa.0.0.i3.i = phi i32 [ 2147483647, %33 ], [ -2147483648, %_ZN3ue2L17depthFromDistanceEi.exit.i ], [ %32, %34 ] %.sroa.2.0.insert.ext.i = zext i32 %.sroa.0.0.i3.i to i64 %.sroa.2.0.insert.shift.i = shl nuw i64 %.sroa.2.0.insert.ext.i, 32 %.sroa.04.0.insert.ext.i = zext i32 %.sroa.0.0.i.i to i64 @@ -2649,17 +2649,17 @@ _ZN3ue2L17depthFromDistanceEi.exit.i: ; preds = %27, %26, %_ZNSt6vec %.sroa.0.0.i.i = phi i32 [ 2147483647, %26 ], [ -2147483648, %_ZNSt6vectorIN3ue218NFAVertexBidiDepthESaIS1_EE2atEm.exit ], [ %25, %27 ] %31 = getelementptr inbounds nuw i32, ptr %.val20, i64 %15 %32 = load i32, ptr %31, align 4 - switch i32 %32, label %34 [ - i32 -2147483647, label %_ZN3ue2L9getDepthsEjRKSt6vectorIiSaIiEES4_.exit - i32 -2147483646, label %33 + %33 = sub nsw i32 0, %32 + switch i32 %33, label %35 [ + i32 2147483647, label %_ZN3ue2L9getDepthsEjRKSt6vectorIiSaIiEES4_.exit + i32 2147483646, label %34 ] 33: ; preds = %_ZN3ue2L17depthFromDistanceEi.exit.i br label %_ZN3ue2L9getDepthsEjRKSt6vectorIiSaIiEES4_.exit 34: ; preds = %_ZN3ue2L17depthFromDistanceEi.exit.i - %35 = sub nsw i32 0, %32 - %36 = icmp ugt i32 %35, 2147483646 + %36 = icmp ugt i32 %33, 2147483646 br i1 %36, label %37, label %_ZN3ue2L9getDepthsEjRKSt6vectorIiSaIiEES4_.exit 37: ; preds = %34 @@ -2668,7 +2668,7 @@ _ZN3ue2L17depthFromDistanceEi.exit.i: ; preds = %27, %26, %_ZNSt6vec unreachable _ZN3ue2L9getDepthsEjRKSt6vectorIiSaIiEES4_.exit: ; preds = %_ZN3ue2L17depthFromDistanceEi.exit.i, %33, %34 - %.sroa.0.0.i3.i = phi i32 [ 2147483647, %33 ], [ -2147483648, %_ZN3ue2L17depthFromDistanceEi.exit.i ], [ %35, %34 ] + %.sroa.0.0.i3.i = phi i32 [ 2147483647, %34 ], [ -2147483648, %_ZN3ue2L17depthFromDistanceEi.exit.i ], [ %33, %35 ] %.sroa.2.0.insert.ext.i = zext i32 %.sroa.0.0.i3.i to i64 %.sroa.2.0.insert.shift.i = shl nuw i64 %.sroa.2.0.insert.ext.i, 32 %.sroa.04.0.insert.ext.i = zext i32 %.sroa.0.0.i.i to i64 @@ -2829,17 +2829,17 @@ _ZN3ue2L17depthFromDistanceEi.exit.i: ; preds = %50, %49, %43 %.sroa.0.0.i.i = phi i32 [ 2147483647, %49 ], [ -2147483648, %43 ], [ %48, %50 ] %52 = getelementptr inbounds nuw i32, ptr %.pre, i64 %46 %53 = load i32, ptr %52, align 4 - switch i32 %53, label %55 [ - i32 -2147483647, label %59 - i32 -2147483646, label %54 + %54 = sub nsw i32 0, %53 + switch i32 %54, label %56 [ + i32 2147483647, label %59 + i32 2147483646, label %55 ] 54: ; preds = %_ZN3ue2L17depthFromDistanceEi.exit.i br label %59 55: ; preds = %_ZN3ue2L17depthFromDistanceEi.exit.i - %56 = sub nsw i32 0, %53 - %57 = icmp ugt i32 %56, 2147483646 + %57 = icmp ugt i32 %54, 2147483646 br i1 %57, label %.invoke, label %59 .invoke: ; preds = %55, %50 @@ -2851,7 +2851,7 @@ _ZN3ue2L17depthFromDistanceEi.exit.i: ; preds = %50, %49, %43 unreachable 59: ; preds = %55, %54, %_ZN3ue2L17depthFromDistanceEi.exit.i - %.sroa.0.0.i3.i = phi i32 [ 2147483647, %54 ], [ -2147483648, %_ZN3ue2L17depthFromDistanceEi.exit.i ], [ %56, %55 ] + %.sroa.0.0.i3.i = phi i32 [ 2147483647, %55 ], [ -2147483648, %_ZN3ue2L17depthFromDistanceEi.exit.i ], [ %54, %56 ] %.not.i.i38 = icmp ult i64 %45, %26 br i1 %.not.i.i38, label %61, label %60 diff --git a/bench/jemalloc/optimized/jemalloc.ll b/bench/jemalloc/optimized/jemalloc.ll index 916f12e394b..566990846b7 100644 --- a/bench/jemalloc/optimized/jemalloc.ll +++ b/bench/jemalloc/optimized/jemalloc.ll @@ -6258,9 +6258,9 @@ mallocx_arena_get.exit.thread: ; preds = %34, %tsd_fetch_impl mallocx_tcache_get.exit: ; preds = %mallocx_arena_get.exit.thread %37 = lshr exact i32 %36, 8 %38 = add nsw i32 %37, -2 - switch i32 %37, label %42 [ - i32 0, label %mallocx_tcache_get.exit.thread - i32 1, label %tcache_get_from_ind.exit + switch i32 %38, label %42 [ + i32 -2, label %mallocx_tcache_get.exit.thread + i32 -1, label %tcache_get_from_ind.exit ] mallocx_tcache_get.exit.thread: ; preds = %mallocx_arena_get.exit.thread, %mallocx_tcache_get.exit @@ -8309,9 +8309,9 @@ mallocx_tcache_get.exit.thread: ; preds = %tsd_fetch_impl.exit mallocx_tcache_get.exit: ; preds = %tsd_fetch_impl.exit %15 = lshr exact i32 %14, 8 %16 = add nsw i32 %15, -2 - switch i32 %15, label %27 [ - i32 0, label %17 - i32 1, label %tcache_get_from_ind.exit + switch i32 %16, label %27 [ + i32 -2, label %17 + i32 -1, label %tcache_get_from_ind.exit ] 17: ; preds = %mallocx_tcache_get.exit @@ -8918,9 +8918,9 @@ mallocx_tcache_get.exit.thread: ; preds = %aligned_usize_get.e mallocx_tcache_get.exit: ; preds = %aligned_usize_get.exit %89 = lshr exact i32 %88, 8 %90 = add nsw i32 %89, -2 - switch i32 %89, label %101 [ - i32 0, label %91 - i32 1, label %tcache_get_from_ind.exit + switch i32 %90, label %101 [ + i32 -2, label %91 + i32 -1, label %tcache_get_from_ind.exit ] 91: ; preds = %mallocx_tcache_get.exit @@ -10059,9 +10059,9 @@ arena_get_from_ind.exit.thread167: ; preds = %arena_get.exit, %ar ], !prof !168 mallocx_tcache_get.exit: ; preds = %157 - switch i32 %125, label %160 [ - i32 0, label %mallocx_tcache_get.exit.thread - i32 1, label %.critedge119 + switch i32 %126, label %160 [ + i32 -2, label %mallocx_tcache_get.exit.thread + i32 -1, label %.critedge119 ] mallocx_tcache_get.exit.thread: ; preds = %157, %mallocx_tcache_get.exit diff --git a/bench/jq/optimized/decNumber.ll b/bench/jq/optimized/decNumber.ll index 20d6dc78d7a..d2b23e57bb5 100644 --- a/bench/jq/optimized/decNumber.ll +++ b/bench/jq/optimized/decNumber.ll @@ -1807,9 +1807,10 @@ define internal fastcc void @decSetCoeff(ptr noundef captures(address) %0, ptr n %.2123.lcssa = phi i32 [ 0, %.preheader151 ], [ %47, %50 ] %.2.lcssa = phi ptr [ %2, %.preheader151 ], [ %52, %50 ] %55 = sub nsw i32 %8, %.2123.lcssa - switch i32 %55, label %79 [ - i32 3, label %56 - i32 1, label %76 + %56 = add nsw i32 %55, -1 + switch i32 %56, label %80 [ + i32 2, label %57 + i32 0, label %77 ] 56: ; preds = %._crit_edge @@ -1832,7 +1833,7 @@ define internal fastcc void @decSetCoeff(ptr noundef captures(address) %0, ptr n br i1 %.not142, label %66, label %.sink.split .sink.split: ; preds = %62, %65 - %.sink = phi i32 [ 3, %65 ], [ %spec.select198, %62 ] + %.sink = phi i32 [ 3, %66 ], [ %spec.select198, %63 ] store i32 %.sink, ptr %4, align 4, !tbaa !16 br label %66 @@ -1847,9 +1848,9 @@ define internal fastcc void @decSetCoeff(ptr noundef captures(address) %0, ptr n br label %71 71: ; preds = %69, %71 - %.2.pn157 = phi ptr [ %.2.lcssa, %69 ], [ %.3, %71 ] - %.1119156 = phi ptr [ %70, %69 ], [ %73, %71 ] - %.3124155 = phi i32 [ %67, %69 ], [ %74, %71 ] + %.2.pn157 = phi ptr [ %.2.lcssa, %70 ], [ %.3, %72 ] + %.1119156 = phi ptr [ %70, %70 ], [ %73, %72 ] + %.3124155 = phi i32 [ %67, %70 ], [ %74, %72 ] %.3 = getelementptr inbounds nuw i8, ptr %.2.pn157, i64 2 %72 = load i16, ptr %.3, align 2, !tbaa !11 store i16 %72, ptr %.1119156, align 2, !tbaa !11 @@ -1864,11 +1865,10 @@ define internal fastcc void @decSetCoeff(ptr noundef captures(address) %0, ptr n br label %92 79: ; preds = %._crit_edge - %80 = add nsw i32 %55, -1 %81 = load i16, ptr %.2.lcssa, align 2, !tbaa !11 %82 = zext i16 %81 to i32 - %83 = lshr i32 %82, %80 - %84 = zext i32 %80 to i64 + %83 = lshr i32 %82, %56 + %84 = zext i32 %56 to i64 %85 = getelementptr inbounds nuw [5 x i32], ptr @multies, i64 0, i64 %84 %86 = load i32, ptr %85, align 4, !tbaa !16 %87 = mul i32 %83, %86 @@ -1881,8 +1881,8 @@ define internal fastcc void @decSetCoeff(ptr noundef captures(address) %0, ptr n br label %92 92: ; preds = %79, %76 - %93 = phi i32 [ %54, %76 ], [ %spec.select, %79 ] - %.0 = phi i32 [ %78, %76 ], [ %88, %79 ] + %93 = phi i32 [ %54, %77 ], [ %spec.select, %80 ] + %.0 = phi i32 [ %78, %77 ], [ %88, %80 ] %94 = mul nuw nsw i32 %.0, 6554 %95 = lshr i32 %94, 16 %.neg = mul nsw i32 %95, -10 diff --git a/bench/jq/optimized/parser.ll b/bench/jq/optimized/parser.ll index 7fc268285d9..38df8388c09 100644 --- a/bench/jq/optimized/parser.ll +++ b/bench/jq/optimized/parser.ll @@ -4287,12 +4287,13 @@ define internal fastcc range(i32 -2, 1) i32 @yysyntax_error(ptr noundef nonnull yy_syntax_error_arguments.exit: ; preds = %.critedge.i.i %37 = add nsw i32 %.2.i.i, 1 - switch i32 %.2.i.i, label %yy_syntax_error_arguments.exit.thread6 [ - i32 -3, label %yy_syntax_error_arguments.exit.thread8 - i32 4, label %41 - i32 3, label %40 + switch i32 %37, label %yy_syntax_error_arguments.exit.thread6 [ + i32 -2, label %yy_syntax_error_arguments.exit.thread8 + i32 5, label %42 i32 1, label %38 i32 2, label %39 + i32 3, label %40 + i32 4, label %41 ] 38: ; preds = %yy_syntax_error_arguments.exit @@ -4307,14 +4308,17 @@ yy_syntax_error_arguments.exit: ; preds = %.critedge.i.i 41: ; preds = %yy_syntax_error_arguments.exit br label %yy_syntax_error_arguments.exit.thread6 -yy_syntax_error_arguments.exit.thread6: ; preds = %30, %.critedge.thread.i.i, %1, %yy_syntax_error_arguments.exit, %41, %40, %39, %38 - %.1.i5 = phi i32 [ 5, %41 ], [ 2, %38 ], [ 3, %39 ], [ 4, %40 ], [ %37, %yy_syntax_error_arguments.exit ], [ 0, %1 ], [ 1, %.critedge.thread.i.i ], [ 1, %30 ] - %.046 = phi ptr [ @.str.70, %41 ], [ @.str.67, %38 ], [ @.str.68, %39 ], [ @.str.69, %40 ], [ @.str.42, %yy_syntax_error_arguments.exit ], [ @.str.42, %1 ], [ @.str.66, %.critedge.thread.i.i ], [ @.str.66, %30 ] - %42 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.046) #9 - %43 = shl nsw i32 %.1.i5, 1 - %44 = sext i32 %43 to i64 - %reass.sub = sub i64 %42, %44 - %45 = add i64 %reass.sub, 1 +yy_syntax_error_arguments.exit.thread6: ; preds = %yy_syntax_error_arguments.exit + br label %yy_syntax_error_arguments.exit.thread6 + +yy_syntax_error_arguments.exit.thread6:; preds = %30, %.critedge.thread.i.i, %1, %yy_syntax_error_arguments.exit, %42, %41, %40, %39, %38 + %.1.i5 = phi i32 [ %37, %42 ], [ %37, %39 ], [ %37, %40 ], [ %37, %41 ], [ %37, %yy_syntax_error_arguments.exit ], [ %37, %38 ], [ 0, %1 ], [ 1, %.critedge.thread.i.i ], [ 1, %30 ] + %.046 = phi ptr [ @.str.70, %42 ], [ @.str.67, %39 ], [ @.str.68, %40 ], [ @.str.69, %41 ], [ @.str.42, %yy_syntax_error_arguments.exit ], [ @.str.66, %38 ], [ @.str.42, %1 ], [ @.str.66, %.critedge.thread.i.i ], [ @.str.66, %30 ] + %43 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.046) #9 + %44 = shl nsw i32 %.1.i5, 1 + %45 = sext i32 %44 to i64 + %reass.sub = sub i64 %43, %45 + %46 = add i64 %reass.sub, 1 %.not5516 = icmp sgt i32 %.1.i5, 0 br i1 %.not5516, label %.lr.ph.preheader, label %.thread @@ -4323,8 +4327,8 @@ yy_syntax_error_arguments.exit.thread6: ; preds = %30, %.critedge.thre br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %61 - %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %61 ] - %.04917 = phi i64 [ %45, %.lr.ph.preheader ], [ %62, %61 ] + %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %62 ] + %.04917 = phi i64 [ %46, %.lr.ph.preheader ], [ %62, %62 ] %46 = getelementptr inbounds nuw [5 x i32], ptr %2, i64 0, i64 %indvars.iv %47 = load i32, ptr %46, align 4, !tbaa !4 %48 = sext i32 %47 to i64 @@ -4335,11 +4339,11 @@ yy_syntax_error_arguments.exit.thread6: ; preds = %30, %.critedge.thre br i1 %52, label %.preheader.split.us.i, label %.thread.i .preheader.split.us.i: ; preds = %.lr.ph, %58 - %.020.us.i = phi i64 [ %59, %58 ], [ 0, %.lr.ph ] - %.019.us.i = phi ptr [ %.1.us.i, %58 ], [ %50, %.lr.ph ] + %.020.us.i = phi i64 [ %59, %59 ], [ 0, %.lr.ph ] + %.019.us.i = phi ptr [ %.1.us.i, %59 ], [ %50, %.lr.ph ] %53 = getelementptr inbounds nuw i8, ptr %.019.us.i, i64 1 %54 = load i8, ptr %53, align 1, !tbaa !11 - switch i8 %54, label %58 [ + switch i8 %54, label %59 [ i8 39, label %.thread.i i8 44, label %.thread.i i8 92, label %55 @@ -4353,7 +4357,7 @@ yy_syntax_error_arguments.exit.thread6: ; preds = %30, %.critedge.thre br i1 %.not25.us.i, label %58, label %.thread.i 58: ; preds = %55, %.preheader.split.us.i - %.1.us.i = phi ptr [ %53, %.preheader.split.us.i ], [ %56, %55 ] + %.1.us.i = phi ptr [ %53, %.preheader.split.us.i ], [ %56, %56 ] %59 = add nuw nsw i64 %.020.us.i, 1 br label %.preheader.split.us.i @@ -4373,7 +4377,7 @@ yytnamerr.exit: ; preds = %.preheader.split.us br i1 %exitcond.not, label %.thread, label %.lr.ph, !llvm.loop !27 .thread: ; preds = %61, %yy_syntax_error_arguments.exit.thread6 - %.049.lcssa = phi i64 [ %45, %yy_syntax_error_arguments.exit.thread6 ], [ %62, %61 ] + %.049.lcssa = phi i64 [ %46, %yy_syntax_error_arguments.exit.thread6 ], [ %62, %62 ] %63 = load i64, ptr %0, align 8, !tbaa !12 %64 = icmp slt i64 %63, %.049.lcssa br i1 %64, label %65, label %.preheader @@ -4417,11 +4421,11 @@ yytnamerr.exit: ; preds = %.preheader.split.us br i1 %82, label %.preheader.split.i, label %.thread.thread.i .preheader.split.i: ; preds = %73, %88 - %.020.i = phi i64 [ %90, %88 ], [ 0, %73 ] - %.019.i = phi ptr [ %.1.i61, %88 ], [ %80, %73 ] + %.020.i = phi i64 [ %90, %89 ], [ 0, %74 ] + %.019.i = phi ptr [ %.1.i61, %89 ], [ %80, %74 ] %83 = getelementptr inbounds nuw i8, ptr %.019.i, i64 1 %84 = load i8, ptr %83, align 1, !tbaa !11 - switch i8 %84, label %88 [ + switch i8 %84, label %89 [ i8 39, label %.thread.thread.i i8 44, label %.thread.thread.i i8 92, label %85 @@ -4435,7 +4439,7 @@ yytnamerr.exit: ; preds = %.preheader.split.us br i1 %.not25.i, label %88, label %.thread.thread.i 88: ; preds = %85, %.preheader.split.i - %.1.i61 = phi ptr [ %83, %.preheader.split.i ], [ %86, %85 ] + %.1.i61 = phi ptr [ %83, %.preheader.split.i ], [ %86, %86 ] %89 = getelementptr inbounds nuw i8, ptr %.039, i64 %.020.i store i8 %84, ptr %89, align 1, !tbaa !11 %90 = add nuw nsw i64 %.020.i, 1 @@ -4454,15 +4458,15 @@ yytnamerr.exit: ; preds = %.preheader.split.us br label %yytnamerr.exit68 yytnamerr.exit68: ; preds = %68, %.preheader, %.thread.thread.i, %.split.us.thread.i - %.sink30 = phi i64 [ %95, %.thread.thread.i ], [ %.020.i, %.split.us.thread.i ], [ 1, %.preheader ], [ 1, %68 ] - %.sink = phi i64 [ 2, %.thread.thread.i ], [ 2, %.split.us.thread.i ], [ 1, %.preheader ], [ 1, %68 ] - %.1 = phi i32 [ %74, %.thread.thread.i ], [ %74, %.split.us.thread.i ], [ %.0, %.preheader ], [ %.0, %68 ] + %.sink30 = phi i64 [ %95, %.thread.thread.i ], [ %.020.i, %.split.us.thread.i ], [ 1, %.preheader ], [ 1, %69 ] + %.sink = phi i64 [ 2, %.thread.thread.i ], [ 2, %.split.us.thread.i ], [ 1, %.preheader ], [ 1, %69 ] + %.1 = phi i32 [ %74, %.thread.thread.i ], [ %74, %.split.us.thread.i ], [ %.0, %.preheader ], [ %.0, %69 ] %96 = getelementptr inbounds i8, ptr %.039, i64 %.sink30 %97 = getelementptr inbounds nuw i8, ptr %.147, i64 %.sink br label %.preheader, !llvm.loop !28 yy_syntax_error_arguments.exit.thread8: ; preds = %yytnamerr.exit, %.preheader, %.critedge.i.i, %65, %yy_syntax_error_arguments.exit - %.041 = phi i32 [ -2, %yy_syntax_error_arguments.exit ], [ -1, %65 ], [ %.2.i.i, %.critedge.i.i ], [ 0, %.preheader ], [ -2, %yytnamerr.exit ] + %.041 = phi i32 [ %37, %yy_syntax_error_arguments.exit ], [ -1, %66 ], [ %.2.i.i, %.critedge.i.i ], [ 0, %.preheader ], [ -2, %yytnamerr.exit ] call void @llvm.lifetime.end.p0(ptr nonnull %2) ret i32 %.041 } diff --git a/bench/libpng/optimized/pngwrite.ll b/bench/libpng/optimized/pngwrite.ll index e120b72a77e..82fdf4d1800 100644 --- a/bench/libpng/optimized/pngwrite.ll +++ b/bench/libpng/optimized/pngwrite.ll @@ -2763,11 +2763,10 @@ define internal range(i32 0, 2) i32 @png_image_write_main(ptr noundef %0) #0 { %.01223.us.i = phi i32 [ 0, %.lr.ph.split.us.i ], [ %.6.us.i, %120 ] %90 = mul nuw nsw i64 %indvars.iv36.i, %89 %91 = getelementptr inbounds nuw i8, ptr %.val161, i64 %90 - switch i32 %66, label %default.unreachable [ - i32 3, label %104 - i32 2, label %110 - i32 1, label %92 - i32 0, label %98 + switch i32 %67, label %98 [ + i32 4, label %104 + i32 3, label %110 + i32 2, label %92 ] 92: ; preds = %.lr.ph.split.us.split.i @@ -2781,9 +2780,6 @@ define internal range(i32 0, 2) i32 @png_image_write_main(ptr noundef %0) #0 { %spec.select130.us.i = select i1 %.not125.us.i, i32 %.01223.us.i, i32 %97 br label %98 -default.unreachable: ; preds = %.lr.ph.split.us.split.i - unreachable - 98: ; preds = %92, %.lr.ph.split.us.split.i %.4.us.i = phi i32 [ %.01223.us.i, %.lr.ph.split.us.split.i ], [ %spec.select130.us.i, %92 ] %99 = getelementptr inbounds nuw i8, ptr %91, i64 %77 diff --git a/bench/linux/optimized/e1000_hw.ll b/bench/linux/optimized/e1000_hw.ll index ecbf64d9463..fcf4b037c83 100644 --- a/bench/linux/optimized/e1000_hw.ll +++ b/bench/linux/optimized/e1000_hw.ll @@ -6478,12 +6478,11 @@ define dso_local void @e1000_get_bus_info(ptr noundef captures(none) initializes %30 = trunc i32 %12 to i16 %31 = getelementptr inbounds nuw i8, ptr %0, i64 68 %32 = lshr i16 %30, 14 - %33 = xor i16 %32, 2 - switch i16 %33, label %default.unreachable [ - i16 2, label %34 - i16 3, label %35 - i16 0, label %36 - i16 1, label %37 + switch i16 %32, label %default.unreachable [ + i16 0, label %33 + i16 1, label %34 + i16 2, label %35 + i16 3, label %36 ] 34: ; preds = %29 @@ -6512,7 +6511,7 @@ default.unreachable: ; preds = %29 br label %42 42: ; preds = %38, %6 - %43 = phi i32 [ %41, %38 ], [ 0, %6 ] + %43 = phi i32 [ %41, %37 ], [ 0, %6 ] %44 = getelementptr inbounds nuw i8, ptr %0, i64 72 store i32 %43, ptr %44, align 8 ret void diff --git a/bench/linux/optimized/initramfs.ll b/bench/linux/optimized/initramfs.ll index 13b14b8eb81..0d0431c261e 100644 --- a/bench/linux/optimized/initramfs.ll +++ b/bench/linux/optimized/initramfs.ll @@ -911,14 +911,13 @@ define internal noundef i32 @do_name() #1 section ".init.text" align 16 { tail call fastcc void @clean_path(ptr noundef %2, i16 noundef zeroext %7) #23 %8 = load i16, ptr @mode, align 2 %9 = lshr i16 %8, 12 - %10 = xor i16 %9, 8 - switch i16 %10, label %68 [ - i16 0, label %11 - i16 12, label %35 - i16 14, label %47 - i16 10, label %47 - i16 9, label %47 - i16 4, label %47 + switch i16 %9, label %67 [ + i16 8, label %10 + i16 4, label %34 + i16 6, label %46 + i16 2, label %47 + i16 1, label %47 + i16 12, label %47 ] 11: ; preds = %6 diff --git a/bench/linux/optimized/intel_ddi.ll b/bench/linux/optimized/intel_ddi.ll index b3134b017ad..de3fa60275f 100644 --- a/bench/linux/optimized/intel_ddi.ll +++ b/bench/linux/optimized/intel_ddi.ll @@ -2681,18 +2681,20 @@ define dso_local void @hsw_ddi_get_config(ptr noundef %0, ptr noundef %1) #0 ali %10 = load ptr, ptr %9, align 8 %11 = tail call i32 %10(ptr noundef nonnull %8, i32 %7, i1 noundef zeroext true) #14 %12 = lshr i32 %11, 29 - %13 = xor i32 %12, 4 - switch i32 %13, label %default.unreachable1 [ - i32 0, label %20 - i32 1, label %20 - i32 7, label %14 - i32 6, label %15 - i32 5, label %16 - i32 4, label %17 - i32 3, label %23 - i32 2, label %18 + switch i32 %12, label %default.unreachable1 [ + i32 4, label %21 + i32 5, label %13 + i32 3, label %14 + i32 2, label %15 + i32 1, label %16 + i32 0, label %17 + i32 7, label %23 + i32 6, label %18 ] +13: ; preds = %2 + br label %20 + 14: ; preds = %2 br label %20 @@ -2718,8 +2720,8 @@ default.unreachable1: ; preds = %2 tail call void asm sideeffect "1060: nop\0A\09.pushsection .discard.instr_end\0A\09.long 1060b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 1060) #14, !srcloc !130 br label %23 -20: ; preds = %2, %2, %17, %16, %15, %14 - %21 = phi i32 [ 5, %17 ], [ 4, %16 ], [ 3, %15 ], [ 2, %14 ], [ %13, %2 ], [ %13, %2 ] +20: ; preds = %2, %17, %16, %15, %14, %13 + %21 = phi i32 [ 5, %17 ], [ 4, %16 ], [ 3, %15 ], [ 2, %14 ], [ 1, %13 ], [ 0, %2 ] %22 = tail call ptr @intel_get_shared_dpll_by_id(ptr noundef %3, i32 noundef %21) #14 br label %23 @@ -9491,14 +9493,13 @@ define internal void @icl_ddi_tc_get_config(ptr noundef %0, ptr noundef %1) #0 a %12 = load ptr, ptr %11, align 8 %13 = tail call i32 %12(ptr noundef nonnull %10, i32 %9, i1 noundef zeroext true) #14 %14 = lshr i32 %13, 28 - %15 = xor i32 %14, 8 - switch i32 %15, label %18 [ - i32 4, label %21 - i32 5, label %21 - i32 6, label %21 - i32 7, label %21 - i32 0, label %16 - i32 8, label %.thread + switch i32 %14, label %17 [ + i32 12, label %21 + i32 13, label %21 + i32 14, label %21 + i32 16, label %21 + i32 8, label %15 + i32 0, label %.thread ] 16: ; preds = %2 @@ -9520,14 +9521,14 @@ define internal void @icl_ddi_tc_get_config(ptr noundef %0, ptr noundef %1) #0 a br label %26 21: ; preds = %2, %2, %2, %2, %16 - %22 = phi i32 [ %17, %16 ], [ 2, %2 ], [ 2, %2 ], [ 2, %2 ], [ 2, %2 ] + %22 = phi i32 [ %17, %15 ], [ 2, %2 ], [ 2, %2 ], [ 2, %2 ], [ 2, %2 ] %23 = tail call ptr @intel_get_shared_dpll_by_id(ptr noundef %3, i32 noundef %22) #14 %24 = load ptr, ptr %0, align 8 %25 = icmp eq ptr %23, null br i1 %25, label %26, label %39, !prof !310 26: ; preds = %.thread, %21 - %27 = phi ptr [ %20, %.thread ], [ %24, %21 ] + %27 = phi ptr [ %20, %.thread ], [ %24, %20 ] tail call void asm sideeffect "1173: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 1173b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 1173) #14, !srcloc !311 %28 = getelementptr inbounds nuw i8, ptr %27, i64 8 %29 = load ptr, ptr %28, align 8 @@ -9543,7 +9544,7 @@ define internal void @icl_ddi_tc_get_config(ptr noundef %0, ptr noundef %1) #0 a br label %37 37: ; preds = %35, %26 - %38 = phi ptr [ %36, %35 ], [ %33, %26 ] + %38 = phi ptr [ %36, %34 ], [ %33, %25 ] tail call void (ptr, ...) @__warn_printk(ptr noundef nonnull @.str, ptr noundef %30, ptr noundef %38, ptr noundef nonnull @.str.14) #14 tail call void asm sideeffect "1174: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 1174b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 1174) #14, !srcloc !312 tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A998:\0A\09.pushsection .discard.reachable\0A\09.long 998b\0A\09.popsection\0A\09", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str.2, i32 4066, i32 2313, i64 12) #14, !srcloc !313 @@ -9564,33 +9565,33 @@ define internal void @icl_ddi_tc_get_config(ptr noundef %0, ptr noundef %1) #0 a store ptr %23, ptr %48, align 8 %49 = getelementptr inbounds nuw i8, ptr %48, i64 8 %50 = tail call zeroext i1 @intel_dpll_get_hw_state(ptr noundef %24, ptr noundef nonnull %23, ptr noundef nonnull %49) #14 - br i1 %50, label %63, label %51, !prof !7 + br i1 %50, label %63, label %50, !prof !7 -51: ; preds = %39 +61: ; preds = %39 tail call void asm sideeffect "1177: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 1177b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 1177) #14, !srcloc !316 - %52 = getelementptr inbounds nuw i8, ptr %24, i64 8 - %53 = load ptr, ptr %52, align 8 - %54 = tail call ptr @dev_driver_string(ptr noundef %53) #14 - %55 = load ptr, ptr %52, align 8 - %56 = getelementptr inbounds nuw i8, ptr %55, i64 80 - %57 = load ptr, ptr %56, align 8 - %58 = icmp eq ptr %57, null - br i1 %58, label %59, label %61 - -59: ; preds = %51 - %60 = load ptr, ptr %55, align 8 - br label %61 - -61: ; preds = %59, %51 - %62 = phi ptr [ %60, %59 ], [ %57, %51 ] - tail call void (ptr, ...) @__warn_printk(ptr noundef nonnull @.str, ptr noundef %54, ptr noundef %62, ptr noundef nonnull @.str.19) #14 + %51 = getelementptr inbounds nuw i8, ptr %24, i64 8 + %52 = load ptr, ptr %51, align 8 + %53 = tail call ptr @dev_driver_string(ptr noundef %52) #14 + %54 = load ptr, ptr %51, align 8 + %55 = getelementptr inbounds nuw i8, ptr %54, i64 80 + %56 = load ptr, ptr %55, align 8 + %57 = icmp eq ptr %56, null + br i1 %57, label %58, label %60 + +58: ; preds = %50 + %59 = load ptr, ptr %54, align 8 + br label %60 + +60: ; preds = %58, %50 + %61 = phi ptr [ %59, %58 ], [ %56, %50 ] + tail call void (ptr, ...) @__warn_printk(ptr noundef nonnull @.str, ptr noundef %53, ptr noundef %61, ptr noundef nonnull @.str.19) #14 tail call void asm sideeffect "1178: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 1178b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 1178) #14, !srcloc !317 tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A998:\0A\09.pushsection .discard.reachable\0A\09.long 998b\0A\09.popsection\0A\09", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str.2, i32 4078, i32 2313, i64 12) #14, !srcloc !318 tail call void asm sideeffect "1179: nop\0A\09.pushsection .discard.instr_end\0A\09.long 1179b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 1179) #14, !srcloc !319 tail call void asm sideeffect "1180: nop\0A\09.pushsection .discard.instr_end\0A\09.long 1180b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 1180) #14, !srcloc !320 br label %63 -63: ; preds = %61, %39 +63: ; preds = %60, %39 tail call void @icl_set_active_port_dpll(ptr noundef %1, i32 noundef %45) #14 %64 = getelementptr inbounds nuw i8, ptr %1, i64 920 %65 = load ptr, ptr %64, align 8 @@ -9608,10 +9609,10 @@ define internal void @icl_ddi_tc_get_config(ptr noundef %0, ptr noundef %1) #0 a %75 = getelementptr inbounds nuw i8, ptr %24, i64 7368 %76 = getelementptr inbounds nuw i8, ptr %24, i64 7512 %77 = load ptr, ptr %76, align 8 - %78 = tail call i32 %77(ptr noundef nonnull %75, i32 %74, i1 noundef zeroext true) #14 + %78 = tail call i32 %76(ptr noundef nonnull %75, i32 %74, i1 noundef zeroext true) #14 %79 = add i32 %78, 1073741824 %80 = lshr i32 %79, 28 - switch i32 %80, label %85 [ + switch i32 %80, label %84 [ i32 4, label %88 i32 0, label %81 i32 1, label %82 @@ -9642,8 +9643,8 @@ define internal void @icl_ddi_tc_get_config(ptr noundef %0, ptr noundef %1) #0 a tail call void asm sideeffect "928: nop\0A\09.pushsection .discard.instr_end\0A\09.long 928b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 928) #14, !srcloc !325 br label %88 -88: ; preds = %85, %84, %83, %82, %81, %71 - %89 = phi i32 [ 0, %85 ], [ 810000, %84 ], [ 540000, %83 ], [ 270000, %82 ], [ 162000, %81 ], [ 0, %71 ] +88: ; preds = %84, %83, %82, %81, %80, %71 + %89 = phi i32 [ 0, %84 ], [ 810000, %83 ], [ 540000, %82 ], [ 270000, %81 ], [ 162000, %80 ], [ 0, %70 ] %90 = getelementptr inbounds nuw i8, ptr %1, i64 1448 store i32 %89, ptr %90, align 8 br label %95 diff --git a/bench/linux/optimized/intel_pps.ll b/bench/linux/optimized/intel_pps.ll index f23dbd3b19b..f8046fa5de5 100644 --- a/bench/linux/optimized/intel_pps.ll +++ b/bench/linux/optimized/intel_pps.ll @@ -3606,29 +3606,28 @@ define dso_local void @assert_pps_unlocked(ptr noundef %0, i32 noundef %1) local %33 = load ptr, ptr %32, align 8 %34 = tail call i32 %33(ptr noundef nonnull %31, i32 %30, i1 noundef zeroext true) #7 %35 = lshr i32 %34, 30 - %36 = xor i32 %35, 2 - switch i32 %36, label %default.unreachable9 [ - i32 2, label %37 - i32 3, label %39 - i32 0, label %41 - i32 1, label %43 + switch i32 %35, label %default.unreachable9 [ + i32 0, label %36 + i32 1, label %38 + i32 2, label %40 + i32 3, label %42 ] 37: ; preds = %26 %38 = call zeroext i1 @intel_lvds_port_enabled(ptr noundef %0, i32 921984, ptr noundef nonnull %3) #7 - br label %78 + br label %77 39: ; preds = %26 %40 = call zeroext i1 @g4x_dp_port_enabled(ptr noundef %0, i32 409600, i32 noundef 0, ptr noundef nonnull %3) #7 - br label %78 + br label %77 41: ; preds = %26 %42 = call zeroext i1 @g4x_dp_port_enabled(ptr noundef %0, i32 934400, i32 noundef 2, ptr noundef nonnull %3) #7 - br label %78 + br label %77 43: ; preds = %26 %44 = call zeroext i1 @g4x_dp_port_enabled(ptr noundef %0, i32 934656, i32 noundef 3, ptr noundef nonnull %3) #7 - br label %78 + br label %77 default.unreachable9: ; preds = %26 unreachable @@ -3640,76 +3639,76 @@ default.unreachable9: ; preds = %26 %49 = icmp eq i32 %48, 0 %50 = getelementptr inbounds nuw i8, ptr %0, i64 3280 %51 = load i32, ptr %50, align 8 - br i1 %49, label %56, label %52 + br i1 %49, label %55, label %52 52: ; preds = %45 %53 = shl i32 %1, 8 %54 = or disjoint i32 %53, 4 %55 = add i32 %54, %51 store i32 %1, ptr %3, align 4 - br label %78 + br label %77 + +55: ; preds = %44 + %56 = add i32 %50, 4 + %57 = add i32 %50, 8 + %58 = getelementptr inbounds nuw i8, ptr %0, i64 7368 + %59 = getelementptr inbounds nuw i8, ptr %0, i64 7512 + %60 = load ptr, ptr %59, align 8 + %61 = tail call i32 %60(ptr noundef nonnull %58, i32 %57, i1 noundef zeroext true) #7 + %62 = icmp ult i32 %61, 1073741824 + br i1 %62, label %75, label %63, !prof !11 + +63: ; preds = %55 + tail call void asm sideeffect "1069: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 1069b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 1069) #7, !srcloc !127 + %64 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %65 = load ptr, ptr %64, align 8 + %66 = tail call ptr @dev_driver_string(ptr noundef %65) #7 + %67 = load ptr, ptr %64, align 8 + %68 = getelementptr inbounds nuw i8, ptr %67, i64 80 + %69 = load ptr, ptr %68, align 8 + %70 = icmp eq ptr %69, null + br i1 %70, label %71, label %73 -56: ; preds = %45 - %57 = add i32 %51, 4 - %58 = add i32 %51, 8 - %59 = getelementptr inbounds nuw i8, ptr %0, i64 7368 - %60 = getelementptr inbounds nuw i8, ptr %0, i64 7512 - %61 = load ptr, ptr %60, align 8 - %62 = tail call i32 %61(ptr noundef nonnull %59, i32 %58, i1 noundef zeroext true) #7 - %63 = icmp ult i32 %62, 1073741824 - br i1 %63, label %76, label %64, !prof !11 +56: ; preds = %63 + %72 = load ptr, ptr %67, align 8 + br label %73 -64: ; preds = %56 - tail call void asm sideeffect "1069: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 1069b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 1069) #7, !srcloc !127 - %65 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %66 = load ptr, ptr %65, align 8 - %67 = tail call ptr @dev_driver_string(ptr noundef %66) #7 - %68 = load ptr, ptr %65, align 8 - %69 = getelementptr inbounds nuw i8, ptr %68, i64 80 - %70 = load ptr, ptr %69, align 8 - %71 = icmp eq ptr %70, null - br i1 %71, label %72, label %74 - -72: ; preds = %64 - %73 = load ptr, ptr %68, align 8 - br label %74 - -74: ; preds = %72, %64 - %75 = phi ptr [ %73, %72 ], [ %70, %64 ] - tail call void (ptr, ...) @__warn_printk(ptr noundef nonnull @.str, ptr noundef %67, ptr noundef %75, ptr noundef nonnull @.str.24) #7 +64: ; preds = %56, %63 + %74 = phi ptr [ %72, %71 ], [ %69, %63 ] + tail call void (ptr, ...) @__warn_printk(ptr noundef nonnull @.str, ptr noundef %66, ptr noundef %74, ptr noundef nonnull @.str.24) #7 tail call void asm sideeffect "1070: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 1070b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 1070) #7, !srcloc !128 tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A998:\0A\09.pushsection .discard.reachable\0A\09.long 998b\0A\09.popsection\0A\09", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str.2, i32 1718, i32 2313, i64 12) #7, !srcloc !129 tail call void asm sideeffect "1071: nop\0A\09.pushsection .discard.instr_end\0A\09.long 1071b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 1071) #7, !srcloc !130 tail call void asm sideeffect "1072: nop\0A\09.pushsection .discard.instr_end\0A\09.long 1072b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 1072) #7, !srcloc !131 br label %76 -76: ; preds = %74, %56 +76: ; preds = %73, %55 %77 = call zeroext i1 @intel_lvds_port_enabled(ptr noundef %0, i32 397696, ptr noundef nonnull %3) #7 - br label %78 - -78: ; preds = %76, %52, %43, %41, %39, %37 - %79 = phi i32 [ %55, %52 ], [ %57, %76 ], [ %29, %43 ], [ %29, %41 ], [ %29, %39 ], [ %29, %37 ] - %80 = getelementptr inbounds nuw i8, ptr %0, i64 7368 - %81 = getelementptr inbounds nuw i8, ptr %0, i64 7512 - %82 = load ptr, ptr %81, align 8 - %83 = call i32 %82(ptr noundef nonnull %80, i32 %79, i1 noundef zeroext true) #7 - %84 = and i32 %83, 1 - %85 = icmp ne i32 %84, 0 - %86 = and i32 %83, -65536 - %87 = icmp ne i32 %86, -1412628480 - %88 = and i1 %85, %87 - %89 = load i32, ptr %3, align 4 - %90 = icmp eq i32 %89, %1 - %91 = and i1 %90, %88 - br i1 %91, label %92, label %117, !prof !5 - -92: ; preds = %78 - %93 = getelementptr inbounds nuw i8, ptr %0, i64 6795 - %94 = load i8, ptr %93, align 1, !range !36, !noundef !37 - %95 = icmp eq i8 %94, 0 - br i1 %95, label %109, label %96, !prof !11 + br label %77 -96: ; preds = %92 +96: ; preds = %75, %51, %42, %40, %38, %36 + %78 = phi i32 [ %54, %51 ], [ %56, %75 ], [ %29, %42 ], [ %29, %40 ], [ %29, %38 ], [ %29, %36 ] + %79 = getelementptr inbounds nuw i8, ptr %0, i64 7368 + %80 = getelementptr inbounds nuw i8, ptr %0, i64 7512 + %81 = load ptr, ptr %80, align 8 + %82 = call i32 %81(ptr noundef nonnull %79, i32 %78, i1 noundef zeroext true) #7 + %83 = and i32 %82, 1 + %84 = icmp ne i32 %83, 0 + %85 = and i32 %82, -65536 + %86 = icmp ne i32 %85, -1412628480 + %87 = and i1 %84, %86 + %88 = load i32, ptr %3, align 4 + %89 = icmp eq i32 %88, %1 + %90 = and i1 %89, %87 + br i1 %90, label %91, label %116, !prof !5 + +91: ; preds = %77 + %92 = getelementptr inbounds nuw i8, ptr %0, i64 6795 + %93 = load i8, ptr %92, align 1, !range !36, !noundef !37 + %94 = icmp eq i8 %93, 0 + br i1 %94, label %108, label %95, !prof !11 + +95: ; preds = %91 call void asm sideeffect "1073: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 1073b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 1073) #7, !srcloc !132 %97 = getelementptr inbounds nuw i8, ptr %0, i64 8 %98 = load ptr, ptr %97, align 8 @@ -3720,12 +3719,12 @@ default.unreachable9: ; preds = %26 %103 = icmp eq ptr %102, null br i1 %103, label %104, label %106 -104: ; preds = %96 +104: ; preds = %95 %105 = load ptr, ptr %100, align 8 br label %106 -106: ; preds = %104, %96 - %107 = phi ptr [ %105, %104 ], [ %102, %96 ] +106: ; preds = %104, %95 + %107 = phi ptr [ %105, %103 ], [ %102, %95 ] %108 = add i32 %1, 65 call void (ptr, ...) @__warn_printk(ptr noundef nonnull @.str.25, ptr noundef %99, ptr noundef %107, i32 noundef %108) #7 call void asm sideeffect "1074: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 1074b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 1074) #7, !srcloc !133 @@ -3734,7 +3733,7 @@ default.unreachable9: ; preds = %26 call void asm sideeffect "1076: nop\0A\09.pushsection .discard.instr_end\0A\09.long 1076b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 1076) #7, !srcloc !136 br label %117 -109: ; preds = %92 +109: ; preds = %91 %110 = icmp eq ptr %0, null br i1 %110, label %114, label %111 @@ -3744,12 +3743,12 @@ default.unreachable9: ; preds = %26 br label %114 114: ; preds = %111, %109 - %115 = phi ptr [ %113, %111 ], [ null, %109 ] + %115 = phi ptr [ %113, %110 ], [ null, %108 ] %116 = add i32 %1, 65 call void (ptr, ptr, ...) @_dev_err(ptr noundef %115, ptr noundef nonnull @.str.26, i32 noundef %116) #8 br label %117 -117: ; preds = %114, %106, %78, %20 +117: ; preds = %114, %106, %77, %20 call void @llvm.lifetime.end.p0(ptr nonnull %3) ret void } diff --git a/bench/linux/optimized/x_tables.ll b/bench/linux/optimized/x_tables.ll index 5de45f62b1b..c4e4fdb160e 100644 --- a/bench/linux/optimized/x_tables.ll +++ b/bench/linux/optimized/x_tables.ll @@ -1504,15 +1504,11 @@ define dso_local noundef range(i32 -22, 1) i32 @xt_check_entry_offsets(ptr nound br i1 %35, label %36, label %.loopexit 36: ; preds = %34 - %37 = icmp eq i32 %32, -5 - br i1 %37, label %49, label %38 - -38: ; preds = %36 - %39 = xor i32 %32, -1 - switch i32 %39, label %.loopexit [ - i32 1, label %49 - i32 0, label %49 - i32 3, label %49 + switch i32 %32, label %.loopexit [ + i32 -5, label %49 + i32 -2, label %46 + i32 -1, label %46 + i32 -4, label %46 ] 40: ; preds = %22 @@ -1530,42 +1526,42 @@ define dso_local noundef range(i32 -22, 1) i32 @xt_check_entry_offsets(ptr nound %48 = icmp ult i64 %47, 30 br i1 %48, label %49, label %.loopexit -49: ; preds = %45, %40, %38, %38, %38, %36, %30 +49: ; preds = %36, %36, %36, %36, %42, %37, %30 %50 = ptrtoint ptr %15 to i64 %51 = sub i64 %50, %5 %52 = trunc i64 %51 to i32 %53 = icmp eq i32 %52, 0 br i1 %53, label %.loopexit, label %.preheader -.preheader: ; preds = %49, %67 - %54 = phi ptr [ %70, %67 ], [ %1, %49 ] - %55 = phi i32 [ %68, %67 ], [ %52, %49 ] +.preheader: ; preds = %49, %64 + %54 = phi ptr [ %67, %64 ], [ %1, %46 ] + %55 = phi i32 [ %65, %64 ], [ %52, %46 ] %56 = ptrtoint ptr %54 to i64 %57 = and i64 %56, 7 %58 = icmp ne i64 %57, 0 %59 = icmp slt i32 %55, 32 %60 = or i1 %59, %58 + br i1 %57, label %.loopexit, label %58 + +58: ; preds = %.preheader + %59 = load i16, ptr %51, align 8 + %60 = icmp ult i16 %59, 32 br i1 %60, label %.loopexit, label %61 -61: ; preds = %.preheader - %62 = load i16, ptr %54, align 8 - %63 = icmp ult i16 %62, 32 +61: ; preds = %58 + %62 = zext i16 %59 to i32 + %63 = icmp samesign ult i32 %52, %62 br i1 %63, label %.loopexit, label %64 64: ; preds = %61 - %65 = zext i16 %62 to i32 - %66 = icmp samesign ult i32 %55, %65 - br i1 %66, label %.loopexit, label %67 - -67: ; preds = %64 - %68 = sub nuw nsw i32 %55, %65 - %69 = zext i16 %62 to i64 - %70 = getelementptr i8, ptr %54, i64 %69 - %.not = icmp eq i32 %68, 0 + %65 = sub nuw nsw i32 %52, %62 + %66 = zext i16 %59 to i64 + %67 = getelementptr i8, ptr %51, i64 %66 + %.not = icmp eq i32 %65, 0 br i1 %.not, label %.loopexit, label %.preheader, !llvm.loop !28 -.loopexit: ; preds = %67, %64, %61, %.preheader, %49, %45, %43, %38, %34, %26, %14, %10, %4 - %71 = phi i32 [ -22, %45 ], [ -22, %4 ], [ -22, %10 ], [ -22, %14 ], [ -22, %26 ], [ -22, %34 ], [ 0, %49 ], [ -22, %43 ], [ -22, %38 ], [ 0, %67 ], [ -22, %64 ], [ -22, %61 ], [ -22, %.preheader ] +.loopexit: ; preds = %64, %61, %58, %.preheader, %36, %46, %42, %40, %34, %26, %14, %10, %4 + %71 = phi i32 [ -22, %42 ], [ -22, %4 ], [ -22, %10 ], [ -22, %14 ], [ -22, %26 ], [ -22, %34 ], [ 0, %46 ], [ -22, %40 ], [ -22, %36 ], [ 0, %64 ], [ -22, %61 ], [ -22, %58 ], [ -22, %.preheader ] ret i32 %71 } diff --git a/bench/llvm/optimized/InstCombineSelect.ll b/bench/llvm/optimized/InstCombineSelect.ll index 50fb0fd764b..a2dfa23b6e7 100644 --- a/bench/llvm/optimized/InstCombineSelect.ll +++ b/bench/llvm/optimized/InstCombineSelect.ll @@ -11478,9 +11478,10 @@ _ZN4llvm12PatternMatch5matchINS_5ValueENS0_7bind_tyINS_8ConstantEEEEEbPT_RKT0_.e 30: ; preds = %_ZN4llvm12PatternMatch5matchINS_5ValueENS0_7bind_tyINS_8ConstantEEEEEbPT_RKT0_.exit %31 = zext nneg i8 %25 to i32 %32 = add nsw i32 %31, -29 - %switch.tableidx = add nsw i8 %25, -48 - %33 = icmp ult i8 %switch.tableidx, 5 - %switch.shifted = lshr i8 27, %switch.tableidx + %switch.tableidx = add nsw i32 %31, -48 + %33 = icmp ult i32 %switch.tableidx, 5 + %switch.maskindex = trunc i32 %switch.tableidx to i8 + %switch.shifted = lshr i8 27, %switch.maskindex %switch.lobit = trunc i8 %switch.shifted to i1 %or.cond = select i1 %33, i1 %switch.lobit, i1 false br i1 %or.cond, label %.critedge, label %_ZN4llvm11Instruction11isIntDivRemEj.exit @@ -18888,9 +18889,9 @@ _ZNK4llvm5Value9hasOneUseEv.exit74: ; preds = %25 31: ; preds = %_ZNK4llvm5Value9hasOneUseEv.exit74 %32 = zext i8 %15 to i32 %33 = add nsw i32 %32, -29 - switch i8 %15, label %.thread [ - i8 44, label %34 - i8 45, label %35 + switch i32 %33, label %.thread [ + i32 15, label %34 + i32 16, label %35 ] 34: ; preds = %31 diff --git a/bench/llvm/optimized/LICM.ll b/bench/llvm/optimized/LICM.ll index 4414ef9aac0..cfe9aca0bbc 100644 --- a/bench/llvm/optimized/LICM.ll +++ b/bench/llvm/optimized/LICM.ll @@ -12072,11 +12072,11 @@ _ZL11hoistAddSubRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16Mem 1635: ; preds = %_ZL11hoistAddSubRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.thread.i %1636 = call noundef zeroext i1 @_ZNK4llvm11Instruction15hasAllowReassocEv(ptr noundef nonnull align 8 dereferenceable(72) %258) #29 - br i1 %1636, label %1637, label %_ZL22hoistMulAddAssociationRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.thread.thread.i + br i1 %1636, label %1637, label %_ZL22hoistMulAddAssociationRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.thread.i 1637: ; preds = %1635 %1638 = call noundef zeroext i1 @_ZNK4llvm11Instruction16hasNoSignedZerosEv(ptr noundef nonnull align 8 dereferenceable(72) %258) #29 - br i1 %1638, label %1639, label %_ZL22hoistMulAddAssociationRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.thread.thread.i + br i1 %1638, label %1639, label %_ZL22hoistMulAddAssociationRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.thread.i 1639: ; preds = %1637, %_ZL11hoistAddSubRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.thread.i %1640 = getelementptr inbounds i8, ptr %.sroa.0325.0487, i64 -20 @@ -12739,23 +12739,18 @@ _ZL22hoistMulAddAssociationRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInf call void @llvm.lifetime.end.p0(ptr nonnull %27) br i1 %.6.i.i, label %_ZL16hoistArithmeticsRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit, label %_ZL22hoistMulAddAssociationRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.threadthread-pre-split.i -_ZL22hoistMulAddAssociationRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.threadthread-pre-split.i: ; preds = %_ZL22hoistMulAddAssociationRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.i, %1656, %_ZNK4llvm4User10getOperandEj.exit90.i.i +_ZL22hoistMulAddAssociationRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.threadthread-pre-split.i: ; preds = %_ZL22hoistMulAddAssociationRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.i, %1656, %_ZNK4llvm4User10getOperandEj.exit90.i.i, %1637, %1635, %_ZL11hoistAddSubRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.thread.i %.pr79.i = load i8, ptr %258, align 8, !tbaa !135 - br label %_ZL22hoistMulAddAssociationRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.thread.i - -_ZL22hoistMulAddAssociationRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.thread.i: ; preds = %_ZL22hoistMulAddAssociationRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.threadthread-pre-split.i, %_ZL11hoistAddSubRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.thread.i - %1945 = phi i8 [ %.pr79.i, %_ZL22hoistMulAddAssociationRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.threadthread-pre-split.i ], [ %1634, %_ZL11hoistAddSubRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.thread.i ] %1946 = add i8 %1945, -60 %1947 = icmp ult i8 %1946, -18 br i1 %1947, label %2087, label %_ZL22hoistMulAddAssociationRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.thread.thread.i -_ZL22hoistMulAddAssociationRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.thread.thread.i: ; preds = %_ZL22hoistMulAddAssociationRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.thread.i, %1637, %1635 - %1948 = phi i8 [ %1945, %_ZL22hoistMulAddAssociationRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.thread.i ], [ 47, %1637 ], [ 47, %1635 ] +_ZL22hoistMulAddAssociationRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.thread.thread.i: ; preds = %_ZL22hoistMulAddAssociationRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.thread.i %1949 = call noundef zeroext i1 @_ZNK4llvm11Instruction13isAssociativeEv(ptr noundef nonnull align 8 dereferenceable(72) %258) #29 - br i1 %1949, label %1950, label %2087 + br i1 %1949, label %1950, label %_ZL16hoistArithmeticsRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit 1950: ; preds = %_ZL22hoistMulAddAssociationRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.thread.thread.i - %1951 = zext nneg i8 %1948 to i32 + %1951 = zext nneg i8 %1945 to i32 %1952 = add nsw i32 %1951, -29 %1953 = getelementptr inbounds i8, ptr %.sroa.0325.0487, i64 -88 %1954 = load ptr, ptr %1953, align 8, !tbaa !136 @@ -12766,7 +12761,7 @@ _ZL22hoistMulAddAssociationRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInf %1959 = load i8, ptr %1958, align 8, !tbaa !135 %1960 = add i8 %1959, -42 %1961 = icmp ult i8 %1960, 18 - %.not70.i.i = icmp eq i8 %1959, %1948 + %.not70.i.i = icmp eq i8 %1959, %1945 %or.cond.i65.i = and i1 %.not70.i.i, %1961 br i1 %or.cond.i65.i, label %1962, label %2087 @@ -12846,10 +12841,10 @@ _ZN4llvm10BasicBlock13getTerminatorEv.exit.i66.i: ; preds = %1989, %1984 store ptr @.str.102, ptr %205, align 8, !tbaa !296, !alias.scope !693 %1998 = call noundef ptr @_ZN4llvm14BinaryOperator6CreateENS_11Instruction9BinaryOpsEPNS_5ValueES4_RKNS_5TwineENS_14InsertPositionE(i32 noundef %1952, ptr noundef %.012.i.i, ptr noundef %1994, ptr noundef nonnull align 8 dereferenceable(34) %25, ptr nonnull %.sroa.0325.0487, i64 0) #25 call void @llvm.lifetime.end.p0(ptr nonnull %25) - switch i8 %1948, label %2016 [ - i8 42, label %1999 - i8 47, label %2008 - i8 43, label %2008 + switch i32 %1952, label %2016 [ + i32 13, label %1999 + i32 18, label %2008 + i32 14, label %2008 ] 1999: ; preds = %_ZN4llvm10BasicBlock13getTerminatorEv.exit.i66.i @@ -13020,8 +13015,12 @@ _ZN4llvm9IRBuilderINS_14ConstantFolderENS_24IRBuilderDefaultInserterEED2Ev.exit: call void @llvm.lifetime.end.p0(ptr nonnull %23) br label %_ZL16hoistArithmeticsRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit -2087: ; preds = %_ZL22hoistMulAddAssociationRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.thread.thread.i, %_ZL22hoistMulAddAssociationRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.thread.i, %1964, %1962, %1950, %1982, %1980, %1978 +2087: ; preds = %1978, %1980, %1982, %1950, %1962, %1964 %2088 = load i8, ptr %258, align 8, !tbaa !135 + br label %2087 + +2087: ; preds = %thread-pre-split, %_ZL22hoistMulAddAssociationRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.thread.i + %2088 = phi i8 [ %.pr811, %thread-pre-split ], [ %1945, %_ZL22hoistMulAddAssociationRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.thread.i ] %.not437 = icmp eq i8 %2088, 31 br i1 %.not437, label %2089, label %_ZL16hoistArithmeticsRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit @@ -13529,8 +13528,8 @@ _ZN12_GLOBAL__N_118ControlFlowHoister31registerPossiblyHoistableBranchEPN4llvm10 call void @llvm.lifetime.end.p0(ptr nonnull %20) br label %_ZL16hoistArithmeticsRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit -_ZL16hoistArithmeticsRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit: ; preds = %_ZN4llvm23SmallVectorTemplateBaseIPNS_11InstructionELb1EE9push_backES2_.exit179, %_ZN12_GLOBAL__N_118ControlFlowHoister31registerPossiblyHoistableBranchEPN4llvm10BranchInstE.exit, %2087, %._crit_edge, %1041, %_ZN4llvm9IRBuilderINS_14ConstantFolderENS_24IRBuilderDefaultInserterEED2Ev.exit235, %_ZL11hoistAddSubRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.thread72.i, %_ZL11hoistAddSubRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.i, %_ZL22hoistMulAddAssociationRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.i, %_ZN4llvm9IRBuilderINS_14ConstantFolderENS_24IRBuilderDefaultInserterEED2Ev.exit, %_ZN4llvm23SmallVectorTemplateBaseIPNS_11InstructionELb1EE9push_backES2_.exit176, %_ZN4llvm23SmallVectorTemplateBaseIPNS_11InstructionELb1EE9push_backES2_.exit - %.3 = phi i1 [ true, %_ZN4llvm23SmallVectorTemplateBaseIPNS_11InstructionELb1EE9push_backES2_.exit ], [ true, %_ZN4llvm23SmallVectorTemplateBaseIPNS_11InstructionELb1EE9push_backES2_.exit176 ], [ true, %_ZN4llvm23SmallVectorTemplateBaseIPNS_11InstructionELb1EE9push_backES2_.exit179 ], [ true, %._crit_edge ], [ %.2488, %_ZN12_GLOBAL__N_118ControlFlowHoister31registerPossiblyHoistableBranchEPN4llvm10BranchInstE.exit ], [ %.2488, %2087 ], [ true, %1041 ], [ true, %_ZN4llvm9IRBuilderINS_14ConstantFolderENS_24IRBuilderDefaultInserterEED2Ev.exit235 ], [ true, %_ZL11hoistAddSubRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.thread72.i ], [ true, %_ZL11hoistAddSubRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.i ], [ true, %_ZL22hoistMulAddAssociationRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.i ], [ true, %_ZN4llvm9IRBuilderINS_14ConstantFolderENS_24IRBuilderDefaultInserterEED2Ev.exit ] +_ZL16hoistArithmeticsRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit: ; preds = %1948, %_ZN4llvm23SmallVectorTemplateBaseIPNS_11InstructionELb1EE9push_backES2_.exit179, %_ZN12_GLOBAL__N_118ControlFlowHoister31registerPossiblyHoistableBranchEPN4llvm10BranchInstE.exit, %2087, %._crit_edge, %1041, %_ZN4llvm9IRBuilderINS_14ConstantFolderENS_24IRBuilderDefaultInserterEED2Ev.exit235, %_ZL11hoistAddSubRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.thread72.i, %_ZL11hoistAddSubRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.i, %_ZL22hoistMulAddAssociationRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.i, %_ZN4llvm9IRBuilderINS_14ConstantFolderENS_24IRBuilderDefaultInserterEED2Ev.exit, %_ZN4llvm23SmallVectorTemplateBaseIPNS_11InstructionELb1EE9push_backES2_.exit176, %_ZN4llvm23SmallVectorTemplateBaseIPNS_11InstructionELb1EE9push_backES2_.exit + %.3 = phi i1 [ true, %_ZN4llvm23SmallVectorTemplateBaseIPNS_11InstructionELb1EE9push_backES2_.exit ], [ true, %_ZN4llvm23SmallVectorTemplateBaseIPNS_11InstructionELb1EE9push_backES2_.exit176 ], [ true, %_ZN4llvm23SmallVectorTemplateBaseIPNS_11InstructionELb1EE9push_backES2_.exit179 ], [ true, %._crit_edge ], [ %.2488, %_ZN12_GLOBAL__N_118ControlFlowHoister31registerPossiblyHoistableBranchEPN4llvm10BranchInstE.exit ], [ %.2488, %2087 ], [ true, %1041 ], [ true, %_ZN4llvm9IRBuilderINS_14ConstantFolderENS_24IRBuilderDefaultInserterEED2Ev.exit235 ], [ true, %_ZL11hoistAddSubRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.thread72.i ], [ true, %_ZL11hoistAddSubRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.i ], [ true, %_ZL22hoistMulAddAssociationRN4llvm11InstructionERNS_4LoopERNS_17ICFLoopSafetyInfoERNS_16MemorySSAUpdaterEPNS_15AssumptionCacheEPNS_13DominatorTreeE.exit.i ], [ true, %_ZN4llvm9IRBuilderINS_14ConstantFolderENS_24IRBuilderDefaultInserterEED2Ev.exit ], [ %.2488, %1948 ] %.not434 = icmp eq ptr %257, %255 br i1 %.not434, label %.critedge, label %.lr.ph490 diff --git a/bench/llvm/optimized/MicrosoftDemangle.ll b/bench/llvm/optimized/MicrosoftDemangle.ll index 2f6482346fd..2a4938a7bc7 100644 --- a/bench/llvm/optimized/MicrosoftDemangle.ll +++ b/bench/llvm/optimized/MicrosoftDemangle.ll @@ -4733,9 +4733,9 @@ define dso_local noundef ptr @_ZN4llvm11ms_demangle9Demangler30demangleFunctionI %6 = load i64, ptr %1, align 8, !tbaa !33 %7 = add i64 %6, -1 store i64 %7, ptr %1, align 8, !tbaa !33 - switch i64 %6, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i [ - i64 1, label %8 - i64 2, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i12 + switch i64 %7, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i [ + i64 0, label %8 + i64 1, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i12 ] 8: ; preds = %2 @@ -4756,11 +4756,7 @@ _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i: ; preds = %2 %14 = tail call noundef ptr @_ZN4llvm11ms_demangle9Demangler30demangleFunctionIdentifierCodeERSt17basic_string_viewIcSt11char_traitsIcEENS0_27FunctionIdentifierCodeGroupE(ptr noundef nonnull align 8 dereferenceable(200) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, i32 noundef 2) br label %_ZN4llvm11ms_demangle9Demangler30demangleFunctionIdentifierCodeERSt17basic_string_viewIcSt11char_traitsIcEENS0_27FunctionIdentifierCodeGroupE.exit -15: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i - %16 = icmp eq i64 %7, 0 - br i1 %16, label %59, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i12 - -_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i12: ; preds = %2, %15 +15: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i, %2 %lhsc = load i8, ptr %5, align 1 %17 = icmp eq i8 %lhsc, 95 br i1 %17, label %18, label %59 @@ -4806,7 +4802,7 @@ _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i12: ; preds = %2, %15 br label %_ZN4llvm11ms_demangle9Demangler30translateIntrinsicFunctionCodeEcNS0_27FunctionIdentifierCodeGroupE.exit29.i _ZN4llvm11ms_demangle9Demangler30translateIntrinsicFunctionCodeEcNS0_27FunctionIdentifierCodeGroupE.exit29.i: ; preds = %33, %31 - %.0.i26.i = phi i8 [ %.1.i28.i, %33 ], [ 0, %31 ] + %.0.i26.i = phi i8 [ %.1.i28.i, %31 ], [ 0, %29 ] %37 = load ptr, ptr %28, align 8, !tbaa !3 %38 = load ptr, ptr %37, align 8, !tbaa !9 %39 = ptrtoint ptr %38 to i64 @@ -4841,7 +4837,7 @@ _ZN4llvm11ms_demangle9Demangler30translateIntrinsicFunctionCodeEcNS0_27FunctionI br label %_ZN4llvm11ms_demangle14ArenaAllocator5allocINS0_31IntrinsicFunctionIdentifierNodeEJNS0_21IntrinsicFunctionKindEEEEPT_DpOT0_.exit33.i _ZN4llvm11ms_demangle14ArenaAllocator5allocINS0_31IntrinsicFunctionIdentifierNodeEJNS0_21IntrinsicFunctionKindEEEEPT_DpOT0_.exit33.i: ; preds = %50, %48 - %.sink15.i32.i = phi ptr [ %52, %50 ], [ %49, %48 ] + %.sink15.i32.i = phi ptr [ %52, %48 ], [ %49, %46 ] %56 = getelementptr inbounds nuw i8, ptr %.sink15.i32.i, i64 8 store i32 8, ptr %56, align 8, !tbaa !16 %57 = getelementptr inbounds nuw i8, ptr %.sink15.i32.i, i64 16 @@ -4851,12 +4847,12 @@ _ZN4llvm11ms_demangle14ArenaAllocator5allocINS0_31IntrinsicFunctionIdentifierNod store i8 %.0.i26.i, ptr %58, align 8, !tbaa !129 br label %_ZN4llvm11ms_demangle9Demangler30demangleFunctionIdentifierCodeERSt17basic_string_viewIcSt11char_traitsIcEENS0_27FunctionIdentifierCodeGroupE.exit -59: ; preds = %15, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i12 +59: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i12 %60 = tail call noundef ptr @_ZN4llvm11ms_demangle9Demangler30demangleFunctionIdentifierCodeERSt17basic_string_viewIcSt11char_traitsIcEENS0_27FunctionIdentifierCodeGroupE(ptr noundef nonnull align 8 dereferenceable(200) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, i32 noundef 0) br label %_ZN4llvm11ms_demangle9Demangler30demangleFunctionIdentifierCodeERSt17basic_string_viewIcSt11char_traitsIcEENS0_27FunctionIdentifierCodeGroupE.exit _ZN4llvm11ms_demangle9Demangler30demangleFunctionIdentifierCodeERSt17basic_string_viewIcSt11char_traitsIcEENS0_27FunctionIdentifierCodeGroupE.exit: ; preds = %_ZN4llvm11ms_demangle14ArenaAllocator5allocINS0_31IntrinsicFunctionIdentifierNodeEJNS0_21IntrinsicFunctionKindEEEEPT_DpOT0_.exit33.i, %22, %59, %11, %8 - %.0 = phi ptr [ null, %8 ], [ %14, %11 ], [ %60, %59 ], [ null, %22 ], [ %.sink15.i32.i, %_ZN4llvm11ms_demangle14ArenaAllocator5allocINS0_31IntrinsicFunctionIdentifierNodeEJNS0_21IntrinsicFunctionKindEEEEPT_DpOT0_.exit33.i ] + %.0 = phi ptr [ null, %8 ], [ %14, %11 ], [ %60, %57 ], [ null, %20 ], [ %.sink15.i32.i, %_ZN4llvm11ms_demangle14ArenaAllocator5allocINS0_31IntrinsicFunctionIdentifierNodeEJNS0_21IntrinsicFunctionKindEEEEPT_DpOT0_.exit33.i ] ret ptr %.0 } diff --git a/bench/llvm/optimized/RISCVISelDAGToDAG.ll b/bench/llvm/optimized/RISCVISelDAGToDAG.ll index 35871a80fa7..3c1f5593259 100644 --- a/bench/llvm/optimized/RISCVISelDAGToDAG.ll +++ b/bench/llvm/optimized/RISCVISelDAGToDAG.ll @@ -2160,50 +2160,52 @@ define dso_local noundef zeroext i1 @_ZN4llvm17RISCVDAGToDAGISel15doPeepholeSExt br i1 %17, label %18, label %_ZNK4llvm3EVTeqES0_.exit.thread 18: ; preds = %13 - %19 = xor i32 %16, -1 - switch i32 %19, label %_ZNK4llvm3EVTeqES0_.exit.thread [ - i32 13018, label %63 - i32 13019, label %63 - i32 13015, label %63 - i32 13016, label %63 - i32 12749, label %63 - i32 11756, label %63 - i32 11755, label %63 - i32 12937, label %63 - i32 12742, label %63 - i32 12905, label %63 - i32 11753, label %24 - i32 11754, label %20 - i32 12936, label %21 - i32 12738, label %22 - i32 12904, label %23 + switch i32 %16, label %_ZNK4llvm3EVTeqES0_.exit.thread [ + i32 -13019, label %64 + i32 -13020, label %63 + i32 -13016, label %63 + i32 -13017, label %63 + i32 -12750, label %63 + i32 -11757, label %63 + i32 -11756, label %63 + i32 -12938, label %63 + i32 -12743, label %63 + i32 -12906, label %63 + i32 -11754, label %22 + i32 -11755, label %19 + i32 -12937, label %20 + i32 -12739, label %21 + i32 -12905, label %26 ] +19: ; preds = %18 + br label %.thread + 20: ; preds = %18 - br label %24 + br label %22 21: ; preds = %18 - br label %24 - -22: ; preds = %18 - br label %24 - -23: ; preds = %18 - br label %24 - -24: ; preds = %18, %23, %22, %21, %20 - %.014 = phi i32 [ 11755, %20 ], [ 12937, %21 ], [ 12742, %22 ], [ 12905, %23 ], [ 11756, %18 ] - %25 = getelementptr inbounds nuw i8, ptr %.sroa.021.0.copyload, i64 40 - %26 = load ptr, ptr %25, align 8, !tbaa !267 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %26, i64 16, i1 false) - %27 = getelementptr inbounds nuw i8, ptr %26, i64 40 - %.sroa.018.0.copyload = load ptr, ptr %27, align 8, !tbaa !268 - %.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %26, i64 48 - %28 = load i64, ptr %.sroa.6.0..sroa_idx, align 8 - %29 = icmp eq i32 %16, -12905 - br i1 %29, label %30, label %.critedge - -30: ; preds = %24 + br label %22 + +22: ; preds = %18, %21, %20, %19 + %.014.ph = phi i32 [ 11756, %18 ], [ 12742, %21 ], [ 12937, %20 ], [ 11755, %19 ] + %22 = getelementptr inbounds nuw i8, ptr %.sroa.021.0.copyload, i64 40 + %23 = load ptr, ptr %22, align 8, !tbaa !267 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %23, i64 16, i1 false) + %24 = getelementptr inbounds nuw i8, ptr %23, i64 40 + %.sroa.018.0.copyload36 = load ptr, ptr %24, align 8, !tbaa !268 + %.sroa.6.0..sroa_idx37 = getelementptr inbounds nuw i8, ptr %23, i64 48 + %25 = load i64, ptr %.sroa.6.0..sroa_idx37, align 8 + br label %.critedge + +26: ; preds = %18 + %27 = getelementptr inbounds nuw i8, ptr %.sroa.021.0.copyload, i64 40 + %28 = load ptr, ptr %27, align 8, !tbaa !267 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %28, i64 16, i1 false) + %29 = getelementptr inbounds nuw i8, ptr %28, i64 40 + %.sroa.018.0.copyload = load ptr, ptr %29, align 8, !tbaa !268 + %.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %28, i64 48 + %30 = load i64, ptr %.sroa.6.0..sroa_idx, align 8 %31 = getelementptr inbounds nuw i8, ptr %.sroa.018.0.copyload, i64 88 %32 = load ptr, ptr %31, align 8, !tbaa !392 %33 = getelementptr inbounds nuw i8, ptr %32, i64 24 @@ -2212,7 +2214,7 @@ define dso_local noundef zeroext i1 @_ZN4llvm17RISCVDAGToDAGISel15doPeepholeSExt %36 = icmp ult i32 %35, 65 br i1 %36, label %37, label %44 -37: ; preds = %30 +37: ; preds = %26 %38 = load i64, ptr %33, align 8, !tbaa !357 %39 = icmp eq i32 %35, 0 %40 = sub nuw nsw i32 64, %35 @@ -2221,7 +2223,7 @@ define dso_local noundef zeroext i1 @_ZN4llvm17RISCVDAGToDAGISel15doPeepholeSExt %43 = ashr exact i64 %42, %41 br i1 %39, label %.critedge, label %_ZNK4llvm14ConstantSDNode12getSExtValueEv.exit -44: ; preds = %30 +44: ; preds = %26 %45 = load ptr, ptr %33, align 8, !tbaa !357 %46 = load i64, ptr %45, align 8, !tbaa !47 br label %_ZNK4llvm14ConstantSDNode12getSExtValueEv.exit @@ -2231,9 +2233,12 @@ _ZNK4llvm14ConstantSDNode12getSExtValueEv.exit: ; preds = %37, %44 %47 = icmp ult i64 %.0.i.i.i, 32 br i1 %47, label %.critedge, label %_ZNK4llvm3EVTeqES0_.exit.thread -.critedge: ; preds = %37, %_ZNK4llvm14ConstantSDNode12getSExtValueEv.exit, %24 - %48 = getelementptr inbounds nuw i8, ptr %0, i64 64 - %49 = load ptr, ptr %48, align 8, !tbaa !65 +.critedge: ; preds = %22, %37, %_ZNK4llvm14ConstantSDNode12getSExtValueEv.exit + %48 = phi i64 [ %25, %.thread ], [ %30, %37 ], [ %30, %_ZNK4llvm14ConstantSDNode12getSExtValueEv.exit ] + %.sroa.018.0.copyload39 = phi ptr [ %.sroa.018.0.copyload36, %.thread ], [ %.sroa.018.0.copyload, %37 ], [ %.sroa.018.0.copyload, %_ZNK4llvm14ConstantSDNode12getSExtValueEv.exit ] + %.01438 = phi i32 [ %.014.ph, %.thread ], [ 12905, %37 ], [ 12905, %_ZNK4llvm14ConstantSDNode12getSExtValueEv.exit ] + %49 = getelementptr inbounds nuw i8, ptr %0, i64 64 + %50 = load ptr, ptr %49, align 8, !tbaa !65 call void @llvm.lifetime.start.p0(ptr nonnull %4) %50 = getelementptr inbounds nuw i8, ptr %1, i64 72 %51 = load ptr, ptr %50, align 8, !tbaa !135 @@ -2255,10 +2260,10 @@ _ZN4llvm5SDLocC2EPKNS_6SDNodeE.exit: ; preds = %.critedge, %52 %.sroa.0.0.copyload.i = load i16, ptr %58, align 8, !tbaa !133 %.sroa.21.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %58, i64 8 %.sroa.21.0.copyload.i = load ptr, ptr %.sroa.21.0..sroa_idx.i, align 8, !tbaa !367 - store ptr %.sroa.018.0.copyload, ptr %5, align 8, !tbaa !268 + store ptr %.sroa.018.0.copyload39, ptr %5, align 8, !tbaa !268 %.sroa.6.0..sroa_idx20 = getelementptr inbounds nuw i8, ptr %5, i64 8 - store i64 %28, ptr %.sroa.6.0..sroa_idx20, align 8 - %59 = call noundef ptr @_ZN4llvm12SelectionDAG14getMachineNodeEjRKNS_5SDLocENS_3EVTENS_7SDValueES5_(ptr noundef nonnull align 8 dereferenceable(952) %49, i32 noundef %.014, ptr noundef nonnull align 8 dereferenceable(12) %4, i16 %.sroa.0.0.copyload.i, ptr %.sroa.21.0.copyload.i, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %3, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %5) #28 + store i64 %48, ptr %.sroa.6.0..sroa_idx20, align 8 + %59 = call noundef ptr @_ZN4llvm12SelectionDAG14getMachineNodeEjRKNS_5SDLocENS_3EVTENS_7SDValueES5_(ptr noundef nonnull align 8 dereferenceable(952) %50, i32 noundef %.01438, ptr noundef nonnull align 8 dereferenceable(12) %4, i16 %.sroa.0.0.copyload.i, ptr %.sroa.21.0.copyload.i, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %3, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %5) #28 %60 = load ptr, ptr %4, align 8, !tbaa !135 %.not.i.i.i.i.i15 = icmp eq ptr %60, null br i1 %.not.i.i.i.i.i15, label %_ZN4llvm5SDLocD2Ev.exit, label %61 @@ -2269,7 +2274,7 @@ _ZN4llvm5SDLocC2EPKNS_6SDNodeE.exit: ; preds = %.critedge, %52 _ZN4llvm5SDLocD2Ev.exit: ; preds = %_ZN4llvm5SDLocC2EPKNS_6SDNodeE.exit, %61 call void @llvm.lifetime.end.p0(ptr nonnull %4) - %62 = load ptr, ptr %48, align 8, !tbaa !65 + %62 = load ptr, ptr %49, align 8, !tbaa !65 call void @_ZN4llvm12SelectionDAG18ReplaceAllUsesWithEPNS_6SDNodeES2_(ptr noundef nonnull align 8 dereferenceable(952) %62, ptr noundef nonnull %1, ptr noundef %59) #28 call void @_ZN4llvm16SelectionDAGISel22EnforceNodeIdInvariantEPNS_6SDNodeE(ptr noundef %59) #28 br label %_ZNK4llvm3EVTeqES0_.exit.thread @@ -2291,7 +2296,7 @@ _ZNK4llvm3EVTeqES0_.exit: ; preds = %63 br label %_ZNK4llvm3EVTeqES0_.exit.thread _ZNK4llvm3EVTeqES0_.exit.thread: ; preds = %_ZNK4llvm14ConstantSDNode12getSExtValueEv.exit, %18, %63, %_ZNK4llvm3EVTeqES0_.exit, %13, %_ZN4llvm5SDLocD2Ev.exit, %2, %8 - %.0 = phi i1 [ false, %8 ], [ false, %2 ], [ true, %_ZNK4llvm3EVTeqES0_.exit ], [ false, %13 ], [ true, %_ZN4llvm5SDLocD2Ev.exit ], [ false, %18 ], [ false, %63 ], [ false, %_ZNK4llvm14ConstantSDNode12getSExtValueEv.exit ] + %.0 = phi i1 [ false, %8 ], [ false, %2 ], [ true, %_ZNK4llvm3EVTeqES0_.exit ], [ false, %13 ], [ true, %_ZN4llvm5SDLocD2Ev.exit ], [ false, %18 ], [ false, %64 ], [ false, %_ZNK4llvm14ConstantSDNode12getSExtValueEv.exit ] ret i1 %.0 } diff --git a/bench/llvm/optimized/SemaDecl.ll b/bench/llvm/optimized/SemaDecl.ll index 601c6151e9d..f22c040ca6d 100644 --- a/bench/llvm/optimized/SemaDecl.ll +++ b/bench/llvm/optimized/SemaDecl.ll @@ -65855,16 +65855,15 @@ _ZN5clang4Decl14getDeclContextEv.exit1067: ; preds = %3527, %3532 br i1 %3561, label %3562, label %_ZL12isStdBuiltinRN5clang10ASTContextEPNS_12FunctionDeclEj.exit.thread 3562: ; preds = %.critedge641 - %trunc = trunc i32 %3514 to i16 - switch i16 %trunc, label %_ZL12isStdBuiltinRN5clang10ASTContextEPNS_12FunctionDeclEj.exit.thread [ - i16 686, label %3563 - i16 157, label %3567 - i16 1498, label %3567 - i16 667, label %3567 - i16 668, label %3567 - i16 968, label %3567 - i16 969, label %3567 - i16 170, label %3567 + switch i32 %3518, label %_ZL12isStdBuiltinRN5clang10ASTContextEPNS_12FunctionDeclEj.exit.thread [ + i32 650, label %3563 + i32 121, label %3567 + i32 1462, label %3567 + i32 631, label %3567 + i32 632, label %3567 + i32 932, label %3567 + i32 933, label %3567 + i32 134, label %3567 ] 3563: ; preds = %3562 diff --git a/bench/llvm/optimized/X86InstrInfo.ll b/bench/llvm/optimized/X86InstrInfo.ll index 18ac5f37d9e..df8c4f15d10 100644 --- a/bench/llvm/optimized/X86InstrInfo.ll +++ b/bench/llvm/optimized/X86InstrInfo.ll @@ -29939,20 +29939,19 @@ define dso_local noundef zeroext i1 @_ZNK4llvm12X86InstrInfo23shouldScheduleLoad br i1 %.not, label %14, label %30 14: ; preds = %9 - %15 = xor i32 %11, -1 - switch i32 %15, label %16 [ - i32 2109, label %30 - i32 2112, label %30 - i32 2114, label %30 - i32 2346, label %30 - i32 2356, label %30 + switch i32 %11, label %15 [ + i32 -2110, label %29 + i32 -2113, label %30 + i32 -2115, label %30 + i32 -2347, label %30 + i32 -2357, label %30 ] 16: ; preds = %14 %17 = getelementptr inbounds nuw i8, ptr %1, i64 48 %18 = load ptr, ptr %17, align 8, !tbaa !1546 %.sroa.0.0.copyload.i = load i16, ptr %18, align 8, !tbaa !1519 - switch i16 %.sroa.0.0.copyload.i, label %19 [ + switch i16 %.sroa.0.0.copyload.i, label %18 [ i16 5, label %28 i16 6, label %28 i16 7, label %28 @@ -29985,7 +29984,7 @@ define dso_local noundef zeroext i1 @_ZNK4llvm12X86InstrInfo23shouldScheduleLoad br label %30 30: ; preds = %29, %25, %27, %28, %9, %14, %14, %14, %14, %14, %6 - %.0 = phi i1 [ false, %6 ], [ false, %9 ], [ false, %14 ], [ false, %14 ], [ false, %14 ], [ false, %14 ], [ false, %14 ], [ true, %29 ], [ false, %25 ], [ false, %27 ], [ false, %28 ] + %.0 = phi i1 [ false, %6 ], [ false, %9 ], [ false, %14 ], [ false, %14 ], [ false, %14 ], [ false, %14 ], [ false, %14 ], [ true, %28 ], [ false, %24 ], [ false, %26 ], [ false, %27 ] ret i1 %.0 } diff --git a/bench/luajit/optimized/lj_meta.ll b/bench/luajit/optimized/lj_meta.ll index 0c44e3bce07..b3dde2dc028 100644 --- a/bench/luajit/optimized/lj_meta.ll +++ b/bench/luajit/optimized/lj_meta.ll @@ -2103,9 +2103,10 @@ define hidden void @lj_meta_istype(ptr noundef initializes((40, 48)) %0, i32 nou %17 = getelementptr inbounds nuw i8, ptr %0, i64 40 store ptr %16, ptr %17, align 8, !tbaa !22 %18 = add i32 %1, 1 - switch i32 %2, label %23 [ - i32 15, label %19 - i32 5, label %21 + %19 = add i32 %2, -1 + switch i32 %19, label %24 [ + i32 14, label %20 + i32 4, label %22 ] 19: ; preds = %3 @@ -2117,8 +2118,7 @@ define hidden void @lj_meta_istype(ptr noundef initializes((40, 48)) %0, i32 nou br label %28 23: ; preds = %3 - %24 = add i32 %2, -1 - %25 = zext i32 %24 to i64 + %25 = zext i32 %19 to i64 %26 = getelementptr inbounds nuw [14 x ptr], ptr @lj_obj_itypename, i64 0, i64 %25 %27 = load ptr, ptr %26, align 8, !tbaa !58 tail call void @lj_err_argtype(ptr noundef nonnull %0, i32 noundef %18, ptr noundef %27) #7 diff --git a/bench/luau/optimized/Parser.ll b/bench/luau/optimized/Parser.ll index 49a43938b28..06e7fa2af33 100644 --- a/bench/luau/optimized/Parser.ll +++ b/bench/luau/optimized/Parser.ll @@ -4986,7 +4986,7 @@ _ZNSt6vectorIN4Luau7CommentESaIS1_EE9push_backEOS1_.exit: ; preds = %27, %_ZNSt6 %61 = and i64 %indvars.iv.next, 4294967295 %62 = getelementptr inbounds nuw i8, ptr %55, i64 %61 %63 = load i8, ptr %62, align 1, !tbaa !20 - switch i8 %63, label %.critedge3.loopexit.split.loop.exit [ + switch i8 %63, label %.critedge3.loopexit [ i8 32, label %64 i8 13, label %64 i8 11, label %64 @@ -4998,26 +4998,26 @@ _ZNSt6vectorIN4Luau7CommentESaIS1_EE9push_backEOS1_.exit: ; preds = %27, %_ZNSt6 64: ; preds = %.lr.ph, %.lr.ph, %.lr.ph, %.lr.ph, %.lr.ph, %.lr.ph %65 = and i64 %indvars.iv.next, 4294967295 %.not32 = icmp eq i64 %65, 0 - br i1 %.not32, label %.critedge3, label %.lr.ph, !llvm.loop !283 + br i1 %.not32, label %.critedge3.loopexit, label %.lr.ph, !llvm.loop !283 -.critedge3.loopexit.split.loop.exit: ; preds = %.lr.ph - %66 = trunc nuw i64 %indvars.iv to i32 +.critedge3.loopexit.split.loop.exit: ; preds = %.lr.ph, %64 + %.028.lcssa.ph = phi i64 [ 0, %64 ], [ %indvars.iv, %.lr.ph ] + %66 = and i64 %.028.lcssa.ph, 4294967295 + %67 = add nsw i64 %66, -1 br label %.critedge3 -.critedge3: ; preds = %64, %.critedge3.loopexit.split.loop.exit, %58 - %.028.lcssa = phi i32 [ 0, %58 ], [ %66, %.critedge3.loopexit.split.loop.exit ], [ 0, %64 ] +.critedge3: ; preds = %.critedge3.loopexit.split.loop.exit, %58 + %.028.lcssa = phi i64 [ -1, %58 ], [ %67, %.critedge3.loopexit ] call void @llvm.lifetime.start.p0(ptr nonnull %3) %67 = load i8, ptr %13, align 8, !tbaa !178, !range !174, !noundef !175 store i8 %67, ptr %3, align 8, !tbaa !284 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %14, ptr noundef nonnull align 4 dereferenceable(16) %9, i64 16, i1 false), !tbaa.struct !10 %68 = getelementptr inbounds nuw i8, ptr %55, i64 1 - %69 = zext i32 %.028.lcssa to i64 store ptr %16, ptr %15, align 8, !tbaa !11 store i64 0, ptr %17, align 8, !tbaa !18 call void @llvm.lifetime.start.p0(ptr nonnull %2) - %gepdiff = add nsw i64 %69, -1 - store i64 %gepdiff, ptr %2, align 8, !tbaa !19 - %70 = icmp ugt i64 %gepdiff, 15 + store i64 %.028.lcssa, ptr %2, align 8, !tbaa !19 + %70 = icmp ugt i64 %.028.lcssa, 15 br i1 %70, label %.noexc.i, label %._crit_edge.i.i .noexc.i: ; preds = %.critedge3 @@ -5029,9 +5029,9 @@ _ZNSt6vectorIN4Luau7CommentESaIS1_EE9push_backEOS1_.exit: ; preds = %27, %_ZNSt6 ._crit_edge.i.i: ; preds = %.noexc.i, %.critedge3 %73 = phi ptr [ %71, %.noexc.i ], [ %16, %.critedge3 ] - switch i32 %.028.lcssa, label %76 [ - i32 2, label %74 - i32 1, label %77 + switch i64 %.028.lcssa, label %76 [ + i64 1, label %74 + i64 0, label %77 ] 74: ; preds = %._crit_edge.i.i @@ -5040,7 +5040,7 @@ _ZNSt6vectorIN4Luau7CommentESaIS1_EE9push_backEOS1_.exit: ; preds = %27, %_ZNSt6 br label %77 76: ; preds = %._crit_edge.i.i - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %73, ptr nonnull align 1 %68, i64 %gepdiff, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %73, ptr nonnull align 1 %68, i64 %.028.lcssa, i1 false) br label %77 77: ; preds = %76, %74, %._crit_edge.i.i diff --git a/bench/meshlab/optimized/arap.ll b/bench/meshlab/optimized/arap.ll index 5eca92c5248..76f0f653ef4 100644 --- a/bench/meshlab/optimized/arap.ll +++ b/bench/meshlab/optimized/arap.ll @@ -16311,34 +16311,35 @@ _ZN5Eigen8internal10AssignmentINS_3MapINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1 252: ; preds = %241 %253 = sext i32 %250 to i64 %254 = sub nsw i64 %48, %253 - %255 = load ptr, ptr %30, align 8 - %256 = getelementptr inbounds i32, ptr %255, i64 %56 - %257 = load i32, ptr %256, align 4 - %258 = sext i32 %257 to i64 - store i64 %258, ptr %15, align 8 - %259 = getelementptr inbounds i32, ptr %255, i64 %58 - %260 = load i32, ptr %259, align 4 - %261 = load i32, ptr %256, align 4 - %262 = sub nsw i32 %260, %261 - %263 = sext i32 %262 to i64 - %264 = sub nsw i64 %253, %56 - switch i64 %254, label %316 [ - i64 0, label %265 - i64 1, label %314 + %255 = add nsw i64 %254, 1 + %256 = load ptr, ptr %30, align 8 + %257 = getelementptr inbounds i32, ptr %256, i64 %56 + %258 = load i32, ptr %257, align 4 + %259 = sext i32 %258 to i64 + store i64 %259, ptr %15, align 8 + %260 = getelementptr inbounds i32, ptr %256, i64 %58 + %261 = load i32, ptr %260, align 4 + %262 = load i32, ptr %257, align 4 + %263 = sub nsw i32 %261, %262 + %264 = sext i32 %263 to i64 + %265 = sub nsw i64 %253, %56 + switch i64 %255, label %317 [ + i64 1, label %266 i64 2, label %315 + i64 3, label %316 ] 265: ; preds = %252 %266 = load ptr, ptr %32, align 8 %267 = getelementptr i32, ptr %266, i64 %67 - %268 = getelementptr i32, ptr %267, i64 %264 + %268 = getelementptr i32, ptr %267, i64 %265 %269 = load i32, ptr %268, align 4 %270 = sext i32 %269 to i64 %271 = getelementptr inbounds double, ptr %247, i64 %270 %272 = load double, ptr %271, align 8 - %273 = add nsw i64 %263, 1 - %274 = mul nsw i64 %273, %264 - %275 = add nsw i64 %258, 1 + %273 = add nsw i64 %264, 1 + %274 = mul nsw i64 %273, %265 + %275 = add nsw i64 %259, 1 %276 = add i64 %275, %274 store i64 %276, ptr %15, align 8 %277 = load ptr, ptr %31, align 8 @@ -16351,9 +16352,9 @@ _ZN5Eigen8internal10AssignmentINS_3MapINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1 br label %281 281: ; preds = %281, %.lr.ph.i - %.046.i = phi ptr [ %278, %.lr.ph.i ], [ %290, %281 ] - %.04145.i = phi ptr [ %279, %.lr.ph.i ], [ %285, %281 ] - %.04244.i = phi i64 [ 0, %.lr.ph.i ], [ %301, %281 ] + %.046.i = phi ptr [ %278, %.lr.ph.i ], [ %290, %282 ] + %.04145.i = phi ptr [ %279, %.lr.ph.i ], [ %285, %282 ] + %.04244.i = phi i64 [ 0, %.lr.ph.i ], [ %301, %282 ] %282 = getelementptr inbounds nuw i8, ptr %.04145.i, i64 4 %283 = load i32, ptr %.04145.i, align 4 %284 = sext i32 %283 to i64 @@ -16381,9 +16382,9 @@ _ZN5Eigen8internal10AssignmentINS_3MapINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1 br i1 %303, label %281, label %._crit_edge.i, !llvm.loop !281 ._crit_edge.i: ; preds = %281, %265 - %.042.lcssa.i = phi i64 [ 0, %265 ], [ %301, %281 ] - %.041.lcssa.i = phi ptr [ %279, %265 ], [ %285, %281 ] - %.0.lcssa.i = phi ptr [ %278, %265 ], [ %290, %281 ] + %.042.lcssa.i = phi i64 [ 0, %266 ], [ %301, %282 ] + %.041.lcssa.i = phi ptr [ %279, %266 ], [ %285, %282 ] + %.0.lcssa.i = phi ptr [ %278, %266 ], [ %290, %282 ] %304 = icmp slt i64 %.042.lcssa.i, %66 br i1 %304, label %305, label %_ZN5Eigen8internal14LU_kernel_bmodILi1EE3runINS_11VectorBlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1EEES6_NS5_IiLin1ELi1ELi0ELin1ELi1EEEEEvlRT_RT0_SC_RlllRT1_ll.exit @@ -16399,20 +16400,19 @@ _ZN5Eigen8internal10AssignmentINS_3MapINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1 store double %313, ptr %310, align 8 br label %_ZN5Eigen8internal14LU_kernel_bmodILi1EE3runINS_11VectorBlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1EEES6_NS5_IiLin1ELi1ELi0ELin1ELi1EEEEEvlRT_RT0_SC_RlllRT1_ll.exit -314: ; preds = %252 - call void @_ZN5Eigen8internal14LU_kernel_bmodILi2EE3runINS_11VectorBlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1EEES6_NS5_IiLin1ELi1ELi0ELin1ELi1EEEEEvlRT_RT0_SC_RlllRT1_ll(i64 noundef 2, ptr noundef nonnull align 8 dereferenceable(56) %19, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull align 8 dereferenceable(8) %15, i64 noundef %263, i64 noundef %66, ptr noundef nonnull align 8 dereferenceable(16) %32, i64 noundef %67, i64 noundef %264) - br label %_ZN5Eigen8internal14LU_kernel_bmodILi1EE3runINS_11VectorBlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1EEES6_NS5_IiLin1ELi1ELi0ELin1ELi1EEEEEvlRT_RT0_SC_RlllRT1_ll.exit - 315: ; preds = %252 - call void @_ZN5Eigen8internal14LU_kernel_bmodILi3EE3runINS_11VectorBlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1EEES6_NS5_IiLin1ELi1ELi0ELin1ELi1EEEEEvlRT_RT0_SC_RlllRT1_ll(i64 noundef 3, ptr noundef nonnull align 8 dereferenceable(56) %19, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull align 8 dereferenceable(8) %15, i64 noundef %263, i64 noundef %66, ptr noundef nonnull align 8 dereferenceable(16) %32, i64 noundef %67, i64 noundef %264) + call void @_ZN5Eigen8internal14LU_kernel_bmodILi2EE3runINS_11VectorBlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1EEES6_NS5_IiLin1ELi1ELi0ELin1ELi1EEEEEvlRT_RT0_SC_RlllRT1_ll(i64 noundef 2, ptr noundef nonnull align 8 dereferenceable(56) %19, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull align 8 dereferenceable(8) %15, i64 noundef %264, i64 noundef %66, ptr noundef nonnull align 8 dereferenceable(16) %32, i64 noundef %67, i64 noundef %265) br label %_ZN5Eigen8internal14LU_kernel_bmodILi1EE3runINS_11VectorBlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1EEES6_NS5_IiLin1ELi1ELi0ELin1ELi1EEEEEvlRT_RT0_SC_RlllRT1_ll.exit 316: ; preds = %252 - %317 = add nsw i64 %254, 1 - call void @_ZN5Eigen8internal14LU_kernel_bmodILin1EE3runINS_11VectorBlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1EEES6_NS5_IiLin1ELi1ELi0ELin1ELi1EEEEEvlRT_RT0_SC_RlllRT1_ll(i64 noundef %317, ptr noundef nonnull align 8 dereferenceable(56) %19, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull align 8 dereferenceable(8) %15, i64 noundef %263, i64 noundef %66, ptr noundef nonnull align 8 dereferenceable(16) %32, i64 noundef %67, i64 noundef %264) + call void @_ZN5Eigen8internal14LU_kernel_bmodILi3EE3runINS_11VectorBlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1EEES6_NS5_IiLin1ELi1ELi0ELin1ELi1EEEEEvlRT_RT0_SC_RlllRT1_ll(i64 noundef 3, ptr noundef nonnull align 8 dereferenceable(56) %19, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull align 8 dereferenceable(8) %15, i64 noundef %264, i64 noundef %66, ptr noundef nonnull align 8 dereferenceable(16) %32, i64 noundef %67, i64 noundef %265) + br label %_ZN5Eigen8internal14LU_kernel_bmodILi1EE3runINS_11VectorBlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1EEES6_NS5_IiLin1ELi1ELi0ELin1ELi1EEEEEvlRT_RT0_SC_RlllRT1_ll.exit + +317: ; preds = %252 + call void @_ZN5Eigen8internal14LU_kernel_bmodILin1EE3runINS_11VectorBlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1EEES6_NS5_IiLin1ELi1ELi0ELin1ELi1EEEEEvlRT_RT0_SC_RlllRT1_ll(i64 noundef %255, ptr noundef nonnull align 8 dereferenceable(56) %19, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull align 8 dereferenceable(8) %15, i64 noundef %264, i64 noundef %66, ptr noundef nonnull align 8 dereferenceable(16) %32, i64 noundef %67, i64 noundef %265) br label %_ZN5Eigen8internal14LU_kernel_bmodILi1EE3runINS_11VectorBlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1EEES6_NS5_IiLin1ELi1ELi0ELin1ELi1EEEEEvlRT_RT0_SC_RlllRT1_ll.exit -_ZN5Eigen8internal14LU_kernel_bmodILi1EE3runINS_11VectorBlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1EEES6_NS5_IiLin1ELi1ELi0ELin1ELi1EEEEEvlRT_RT0_SC_RlllRT1_ll.exit: ; preds = %305, %._crit_edge.i, %315, %316, %314, %241 +_ZN5Eigen8internal14LU_kernel_bmodILi1EE3runINS_11VectorBlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1EEES6_NS5_IiLin1ELi1ELi0ELin1ELi1EEEEEvlRT_RT0_SC_RlllRT1_ll.exit: ; preds = %305, %._crit_edge.i, %316, %317, %315, %241 %318 = add nsw i64 %.3307, 1 %319 = icmp slt i64 %318, %23 br i1 %319, label %241, label %.loopexit, !llvm.loop !282 diff --git a/bench/meshlab/optimized/filter_parametrization.ll b/bench/meshlab/optimized/filter_parametrization.ll index 95447f48c8a..a90508536bc 100644 --- a/bench/meshlab/optimized/filter_parametrization.ll +++ b/bench/meshlab/optimized/filter_parametrization.ll @@ -54824,34 +54824,35 @@ _ZN5Eigen8internal10AssignmentINS_3MapINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1 252: ; preds = %241 %253 = sext i32 %250 to i64 %254 = sub nsw i64 %48, %253 - %255 = load ptr, ptr %30, align 8 - %256 = getelementptr inbounds i32, ptr %255, i64 %56 - %257 = load i32, ptr %256, align 4 - %258 = sext i32 %257 to i64 - store i64 %258, ptr %15, align 8 - %259 = getelementptr inbounds i32, ptr %255, i64 %58 - %260 = load i32, ptr %259, align 4 - %261 = load i32, ptr %256, align 4 - %262 = sub nsw i32 %260, %261 - %263 = sext i32 %262 to i64 - %264 = sub nsw i64 %253, %56 - switch i64 %254, label %316 [ - i64 0, label %265 - i64 1, label %314 + %255 = add nsw i64 %254, 1 + %256 = load ptr, ptr %30, align 8 + %257 = getelementptr inbounds i32, ptr %256, i64 %56 + %258 = load i32, ptr %257, align 4 + %259 = sext i32 %258 to i64 + store i64 %259, ptr %15, align 8 + %260 = getelementptr inbounds i32, ptr %256, i64 %58 + %261 = load i32, ptr %260, align 4 + %262 = load i32, ptr %257, align 4 + %263 = sub nsw i32 %261, %262 + %264 = sext i32 %263 to i64 + %265 = sub nsw i64 %253, %56 + switch i64 %255, label %317 [ + i64 1, label %266 i64 2, label %315 + i64 3, label %316 ] 265: ; preds = %252 %266 = load ptr, ptr %32, align 8 %267 = getelementptr i32, ptr %266, i64 %67 - %268 = getelementptr i32, ptr %267, i64 %264 + %268 = getelementptr i32, ptr %267, i64 %265 %269 = load i32, ptr %268, align 4 %270 = sext i32 %269 to i64 %271 = getelementptr inbounds double, ptr %247, i64 %270 %272 = load double, ptr %271, align 8 - %273 = add nsw i64 %263, 1 - %274 = mul nsw i64 %273, %264 - %275 = add nsw i64 %258, 1 + %273 = add nsw i64 %264, 1 + %274 = mul nsw i64 %273, %265 + %275 = add nsw i64 %259, 1 %276 = add i64 %275, %274 store i64 %276, ptr %15, align 8 %277 = load ptr, ptr %31, align 8 @@ -54861,71 +54862,70 @@ _ZN5Eigen8internal10AssignmentINS_3MapINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1 .lr.ph.i: ; preds = %265 %280 = fneg double %272 - br label %281 - -281: ; preds = %281, %.lr.ph.i - %.046.i = phi ptr [ %278, %.lr.ph.i ], [ %290, %281 ] - %.04145.i = phi ptr [ %279, %.lr.ph.i ], [ %285, %281 ] - %.04244.i = phi i64 [ 0, %.lr.ph.i ], [ %301, %281 ] - %282 = getelementptr inbounds nuw i8, ptr %.04145.i, i64 4 - %283 = load i32, ptr %.04145.i, align 4 - %284 = sext i32 %283 to i64 - %285 = getelementptr inbounds nuw i8, ptr %.04145.i, i64 8 - %286 = load i32, ptr %282, align 4 - %287 = sext i32 %286 to i64 - %288 = getelementptr inbounds nuw i8, ptr %.046.i, i64 8 - %289 = load double, ptr %.046.i, align 8 - %290 = getelementptr inbounds nuw i8, ptr %.046.i, i64 16 - %291 = load double, ptr %288, align 8 - %292 = load ptr, ptr %19, align 8 - %293 = getelementptr inbounds double, ptr %292, i64 %284 - %294 = load double, ptr %293, align 8 - %295 = getelementptr inbounds double, ptr %292, i64 %287 - %296 = load double, ptr %295, align 8 - %297 = call double @llvm.fmuladd.f64(double %280, double %289, double %294) - %298 = call double @llvm.fmuladd.f64(double %280, double %291, double %296) - store double %297, ptr %293, align 8 - %299 = load ptr, ptr %19, align 8 - %300 = getelementptr inbounds double, ptr %299, i64 %287 - store double %298, ptr %300, align 8 - %301 = add nuw nsw i64 %.04244.i, 2 - %302 = or disjoint i64 %301, 1 - %303 = icmp slt i64 %302, %66 - br i1 %303, label %281, label %._crit_edge.i, !llvm.loop !1100 - -._crit_edge.i: ; preds = %281, %265 - %.042.lcssa.i = phi i64 [ 0, %265 ], [ %301, %281 ] - %.041.lcssa.i = phi ptr [ %279, %265 ], [ %285, %281 ] - %.0.lcssa.i = phi ptr [ %278, %265 ], [ %290, %281 ] - %304 = icmp slt i64 %.042.lcssa.i, %66 - br i1 %304, label %305, label %_ZN5Eigen8internal14LU_kernel_bmodILi1EE3runINS_11VectorBlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1EEES6_NS5_IiLin1ELi1ELi0ELin1ELi1EEEEEvlRT_RT0_SC_RlllRT1_ll.exit - -305: ; preds = %._crit_edge.i - %306 = load double, ptr %.0.lcssa.i, align 8 - %307 = load i32, ptr %.041.lcssa.i, align 4 - %308 = sext i32 %307 to i64 - %309 = load ptr, ptr %19, align 8 - %310 = getelementptr inbounds double, ptr %309, i64 %308 - %311 = load double, ptr %310, align 8 - %312 = fneg double %272 - %313 = call double @llvm.fmuladd.f64(double %312, double %306, double %311) - store double %313, ptr %310, align 8 - br label %_ZN5Eigen8internal14LU_kernel_bmodILi1EE3runINS_11VectorBlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1EEES6_NS5_IiLin1ELi1ELi0ELin1ELi1EEEEEvlRT_RT0_SC_RlllRT1_ll.exit + br label %282 -314: ; preds = %252 - call void @_ZN5Eigen8internal14LU_kernel_bmodILi2EE3runINS_11VectorBlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1EEES6_NS5_IiLin1ELi1ELi0ELin1ELi1EEEEEvlRT_RT0_SC_RlllRT1_ll(i64 noundef 2, ptr noundef nonnull align 8 dereferenceable(56) %19, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull align 8 dereferenceable(8) %15, i64 noundef %263, i64 noundef %66, ptr noundef nonnull align 8 dereferenceable(16) %32, i64 noundef %67, i64 noundef %264) +314: ; preds = %282, %.lr.ph.i + %.046.i = phi ptr [ %279, %.lr.ph.i ], [ %291, %282 ] + %.04145.i = phi ptr [ %280, %.lr.ph.i ], [ %286, %282 ] + %.04244.i = phi i64 [ 0, %.lr.ph.i ], [ %302, %282 ] + %283 = getelementptr inbounds nuw i8, ptr %.04145.i, i64 4 + %284 = load i32, ptr %.04145.i, align 4 + %285 = sext i32 %284 to i64 + %286 = getelementptr inbounds nuw i8, ptr %.04145.i, i64 8 + %287 = load i32, ptr %283, align 4 + %288 = sext i32 %287 to i64 + %289 = getelementptr inbounds nuw i8, ptr %.046.i, i64 8 + %290 = load double, ptr %.046.i, align 8 + %291 = getelementptr inbounds nuw i8, ptr %.046.i, i64 16 + %292 = load double, ptr %289, align 8 + %293 = load ptr, ptr %19, align 8 + %294 = getelementptr inbounds double, ptr %293, i64 %285 + %295 = load double, ptr %294, align 8 + %296 = getelementptr inbounds double, ptr %293, i64 %288 + %297 = load double, ptr %296, align 8 + %298 = call double @llvm.fmuladd.f64(double %281, double %290, double %295) + %299 = call double @llvm.fmuladd.f64(double %281, double %292, double %297) + store double %298, ptr %294, align 8 + %300 = load ptr, ptr %19, align 8 + %301 = getelementptr inbounds double, ptr %300, i64 %288 + store double %299, ptr %301, align 8 + %302 = add nuw nsw i64 %.04244.i, 2 + %303 = or disjoint i64 %302, 1 + %304 = icmp slt i64 %303, %66 + br i1 %304, label %282, label %._crit_edge.i, !llvm.loop !1100 + +._crit_edge.i: ; preds = %282, %266 + %.042.lcssa.i = phi i64 [ 0, %266 ], [ %302, %282 ] + %.041.lcssa.i = phi ptr [ %280, %266 ], [ %286, %282 ] + %.0.lcssa.i = phi ptr [ %279, %266 ], [ %291, %282 ] + %305 = icmp slt i64 %.042.lcssa.i, %66 + br i1 %305, label %306, label %_ZN5Eigen8internal14LU_kernel_bmodILi1EE3runINS_11VectorBlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1EEES6_NS5_IiLin1ELi1ELi0ELin1ELi1EEEEEvlRT_RT0_SC_RlllRT1_ll.exit + +306: ; preds = %._crit_edge.i + %307 = load double, ptr %.0.lcssa.i, align 8 + %308 = load i32, ptr %.041.lcssa.i, align 4 + %309 = sext i32 %308 to i64 + %310 = load ptr, ptr %19, align 8 + %311 = getelementptr inbounds double, ptr %310, i64 %309 + %312 = load double, ptr %311, align 8 + %313 = fneg double %273 + %314 = call double @llvm.fmuladd.f64(double %313, double %307, double %312) + store double %314, ptr %311, align 8 br label %_ZN5Eigen8internal14LU_kernel_bmodILi1EE3runINS_11VectorBlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1EEES6_NS5_IiLin1ELi1ELi0ELin1ELi1EEEEEvlRT_RT0_SC_RlllRT1_ll.exit 315: ; preds = %252 - call void @_ZN5Eigen8internal14LU_kernel_bmodILi3EE3runINS_11VectorBlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1EEES6_NS5_IiLin1ELi1ELi0ELin1ELi1EEEEEvlRT_RT0_SC_RlllRT1_ll(i64 noundef 3, ptr noundef nonnull align 8 dereferenceable(56) %19, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull align 8 dereferenceable(8) %15, i64 noundef %263, i64 noundef %66, ptr noundef nonnull align 8 dereferenceable(16) %32, i64 noundef %67, i64 noundef %264) + call void @_ZN5Eigen8internal14LU_kernel_bmodILi2EE3runINS_11VectorBlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1EEES6_NS5_IiLin1ELi1ELi0ELin1ELi1EEEEEvlRT_RT0_SC_RlllRT1_ll(i64 noundef 2, ptr noundef nonnull align 8 dereferenceable(56) %19, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull align 8 dereferenceable(8) %15, i64 noundef %264, i64 noundef %66, ptr noundef nonnull align 8 dereferenceable(16) %32, i64 noundef %67, i64 noundef %265) br label %_ZN5Eigen8internal14LU_kernel_bmodILi1EE3runINS_11VectorBlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1EEES6_NS5_IiLin1ELi1ELi0ELin1ELi1EEEEEvlRT_RT0_SC_RlllRT1_ll.exit 316: ; preds = %252 - %317 = add nsw i64 %254, 1 - call void @_ZN5Eigen8internal14LU_kernel_bmodILin1EE3runINS_11VectorBlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1EEES6_NS5_IiLin1ELi1ELi0ELin1ELi1EEEEEvlRT_RT0_SC_RlllRT1_ll(i64 noundef %317, ptr noundef nonnull align 8 dereferenceable(56) %19, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull align 8 dereferenceable(8) %15, i64 noundef %263, i64 noundef %66, ptr noundef nonnull align 8 dereferenceable(16) %32, i64 noundef %67, i64 noundef %264) + call void @_ZN5Eigen8internal14LU_kernel_bmodILi3EE3runINS_11VectorBlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1EEES6_NS5_IiLin1ELi1ELi0ELin1ELi1EEEEEvlRT_RT0_SC_RlllRT1_ll(i64 noundef 3, ptr noundef nonnull align 8 dereferenceable(56) %19, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull align 8 dereferenceable(8) %15, i64 noundef %264, i64 noundef %66, ptr noundef nonnull align 8 dereferenceable(16) %32, i64 noundef %67, i64 noundef %265) + br label %_ZN5Eigen8internal14LU_kernel_bmodILi1EE3runINS_11VectorBlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1EEES6_NS5_IiLin1ELi1ELi0ELin1ELi1EEEEEvlRT_RT0_SC_RlllRT1_ll.exit + +317: ; preds = %252 + call void @_ZN5Eigen8internal14LU_kernel_bmodILin1EE3runINS_11VectorBlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1EEES6_NS5_IiLin1ELi1ELi0ELin1ELi1EEEEEvlRT_RT0_SC_RlllRT1_ll(i64 noundef %255, ptr noundef nonnull align 8 dereferenceable(56) %19, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull align 8 dereferenceable(8) %15, i64 noundef %264, i64 noundef %66, ptr noundef nonnull align 8 dereferenceable(16) %32, i64 noundef %67, i64 noundef %265) br label %_ZN5Eigen8internal14LU_kernel_bmodILi1EE3runINS_11VectorBlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1EEES6_NS5_IiLin1ELi1ELi0ELin1ELi1EEEEEvlRT_RT0_SC_RlllRT1_ll.exit -_ZN5Eigen8internal14LU_kernel_bmodILi1EE3runINS_11VectorBlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1EEES6_NS5_IiLin1ELi1ELi0ELin1ELi1EEEEEvlRT_RT0_SC_RlllRT1_ll.exit: ; preds = %305, %._crit_edge.i, %315, %316, %314, %241 +_ZN5Eigen8internal14LU_kernel_bmodILi1EE3runINS_11VectorBlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1EEES6_NS5_IiLin1ELi1ELi0ELin1ELi1EEEEEvlRT_RT0_SC_RlllRT1_ll.exit: ; preds = %306, %._crit_edge.i, %316, %317, %315, %241 %318 = add nsw i64 %.3307, 1 %319 = icmp slt i64 %318, %23 br i1 %319, label %241, label %.loopexit, !llvm.loop !1101 diff --git a/bench/mold/optimized/passes.cc.X86_64.ll b/bench/mold/optimized/passes.cc.X86_64.ll index 4f4f4708f97..798195d7905 100644 --- a/bench/mold/optimized/passes.cc.X86_64.ll +++ b/bench/mold/optimized/passes.cc.X86_64.ll @@ -13723,9 +13723,9 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i.i: ._crit_edge.i.i.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i %92 = phi ptr [ %91, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i.i ], [ %81, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i ] - switch i64 %76, label %95 [ - i64 2, label %93 - i64 1, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm.exit + switch i64 %83, label %95 [ + i64 1, label %93 + i64 0, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm.exit ] 93: ; preds = %._crit_edge.i.i.i @@ -16251,9 +16251,9 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i.i.i ._crit_edge.i.i.i.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i.i %195 = phi ptr [ %194, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i.i.i ], [ %183, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i.i ] - switch i64 %180, label %198 [ - i64 2, label %196 - i64 1, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm.exit.i + switch i64 %186, label %198 [ + i64 1, label %196 + i64 0, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm.exit.i ] 196: ; preds = %._crit_edge.i.i.i.i @@ -29753,9 +29753,10 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit: ; pred %21 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %18) #36 %22 = getelementptr inbounds nuw i8, ptr %0, i64 8 %23 = load i64, ptr %22, align 8, !tbaa !17 - switch i64 %23, label %26 [ - i64 0, label %24 - i64 -1, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit + %24 = add i64 %23, 1 + switch i64 %24, label %27 [ + i64 1, label %25 + i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit ] 24: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit @@ -29764,8 +29765,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit: ; pred br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit 26: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit - %27 = add nuw i64 %23, 1 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %21, ptr noundef nonnull align 1 dereferenceable(1) %3, i64 %27, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %21, ptr align 1 %3, i64 %24, i1 false) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit, %24, %26 diff --git a/bench/nix/optimized/closure.ll b/bench/nix/optimized/closure.ll index 389aa27e04c..38635af68d0 100644 --- a/bench/nix/optimized/closure.ll +++ b/bench/nix/optimized/closure.ll @@ -3468,16 +3468,19 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit: ; preds = %20 = ptrtoint ptr %14 to i64 %21 = ptrtoint ptr %6 to i64 %22 = sub i64 %20, %21 - switch i64 %22, label %23 [ - i64 -1, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEmm.exit - i64 2, label %.sink.split.i - i64 3, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEmm.exit + %.not = icmp eq i64 %22, -1 + br i1 %.not, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEmm.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit.thread6 + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit.thread6:; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit + %23 = add i64 %22, -3 + switch i64 %23, label %24 [ + i64 -1, label %.sink.split.i + i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEmm.exit ] -23: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit - %24 = add i64 %22, -3 +23: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit.thread6 %25 = add i64 %4, -3 - %spec.select.i.i2 = tail call noundef i64 @llvm.umin.i64(i64 %24, i64 %25) + %spec.select.i.i2 = tail call noundef i64 @llvm.umin.i64(i64 %23, i64 %25) %26 = add nuw i64 %spec.select.i.i2, 3 %27 = icmp ne i64 %4, %26 %28 = icmp ne i64 %spec.select.i.i2, 0 @@ -3508,15 +3511,15 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEmm.exit.i: ; pred %.pre = load ptr, ptr %1, align 8 br label %.sink.split.i -.sink.split.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEmm.exit.i - %38 = phi ptr [ %.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEmm.exit.i ], [ %6, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit ] - %.sink.i = phi i64 [ %37, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEmm.exit.i ], [ 3, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit ] +.sink.split.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEmm.exit.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit.thread6 + %38 = phi ptr [ %.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEmm.exit.i ], [ %6, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit.thread6 ] + %.sink.i = phi i64 [ %37, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEmm.exit.i ], [ 3, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit.thread6 ] store i64 %.sink.i, ptr %3, align 8 %39 = getelementptr inbounds i8, ptr %38, i64 %.sink.i store i8 0, ptr %39, align 1 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEmm.exit -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEmm.exit: ; preds = %_ZNSt11char_traitsIcE4findEPKcmRS1_.exit.i.i, %16, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit, %2, %8, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i, %.sink.split.i +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEmm.exit: ; preds = %_ZNSt11char_traitsIcE4findEPKcmRS1_.exit.i.i, %16, %2, %8, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i, %.sink.split.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit.thread6, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit %40 = getelementptr inbounds nuw i8, ptr %0, i64 16 tail call void @_ZNSaIcEC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %1) #28 store ptr %40, ptr %0, align 8 diff --git a/bench/nix/optimized/config.ll b/bench/nix/optimized/config.ll index cc1677f10a8..2953dec6b29 100644 --- a/bench/nix/optimized/config.ll +++ b/bench/nix/optimized/config.ll @@ -21230,9 +21230,10 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i: ; pr .noexc12: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i %28 = load i64, ptr %8, align 8 - switch i64 %28, label %31 [ - i64 0, label %29 - i64 -1, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i + %29 = add i64 %28, 1 + switch i64 %29, label %32 [ + i64 1, label %29 + i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i ] 29: ; preds = %.noexc12 @@ -21241,8 +21242,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i: ; pr br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i 31: ; preds = %.noexc12 - %32 = add nuw i64 %28, 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %27, ptr noundef nonnull align 1 dereferenceable(1) %12, i64 %32, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %27, ptr align 1 %12, i64 %29, i1 false) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i: ; preds = %31, %29, %.noexc12 @@ -37867,16 +37867,19 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit: ; preds = %20 = ptrtoint ptr %14 to i64 %21 = ptrtoint ptr %6 to i64 %22 = sub i64 %20, %21 - switch i64 %22, label %23 [ - i64 -1, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEmm.exit - i64 2, label %.sink.split.i - i64 3, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEmm.exit + %.not = icmp eq i64 %22, -1 + br i1 %.not, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEmm.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit.thread6 + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit.thread6:; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit + %23 = add i64 %22, -3 + switch i64 %23, label %24 [ + i64 -1, label %.sink.split.i + i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEmm.exit ] -23: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit - %24 = add i64 %22, -3 +23: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit.thread6 %25 = add i64 %4, -3 - %spec.select.i.i2 = tail call noundef i64 @llvm.umin.i64(i64 %24, i64 %25) + %spec.select.i.i2 = tail call noundef i64 @llvm.umin.i64(i64 %23, i64 %25) %26 = add nuw i64 %spec.select.i.i2, 3 %27 = icmp ne i64 %4, %26 %28 = icmp ne i64 %spec.select.i.i2, 0 @@ -37907,15 +37910,15 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEmm.exit.i: ; pred %.pre = load ptr, ptr %1, align 8 br label %.sink.split.i -.sink.split.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEmm.exit.i - %38 = phi ptr [ %.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEmm.exit.i ], [ %6, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit ] - %.sink.i = phi i64 [ %37, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEmm.exit.i ], [ 3, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit ] +.sink.split.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEmm.exit.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit.thread6 + %38 = phi ptr [ %.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEmm.exit.i ], [ %6, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit.thread6 ] + %.sink.i = phi i64 [ %37, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEmm.exit.i ], [ 3, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit.thread6 ] store i64 %.sink.i, ptr %3, align 8 %39 = getelementptr inbounds i8, ptr %38, i64 %.sink.i store i8 0, ptr %39, align 1 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEmm.exit -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEmm.exit: ; preds = %_ZNSt11char_traitsIcE4findEPKcmRS1_.exit.i.i, %16, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit, %2, %8, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i, %.sink.split.i +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEmm.exit: ; preds = %_ZNSt11char_traitsIcE4findEPKcmRS1_.exit.i.i, %16, %2, %8, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i, %.sink.split.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit.thread6, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit %40 = getelementptr inbounds nuw i8, ptr %0, i64 16 tail call void @_ZNSaIcEC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %1) #28 store ptr %40, ptr %0, align 8 diff --git a/bench/nix/optimized/error_traces.ll b/bench/nix/optimized/error_traces.ll index 429ab880a68..017445979eb 100644 --- a/bench/nix/optimized/error_traces.ll +++ b/bench/nix/optimized/error_traces.ll @@ -178225,16 +178225,19 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit: ; preds = %20 = ptrtoint ptr %14 to i64 %21 = ptrtoint ptr %6 to i64 %22 = sub i64 %20, %21 - switch i64 %22, label %23 [ - i64 -1, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEmm.exit - i64 2, label %.sink.split.i - i64 3, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEmm.exit + %.not = icmp eq i64 %22, -1 + br i1 %.not, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEmm.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit.thread6 + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit.thread6:; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit + %23 = add i64 %22, -3 + switch i64 %23, label %24 [ + i64 -1, label %.sink.split.i + i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEmm.exit ] -23: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit - %24 = add i64 %22, -3 +23: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit.thread6 %25 = add i64 %4, -3 - %spec.select.i.i2 = tail call noundef i64 @llvm.umin.i64(i64 %24, i64 %25) + %spec.select.i.i2 = tail call noundef i64 @llvm.umin.i64(i64 %23, i64 %25) %26 = add nuw i64 %spec.select.i.i2, 3 %27 = icmp ne i64 %4, %26 %28 = icmp ne i64 %spec.select.i.i2, 0 @@ -178265,15 +178268,15 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEmm.exit.i: ; pred %.pre = load ptr, ptr %1, align 8 br label %.sink.split.i -.sink.split.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEmm.exit.i - %38 = phi ptr [ %.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEmm.exit.i ], [ %6, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit ] - %.sink.i = phi i64 [ %37, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEmm.exit.i ], [ 3, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit ] +.sink.split.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEmm.exit.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit.thread6 + %38 = phi ptr [ %.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEmm.exit.i ], [ %6, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit.thread6 ] + %.sink.i = phi i64 [ %37, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEmm.exit.i ], [ 3, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit.thread6 ] store i64 %.sink.i, ptr %3, align 8 %39 = getelementptr inbounds i8, ptr %38, i64 %.sink.i store i8 0, ptr %39, align 1 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEmm.exit -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEmm.exit: ; preds = %_ZNSt11char_traitsIcE4findEPKcmRS1_.exit.i.i, %16, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit, %2, %8, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i, %.sink.split.i +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEmm.exit: ; preds = %_ZNSt11char_traitsIcE4findEPKcmRS1_.exit.i.i, %16, %2, %8, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i, %.sink.split.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit.thread6, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit %40 = getelementptr inbounds nuw i8, ptr %0, i64 16 tail call void @_ZNSaIcEC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %1) #26 store ptr %40, ptr %0, align 8 @@ -186307,9 +186310,10 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i: ; pred _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i: ; preds = %28 %34 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %31) #28 %35 = load i64, ptr %9, align 8 - switch i64 %35, label %38 [ - i64 0, label %36 - i64 -1, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i + %36 = add i64 %35, 1 + switch i64 %36, label %39 [ + i64 1, label %37 + i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i ] 36: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i @@ -186318,8 +186322,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i: ; pr br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i 38: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i - %39 = add nuw i64 %35, 1 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %34, ptr noundef nonnull align 1 dereferenceable(1) %17, i64 %39, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %34, ptr align 1 %17, i64 %36, i1 false) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i: ; preds = %38, %36, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i @@ -186462,9 +186465,10 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i53: ; pr _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i57: ; preds = %85 %91 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %88) #28 %92 = load i64, ptr %9, align 8 - switch i64 %92, label %95 [ - i64 0, label %93 - i64 -1, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i58 + %93 = add i64 %92, 1 + switch i64 %93, label %96 [ + i64 1, label %94 + i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i58 ] 93: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i57 @@ -186473,8 +186477,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i57: ; br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i58 95: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i57 - %96 = add nuw i64 %92, 1 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %91, ptr noundef nonnull align 1 dereferenceable(1) %77, i64 %96, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %91, ptr align 1 %77, i64 %93, i1 false) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i58 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i58: ; preds = %95, %93, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i57 diff --git a/bench/nix/optimized/primops.ll b/bench/nix/optimized/primops.ll index d8f2a107236..c236929e1a2 100644 --- a/bench/nix/optimized/primops.ll +++ b/bench/nix/optimized/primops.ll @@ -82376,16 +82376,19 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit: ; preds = %20 = ptrtoint ptr %14 to i64 %21 = ptrtoint ptr %6 to i64 %22 = sub i64 %20, %21 - switch i64 %22, label %23 [ - i64 -1, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEmm.exit - i64 2, label %.sink.split.i - i64 3, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEmm.exit + %.not = icmp eq i64 %22, -1 + br i1 %.not, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEmm.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit.thread6 + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit.thread6:; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit + %23 = add i64 %22, -3 + switch i64 %23, label %24 [ + i64 -1, label %.sink.split.i + i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEmm.exit ] -23: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit - %24 = add i64 %22, -3 +23: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit.thread6 %25 = add i64 %4, -3 - %spec.select.i.i2 = tail call noundef i64 @llvm.umin.i64(i64 %24, i64 %25) + %spec.select.i.i2 = tail call noundef i64 @llvm.umin.i64(i64 %23, i64 %25) %26 = add nuw i64 %spec.select.i.i2, 3 %27 = icmp ne i64 %4, %26 %28 = icmp ne i64 %spec.select.i.i2, 0 @@ -82416,15 +82419,15 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEmm.exit.i: ; pred %.pre = load ptr, ptr %1, align 8 br label %.sink.split.i -.sink.split.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEmm.exit.i - %38 = phi ptr [ %.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEmm.exit.i ], [ %6, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit ] - %.sink.i = phi i64 [ %37, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEmm.exit.i ], [ 3, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit ] +.sink.split.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEmm.exit.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit.thread6 + %38 = phi ptr [ %.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEmm.exit.i ], [ %6, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit.thread6 ] + %.sink.i = phi i64 [ %37, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEmm.exit.i ], [ 3, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit.thread6 ] store i64 %.sink.i, ptr %3, align 8 %39 = getelementptr inbounds i8, ptr %38, i64 %.sink.i store i8 0, ptr %39, align 1 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEmm.exit -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEmm.exit: ; preds = %_ZNSt11char_traitsIcE4findEPKcmRS1_.exit.i.i, %16, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit, %2, %8, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i, %.sink.split.i +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEmm.exit: ; preds = %_ZNSt11char_traitsIcE4findEPKcmRS1_.exit.i.i, %16, %2, %8, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i, %.sink.split.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit.thread6, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm.exit %40 = getelementptr inbounds nuw i8, ptr %0, i64 16 tail call void @_ZNSaIcEC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %1) #30 store ptr %40, ptr %0, align 8 @@ -95121,9 +95124,10 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i: ; pr .noexc17: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i %72 = load i64, ptr %31, align 8 - switch i64 %72, label %75 [ - i64 0, label %73 - i64 -1, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i + %73 = add i64 %72, 1 + switch i64 %73, label %76 [ + i64 1, label %74 + i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i ] 73: ; preds = %.noexc17 @@ -95132,8 +95136,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i: ; pr br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i 75: ; preds = %.noexc17 - %76 = add nuw i64 %72, 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %71, ptr noundef nonnull align 1 dereferenceable(1) %55, i64 %76, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %71, ptr align 1 %55, i64 %73, i1 false) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i: ; preds = %75, %73, %.noexc17 @@ -102297,9 +102300,10 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i: ; pred _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i: ; preds = %28 %34 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %31) #32 %35 = load i64, ptr %9, align 8 - switch i64 %35, label %38 [ - i64 0, label %36 - i64 -1, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i + %36 = add i64 %35, 1 + switch i64 %36, label %39 [ + i64 1, label %37 + i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i ] 36: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i @@ -102308,8 +102312,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i: ; pr br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i 38: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i - %39 = add nuw i64 %35, 1 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %34, ptr noundef nonnull align 1 dereferenceable(1) %17, i64 %39, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %34, ptr align 1 %17, i64 %36, i1 false) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i: ; preds = %38, %36, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i @@ -102452,9 +102455,10 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i53: ; pr _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i57: ; preds = %85 %91 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %88) #32 %92 = load i64, ptr %9, align 8 - switch i64 %92, label %95 [ - i64 0, label %93 - i64 -1, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i58 + %93 = add i64 %92, 1 + switch i64 %93, label %96 [ + i64 1, label %94 + i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i58 ] 93: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i57 @@ -102463,8 +102467,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i57: ; br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i58 95: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i57 - %96 = add nuw i64 %92, 1 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %91, ptr noundef nonnull align 1 dereferenceable(1) %77, i64 %96, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %91, ptr align 1 %77, i64 %93, i1 false) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i58 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit.i58: ; preds = %95, %93, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i57 diff --git a/bench/opencv/optimized/grfmt_jpeg.ll b/bench/opencv/optimized/grfmt_jpeg.ll index cd6f4b516f3..e95d61ec354 100644 --- a/bench/opencv/optimized/grfmt_jpeg.ll +++ b/bench/opencv/optimized/grfmt_jpeg.ll @@ -1269,33 +1269,33 @@ define hidden noundef zeroext i1 @_ZN2cv11JpegEncoder5writeERKNS_3MatERKSt6vecto %58 = load i32, ptr %1, align 8, !tbaa !138 %59 = lshr i32 %58, 3 %60 = and i32 %59, 511 - %61 = icmp ne i32 %60, 0 - switch i32 %60, label %64 [ - i32 0, label %78 - i32 2, label %62 + %61 = add nuw nsw i32 %60, 1 + %62 = icmp ne i32 %60, 0 + switch i32 %61, label %65 [ + i32 1, label %78 i32 3, label %63 + i32 4, label %64 ] -62: ; preds = %55 - br label %78 - 63: ; preds = %55 br label %78 64: ; preds = %55 - %65 = add nuw nsw i32 %60, 1 + br label %78 + +65: ; preds = %55 call void @llvm.lifetime.start.p0(ptr nonnull %9) - invoke void (ptr, ptr, ...) @_ZN2cv6formatB5cxx11EPKcz(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull @.str.4, i32 noundef %65) + invoke void (ptr, ptr, ...) @_ZN2cv6formatB5cxx11EPKcz(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull @.str.4, i32 noundef %61) to label %66 unwind label %68 -66: ; preds = %64 +66: ; preds = %65 invoke void @_ZN2cv5errorEiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKcS9_i(i32 noundef -2, ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull @__func__._ZN2cv11JpegEncoder5writeERKNS_3MatERKSt6vectorIiSaIiEE, ptr noundef nonnull @.str.5, i32 noundef 697) #29 to label %67 unwind label %70 67: ; preds = %66 unreachable -68: ; preds = %64 +68: ; preds = %65 %69 = landingpad { ptr, i32 } cleanup br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit @@ -1324,11 +1324,10 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKS call void @llvm.lifetime.end.p0(ptr nonnull %9) br label %292 -78: ; preds = %55, %63, %62 - %.sink344 = phi i32 [ 4, %63 ], [ 3, %62 ], [ 1, %55 ] - %.sink = phi i32 [ 9, %63 ], [ 8, %62 ], [ 1, %55 ] +78: ; preds = %55, %64, %63 + %.sink344 = phi i32 [ 9, %64 ], [ 8, %63 ], [ %61, %55 ] %79 = getelementptr inbounds nuw i8, ptr %6, i64 56 - store i32 %.sink344, ptr %79, align 8, !tbaa !198 + store i32 %61, ptr %79, align 8, !tbaa !198 %80 = getelementptr inbounds nuw i8, ptr %6, i64 60 store i32 %.sink, ptr %80, align 4, !tbaa !199 %81 = getelementptr inbounds nuw i8, ptr %2, i64 8 @@ -1725,7 +1724,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18 228: ; preds = %226, %225 %229 = icmp ne i32 %.0133.lcssa, 0 - %or.cond = select i1 %61, i1 %229, i1 false + %or.cond = select i1 %62, i1 %229, i1 false br i1 %or.cond, label %230, label %241 230: ; preds = %228 diff --git a/bench/openexr/optimized/internal_structs.ll b/bench/openexr/optimized/internal_structs.ll index a029707cc65..643b3cfb976 100644 --- a/bench/openexr/optimized/internal_structs.ll +++ b/bench/openexr/optimized/internal_structs.ll @@ -161,24 +161,25 @@ declare void @llvm.memcpy.p0.p0.i64(ptr noalias writeonly captures(none), ptr no define hidden void @internal_exr_revert_add_part(ptr noundef %0, ptr noundef captures(none) %1, ptr noundef writeonly captures(none) initializes((0, 4)) %2) local_unnamed_addr #0 { %4 = getelementptr inbounds nuw i8, ptr %0, i64 196 %5 = load i32, ptr %4, align 4, !tbaa !3 - %6 = load ptr, ptr %1, align 8, !tbaa !39 + %6 = add nsw i32 %5, -1 + %7 = load ptr, ptr %1, align 8, !tbaa !39 store ptr null, ptr %1, align 8, !tbaa !39 store i32 -1, ptr %2, align 4, !tbaa !22 %7 = getelementptr inbounds nuw i8, ptr %0, i64 96 %8 = load ptr, ptr %7, align 8, !tbaa !25 - %9 = getelementptr inbounds nuw i8, ptr %6, i64 8 + %9 = getelementptr inbounds nuw i8, ptr %7, i64 8 %10 = tail call i32 @exr_attr_list_destroy(ptr noundef %0, ptr noundef nonnull %9) #12 - %11 = getelementptr inbounds nuw i8, ptr %6, i64 200 + %11 = getelementptr inbounds nuw i8, ptr %7, i64 200 %12 = load ptr, ptr %11, align 8, !tbaa !42 %.not.i = icmp eq ptr %12, null br i1 %.not.i, label %14, label %13 13: ; preds = %3 - tail call void %8(ptr noundef nonnull %12) #12 + tail call void %9(ptr noundef nonnull %12) #12 br label %14 14: ; preds = %13, %3 - %15 = getelementptr inbounds nuw i8, ptr %6, i64 256 + %15 = getelementptr inbounds nuw i8, ptr %7, i64 256 %16 = load atomic i64, ptr %15 seq_cst, align 8 store atomic i64 0, ptr %15 seq_cst, align 8 %17 = add i64 %16, -1 @@ -187,13 +188,13 @@ define hidden void @internal_exr_revert_add_part(ptr noundef %0, ptr noundef cap 18: ; preds = %14 %19 = inttoptr i64 %16 to ptr - tail call void %8(ptr noundef %19) #12 + tail call void %9(ptr noundef %19) #12 br label %internal_exr_destroy_part.exit internal_exr_destroy_part.exit: ; preds = %14, %18 - switch i32 %5, label %.preheader [ - i32 1, label %24 - i32 2, label %26 + switch i32 %6, label %.preheader [ + i32 0, label %24 + i32 1, label %26 ] .preheader: ; preds = %internal_exr_destroy_part.exit @@ -214,7 +215,7 @@ internal_exr_destroy_part.exit: ; preds = %14, %18 26: ; preds = %internal_exr_destroy_part.exit %27 = getelementptr inbounds nuw i8, ptr %0, i64 200 - %28 = icmp eq ptr %6, %27 + %28 = icmp eq ptr %7, %27 %29 = getelementptr inbounds nuw i8, ptr %0, i64 472 %30 = load ptr, ptr %29, align 8, !tbaa !38 br i1 %28, label %31, label %._crit_edge @@ -230,16 +231,16 @@ internal_exr_destroy_part.exit: ; preds = %14, %18 store ptr %27, ptr %34, align 8, !tbaa !23 %35 = load ptr, ptr %7, align 8, !tbaa !25 %36 = getelementptr inbounds nuw i8, ptr %0, i64 472 - tail call void %35(ptr noundef %30) #12 + tail call void %36(ptr noundef %30) #12 store ptr %34, ptr %36, align 8, !tbaa !38 br label %.loopexit 37: ; preds = %.lr.ph, %45 - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %45 ] - %.03337 = phi i32 [ 0, %.lr.ph ], [ %.1, %45 ] + %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %46 ] + %.03337 = phi i32 [ 0, %.lr.ph ], [ %.1, %46 ] %38 = getelementptr inbounds nuw ptr, ptr %23, i64 %indvars.iv %39 = load ptr, ptr %38, align 8, !tbaa !39 - %40 = icmp eq ptr %39, %6 + %40 = icmp eq ptr %39, %7 br i1 %40, label %45, label %41 41: ; preds = %37 @@ -250,14 +251,13 @@ internal_exr_destroy_part.exit: ; preds = %14, %18 br label %45 45: ; preds = %37, %41 - %.1 = phi i32 [ %.03337, %37 ], [ %44, %41 ] + %.1 = phi i32 [ %.03337, %38 ], [ %44, %42 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %.loopexit, label %37, !llvm.loop !51 .loopexit: ; preds = %45, %.preheader, %._crit_edge, %24 - %46 = add nsw i32 %5, -1 - store i32 %46, ptr %4, align 4, !tbaa !3 + store i32 %6, ptr %4, align 4, !tbaa !3 ret void } diff --git a/bench/openjdk/optimized/pngpread.ll b/bench/openjdk/optimized/pngpread.ll index 66819babf04..e8f30d331eb 100644 --- a/bench/openjdk/optimized/pngpread.ll +++ b/bench/openjdk/optimized/pngpread.ll @@ -2146,49 +2146,52 @@ define hidden void @png_read_push_finish_row(ptr noalias noundef captures(none) br label %.critedge .critedge: ; preds = %53, %11 - %.pr37 = phi i8 [ %39, %53 ], [ %.promoted, %11 ] + %.pr37 = phi i8 [ %39, %55 ], [ %.promoted, %11 ] %22 = add i8 %.pr37, 1 - switch i8 %.pr37, label %.thread32 [ - i8 0, label %23 - i8 2, label %26 - i8 4, label %29 + %23 = icmp eq i8 %.pr.thread32, 0 + br i1 %23, label %24, label %27 + +24:; preds = %.critedge + %25 = load i32, ptr %18, align 8 + %26 = icmp ult i32 %25, 5 + br i1 %26, label %.thread35, label %._crit_edge + +27: ; preds = %.critedge + switch i8 %22, label %.thread32 [ + i8 3, label %28 + i8 5, label %31 ] -23: ; preds = %.critedge +23: ; preds = %27 %24 = load i32, ptr %18, align 8 - %25 = icmp ult i32 %24, 5 + %25 = icmp ult i32 %24, 3 br i1 %25, label %.thread35, label %._crit_edge -26: ; preds = %.critedge +26: ; preds = %27 %27 = load i32, ptr %18, align 8 - %28 = icmp ult i32 %27, 3 + %28 = icmp ult i32 %27, 2 br i1 %28, label %.thread35, label %._crit_edge -29: ; preds = %.critedge - %30 = load i32, ptr %18, align 8 - %31 = icmp ult i32 %30, 2 - br i1 %31, label %.thread35, label %._crit_edge +29: ; preds = %31, %28, %24 + %34 = phi i32 [ %32, %31 ], [ %29, %28 ], [ %25, %24 ] + %35 = add i8 %.pr37, 2 + br label %39 -.thread35: ; preds = %29, %26, %23 - %32 = phi i32 [ %30, %29 ], [ %27, %26 ], [ %24, %23 ] - %33 = add nuw nsw i8 %.pr37, 2 - br label %37 +.thread35: ; preds = %27 + %36 = icmp ugt i8 %22, 7 + br i1 %36, label %.sink.split, label %.thread32 -.thread32: ; preds = %.critedge - %34 = icmp ugt i8 %22, 7 +.thread32: ; preds = %.thread32 + %34 = icmp eq i8 %22, 7 br i1 %34, label %.sink.split, label %35 -35: ; preds = %.thread32 - %36 = icmp eq i8 %22, 7 - br i1 %36, label %.sink.split, label %._crit_edge - -._crit_edge: ; preds = %23, %26, %29, %35 +35: ; preds = %24, %28, %31, %.thread32 %.pre = load i32, ptr %18, align 8 br label %37 37: ; preds = %._crit_edge, %.thread35 - %38 = phi i32 [ %32, %.thread35 ], [ %.pre, %._crit_edge ] - %39 = phi i8 [ %33, %.thread35 ], [ %22, %._crit_edge ] + %38 = phi i32 [ %34, %.thread35 ], [ %.pre, %._crit_edge ] + %39 = phi i8 [ %35, %.thread35 ], [ %22, %._crit_edge ] %40 = zext nneg i8 %39 to i64 %41 = getelementptr inbounds nuw [7 x i8], ptr @png_read_push_finish_row.png_pass_inc, i64 0, i64 %40 %42 = load i8, ptr %41, align 1 @@ -2224,8 +2227,8 @@ define hidden void @png_read_push_finish_row(ptr noalias noundef captures(none) %or.cond = select i1 %65, i1 true, i1 %66 br i1 %or.cond, label %.critedge, label %.sink.split, !llvm.loop !98 -.sink.split: ; preds = %53, %35, %37, %.thread32 - %.pr39.sink = phi i8 [ %.pr37, %.thread32 ], [ %39, %37 ], [ 7, %35 ], [ %39, %53 ] +.sink.split: ; preds = %53, %37, %37, %.thread32 + %.pr39.sink = phi i8 [ %.pr37, %.thread32 ], [ %39, %39 ], [ 7, %37 ], [ %39, %55 ] store i8 %.pr39.sink, ptr %17, align 1 br label %67 diff --git a/bench/openjdk/optimized/sharedRuntimeTrig.ll b/bench/openjdk/optimized/sharedRuntimeTrig.ll index e4bb7580de3..8b7f5aa017a 100644 --- a/bench/openjdk/optimized/sharedRuntimeTrig.ll +++ b/bench/openjdk/optimized/sharedRuntimeTrig.ll @@ -799,9 +799,9 @@ _ZL7scalbnAdi.exit.i: ; preds = %209, %206, %198, %1 br i1 %154, label %254, label %261 254: ; preds = %252 - switch i32 %.neg262.i, label %261 [ - i32 25, label %.sink.split185.i - i32 26, label %255 + switch i32 %127, label %261 [ + i32 1, label %.sink.split185.i + i32 2, label %255 ] 255: ; preds = %254 diff --git a/bench/openspiel/optimized/Par.ll b/bench/openspiel/optimized/Par.ll index d3e9321beab..d431fb5abea 100644 --- a/bench/openspiel/optimized/Par.ll +++ b/bench/openspiel/optimized/Par.ll @@ -261,7 +261,7 @@ switch.lookup90: ; preds = %86 br label %_Z18CalcMultiContractsii.exit _Z18CalcMultiContractsii.exit: ; preds = %86, %switch.lookup90, %84, %switch.lookup, %72, %88, %89 - %.0.i = phi i32 [ %..i, %89 ], [ %switch.select14.i, %88 ], [ %83, %72 ], [ %switch.load, %switch.lookup ], [ 5, %84 ], [ %switch.load93, %switch.lookup90 ], [ 4, %86 ] + %.0.i = phi i32 [ %..i, %89 ], [ %83, %72 ], [ %switch.select14.i, %88 ], [ %switch.load, %switch.lookup ], [ 5, %84 ], [ %switch.load93, %switch.lookup90 ], [ 4, %86 ] %93 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %5, ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %.0.i) #13 %94 = getelementptr inbounds nuw i8, ptr %73, i64 12 %95 = load i32, ptr %94, align 4 @@ -454,9 +454,9 @@ define range(i32 -1, 2) i32 @SidesParBin(ptr noundef readonly captures(none) %0, %58 = icmp slt i32 %.sroa.speculated, %.sink.i %.pn.i = select i1 %58, i32 50, i32 %21 %.1.i = add nsw i32 %.pn.i, %.0.i - switch i32 %.sroa.speculated, label %_Z8rawscoreiii.exit [ - i32 12, label %59 - i32 13, label %61 + switch i32 %47, label %_Z8rawscoreiii.exit [ + i32 6, label %59 + i32 7, label %61 ] 59: ; preds = %57 @@ -610,9 +610,9 @@ _Z8rawscoreiii.exit: ; preds = %61, %59, %57, %_Z8r %124 = icmp slt i32 %93, %.sink.i489 %.pn.i492 = select i1 %124, i32 50, i32 %21 %.1.i493 = add nsw i32 %.pn.i492, %.0.i490 - switch i32 %93, label %_Z8rawscoreiii.exit496 [ - i32 12, label %125 - i32 13, label %127 + switch i32 %113, label %_Z8rawscoreiii.exit496 [ + i32 6, label %125 + i32 7, label %127 ] 125: ; preds = %123 @@ -1540,11 +1540,12 @@ declare ptr @strcat(ptr noalias noundef returned, ptr noalias noundef readonly c ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define noundef range(i32 -2147483648, 2147483642) i32 @_Z18CalcMultiContractsii(i32 noundef %0, i32 noundef %1) local_unnamed_addr #7 { - switch i32 %1, label %10 [ - i32 11, label %3 - i32 10, label %5 - i32 9, label %7 - i32 8, label %8 + %3 = add nsw i32 %1, -6 + switch i32 %3, label %13 [ + i32 5, label %4 + i32 4, label %6 + i32 3, label %8 + i32 2, label %9 ] 3: ; preds = %2 @@ -1564,14 +1565,10 @@ define noundef range(i32 -2147483648, 2147483642) i32 @_Z18CalcMultiContractsii( %switch.select14 = select i1 %switch.selectcmp13, i32 123, i32 %switch.select br label %14 -8: ; preds = %2 - %9 = icmp eq i32 %0, 1 - %. = select i1 %9, i32 12, i32 2 - br label %14 - 10: ; preds = %2 - %11 = add nsw i32 %1, -6 - br label %14 + %10 = icmp eq i32 %0, 1 + %. = select i1 %10, i32 12, i32 2 + br label %13 switch.lookup: ; preds = %3 %12 = zext nneg i32 %switch.tableidx to i64 @@ -1585,8 +1582,8 @@ switch.lookup15: ; preds = %5 %switch.load18 = load i32, ptr %switch.gep17, align 4 br label %14 -14: ; preds = %5, %switch.lookup15, %3, %switch.lookup, %7, %8, %10 - %.0 = phi i32 [ %11, %10 ], [ %., %8 ], [ %switch.select14, %7 ], [ %switch.load, %switch.lookup ], [ 5, %3 ], [ %switch.load18, %switch.lookup15 ], [ 4, %5 ] +14: ; preds = %5, %switch.lookup15, %3, %switch.lookup, %7, %2, %10 + %.0 = phi i32 [ %., %9 ], [ %3, %2 ], [ %switch.select14, %8 ], [ %switch.load, %switch.lookup ], [ 5, %4 ], [ %switch.load18, %switch.lookup15 ], [ 4, %6 ] ret i32 %.0 } @@ -1651,9 +1648,9 @@ define noundef range(i32 -2147483598, -2147483648) i32 @_Z8rawscoreiii(i32 nound %30 = select i1 %.not35, i32 300, i32 500 %.pn = select i1 %29, i32 50, i32 %30 %.1 = add nsw i32 %.0, %.pn - switch i32 %1, label %37 [ - i32 12, label %31 - i32 13, label %34 + switch i32 %18, label %37 [ + i32 6, label %31 + i32 7, label %34 ] 31: ; preds = %28 diff --git a/bench/openusd/optimized/decodemv.ll b/bench/openusd/optimized/decodemv.ll index 0acbaf1ce12..020752cb109 100644 --- a/bench/openusd/optimized/decodemv.ll +++ b/bench/openusd/optimized/decodemv.ll @@ -3249,13 +3249,13 @@ read_inter_mode.exit.i: ; preds = %850, %._crit_edge.l %996 = add i8 %995, 17 %997 = getelementptr inbounds nuw i8, ptr %14, i64 2 store i8 %996, ptr %997, align 2 - switch i8 %995, label %read_drl_idx.exit.i [ - i8 -1, label %have_nearmv_in_inter_mode.exit.thread.i - i8 7, label %have_nearmv_in_inter_mode.exit.thread.i - i8 4, label %have_nearmv_in_inter_mode.exit.thread.i - i8 1, label %have_nearmv_in_inter_mode.exit.thread.i - i8 -3, label %have_nearmv_in_inter_mode.exit.thread.i - i8 5, label %have_nearmv_in_inter_mode.exit.thread.i + switch i8 %996, label %read_drl_idx.exit.i [ + i8 16, label %have_nearmv_in_inter_mode.exit.thread.i + i8 24, label %have_nearmv_in_inter_mode.exit.thread.i + i8 21, label %have_nearmv_in_inter_mode.exit.thread.i + i8 18, label %have_nearmv_in_inter_mode.exit.thread.i + i8 14, label %have_nearmv_in_inter_mode.exit.thread.i + i8 22, label %have_nearmv_in_inter_mode.exit.thread.i ] have_nearmv_in_inter_mode.exit.thread.i: ; preds = %read_inter_mode.exit.i.thread101, %read_inter_mode.exit.i, %read_inter_mode.exit.i, %read_inter_mode.exit.i, %read_inter_mode.exit.i, %read_inter_mode.exit.i, %read_inter_mode.exit.i diff --git a/bench/openusd/optimized/tessellation.ll b/bench/openusd/optimized/tessellation.ll index d22a10f4b7e..4ee4eacccb6 100644 --- a/bench/openusd/optimized/tessellation.ll +++ b/bench/openusd/optimized/tessellation.ll @@ -1164,10 +1164,9 @@ _ZN10OpenSubdiv6v3_6_03Bfr4quad21getInteriorRingCoordsIfEEiiiT_S4_S4_S4_NS1_12_G %.03411.us.us.us.i = phi i32 [ %.034.us.us.us.i, %_ZN10OpenSubdiv6v3_6_03Bfr4qsub21getInteriorRingCoordsIfEEiNS1_16ParameterizationEiT_S5_NS1_12_GLOBAL__N_111Coord2ArrayIS5_EE.exit.us.us.us.i ], [ %.0345.i, %.lr.ph.split.us.split.us.i ] %.0328.us.us.us.i = phi i32 [ %166, %_ZN10OpenSubdiv6v3_6_03Bfr4qsub21getInteriorRingCoordsIfEEiNS1_16ParameterizationEiT_S5_NS1_12_GLOBAL__N_111Coord2ArrayIS5_EE.exit.us.us.us.i ], [ 0, %.lr.ph.split.us.split.us.i ] %.0337.us.us.us.i = phi i32 [ %.1.us.us.us.i, %_ZN10OpenSubdiv6v3_6_03Bfr4qsub21getInteriorRingCoordsIfEEiNS1_16ParameterizationEiT_S5_NS1_12_GLOBAL__N_111Coord2ArrayIS5_EE.exit.us.us.us.i ], [ 0, %.lr.ph.split.us.split.us.i ] - %.034.in6.us.us.us.i = phi i32 [ %.03411.us.us.us.i, %_ZN10OpenSubdiv6v3_6_03Bfr4qsub21getInteriorRingCoordsIfEEiNS1_16ParameterizationEiT_S5_NS1_12_GLOBAL__N_111Coord2ArrayIS5_EE.exit.us.us.us.i ], [ %140, %.lr.ph.split.us.split.us.i ] - switch i32 %.034.in6.us.us.us.i, label %_ZN10OpenSubdiv6v3_6_03Bfr4qsub21getInteriorRingCoordsIfEEiNS1_16ParameterizationEiT_S5_NS1_12_GLOBAL__N_111Coord2ArrayIS5_EE.exit.us.us.us.i [ - i32 2, label %160 - i32 3, label %._crit_edge.i.us.us.us.i + switch i32 %.03411.us.us.us.i, label %_ZN10OpenSubdiv6v3_6_03Bfr4qsub21getInteriorRingCoordsIfEEiNS1_16ParameterizationEiT_S5_NS1_12_GLOBAL__N_111Coord2ArrayIS5_EE.exit.us.us.us.i [ + i32 0, label %160 + i32 1, label %._crit_edge.i.us.us.us.i ] ._crit_edge.i.us.us.us.i: ; preds = %.lr.ph.split.us.split.us.split.us.i @@ -1195,10 +1194,9 @@ _ZN10OpenSubdiv6v3_6_03Bfr4qsub21getInteriorRingCoordsIfEEiNS1_16Parameterizatio %.03411.us.us.i = phi i32 [ %.034.us.us.i, %_ZN10OpenSubdiv6v3_6_03Bfr4qsub21getInteriorRingCoordsIfEEiNS1_16ParameterizationEiT_S5_NS1_12_GLOBAL__N_111Coord2ArrayIS5_EE.exit.us.us.i ], [ %.0345.i, %.lr.ph.split.us.split.us.i ] %.0328.us.us.i = phi i32 [ %177, %_ZN10OpenSubdiv6v3_6_03Bfr4qsub21getInteriorRingCoordsIfEEiNS1_16ParameterizationEiT_S5_NS1_12_GLOBAL__N_111Coord2ArrayIS5_EE.exit.us.us.i ], [ 0, %.lr.ph.split.us.split.us.i ] %.0337.us.us.i = phi i32 [ %.1.us.us.i, %_ZN10OpenSubdiv6v3_6_03Bfr4qsub21getInteriorRingCoordsIfEEiNS1_16ParameterizationEiT_S5_NS1_12_GLOBAL__N_111Coord2ArrayIS5_EE.exit.us.us.i ], [ 0, %.lr.ph.split.us.split.us.i ] - %.034.in6.us.us.i = phi i32 [ %.03411.us.us.i, %_ZN10OpenSubdiv6v3_6_03Bfr4qsub21getInteriorRingCoordsIfEEiNS1_16ParameterizationEiT_S5_NS1_12_GLOBAL__N_111Coord2ArrayIS5_EE.exit.us.us.i ], [ %140, %.lr.ph.split.us.split.us.i ] - switch i32 %.034.in6.us.us.i, label %_ZN10OpenSubdiv6v3_6_03Bfr4qsub21getInteriorRingCoordsIfEEiNS1_16ParameterizationEiT_S5_NS1_12_GLOBAL__N_111Coord2ArrayIS5_EE.exit.us.us.i [ - i32 2, label %171 - i32 3, label %._crit_edge.i.us.us.i + switch i32 %.03411.us.us.i, label %_ZN10OpenSubdiv6v3_6_03Bfr4qsub21getInteriorRingCoordsIfEEiNS1_16ParameterizationEiT_S5_NS1_12_GLOBAL__N_111Coord2ArrayIS5_EE.exit.us.us.i [ + i32 0, label %171 + i32 1, label %._crit_edge.i.us.us.i ] ._crit_edge.i.us.us.i: ; preds = %.lr.ph.split.us.split.us.split.i @@ -1241,9 +1239,9 @@ _ZN10OpenSubdiv6v3_6_03Bfr4qsub21getInteriorRingCoordsIfEEiNS1_16Parameterizatio %178 = mul nsw i32 %.0337.i, %13 %179 = sext i32 %178 to i64 %180 = getelementptr inbounds float, ptr %1, i64 %179 - switch i32 %.034.in6.i, label %.lr.ph.i49.preheader.i [ - i32 2, label %181 - i32 3, label %.noexc.preheader.i + switch i32 %.03411.i, label %.lr.ph.i49.preheader.i [ + i32 0, label %181 + i32 1, label %.noexc.preheader.i ] 181: ; preds = %.lr.ph.split.i @@ -1785,10 +1783,9 @@ _ZN10OpenSubdiv6v3_6_03Bfr4quad21getInteriorRingCoordsIdEEiiiT_S4_S4_S4_NS1_12_G %.03411.us.us.us.i = phi i32 [ %.034.us.us.us.i, %_ZN10OpenSubdiv6v3_6_03Bfr4qsub21getInteriorRingCoordsIdEEiNS1_16ParameterizationEiT_S5_NS1_12_GLOBAL__N_111Coord2ArrayIS5_EE.exit.us.us.us.i ], [ %.0345.i, %.lr.ph.split.us.split.us.i ] %.0328.us.us.us.i = phi i32 [ %166, %_ZN10OpenSubdiv6v3_6_03Bfr4qsub21getInteriorRingCoordsIdEEiNS1_16ParameterizationEiT_S5_NS1_12_GLOBAL__N_111Coord2ArrayIS5_EE.exit.us.us.us.i ], [ 0, %.lr.ph.split.us.split.us.i ] %.0337.us.us.us.i = phi i32 [ %.1.us.us.us.i, %_ZN10OpenSubdiv6v3_6_03Bfr4qsub21getInteriorRingCoordsIdEEiNS1_16ParameterizationEiT_S5_NS1_12_GLOBAL__N_111Coord2ArrayIS5_EE.exit.us.us.us.i ], [ 0, %.lr.ph.split.us.split.us.i ] - %.034.in6.us.us.us.i = phi i32 [ %.03411.us.us.us.i, %_ZN10OpenSubdiv6v3_6_03Bfr4qsub21getInteriorRingCoordsIdEEiNS1_16ParameterizationEiT_S5_NS1_12_GLOBAL__N_111Coord2ArrayIS5_EE.exit.us.us.us.i ], [ %140, %.lr.ph.split.us.split.us.i ] - switch i32 %.034.in6.us.us.us.i, label %_ZN10OpenSubdiv6v3_6_03Bfr4qsub21getInteriorRingCoordsIdEEiNS1_16ParameterizationEiT_S5_NS1_12_GLOBAL__N_111Coord2ArrayIS5_EE.exit.us.us.us.i [ - i32 2, label %160 - i32 3, label %._crit_edge.i.us.us.us.i + switch i32 %.03411.us.us.us.i, label %_ZN10OpenSubdiv6v3_6_03Bfr4qsub21getInteriorRingCoordsIdEEiNS1_16ParameterizationEiT_S5_NS1_12_GLOBAL__N_111Coord2ArrayIS5_EE.exit.us.us.us.i [ + i32 0, label %160 + i32 1, label %._crit_edge.i.us.us.us.i ] ._crit_edge.i.us.us.us.i: ; preds = %.lr.ph.split.us.split.us.split.us.i @@ -1816,10 +1813,9 @@ _ZN10OpenSubdiv6v3_6_03Bfr4qsub21getInteriorRingCoordsIdEEiNS1_16Parameterizatio %.03411.us.us.i = phi i32 [ %.034.us.us.i, %_ZN10OpenSubdiv6v3_6_03Bfr4qsub21getInteriorRingCoordsIdEEiNS1_16ParameterizationEiT_S5_NS1_12_GLOBAL__N_111Coord2ArrayIS5_EE.exit.us.us.i ], [ %.0345.i, %.lr.ph.split.us.split.us.i ] %.0328.us.us.i = phi i32 [ %177, %_ZN10OpenSubdiv6v3_6_03Bfr4qsub21getInteriorRingCoordsIdEEiNS1_16ParameterizationEiT_S5_NS1_12_GLOBAL__N_111Coord2ArrayIS5_EE.exit.us.us.i ], [ 0, %.lr.ph.split.us.split.us.i ] %.0337.us.us.i = phi i32 [ %.1.us.us.i, %_ZN10OpenSubdiv6v3_6_03Bfr4qsub21getInteriorRingCoordsIdEEiNS1_16ParameterizationEiT_S5_NS1_12_GLOBAL__N_111Coord2ArrayIS5_EE.exit.us.us.i ], [ 0, %.lr.ph.split.us.split.us.i ] - %.034.in6.us.us.i = phi i32 [ %.03411.us.us.i, %_ZN10OpenSubdiv6v3_6_03Bfr4qsub21getInteriorRingCoordsIdEEiNS1_16ParameterizationEiT_S5_NS1_12_GLOBAL__N_111Coord2ArrayIS5_EE.exit.us.us.i ], [ %140, %.lr.ph.split.us.split.us.i ] - switch i32 %.034.in6.us.us.i, label %_ZN10OpenSubdiv6v3_6_03Bfr4qsub21getInteriorRingCoordsIdEEiNS1_16ParameterizationEiT_S5_NS1_12_GLOBAL__N_111Coord2ArrayIS5_EE.exit.us.us.i [ - i32 2, label %171 - i32 3, label %._crit_edge.i.us.us.i + switch i32 %.03411.us.us.i, label %_ZN10OpenSubdiv6v3_6_03Bfr4qsub21getInteriorRingCoordsIdEEiNS1_16ParameterizationEiT_S5_NS1_12_GLOBAL__N_111Coord2ArrayIS5_EE.exit.us.us.i [ + i32 0, label %171 + i32 1, label %._crit_edge.i.us.us.i ] ._crit_edge.i.us.us.i: ; preds = %.lr.ph.split.us.split.us.split.i @@ -1862,9 +1858,9 @@ _ZN10OpenSubdiv6v3_6_03Bfr4qsub21getInteriorRingCoordsIdEEiNS1_16Parameterizatio %178 = mul nsw i32 %.0337.i, %13 %179 = sext i32 %178 to i64 %180 = getelementptr inbounds double, ptr %1, i64 %179 - switch i32 %.034.in6.i, label %.lr.ph.i49.preheader.i [ - i32 2, label %181 - i32 3, label %.noexc.preheader.i + switch i32 %.03411.i, label %.lr.ph.i49.preheader.i [ + i32 0, label %181 + i32 1, label %.noexc.preheader.i ] 181: ; preds = %.lr.ph.split.i diff --git a/bench/pbrt-v4/optimized/aggregate.ll b/bench/pbrt-v4/optimized/aggregate.ll index 91def66f877..dfcd2364819 100644 --- a/bench/pbrt-v4/optimized/aggregate.ll +++ b/bench/pbrt-v4/optimized/aggregate.ll @@ -2524,15 +2524,16 @@ _ZNK4pbrt11Interaction8SpawnRayENS_7Vector3IfEE.exit: ; preds = %178, %188 %460 = inttoptr i64 %171 to ptr %461 = lshr i64 %.sroa.077.0.lcssa, 57 %462 = trunc nuw nsw i64 %461 to i32 - switch i32 %462, label %479 [ - i32 1, label %463 - i32 2, label %465 - i32 3, label %467 - i32 4, label %469 - i32 5, label %472 - i32 6, label %475 - i32 7, label %_ZNK4pbrt8Material15GetDisplacementEv.exit - i32 8, label %477 + %463 = add nsw i32 %462, -1 + switch i32 %463, label %480 [ + i32 0, label %464 + i32 1, label %466 + i32 2, label %468 + i32 3, label %470 + i32 4, label %473 + i32 5, label %475 + i32 6, label %_ZNK4pbrt8Material15GetDisplacementEv.exit + i32 7, label %478 ] 463: ; preds = %459 @@ -2566,8 +2567,7 @@ _ZNK4pbrt11Interaction8SpawnRayENS_7Vector3IfEE.exit: ; preds = %178, %188 br label %_ZNK4pbrt8Material15GetDisplacementEv.exit 479: ; preds = %459 - %480 = add nsw i32 %462, -1 - %481 = and i32 %480, -2 + %481 = and i32 %463, -2 %switch.i.i.i.i = icmp eq i32 %481, 8 br i1 %switch.i.i.i.i, label %_ZN4pbrt6detail8DispatchIRZNKS_8Material15GetDisplacementEvEUlT_E_NS_12FloatTextureENS_18SubsurfaceMaterialENS_22ThinDielectricMaterialENS_11MixMaterialEEET0_OS3_PKvi.exit.i.i.i, label %482 @@ -2580,15 +2580,14 @@ _ZN4pbrt6detail8DispatchIRZNKS_8Material15GetDisplacementEvEUlT_E_NS_12FloatText br label %_ZNK4pbrt8Material15GetDisplacementEv.exit _ZNK4pbrt8Material15GetDisplacementEv.exit: ; preds = %459, %463, %465, %467, %469, %472, %475, %477, %_ZN4pbrt6detail8DispatchIRZNKS_8Material15GetDisplacementEvEUlT_E_NS_12FloatTextureENS_18SubsurfaceMaterialENS_22ThinDielectricMaterialENS_11MixMaterialEEET0_OS3_PKvi.exit.i.i.i - %storemerge.i.sink.i.i.i = phi i64 [ %storemerge.i.i.i.i, %_ZN4pbrt6detail8DispatchIRZNKS_8Material15GetDisplacementEvEUlT_E_NS_12FloatTextureENS_18SubsurfaceMaterialENS_22ThinDielectricMaterialENS_11MixMaterialEEET0_OS3_PKvi.exit.i.i.i ], [ %478, %477 ], [ %476, %475 ], [ %474, %472 ], [ %471, %469 ], [ %468, %467 ], [ %466, %465 ], [ %464, %463 ], [ 0, %459 ] + %storemerge.i.sink.i.i.i = phi i64 [ %storemerge.i.i.i.i, %_ZN4pbrt6detail8DispatchIRZNKS_8Material15GetDisplacementEvEUlT_E_NS_12FloatTextureENS_18SubsurfaceMaterialENS_22ThinDielectricMaterialENS_11MixMaterialEEET0_OS3_PKvi.exit.i.i.i ], [ %478, %478 ], [ %477, %476 ], [ %475, %473 ], [ %472, %470 ], [ %469, %468 ], [ %467, %466 ], [ %465, %464 ], [ 0, %459 ] call void @llvm.lifetime.start.p0(ptr nonnull %10) call void @llvm.lifetime.start.p0(ptr nonnull %11) store ptr %10, ptr %11, align 8, !tbaa !257 - %483 = add nsw i32 %462, -1 - %484 = call noundef zeroext i1 @_ZN4pbrt6detail8DispatchIRZNKS_8Material19CanEvaluateTexturesINS_21BasicTextureEvaluatorEEEbT_EUlS5_E_bNS_21CoatedDiffuseMaterialENS_23CoatedConductorMaterialENS_17ConductorMaterialENS_18DielectricMaterialENS_15DiffuseMaterialENS_27DiffuseTransmissionMaterialENS_12HairMaterialENS_16MeasuredMaterialEJNS_18SubsurfaceMaterialENS_22ThinDielectricMaterialENS_11MixMaterialEEvEET0_OS5_PKvi(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull %460, i32 noundef %483) + %483 = call noundef zeroext i1 @_ZN4pbrt6detail8DispatchIRZNKS_8Material19CanEvaluateTexturesINS_21BasicTextureEvaluatorEEEbT_EUlS5_E_bNS_21CoatedDiffuseMaterialENS_23CoatedConductorMaterialENS_17ConductorMaterialENS_18DielectricMaterialENS_15DiffuseMaterialENS_27DiffuseTransmissionMaterialENS_12HairMaterialENS_16MeasuredMaterialEJNS_18SubsurfaceMaterialENS_22ThinDielectricMaterialENS_11MixMaterialEEvEET0_OS5_PKvi(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull %460, i32 noundef %463) call void @llvm.lifetime.end.p0(ptr nonnull %11) call void @llvm.lifetime.end.p0(ptr nonnull %10) - br i1 %484, label %485, label %_ZNK4pbrt21BasicTextureEvaluator11CanEvaluateESt16initializer_listINS_12FloatTextureEES1_INS_15SpectrumTextureEE.exit + br i1 %483, label %485, label %_ZNK4pbrt21BasicTextureEvaluator11CanEvaluateESt16initializer_listINS_12FloatTextureEES1_INS_15SpectrumTextureEE.exit 485: ; preds = %_ZNK4pbrt8Material15GetDisplacementEv.exit %486 = and i64 %storemerge.i.sink.i.i.i, 144115188075855871 @@ -2608,7 +2607,7 @@ _ZNK4pbrt8Material15GetDisplacementEv.exit: ; preds = %459, %463, %465, %4 br label %_ZNK4pbrt21BasicTextureEvaluator11CanEvaluateESt16initializer_listINS_12FloatTextureEES1_INS_15SpectrumTextureEE.exit _ZNK4pbrt21BasicTextureEvaluator11CanEvaluateESt16initializer_listINS_12FloatTextureEES1_INS_15SpectrumTextureEE.exit: ; preds = %.lr.ph.i, %.critedge.i, %_ZNK4pbrt8Material15GetDisplacementEv.exit, %485 - %487 = phi ptr [ %7, %485 ], [ %8, %_ZNK4pbrt8Material15GetDisplacementEv.exit ], [ %7, %.critedge.i ], [ %8, %.lr.ph.i ] + %487 = phi ptr [ %7, %484 ], [ %8, %_ZNK4pbrt8Material15GetDisplacementEv.exit ], [ %7, %.critedge.i ], [ %8, %.lr.ph.i ] call void @llvm.lifetime.start.p0(ptr nonnull %18) store ptr %487, ptr %18, align 8, !tbaa !259 %488 = getelementptr inbounds nuw i8, ptr %18, i64 8 @@ -2642,7 +2641,7 @@ _ZNK4pbrt21BasicTextureEvaluator11CanEvaluateESt16initializer_listINS_12FloatTex store i64 %.sroa.085.0, ptr %506, align 8, !tbaa !71 %507 = getelementptr inbounds nuw i8, ptr %18, i64 456 store i64 %.sroa.887.0, ptr %507, align 8, !tbaa !71 - call void @_ZN4pbrt6detail8DispatchIRZNS_28EnqueueWorkAfterIntersectionENS_11RayWorkItemENS_6MediumEfNS_18SurfaceInteractionEPNS_17MediumSampleQueueEPNS_8RayQueueEPNS_9WorkQueueINS_20HitAreaLightWorkItemEEEPNS_14MultiWorkQueueINS_8TypePackIJNS_20MaterialEvalWorkItemINS_21CoatedDiffuseMaterialEEENSF_INS_23CoatedConductorMaterialEEENSF_INS_17ConductorMaterialEEENSF_INS_18DielectricMaterialEEENSF_INS_15DiffuseMaterialEEENSF_INS_27DiffuseTransmissionMaterialEEENSF_INS_12HairMaterialEEENSF_INS_16MeasuredMaterialEEENSF_INS_18SubsurfaceMaterialEEENSF_INS_22ThinDielectricMaterialEEENSF_INS_11MixMaterialEEEEEEEES14_EUlT_E_vSG_SI_SK_SM_SO_SQ_SS_SU_JSW_SY_S10_EvEET0_OS15_Pvi(ptr noundef nonnull align 8 dereferenceable(464) %18, ptr noundef nonnull %460, i32 noundef %483) + call void @_ZN4pbrt6detail8DispatchIRZNS_28EnqueueWorkAfterIntersectionENS_11RayWorkItemENS_6MediumEfNS_18SurfaceInteractionEPNS_17MediumSampleQueueEPNS_8RayQueueEPNS_9WorkQueueINS_20HitAreaLightWorkItemEEEPNS_14MultiWorkQueueINS_8TypePackIJNS_20MaterialEvalWorkItemINS_21CoatedDiffuseMaterialEEENSF_INS_23CoatedConductorMaterialEEENSF_INS_17ConductorMaterialEEENSF_INS_18DielectricMaterialEEENSF_INS_15DiffuseMaterialEEENSF_INS_27DiffuseTransmissionMaterialEEENSF_INS_12HairMaterialEEENSF_INS_16MeasuredMaterialEEENSF_INS_18SubsurfaceMaterialEEENSF_INS_22ThinDielectricMaterialEEENSF_INS_11MixMaterialEEEEEEEES14_EUlT_E_vSG_SI_SK_SM_SO_SQ_SS_SU_JSW_SY_S10_EvEET0_OS15_Pvi(ptr noundef nonnull align 8 dereferenceable(464) %18, ptr noundef nonnull %460, i32 noundef %463) call void @llvm.lifetime.end.p0(ptr nonnull %18) br label %508 diff --git a/bench/pbrt-v4/optimized/integrator.ll b/bench/pbrt-v4/optimized/integrator.ll index 1905d2c57ad..9a1f93ee0ca 100644 --- a/bench/pbrt-v4/optimized/integrator.ll +++ b/bench/pbrt-v4/optimized/integrator.ll @@ -3197,15 +3197,16 @@ define internal fastcc void @_ZN4pbrtL19updateMaterialNeedsENS_8MaterialEPN4pstd store i8 %32, ptr %3, align 1, !tbaa !263 %33 = lshr i64 %12, 57 %34 = trunc nuw nsw i64 %33 to i32 - switch i32 %34, label %51 [ - i32 1, label %35 - i32 2, label %37 - i32 3, label %39 - i32 4, label %41 - i32 5, label %44 - i32 6, label %47 - i32 7, label %_ZNK4pbrt8Material15GetDisplacementEv.exit - i32 8, label %49 + %35 = add nsw i32 %34, -1 + switch i32 %35, label %52 [ + i32 0, label %36 + i32 1, label %38 + i32 2, label %40 + i32 3, label %42 + i32 4, label %45 + i32 5, label %48 + i32 6, label %_ZNK4pbrt8Material15GetDisplacementEv.exit + i32 7, label %50 ] 35: ; preds = %29 @@ -3239,8 +3240,7 @@ define internal fastcc void @_ZN4pbrtL19updateMaterialNeedsENS_8MaterialEPN4pstd br label %_ZNK4pbrt8Material15GetDisplacementEv.exit 51: ; preds = %29 - %52 = add nsw i32 %34, -1 - %53 = and i32 %52, -2 + %53 = and i32 %35, -2 %switch.i.i.i.i = icmp eq i32 %53, 8 br i1 %switch.i.i.i.i, label %_ZN4pbrt6detail8DispatchIRZNKS_8Material15GetDisplacementEvEUlT_E_NS_12FloatTextureENS_18SubsurfaceMaterialENS_22ThinDielectricMaterialENS_11MixMaterialEEET0_OS3_PKvi.exit.i.i.i, label %54 @@ -3253,15 +3253,14 @@ _ZN4pbrt6detail8DispatchIRZNKS_8Material15GetDisplacementEvEUlT_E_NS_12FloatText br label %_ZNK4pbrt8Material15GetDisplacementEv.exit _ZNK4pbrt8Material15GetDisplacementEv.exit: ; preds = %29, %35, %37, %39, %41, %44, %47, %49, %_ZN4pbrt6detail8DispatchIRZNKS_8Material15GetDisplacementEvEUlT_E_NS_12FloatTextureENS_18SubsurfaceMaterialENS_22ThinDielectricMaterialENS_11MixMaterialEEET0_OS3_PKvi.exit.i.i.i - %storemerge.i.sink.i.i.i = phi i64 [ %storemerge.i.i.i.i, %_ZN4pbrt6detail8DispatchIRZNKS_8Material15GetDisplacementEvEUlT_E_NS_12FloatTextureENS_18SubsurfaceMaterialENS_22ThinDielectricMaterialENS_11MixMaterialEEET0_OS3_PKvi.exit.i.i.i ], [ %50, %49 ], [ %48, %47 ], [ %46, %44 ], [ %43, %41 ], [ %40, %39 ], [ %38, %37 ], [ %36, %35 ], [ 0, %29 ] + %storemerge.i.sink.i.i.i = phi i64 [ %storemerge.i.i.i.i, %_ZN4pbrt6detail8DispatchIRZNKS_8Material15GetDisplacementEvEUlT_E_NS_12FloatTextureENS_18SubsurfaceMaterialENS_22ThinDielectricMaterialENS_11MixMaterialEEET0_OS3_PKvi.exit.i.i.i ], [ %49, %50 ], [ %49, %48 ], [ %46, %45 ], [ %44, %42 ], [ %41, %40 ], [ %39, %38 ], [ %37, %36 ], [ 0, %29 ] call void @llvm.lifetime.start.p0(ptr nonnull %6) call void @llvm.lifetime.start.p0(ptr nonnull %7) store ptr %6, ptr %7, align 8, !tbaa !264 - %55 = add nsw i32 %34, -1 - %56 = call noundef zeroext i1 @_ZN4pbrt6detail8DispatchIRZNKS_8Material19CanEvaluateTexturesINS_21BasicTextureEvaluatorEEEbT_EUlS5_E_bNS_21CoatedDiffuseMaterialENS_23CoatedConductorMaterialENS_17ConductorMaterialENS_18DielectricMaterialENS_15DiffuseMaterialENS_27DiffuseTransmissionMaterialENS_12HairMaterialENS_16MeasuredMaterialEJNS_18SubsurfaceMaterialENS_22ThinDielectricMaterialENS_11MixMaterialEEvEET0_OS5_PKvi(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull %20, i32 noundef %55) + %55 = call noundef zeroext i1 @_ZN4pbrt6detail8DispatchIRZNKS_8Material19CanEvaluateTexturesINS_21BasicTextureEvaluatorEEEbT_EUlS5_E_bNS_21CoatedDiffuseMaterialENS_23CoatedConductorMaterialENS_17ConductorMaterialENS_18DielectricMaterialENS_15DiffuseMaterialENS_27DiffuseTransmissionMaterialENS_12HairMaterialENS_16MeasuredMaterialEJNS_18SubsurfaceMaterialENS_22ThinDielectricMaterialENS_11MixMaterialEEvEET0_OS5_PKvi(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull %20, i32 noundef %35) call void @llvm.lifetime.end.p0(ptr nonnull %7) call void @llvm.lifetime.end.p0(ptr nonnull %6) - br i1 %56, label %57, label %_ZNK4pbrt21BasicTextureEvaluator11CanEvaluateESt16initializer_listINS_12FloatTextureEES1_INS_15SpectrumTextureEE.exit.thread + br i1 %55, label %57, label %_ZNK4pbrt21BasicTextureEvaluator11CanEvaluateESt16initializer_listINS_12FloatTextureEES1_INS_15SpectrumTextureEE.exit.thread 57: ; preds = %_ZNK4pbrt8Material15GetDisplacementEv.exit %58 = and i64 %storemerge.i.sink.i.i.i, 144115188075855871 diff --git a/bench/pbrt-v4/optimized/pbrt.ll b/bench/pbrt-v4/optimized/pbrt.ll index 2997293467c..38af62e7b93 100644 --- a/bench/pbrt-v4/optimized/pbrt.ll +++ b/bench/pbrt-v4/optimized/pbrt.ll @@ -5999,9 +5999,9 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i: ; ._crit_edge.i.i.i: ; preds = %.noexc31, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i %53 = phi ptr [ %51, %.noexc31 ], [ %47, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i ] - switch i64 %44, label %56 [ - i64 3, label %54 - i64 2, label %57 + switch i64 %49, label %56 [ + i64 1, label %54 + i64 0, label %57 ] 54: ; preds = %._crit_edge.i.i.i @@ -6158,9 +6158,9 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i32: ._crit_edge.i.i.i33: ; preds = %.noexc36, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i32 %105 = phi ptr [ %103, %.noexc36 ], [ %100, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i32 ] - switch i64 %97, label %108 [ - i64 2, label %106 - i64 1, label %109 + switch i64 %101, label %108 [ + i64 1, label %106 + i64 0, label %109 ] 106: ; preds = %._crit_edge.i.i.i33 @@ -7494,9 +7494,9 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i: ; ._crit_edge.i.i.i: ; preds = %.noexc31, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i %51 = phi ptr [ %49, %.noexc31 ], [ %45, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i ] - switch i64 %42, label %54 [ - i64 3, label %52 - i64 2, label %55 + switch i64 %47, label %54 [ + i64 1, label %52 + i64 0, label %55 ] 52: ; preds = %._crit_edge.i.i.i @@ -7653,9 +7653,9 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i32: ._crit_edge.i.i.i33: ; preds = %.noexc36, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i32 %103 = phi ptr [ %101, %.noexc36 ], [ %98, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i32 ] - switch i64 %95, label %106 [ - i64 2, label %104 - i64 1, label %107 + switch i64 %99, label %106 [ + i64 1, label %104 + i64 0, label %107 ] 104: ; preds = %._crit_edge.i.i.i33 @@ -8778,9 +8778,9 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i: ; ._crit_edge.i.i.i: ; preds = %.noexc31, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i %53 = phi ptr [ %51, %.noexc31 ], [ %47, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i ] - switch i64 %44, label %56 [ - i64 3, label %54 - i64 2, label %57 + switch i64 %49, label %56 [ + i64 1, label %54 + i64 0, label %57 ] 54: ; preds = %._crit_edge.i.i.i @@ -8937,9 +8937,9 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i32: ._crit_edge.i.i.i33: ; preds = %.noexc36, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i32 %105 = phi ptr [ %103, %.noexc36 ], [ %100, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i32 ] - switch i64 %97, label %108 [ - i64 2, label %106 - i64 1, label %109 + switch i64 %101, label %108 [ + i64 1, label %106 + i64 0, label %109 ] 106: ; preds = %._crit_edge.i.i.i33 @@ -10244,9 +10244,9 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i: ; ._crit_edge.i.i.i: ; preds = %.noexc31, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i %53 = phi ptr [ %51, %.noexc31 ], [ %47, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i ] - switch i64 %44, label %56 [ - i64 3, label %54 - i64 2, label %57 + switch i64 %49, label %56 [ + i64 1, label %54 + i64 0, label %57 ] 54: ; preds = %._crit_edge.i.i.i @@ -10403,9 +10403,9 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i32: ._crit_edge.i.i.i33: ; preds = %.noexc36, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i32 %105 = phi ptr [ %103, %.noexc36 ], [ %100, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i32 ] - switch i64 %97, label %108 [ - i64 2, label %106 - i64 1, label %109 + switch i64 %101, label %108 [ + i64 1, label %106 + i64 0, label %109 ] 106: ; preds = %._crit_edge.i.i.i33 @@ -11712,9 +11712,9 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i: ; ._crit_edge.i.i.i: ; preds = %.noexc31, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i %55 = phi ptr [ %53, %.noexc31 ], [ %49, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i ] - switch i64 %46, label %58 [ - i64 3, label %56 - i64 2, label %59 + switch i64 %51, label %58 [ + i64 1, label %56 + i64 0, label %59 ] 56: ; preds = %._crit_edge.i.i.i @@ -11871,9 +11871,9 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i32: ._crit_edge.i.i.i33: ; preds = %.noexc36, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i32 %107 = phi ptr [ %105, %.noexc36 ], [ %102, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i32 ] - switch i64 %99, label %110 [ - i64 2, label %108 - i64 1, label %111 + switch i64 %103, label %110 [ + i64 1, label %108 + i64 0, label %111 ] 108: ; preds = %._crit_edge.i.i.i33 diff --git a/bench/php/optimized/sccp.ll b/bench/php/optimized/sccp.ll index 0fbccb679af..aacd22daef9 100644 --- a/bench/php/optimized/sccp.ll +++ b/bench/php/optimized/sccp.ll @@ -3077,7 +3077,7 @@ get_op1_value.exit1601: ; preds = %320, %328, %331 868: ; preds = %843, %840 %869 = getelementptr inbounds nuw i8, ptr %.010761645, i64 28 %870 = load i8, ptr %869, align 4, !tbaa !77 - switch i8 %870, label %2266 [ + switch i8 %870, label %2265 [ i8 1, label %871 i8 2, label %871 i8 3, label %871 @@ -5650,10 +5650,10 @@ get_op1_value.exit1622: ; preds = %2081, %2096 %2143 = load ptr, ptr %2142, align 8, !tbaa !129 %2144 = zext i8 %870 to i32 %2145 = add nsw i32 %2144, -204 - switch i8 %870, label %2233 [ - i8 -49, label %2146 - i8 -50, label %._crit_edge1700 - i8 -51, label %._crit_edge1702 + switch i32 %2145, label %.critedge1297 [ + i32 3, label %2146 + i32 2, label %._crit_edge1700 + i32 1, label %._crit_edge1702 ] ._crit_edge1702: ; preds = %2137 @@ -5791,18 +5791,11 @@ get_op2_value.exit1628: ; preds = %2181, %2188, %2201 get_op1_value.exit1631: ; preds = %2210, %2217, %2230 %.0.i1630 = phi ptr [ %2216, %2210 ], [ %2232, %2230 ], [ null, %2217 ] store ptr %.0.i1630, ptr %10, align 16, !tbaa !126 - br label %2233 - -2233: ; preds = %get_op1_value.exit1631, %2137 - %.not1281.not1670.not = icmp eq i32 %2145, 0 - br i1 %.not1281.not1670.not, label %.critedge1297, label %.lr.ph.preheader - -.lr.ph.preheader: ; preds = %2233 %wide.trip.count = zext nneg i32 %2145 to i64 br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %2245 - %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %2245 ] + %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %2244 ] %2234 = getelementptr inbounds nuw [3 x ptr], ptr %10, i64 0, i64 %indvars.iv %2235 = load ptr, ptr %2234, align 8, !tbaa !126 %.not1280 = icmp eq ptr %2235, null @@ -5816,7 +5809,7 @@ get_op1_value.exit1631: ; preds = %2210, %2217, %2230 2239: ; preds = %.lr.ph %2240 = getelementptr inbounds nuw i8, ptr %2235, i64 8 %2241 = load i8, ptr %2240, align 8, !tbaa !41 - switch i8 %2241, label %2245 [ + switch i8 %2241, label %2244 [ i8 -2, label %2242 i8 -3, label %2242 i8 -1, label %.critedge1299 @@ -5832,7 +5825,7 @@ get_op1_value.exit1631: ; preds = %2210, %2217, %2230 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %.critedge1297, label %.lr.ph -.critedge1297: ; preds = %2245, %2233 +.critedge1297: ; preds = %2245, %2137 %2246 = load ptr, ptr %0, align 8, !tbaa !130 %2247 = call fastcc i32 @ct_eval_func_call_ex(ptr noundef %2246, ptr noundef %4, ptr noundef %2143, i32 noundef %2145, ptr noundef %10) %2248 = icmp eq i32 %2247, 0 @@ -5926,7 +5919,7 @@ zval_ptr_dtor_nogc.exit1448: ; preds = %2261, %2256, %2253, br label %.critedge1289 .critedge1299.sink.split: ; preds = %2242, %2236 - %.sink1914 = phi i32 [ %2237, %2236 ], [ %2243, %2242 ] + %.sink1914 = phi i32 [ %2237, %2235 ], [ %2243, %2241 ] %2287 = getelementptr inbounds nuw i8, ptr %0, i64 128 tail call fastcc void @set_value(ptr noundef %0, ptr %2132, i32 noundef %.sink1914, ptr noundef nonnull %2287) br label %.critedge1299 diff --git a/bench/php/optimized/zend_execute.ll b/bench/php/optimized/zend_execute.ll index 075928462bd..506a14754cb 100644 --- a/bench/php/optimized/zend_execute.ll +++ b/bench/php/optimized/zend_execute.ll @@ -1857,10 +1857,10 @@ zend_vm_stack_push_call_frame_ex.exit: ; preds = %37, %39 store i32 %16, ptr %46, align 4, !tbaa !55 %47 = getelementptr inbounds nuw i8, ptr %.sink93, i64 48 store ptr %0, ptr %47, align 8, !tbaa !57 - switch i8 %4, label %142 [ - i8 -49, label %48 - i8 -50, label %80 - i8 -51, label %111 + switch i8 %5, label %142 [ + i8 3, label %48 + i8 2, label %80 + i8 1, label %111 ] 48: ; preds = %zend_vm_stack_push_call_frame_ex.exit @@ -2614,9 +2614,9 @@ define dso_local ptr @zend_undefined_offset_write(ptr noundef %0, i64 noundef %1 tail call void @llvm.assume(i1 %14) %15 = add i32 %13, -1 store i32 %15, ptr %0, align 4, !tbaa !56 - switch i32 %13, label %21 [ - i32 2, label %17 - i32 1, label %16 + switch i32 %15, label %21 [ + i32 1, label %17 + i32 0, label %16 ] 16: ; preds = %12 @@ -2687,9 +2687,9 @@ zend_string_addref.exit: ; preds = %9, %13 tail call void @llvm.assume(i1 %20) %21 = add i32 %19, -1 store i32 %21, ptr %0, align 4, !tbaa !56 - switch i32 %19, label %27 [ - i32 2, label %23 - i32 1, label %22 + switch i32 %21, label %27 [ + i32 1, label %23 + i32 0, label %22 ] 22: ; preds = %18 @@ -160469,9 +160469,9 @@ define internal fastcc zeroext range(i8 1, 7) i8 @slow_index_convert_w(ptr nound tail call void @llvm.assume(i1 %19) %20 = add i32 %18, -1 store i32 %20, ptr %0, align 4, !tbaa !56 - switch i32 %18, label %86 [ - i32 2, label %22 - i32 1, label %21 + switch i32 %20, label %86 [ + i32 1, label %22 + i32 0, label %21 ] 21: ; preds = %17 @@ -160544,9 +160544,9 @@ zend_dval_to_lval.exit: ; preds = %26, %33, %35 tail call void @llvm.assume(i1 %53) %54 = add i32 %52, -1 store i32 %54, ptr %0, align 4, !tbaa !56 - switch i32 %52, label %86 [ - i32 2, label %56 - i32 1, label %55 + switch i32 %54, label %86 [ + i32 1, label %56 + i32 0, label %55 ] 55: ; preds = %51 @@ -160590,9 +160590,9 @@ zend_dval_to_lval.exit: ; preds = %26, %33, %35 tail call void @llvm.assume(i1 %74) %75 = add i32 %73, -1 store i32 %75, ptr %0, align 4, !tbaa !56 - switch i32 %73, label %86 [ - i32 2, label %77 - i32 1, label %76 + switch i32 %75, label %86 [ + i32 1, label %77 + i32 0, label %76 ] 76: ; preds = %72 diff --git a/bench/pola-rs/optimized/49ngp3xw6xyygsr5wpycsaqpa.ll b/bench/pola-rs/optimized/49ngp3xw6xyygsr5wpycsaqpa.ll index 20a3ba9f57b..46ce458aefe 100644 --- a/bench/pola-rs/optimized/49ngp3xw6xyygsr5wpycsaqpa.ll +++ b/bench/pola-rs/optimized/49ngp3xw6xyygsr5wpycsaqpa.ll @@ -159926,7 +159926,7 @@ define void @"_ZN137_$LT$polars_plan..plans..optimizer..delay_rechunk..DelayRech %33 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr58drop_in_place$LT$polars_plan..plans..iterator..AlpIter$GT$17h5f9ece1b5e45c0e1E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) #42 - to label %60 unwind label %58 + to label %62 unwind label %58 34: ; preds = %30 %35 = extractvalue { i64, ptr } %31, 1 @@ -159935,12 +159935,13 @@ define void @"_ZN137_$LT$polars_plan..plans..optimizer..delay_rechunk..DelayRech 36: ; preds = %34 %37 = load i64, ptr %35, align 16, !range !14146, !noundef !4 - %38 = icmp ne i64 %37, 21 - call void @llvm.assume(i1 %38) - switch i64 %37, label %30 [ - i64 7, label %40 - i64 14, label %39 - i64 18, label %40 + %38 = add nsw i64 %37, -4 + %39 = icmp ne i64 %38, 17 + call void @llvm.assume(i1 %39) + switch i64 %38, label %30 [ + i64 3, label %41 + i64 10, label %40 + i64 14, label %41 ] 39: ; preds = %36, %34 @@ -159966,11 +159967,12 @@ define void @"_ZN137_$LT$polars_plan..plans..optimizer..delay_rechunk..DelayRech %46 = load ptr, ptr %8, align 8, !nonnull !4, !noundef !4 %47 = getelementptr inbounds nuw { i64, [39 x i64] }, ptr %46, i64 %41 %48 = load i64, ptr %47, align 16, !range !14146, !noundef !4 - %49 = icmp ne i64 %48, 21 - call void @llvm.assume(i1 %49) - switch i64 %48, label %50 [ - i64 7, label %51 - i64 18, label %55 + %50 = add nsw i64 %48, -4 + %51 = icmp ne i64 %50, 17 + call void @llvm.assume(i1 %51) + switch i64 %50, label %52 [ + i64 3, label %53 + i64 14, label %57 ], !prof !10983 50: ; preds = %45 diff --git a/bench/pola-rs/optimized/59h0xctzreekd1dj94rqcuqk4.ll b/bench/pola-rs/optimized/59h0xctzreekd1dj94rqcuqk4.ll index 4cb959426b4..42f9b779207 100644 --- a/bench/pola-rs/optimized/59h0xctzreekd1dj94rqcuqk4.ll +++ b/bench/pola-rs/optimized/59h0xctzreekd1dj94rqcuqk4.ll @@ -177340,10 +177340,10 @@ _ZN4core3fmt9Formatter9write_fmt17he43344f56d744565E.exit: define noundef zeroext i1 @_ZN10polars_ops5frame4join4args8JoinType7is_equi17h02694f47b3002ecbE(ptr noalias noundef readonly align 16 captures(none) dereferenceable(128) %0) unnamed_addr #15 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 96 %3 = load i64, ptr %2, align 16, !range !18754, !noundef !6 - %4 = icmp ne i64 %3, -9223372036854775803 - tail call void @llvm.assume(i1 %4) - %.off = add i64 %3, 9223372036854775807 - %switch = icmp ult i64 %.off, 4 + %4 = add i64 %3, 9223372036854775807 + %5 = icmp ne i64 %4, 4 + tail call void @llvm.assume(i1 %5) + %switch = icmp ult i64 %4, 4 ret i1 %switch } @@ -177436,16 +177436,17 @@ define void @_ZN10polars_ops5frame4join4args14JoinValidation13is_valid_join17h90 10: ; preds = %3 %11 = getelementptr inbounds nuw i8, ptr %2, i64 96 %12 = load i64, ptr %11, align 16, !range !18754, !noundef !6 - %13 = icmp ne i64 %12, -9223372036854775803 - tail call void @llvm.assume(i1 %13) - switch i64 %12, label %15 [ - i64 -9223372036854775807, label %14 - i64 -9223372036854775806, label %14 - i64 -9223372036854775804, label %14 + %13 = add i64 %12, 9223372036854775807 + %14 = icmp ne i64 %13, 4 + tail call void @llvm.assume(i1 %14) + switch i64 %13, label %16 [ + i64 0, label %14 + i64 1, label %14 + i64 3, label %15 ], !prof !18783 14: ; preds = %3, %10, %10, %10, %15 - %.sink = phi i64 [ 2, %15 ], [ 17, %10 ], [ 17, %10 ], [ 17, %10 ], [ 17, %3 ] + %.sink = phi i64 [ 2, %16 ], [ 17, %10 ], [ 17, %10 ], [ 17, %10 ], [ 17, %3 ] store i64 %.sink, ptr %0, align 8 ret void diff --git a/bench/pola-rs/optimized/8gktvjrmbyf0beu27j5k108br.ll b/bench/pola-rs/optimized/8gktvjrmbyf0beu27j5k108br.ll index c59896af855..7d43ff56444 100644 --- a/bench/pola-rs/optimized/8gktvjrmbyf0beu27j5k108br.ll +++ b/bench/pola-rs/optimized/8gktvjrmbyf0beu27j5k108br.ll @@ -25569,13 +25569,14 @@ define hidden noundef zeroext i1 @_ZN11polars_lazy13physical_plan9streaming6chec define hidden noundef zeroext i1 @_ZN11polars_lazy13physical_plan9streaming6checks15streamable_join17h7a3f7b389a11cc3fE(ptr noalias noundef readonly align 16 dereferenceable(192) %0) unnamed_addr #2 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 96 %3 = load i64, ptr %2, align 16, !range !2681, !noundef !7 - %4 = icmp ne i64 %3, -9223372036854775803 - tail call void @llvm.assume(i1 %4) - switch i64 %3, label %12 [ - i64 -9223372036854775807, label %5 - i64 -9223372036854775806, label %8 - i64 -9223372036854775804, label %8 - i64 -9223372036854775799, label %8 + %4 = add i64 %3, 9223372036854775807 + %5 = icmp ne i64 %4, 4 + tail call void @llvm.assume(i1 %5) + switch i64 %4, label %13 [ + i64 0, label %6 + i64 1, label %8 + i64 3, label %8 + i64 8, label %9 ] 5: ; preds = %1 @@ -25591,7 +25592,7 @@ define hidden noundef zeroext i1 @_ZN11polars_lazy13physical_plan9streaming6chec br label %12 12: ; preds = %1, %5, %8 - %.sroa.0.0 = phi i1 [ %11, %8 ], [ false, %5 ], [ false, %1 ] + %.sroa.0.0 = phi i1 [ %11, %9 ], [ false, %6 ], [ false, %1 ] ret i1 %.sroa.0.0 } diff --git a/bench/postgres/optimized/euc2004_sjis2004.ll b/bench/postgres/optimized/euc2004_sjis2004.ll index e182434cb2e..5a5c5fe5456 100644 --- a/bench/postgres/optimized/euc2004_sjis2004.ll +++ b/bench/postgres/optimized/euc2004_sjis2004.ll @@ -118,25 +118,25 @@ define range(i64 -2147483648, 2147483648) i64 @euc_jis_2004_to_shift_jis_2004(pt %47 = getelementptr inbounds nuw i8, ptr %.0141.i, i64 1 %48 = load i8, ptr %47, align 1 %49 = zext i8 %48 to i32 - %50 = getelementptr inbounds nuw i8, ptr %.0141.i, i64 2 - %51 = load i8, ptr %50, align 1 - switch i8 %48, label %58 [ - i8 -95, label %52 - i8 -93, label %52 - i8 -92, label %52 - i8 -91, label %52 - i8 -88, label %52 - i8 -84, label %52 - i8 -83, label %52 - i8 -82, label %52 - i8 -81, label %52 + %50 = add nsw i32 %49, -160 + %51 = getelementptr inbounds nuw i8, ptr %.0141.i, i64 2 + %52 = load i8, ptr %51, align 1 + switch i32 %50, label %58 [ + i32 1, label %52 + i32 3, label %52 + i32 4, label %52 + i32 5, label %52 + i32 8, label %52 + i32 12, label %52 + i32 13, label %52 + i32 14, label %52 + i32 15, label %53 ] 52: ; preds = %46, %46, %46, %46, %46, %46, %46, %46, %46 - %53 = add nuw nsw i32 %49, 1888 %54 = add nuw nsw i32 %49, 319 %55 = lshr i32 %54, 1 - %56 = lshr i32 %53, 3 + %56 = lshr i32 %50, 3 %.neg.i = mul nuw nsw i32 %56, 253 %57 = add nuw nsw i32 %.neg.i, %55 br label %.sink.split.i @@ -159,7 +159,7 @@ define range(i64 -2147483648, 2147483648) i64 @euc_jis_2004_to_shift_jis_2004(pt unreachable .sink.split.i: ; preds = %60, %52 - %.sink188.i = phi i32 [ %62, %60 ], [ %57, %52 ] + %.sink188.i = phi i32 [ %62, %60 ], [ %57, %53 ] %65 = trunc i32 %.sink188.i to i8 %66 = getelementptr inbounds nuw i8, ptr %.0105140.i, i64 1 store i8 %65, ptr %.0105140.i, align 1 @@ -172,23 +172,23 @@ define range(i64 -2147483648, 2147483648) i64 @euc_jis_2004_to_shift_jis_2004(pt br i1 %.not116.i, label %81, label %69 69: ; preds = %67 - %70 = add i8 %51, 95 + %70 = add i8 %52, 95 %or.cond7.i = icmp ult i8 %70, 63 br i1 %or.cond7.i, label %71, label %74 71: ; preds = %69 - %72 = add i8 %51, -97 + %72 = add i8 %52, -97 %73 = getelementptr inbounds nuw i8, ptr %.3.i, i64 1 store i8 %72, ptr %.3.i, align 1 br label %113 74: ; preds = %69 - %75 = add i8 %51, 32 + %75 = add i8 %52, 32 %or.cond9.i = icmp ult i8 %75, 31 br i1 %or.cond9.i, label %76, label %79 76: ; preds = %74 - %77 = add nsw i8 %51, -96 + %77 = add nsw i8 %52, -96 %78 = getelementptr inbounds nuw i8, ptr %.3.i, i64 1 store i8 %77, ptr %.3.i, align 1 br label %113 @@ -201,7 +201,7 @@ define range(i64 -2147483648, 2147483648) i64 @euc_jis_2004_to_shift_jis_2004(pt unreachable 81: ; preds = %67 - %82 = add i8 %51, -2 + %82 = add i8 %52, -2 %83 = getelementptr inbounds nuw i8, ptr %.3.i, i64 1 store i8 %82, ptr %.3.i, align 1 br label %113 diff --git a/bench/protobuf/optimized/parser.ll b/bench/protobuf/optimized/parser.ll index 8384442696b..cae60079c3f 100644 --- a/bench/protobuf/optimized/parser.ll +++ b/bench/protobuf/optimized/parser.ll @@ -6955,7 +6955,6 @@ _ZN4absl12lts_2023080210StartsWithESt17basic_string_viewIcSt11char_traitsIcEES4_ br i1 %cmp7.i, label %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit, label %return _ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit: ; preds = %_ZN4absl12lts_2023080210StartsWithESt17basic_string_viewIcSt11char_traitsIcEES4_.exit - %sub.i = add i64 %name.coerce0, -16 %add.ptr.i = getelementptr inbounds nuw i8, ptr %name.coerce1, i64 16 switch i64 %name.coerce0, label %return [ i64 19, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i @@ -6968,93 +6967,93 @@ _ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit: ; preds = %_ZN4ab ] _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i: ; preds = %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit - %bcmp.i4 = tail call i32 @bcmp(ptr nonnull %add.ptr.i, ptr nonnull @.str.4, i64 %sub.i) + %bcmp.i4 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(3) %add.ptr.i, ptr noundef nonnull dereferenceable(3) @.str.4, i64 3) %cmp.i.i5 = icmp eq i32 %bcmp.i4, 0 %spec.select = zext i1 %cmp.i.i5 to i32 br label %return _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i12: ; preds = %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit - %bcmp.i13 = tail call i32 @bcmp(ptr nonnull %add.ptr.i, ptr nonnull @.str.5, i64 %sub.i) + %bcmp.i13 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(5) %add.ptr.i, ptr noundef nonnull dereferenceable(5) @.str.5, i64 5) %cmp.i.i14 = icmp eq i32 %bcmp.i13, 0 %spec.select194 = select i1 %cmp.i.i14, i32 5, i32 0 br label %return _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i22: ; preds = %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit - %bcmp.i23 = tail call i32 @bcmp(ptr nonnull %add.ptr.i, ptr nonnull @.str.6, i64 %sub.i) + %bcmp.i23 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(6) %add.ptr.i, ptr noundef nonnull dereferenceable(6) @.str.6, i64 6) %cmp.i.i24 = icmp eq i32 %bcmp.i23, 0 %spec.select195 = select i1 %cmp.i.i24, i32 3, i32 0 br label %return _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i32: ; preds = %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit - %bcmp.i33 = tail call i32 @bcmp(ptr nonnull %add.ptr.i, ptr nonnull @.str.7, i64 %sub.i) + %bcmp.i33 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(8) %add.ptr.i, ptr noundef nonnull dereferenceable(8) @.str.7, i64 8) %cmp.i.i34 = icmp eq i32 %bcmp.i33, 0 %spec.select196 = select i1 %cmp.i.i34, i32 8, i32 0 br label %return _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i42: ; preds = %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit - %bcmp.i43 = tail call i32 @bcmp(ptr nonnull %add.ptr.i, ptr nonnull @.str.8, i64 %sub.i) + %bcmp.i43 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(9) %add.ptr.i, ptr noundef nonnull dereferenceable(9) @.str.8, i64 9) %cmp.i.i44 = icmp eq i32 %bcmp.i43, 0 br i1 %cmp.i.i44, label %return, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i52 _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i52: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i42 - %bcmp.i53 = tail call i32 @bcmp(ptr nonnull %add.ptr.i, ptr nonnull @.str.9, i64 %sub.i) + %bcmp.i53 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(9) %add.ptr.i, ptr noundef nonnull dereferenceable(9) @.str.9, i64 9) %cmp.i.i54 = icmp eq i32 %bcmp.i53, 0 br i1 %cmp.i.i54, label %return, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i62 _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i62: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i52 - %bcmp.i63 = tail call i32 @bcmp(ptr nonnull %add.ptr.i, ptr nonnull @.str.10, i64 %sub.i) + %bcmp.i63 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(9) %add.ptr.i, ptr noundef nonnull dereferenceable(9) @.str.10, i64 9) %cmp.i.i64 = icmp eq i32 %bcmp.i63, 0 br i1 %cmp.i.i64, label %return, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i72 _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i72: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i62 - %bcmp.i73 = tail call i32 @bcmp(ptr nonnull %add.ptr.i, ptr nonnull @.str.11, i64 %sub.i) + %bcmp.i73 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(9) %add.ptr.i, ptr noundef nonnull dereferenceable(9) @.str.11, i64 9) %cmp.i.i74 = icmp eq i32 %bcmp.i73, 0 br i1 %cmp.i.i74, label %return, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i82 _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i82: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i72 - %bcmp.i83 = tail call i32 @bcmp(ptr nonnull %add.ptr.i, ptr nonnull @.str.12, i64 %sub.i) + %bcmp.i83 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(9) %add.ptr.i, ptr noundef nonnull dereferenceable(9) @.str.12, i64 9) %cmp.i.i84 = icmp eq i32 %bcmp.i83, 0 %spec.select197 = select i1 %cmp.i.i84, i32 9, i32 0 br label %return _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i92: ; preds = %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit - %bcmp.i93 = tail call i32 @bcmp(ptr nonnull %add.ptr.i, ptr nonnull @.str.13, i64 %sub.i) + %bcmp.i93 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(10) %add.ptr.i, ptr noundef nonnull dereferenceable(10) @.str.13, i64 10) %cmp.i.i94 = icmp eq i32 %bcmp.i93, 0 br i1 %cmp.i.i94, label %return, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i102 _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i102: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i92 - %bcmp.i103 = tail call i32 @bcmp(ptr nonnull %add.ptr.i, ptr nonnull @.str.14, i64 %sub.i) + %bcmp.i103 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(10) %add.ptr.i, ptr noundef nonnull dereferenceable(10) @.str.14, i64 10) %cmp.i.i104 = icmp eq i32 %bcmp.i103, 0 br i1 %cmp.i.i104, label %return, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i112 _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i112: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i102 - %bcmp.i113 = tail call i32 @bcmp(ptr nonnull %add.ptr.i, ptr nonnull @.str.15, i64 %sub.i) + %bcmp.i113 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(10) %add.ptr.i, ptr noundef nonnull dereferenceable(10) @.str.15, i64 10) %cmp.i.i114 = icmp eq i32 %bcmp.i113, 0 br i1 %cmp.i.i114, label %return, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i122 _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i122: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i112 - %bcmp.i123 = tail call i32 @bcmp(ptr nonnull %add.ptr.i, ptr nonnull @.str.16, i64 %sub.i) + %bcmp.i123 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(10) %add.ptr.i, ptr noundef nonnull dereferenceable(10) @.str.16, i64 10) %cmp.i.i124 = icmp eq i32 %bcmp.i123, 0 %spec.select198 = select i1 %cmp.i.i124, i32 2, i32 0 br label %return _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i132: ; preds = %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit - %bcmp.i133 = tail call i32 @bcmp(ptr nonnull %add.ptr.i, ptr nonnull @.str.17, i64 %sub.i) + %bcmp.i133 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(11) %add.ptr.i, ptr noundef nonnull dereferenceable(11) @.str.17, i64 11) %cmp.i.i134 = icmp eq i32 %bcmp.i133, 0 br i1 %cmp.i.i134, label %return, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i142 _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i142: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i132 - %bcmp.i143 = tail call i32 @bcmp(ptr nonnull %add.ptr.i, ptr nonnull @.str.18, i64 %sub.i) + %bcmp.i143 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(11) %add.ptr.i, ptr noundef nonnull dereferenceable(11) @.str.18, i64 11) %cmp.i.i144 = icmp eq i32 %bcmp.i143, 0 br i1 %cmp.i.i144, label %return, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i152 _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i152: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i142 - %bcmp.i153 = tail call i32 @bcmp(ptr nonnull %add.ptr.i, ptr nonnull @.str.19, i64 %sub.i) + %bcmp.i153 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(11) %add.ptr.i, ptr noundef nonnull dereferenceable(11) @.str.19, i64 11) %cmp.i.i154 = icmp eq i32 %bcmp.i153, 0 br i1 %cmp.i.i154, label %return, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i162 _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i162: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i152 - %bcmp.i163 = tail call i32 @bcmp(ptr nonnull %add.ptr.i, ptr nonnull @.str.20, i64 %sub.i) + %bcmp.i163 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(11) %add.ptr.i, ptr noundef nonnull dereferenceable(11) @.str.20, i64 11) %cmp.i.i164 = icmp eq i32 %bcmp.i163, 0 %spec.select199 = select i1 %cmp.i.i164, i32 2, i32 0 br label %return diff --git a/bench/quiche-rs/optimized/6lp2oyapnsojevo64mk9ap806.ll b/bench/quiche-rs/optimized/6lp2oyapnsojevo64mk9ap806.ll index a10b4fe9ead..5ce81c17720 100644 --- a/bench/quiche-rs/optimized/6lp2oyapnsojevo64mk9ap806.ll +++ b/bench/quiche-rs/optimized/6lp2oyapnsojevo64mk9ap806.ll @@ -2012,14 +2012,14 @@ thread-pre-split: ; preds = %520, %516, %490, %3 %538 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 4, ptr %538, align 8 store i64 29, ptr %0, align 8 - switch i64 %161, label %"_ZN4core3ptr41drop_in_place$LT$quiche..frame..Frame$GT$17h3a613914d17b4c33E.exit" [ - i64 27, label %553 - i64 7, label %541 - i64 9, label %543 - i64 10, label %545 - i64 20, label %547 - i64 24, label %549 - i64 25, label %551 + switch i64 %162, label %"_ZN4core3ptr41drop_in_place$LT$quiche..frame..Frame$GT$17h3a613914d17b4c33E.exit" [ + i64 25, label %553 + i64 5, label %541 + i64 7, label %543 + i64 8, label %545 + i64 18, label %547 + i64 22, label %549 + i64 23, label %551 ] 539: ; preds = %.thread402 @@ -3795,14 +3795,16 @@ define noundef zeroext i1 @_ZN6quiche5frame5Frame13ack_eliciting17ha6a46ae69c40d ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: write) uwtable define noundef zeroext i1 @_ZN6quiche5frame5Frame7probing17he2b9f440f325578fE(ptr noalias noundef readonly align 8 captures(none) dereferenceable(128) %0) unnamed_addr #3 { -switch.lookup: - %1 = load i64, ptr %0, align 8, !range !107, !noundef !12 - %2 = icmp ne i64 %1, 4 + %2 = load i64, ptr %0, align 8, !range !107, !noundef !12 + %3 = add nsw i64 %2, -2 + %2 = icmp ne i64 %3, 2 tail call void @llvm.assume(i1 %2) - %switch.cast = trunc nuw i64 %1 to i29 - %switch.downshift = lshr i29 13631492, %switch.cast - %switch.masked = trunc i29 %switch.downshift to i1 - ret i1 %switch.masked + %5 = icmp ult i64 %3, 22 + %switch.cast = trunc i64 %3 to i22 + %switch.downshift = lshr i22 -786431, %switch.cast + %switch.masked = trunc i22 %switch.downshift to i1 + %.sroa.0.0 = select i1 %5, i1 %switch.masked, i1 false + ret i1 %.sroa.0.0 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/quiche-rs/optimized/awfdmuwm9v4vtm2qe4gii0smw.ll b/bench/quiche-rs/optimized/awfdmuwm9v4vtm2qe4gii0smw.ll index d7cb10a84e2..7b35d948c7c 100644 --- a/bench/quiche-rs/optimized/awfdmuwm9v4vtm2qe4gii0smw.ll +++ b/bench/quiche-rs/optimized/awfdmuwm9v4vtm2qe4gii0smw.ll @@ -5775,22 +5775,23 @@ define internal fastcc { i64, i32 } @_ZN3h3i6client11sync_client14handle_actions br label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h18831e4601ab3f45E.exit.thread" "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h18831e4601ab3f45E.exit.thread": ; preds = %.lr.ph, %37, %.preheader, %53, %48, %17, %21 - %.sroa.6.0 = phi i32 [ 1000000000, %21 ], [ 1000000000, %17 ], [ 1000000000, %53 ], [ %52, %48 ], [ 1000000000, %.preheader ], [ 1000000000, %37 ], [ 1000000000, %.lr.ph ] - %.sroa.0.0 = phi i64 [ undef, %21 ], [ undef, %17 ], [ undef, %53 ], [ %50, %48 ], [ undef, %.preheader ], [ undef, %37 ], [ undef, %.lr.ph ] + %.sroa.6.0 = phi i32 [ 1000000000, %21 ], [ 1000000000, %17 ], [ 1000000000, %54 ], [ %52, %49 ], [ 1000000000, %.preheader ], [ 1000000000, %38 ], [ 1000000000, %.lr.ph ] + %.sroa.0.0 = phi i64 [ undef, %21 ], [ undef, %17 ], [ undef, %54 ], [ %50, %49 ], [ undef, %.preheader ], [ undef, %38 ], [ undef, %.lr.ph ] %31 = insertvalue { i64, i32 } poison, i64 %.sroa.0.0, 0 %32 = insertvalue { i64, i32 } %31, i32 %.sroa.6.0, 1 ret { i64, i32 } %32 .lr.ph: ; preds = %.preheader, %37 - %33 = phi ptr [ %34, %37 ], [ %.promoted, %.preheader ] + %33 = phi ptr [ %34, %38 ], [ %.promoted, %.preheader ] %34 = getelementptr inbounds nuw i8, ptr %33, i64 192 store ptr %34, ptr %0, align 8, !alias.scope !379 %35 = load i64, ptr %33, align 8, !range !252, !noundef !3 - %36 = icmp ne i64 %35, 13 - tail call void @llvm.assume(i1 %36) - switch i64 %35, label %37 [ - i64 19, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h18831e4601ab3f45E.exit.thread" - i64 20, label %39 + %36 = add nsw i64 %35, -12 + %37 = icmp ne i64 %36, 1 + tail call void @llvm.assume(i1 %37) + switch i64 %36, label %38 [ + i64 7, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h18831e4601ab3f45E.exit.thread" + i64 8, label %40 ] 37: ; preds = %.lr.ph @@ -5822,7 +5823,7 @@ define internal fastcc { i64, i32 } @_ZN3h3i6client11sync_client14handle_actions br label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h18831e4601ab3f45E.exit.thread" 53: ; preds = %55, %43 - %54 = phi ptr [ %.pre, %55 ], [ %44, %43 ] + %54 = phi ptr [ %.pre, %56 ], [ %44, %44 ] call void @_ZN3h3i7actions2h310WaitingFor8add_wait17hed457908f2bde8ecE(ptr noalias noundef nonnull align 8 dereferenceable(48) %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %54) call void @llvm.lifetime.end.p0(ptr nonnull %8) br label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h18831e4601ab3f45E.exit.thread" diff --git a/bench/quiche-rs/optimized/f0vxo8kdo04wz5kbvnjzws46n.ll b/bench/quiche-rs/optimized/f0vxo8kdo04wz5kbvnjzws46n.ll index 6cc99f5a954..79ce87ad90a 100644 --- a/bench/quiche-rs/optimized/f0vxo8kdo04wz5kbvnjzws46n.ll +++ b/bench/quiche-rs/optimized/f0vxo8kdo04wz5kbvnjzws46n.ll @@ -2557,12 +2557,13 @@ _ZN4core4iter6traits8iterator8Iterator7collect17h113d85ced72ddfa1E.exit.i.i: ; p %.sroa.039.0.copyload.i.i = load i64, ptr %105, align 4, !noalias !305 %154 = trunc i64 %.sroa.039.0.copyload.i.i to i32 call void @llvm.lifetime.end.p0(ptr nonnull %12), !noalias !338 - %155 = icmp ne i32 %154, 1114126 - call void @llvm.assume(i1 %155) - switch i32 %154, label %156 [ - i32 1114112, label %240 - i32 1114113, label %242 - i32 1114114, label %244 + %155 = add i32 %154, -1114112 + %156 = icmp ne i32 %155, 14 + call void @llvm.assume(i1 %156) + switch i32 %155, label %157 [ + i32 0, label %240 + i32 1, label %242 + i32 2, label %244 ] 156: ; preds = %153 @@ -2570,9 +2571,8 @@ _ZN4core4iter6traits8iterator8Iterator7collect17h113d85ced72ddfa1E.exit.i.i: ; p call void @llvm.experimental.noalias.scope.decl(metadata !362) call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !338 %.sroa.415.0.extract.trunc.i.i.i = trunc i64 %157 to i8 - %158 = add i32 %154, -1114112 - %159 = icmp ult i32 %158, 16 - %narrow.i.i.i = select i1 %159, i32 %158, i32 14 + %159 = icmp ult i32 %155, 16 + %narrow.i.i.i = select i1 %159, i32 %155, i32 14 switch i32 %narrow.i.i.i, label %160 [ i32 6, label %162 i32 7, label %"_ZN7inquire7prompts6select21SelectPrompt$LT$T$GT$16move_cursor_down17hc27aa60f4157b7baE.exit.i.i.i" diff --git a/bench/quickjs/optimized/libunicode.ll b/bench/quickjs/optimized/libunicode.ll index 7dd3b744d07..ed6d4b1262a 100644 --- a/bench/quickjs/optimized/libunicode.ll +++ b/bench/quickjs/optimized/libunicode.ll @@ -2291,9 +2291,9 @@ cr_add_interval.exit.thread: ; preds = %._crit_edge.i, %cr_ %.4.add = add nuw nsw i64 %.4.idx, 1 %.ptr128 = getelementptr inbounds nuw i8, ptr @unicode_script_ext_table, i64 %.4.add %110 = load i8, ptr %.4.ptr, align 1, !tbaa !13 - switch i32 %.01929.i, label %.preheader [ - i32 55, label %111 - i32 24, label %111 + switch i32 %24, label %.preheader [ + i32 56, label %111 + i32 25, label %111 ] .preheader: ; preds = %107 @@ -2374,9 +2374,9 @@ cr_add_interval.exit.thread: ; preds = %._crit_edge.i, %cr_ br i1 %141, label %.preheader259, label %142, !llvm.loop !49 142: ; preds = %.loopexit258 - switch i32 %.01929.i, label %192 [ - i32 55, label %143 - i32 24, label %143 + switch i32 %24, label %192 [ + i32 56, label %143 + i32 25, label %143 ] 143: ; preds = %142, %142 @@ -3678,26 +3678,26 @@ unicode_find_name.exit: ; preds = %14 22: ; preds = %unicode_find_name.exit %23 = add nuw i32 %.01929.i, 16 - switch i32 %.01929.i, label %112 [ - i32 34, label %24 - i32 36, label %51 - i32 37, label %78 - i32 49, label %80 - i32 48, label %82 - i32 50, label %84 - i32 38, label %86 - i32 35, label %88 - i32 45, label %90 - i32 46, label %92 - i32 52, label %94 - i32 51, label %96 - i32 44, label %98 - i32 41, label %100 - i32 40, label %102 - i32 43, label %104 - i32 39, label %106 - i32 42, label %108 - i32 47, label %110 + switch i32 %23, label %112 [ + i32 50, label %24 + i32 52, label %51 + i32 53, label %78 + i32 65, label %80 + i32 64, label %82 + i32 66, label %84 + i32 54, label %86 + i32 51, label %88 + i32 61, label %90 + i32 62, label %92 + i32 68, label %94 + i32 67, label %96 + i32 60, label %98 + i32 57, label %100 + i32 56, label %102 + i32 59, label %104 + i32 55, label %106 + i32 58, label %108 + i32 63, label %110 ] 24: ; preds = %22 diff --git a/bench/quinn-rs/optimized/aa0f6okxl6jzwxndw38ja55fd.ll b/bench/quinn-rs/optimized/aa0f6okxl6jzwxndw38ja55fd.ll index 906d451de0f..09f74c2917a 100644 --- a/bench/quinn-rs/optimized/aa0f6okxl6jzwxndw38ja55fd.ll +++ b/bench/quinn-rs/optimized/aa0f6okxl6jzwxndw38ja55fd.ll @@ -4981,11 +4981,12 @@ define hidden { i16, i16 } @_ZN11quinn_proto10connection4mtud12MtuDiscovery13pol %8 = getelementptr inbounds nuw i8, ptr %0, i64 144 %9 = load i16, ptr %8, align 8, !noundef !3 tail call void @llvm.experimental.noalias.scope.decl(metadata !290) - %10 = icmp ne i64 %6, 3 - tail call void @llvm.assume(i1 %10) - switch i64 %6, label %17 [ - i64 2, label %11 - i64 4, label %18 + %10 = add nsw i64 %6, -2 + %11 = icmp ne i64 %10, 1 + tail call void @llvm.assume(i1 %11) + switch i64 %10, label %18 [ + i64 0, label %12 + i64 2, label %20 ] 11: ; preds = %7 @@ -5005,6 +5006,8 @@ define hidden { i16, i16 } @_ZN11quinn_proto10connection4mtud12MtuDiscovery13pol br label %.thread 17: ; preds = %7 + %19 = icmp ne i64 %6, 3 + tail call void @llvm.assume(i1 %19) %.off.i = add nsw i64 %6, -1 %switch.i = icmp ult i64 %.off.i, 4 br i1 %switch.i, label %_ZN11quinn_proto10connection4mtud19EnabledMtuDiscovery13poll_transmit17h9dba73a8caa37651E.exit, label %.thread.i @@ -5036,9 +5039,9 @@ define hidden { i16, i16 } @_ZN11quinn_proto10connection4mtud12MtuDiscovery13pol br label %.thread .thread: ; preds = %26, %11 - %.sroa.0.0.sroa.speculated.i.i.sink46.i = phi i16 [ %.sroa.0.0.sroa.speculated.i.i.i, %11 ], [ %.sroa.0.0.sroa.speculated.i.i16.i, %26 ] - %.sroa.0.0.in.sroa.speculated.i.i.sink.i = phi i16 [ %.sroa.0.0.in.sroa.speculated.i.i.i, %11 ], [ %.sroa.0.0.in.sroa.speculated.i.i18.i, %26 ] - %.val13.sink.i = phi i16 [ %.val13.i, %11 ], [ %.val15.i, %26 ] + %.sroa.0.0.sroa.speculated.i.i.sink46.i = phi i16 [ %.sroa.0.0.sroa.speculated.i.i.i, %12 ], [ %.sroa.0.0.sroa.speculated.i.i16.i, %28 ] + %.sroa.0.0.in.sroa.speculated.i.i.sink.i = phi i16 [ %.sroa.0.0.in.sroa.speculated.i.i.i, %12 ], [ %.sroa.0.0.in.sroa.speculated.i.i18.i, %28 ] + %.val13.sink.i = phi i16 [ %.val13.i, %12 ], [ %.val15.i, %28 ] %.sroa.724.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 90 store i16 %.sroa.0.0.in.sroa.speculated.i.i.sink.i, ptr %.sroa.724.0..sroa_idx.i, align 2, !alias.scope !290 %.sroa.825.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 92 @@ -5082,8 +5085,8 @@ define hidden { i16, i16 } @_ZN11quinn_proto10connection4mtud12MtuDiscovery13pol br label %50 45: ; preds = %.thread, %35 - %.phi.trans.insert5.i.i5 = phi ptr [ %.phi.trans.insert5.i.i4, %.thread ], [ %.phi.trans.insert5.i.i, %35 ] - %46 = phi ptr [ %32, %.thread ], [ %33, %35 ] + %.phi.trans.insert5.i.i5 = phi ptr [ %.phi.trans.insert5.i.i4, %.thread ], [ %.phi.trans.insert5.i.i, %37 ] + %46 = phi ptr [ %32, %.thread ], [ %33, %37 ] %47 = getelementptr inbounds nuw i8, ptr %0, i64 94 %48 = load i16, ptr %47, align 2, !alias.scope !296, !noundef !3 %49 = getelementptr inbounds nuw i8, ptr %0, i64 88 @@ -5092,11 +5095,11 @@ define hidden { i16, i16 } @_ZN11quinn_proto10connection4mtud12MtuDiscovery13pol br label %50 50: ; preds = %45, %41 - %51 = phi ptr [ %46, %45 ], [ %33, %41 ] - %52 = phi i16 [ %48, %45 ], [ %43, %41 ] - %53 = phi ptr [ %47, %45 ], [ %42, %41 ] - %54 = phi i16 [ %.pre6.i.i, %45 ], [ %44, %41 ] - %55 = phi i16 [ %48, %45 ], [ %.pre.i.i, %41 ] + %51 = phi ptr [ %46, %47 ], [ %33, %43 ] + %52 = phi i16 [ %48, %47 ], [ %43, %43 ] + %53 = phi ptr [ %47, %47 ], [ %42, %43 ] + %54 = phi i16 [ %.pre6.i.i, %47 ], [ %44, %43 ] + %55 = phi i16 [ %48, %47 ], [ %.pre.i.i, %43 ] %56 = zext i16 %55 to i32 %57 = zext i16 %54 to i32 %58 = add nuw nsw i32 %56, %57 @@ -5142,8 +5145,8 @@ _ZN11quinn_proto10connection4mtud11SearchState17next_mtu_to_probe17heda4e385c7bd br label %_ZN11quinn_proto10connection4mtud19EnabledMtuDiscovery13poll_transmit17h9dba73a8caa37651E.exit _ZN11quinn_proto10connection4mtud19EnabledMtuDiscovery13poll_transmit17h9dba73a8caa37651E.exit: ; preds = %70, %68, %37, %18, %17, %4 - %.sroa.3.0 = phi i16 [ undef, %4 ], [ %40, %37 ], [ %.sroa.4.0.i42.i, %68 ], [ undef, %70 ], [ undef, %18 ], [ undef, %17 ] - %.sroa.0.0 = phi i16 [ 0, %4 ], [ 1, %37 ], [ 1, %68 ], [ 0, %70 ], [ 0, %18 ], [ 0, %17 ] + %.sroa.3.0 = phi i16 [ undef, %4 ], [ %40, %39 ], [ %.sroa.4.0.i42.i, %70 ], [ undef, %72 ], [ undef, %20 ], [ undef, %18 ] + %.sroa.0.0 = phi i16 [ 0, %4 ], [ 1, %39 ], [ 1, %70 ], [ 0, %72 ], [ 0, %20 ], [ 0, %18 ] %78 = insertvalue { i16, i16 } poison, i16 %.sroa.0.0, 0 %79 = insertvalue { i16, i16 } %78, i16 %.sroa.3.0, 1 ret { i16, i16 } %79 diff --git a/bench/ruby/optimized/parse.ll b/bench/ruby/optimized/parse.ll index be13b018347..a39c232f29e 100644 --- a/bench/ruby/optimized/parse.ll +++ b/bench/ruby/optimized/parse.ll @@ -22066,12 +22066,13 @@ define internal fastcc range(i32 -2, 1) i32 @yysyntax_error(ptr noundef nonnull yy_syntax_error_arguments.exit: ; preds = %.critedge.i.i %38 = add i32 %.2.i.i, 1 - switch i32 %.2.i.i, label %yy_syntax_error_arguments.exit.thread6 [ - i32 -3, label %yy_syntax_error_arguments.exit.thread8 - i32 4, label %42 - i32 3, label %41 + switch i32 %38, label %yy_syntax_error_arguments.exit.thread6 [ + i32 -2, label %yy_syntax_error_arguments.exit.thread8 + i32 5, label %43 i32 1, label %39 i32 2, label %40 + i32 3, label %41 + i32 4, label %42 ] 39: ; preds = %yy_syntax_error_arguments.exit @@ -22086,14 +22087,17 @@ yy_syntax_error_arguments.exit: ; preds = %.critedge.i.i 42: ; preds = %yy_syntax_error_arguments.exit br label %yy_syntax_error_arguments.exit.thread6 -yy_syntax_error_arguments.exit.thread6: ; preds = %31, %.critedge.i.i.thread, %2, %yy_syntax_error_arguments.exit, %42, %41, %40, %39 - %.1.i5 = phi i32 [ 5, %42 ], [ 2, %39 ], [ 3, %40 ], [ 4, %41 ], [ %38, %yy_syntax_error_arguments.exit ], [ 0, %2 ], [ 1, %.critedge.i.i.thread ], [ 1, %31 ] - %.048 = phi ptr [ @.str.582, %42 ], [ @.str.579, %39 ], [ @.str.580, %40 ], [ @.str.581, %41 ], [ @.str.63, %yy_syntax_error_arguments.exit ], [ @.str.63, %2 ], [ @.str.578, %.critedge.i.i.thread ], [ @.str.578, %31 ] - %43 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.048) #38 - %44 = shl i32 %.1.i5, 1 - %45 = sext i32 %44 to i64 - %reass.sub = sub i64 %43, %45 - %46 = add i64 %reass.sub, 1 +yy_syntax_error_arguments.exit.thread6: ; preds = %yy_syntax_error_arguments.exit + br label %yy_syntax_error_arguments.exit.thread6 + +yy_syntax_error_arguments.exit.thread6:; preds = %31, %.critedge.i.i.thread, %2, %yy_syntax_error_arguments.exit, %43, %42, %41, %40, %39 + %.1.i5 = phi i32 [ %38, %43 ], [ %38, %40 ], [ %38, %41 ], [ %38, %42 ], [ %38, %yy_syntax_error_arguments.exit ], [ %38, %39 ], [ 0, %2 ], [ 1, %.critedge.i.i.thread ], [ 1, %31 ] + %.048 = phi ptr [ @.str.582, %43 ], [ @.str.579, %40 ], [ @.str.580, %41 ], [ @.str.581, %42 ], [ @.str.63, %yy_syntax_error_arguments.exit ], [ @.str.578, %39 ], [ @.str.63, %2 ], [ @.str.578, %.critedge.i.i.thread ], [ @.str.578, %31 ] + %44 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.048) #38 + %45 = shl i32 %.1.i5, 1 + %46 = sext i32 %45 to i64 + %reass.sub = sub i64 %44, %46 + %47 = add i64 %reass.sub, 1 %.not18 = icmp sgt i32 %.1.i5, 0 br i1 %.not18, label %.lr.ph.preheader, label %.thread @@ -22107,8 +22111,8 @@ yy_syntax_error_arguments.exit.thread6: ; preds = %31, %.critedge.i.i. br i1 %exitcond.not, label %.thread, label %.lr.ph, !llvm.loop !470 .lr.ph: ; preds = %.lr.ph.preheader, %47 - %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %47 ] - %.05119 = phi i64 [ %46, %.lr.ph.preheader ], [ %89, %47 ] + %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %48 ] + %.05119 = phi i64 [ %47, %.lr.ph.preheader ], [ %89, %48 ] %48 = getelementptr [5 x i32], ptr %3, i64 0, i64 %indvars.iv %49 = load i32, ptr %48, align 4, !tbaa !60 %50 = sext i32 %49 to i64 @@ -22130,7 +22134,7 @@ yy_syntax_error_arguments.exit.thread6: ; preds = %31, %.critedge.i.i. %.052.i = phi ptr [ %.052.i.ph, %.preheader.i.outer ], [ %.052.i.be, %.preheader.i.backedge ] %55 = getelementptr i8, ptr %.052.i, i64 1 %56 = load i8, ptr %55, align 1, !tbaa !25 - switch i8 %56, label %86 [ + switch i8 %56, label %87 [ i8 0, label %.thread.i i8 39, label %57 i8 44, label %.thread.i @@ -22143,7 +22147,7 @@ yy_syntax_error_arguments.exit.thread6: ; preds = %31, %.critedge.i.i. br i1 %.not66.i, label %.preheader12, label %.preheader13 .preheader12: ; preds = %57, %.preheader12 - %.0.i.i = phi i32 [ %63, %.preheader12 ], [ 0, %57 ] + %.0.i.i = phi i32 [ %63, %.preheader12 ], [ 0, %58 ] %59 = sext i32 %.0.i.i to i64 %60 = getelementptr i8, ptr %58, i64 %59 %61 = load i8, ptr %60, align 1, !tbaa !25 @@ -22157,7 +22161,7 @@ count_char.exit.i: ; preds = %.preheader12 br label %.preheader.i.outer.backedge .preheader13: ; preds = %57, %.preheader13 - %.0.i75.i = phi i32 [ %70, %.preheader13 ], [ 0, %57 ] + %.0.i75.i = phi i32 [ %70, %.preheader13 ], [ 0, %58 ] %66 = sext i32 %.0.i75.i to i64 %67 = getelementptr i8, ptr %58, i64 %66 %68 = load i8, ptr %67, align 1, !tbaa !25 @@ -22175,15 +22179,15 @@ count_char.exit76.i: ; preds = %.preheader13 br label %.preheader.i.outer.backedge .preheader.i.outer.backedge: ; preds = %73, %count_char.exit.i - %.pn = phi i64 [ %64, %count_char.exit.i ], [ %.053.i.ph, %73 ] - %.053.i.ph.be = phi i64 [ %64, %count_char.exit.i ], [ 0, %73 ] - %.052.i.ph.be = phi ptr [ %65, %count_char.exit.i ], [ %74, %73 ] + %.pn = phi i64 [ %64, %count_char.exit.i ], [ %.053.i.ph, %74 ] + %.053.i.ph.be = phi i64 [ %64, %count_char.exit.i ], [ 0, %74 ] + %.052.i.ph.be = phi ptr [ %65, %count_char.exit.i ], [ %74, %74 ] %.055.i.ph.be = add i64 %.pn, %.055.i br label %.preheader.i.outer, !llvm.loop !472 75: ; preds = %count_char.exit76.i %76 = load i8, ptr %58, align 1, !tbaa !25 - switch i8 %76, label %77 [ + switch i8 %76, label %78 [ i8 0, label %.thread.i i8 39, label %.thread.i ] @@ -22205,13 +22209,13 @@ count_char.exit76.i: ; preds = %.preheader13 br i1 %.not65.i, label %86, label %.thread.i 86: ; preds = %83, %.preheader.i - %.1.i59 = phi ptr [ %84, %83 ], [ %55, %.preheader.i ] + %.1.i59 = phi ptr [ %84, %84 ], [ %55, %.preheader.i ] %87 = add i64 %.055.i, 1 br label %.preheader.i.backedge .preheader.i.backedge: ; preds = %86, %81 - %.055.i.be = phi i64 [ %87, %86 ], [ %82, %81 ] - %.052.i.be = phi ptr [ %.1.i59, %86 ], [ %78, %81 ] + %.055.i.be = phi i64 [ %87, %87 ], [ %82, %82 ] + %.052.i.be = phi ptr [ %.1.i59, %87 ], [ %78, %82 ] br label %.preheader.i, !llvm.loop !472 .thread.i: ; preds = %83, %77, %75, %75, %.preheader.i, %.preheader.i, %.lr.ph @@ -22225,7 +22229,7 @@ rb_yytnamerr.exit: ; preds = %.preheader.i, %.thr br i1 %.not.not, label %yy_syntax_error_arguments.exit.thread8, label %47 .thread: ; preds = %47, %yy_syntax_error_arguments.exit.thread6 - %.051.lcssa = phi i64 [ %46, %yy_syntax_error_arguments.exit.thread6 ], [ %89, %47 ] + %.051.lcssa = phi i64 [ %47, %yy_syntax_error_arguments.exit.thread6 ], [ %89, %48 ] %90 = load i64, ptr %0, align 8, !tbaa !7 %91 = icmp slt i64 %90, %.051.lcssa br i1 %91, label %92, label %.preheader @@ -22238,12 +22242,12 @@ rb_yytnamerr.exit: ; preds = %.preheader.i, %.thr br label %yy_syntax_error_arguments.exit.thread8 .preheader: ; preds = %.thread, %109 - %.149 = phi ptr [ %111, %109 ], [ %.048, %.thread ] - %.041 = phi ptr [ %110, %109 ], [ %.0.val, %.thread ] - %.0 = phi i32 [ %.1, %109 ], [ 0, %.thread ] + %.149 = phi ptr [ %111, %110 ], [ %.048, %.thread ] + %.041 = phi ptr [ %110, %110 ], [ %.0.val, %.thread ] + %.0 = phi i32 [ %.1, %110 ], [ 0, %.thread ] %94 = load i8, ptr %.149, align 1, !tbaa !25 store i8 %94, ptr %.041, align 1, !tbaa !25 - switch i8 %94, label %109 [ + switch i8 %94, label %110 [ i8 0, label %yy_syntax_error_arguments.exit.thread8 i8 37, label %95 ] @@ -22268,15 +22272,15 @@ rb_yytnamerr.exit: ; preds = %.preheader.i, %.thr br label %109 109: ; preds = %95, %.preheader, %100 - %.sink37 = phi i64 [ %108, %100 ], [ 1, %.preheader ], [ 1, %95 ] - %.sink = phi i64 [ 2, %100 ], [ 1, %.preheader ], [ 1, %95 ] - %.1 = phi i32 [ %101, %100 ], [ %.0, %.preheader ], [ %.0, %95 ] + %.sink37 = phi i64 [ %108, %101 ], [ 1, %.preheader ], [ 1, %96 ] + %.sink = phi i64 [ 2, %101 ], [ 1, %.preheader ], [ 1, %96 ] + %.1 = phi i32 [ %101, %101 ], [ %.0, %.preheader ], [ %.0, %96 ] %110 = getelementptr i8, ptr %.041, i64 %.sink37 %111 = getelementptr i8, ptr %.149, i64 %.sink br label %.preheader, !llvm.loop !473 yy_syntax_error_arguments.exit.thread8: ; preds = %rb_yytnamerr.exit, %.preheader, %.critedge.i.i, %92, %yy_syntax_error_arguments.exit - %.043 = phi i32 [ -2, %yy_syntax_error_arguments.exit ], [ -1, %92 ], [ %.2.i.i, %.critedge.i.i ], [ 0, %.preheader ], [ -2, %rb_yytnamerr.exit ] + %.043 = phi i32 [ %38, %yy_syntax_error_arguments.exit ], [ -1, %93 ], [ %.2.i.i, %.critedge.i.i ], [ 0, %.preheader ], [ -2, %rb_yytnamerr.exit ] call void @llvm.lifetime.end.p0(ptr nonnull %3) ret i32 %.043 } diff --git a/bench/ruby/optimized/ripper.ll b/bench/ruby/optimized/ripper.ll index c3373084614..7e42000e488 100644 --- a/bench/ruby/optimized/ripper.ll +++ b/bench/ruby/optimized/ripper.ll @@ -25425,12 +25425,13 @@ define internal fastcc range(i32 -2, 1) i32 @yysyntax_error(ptr noundef nonnull yy_syntax_error_arguments.exit: ; preds = %.critedge.i.i %38 = add nsw i32 %.2.i.i, 1 - switch i32 %.2.i.i, label %yy_syntax_error_arguments.exit.thread6 [ - i32 -3, label %yy_syntax_error_arguments.exit.thread8 - i32 4, label %42 - i32 3, label %41 + switch i32 %38, label %yy_syntax_error_arguments.exit.thread6 [ + i32 -2, label %yy_syntax_error_arguments.exit.thread8 + i32 5, label %43 i32 1, label %39 i32 2, label %40 + i32 3, label %41 + i32 4, label %42 ] 39: ; preds = %yy_syntax_error_arguments.exit @@ -25445,14 +25446,17 @@ yy_syntax_error_arguments.exit: ; preds = %.critedge.i.i 42: ; preds = %yy_syntax_error_arguments.exit br label %yy_syntax_error_arguments.exit.thread6 -yy_syntax_error_arguments.exit.thread6: ; preds = %31, %.critedge.thread.i.i, %2, %yy_syntax_error_arguments.exit, %42, %41, %40, %39 - %.1.i5 = phi i32 [ 5, %42 ], [ 2, %39 ], [ 3, %40 ], [ 4, %41 ], [ %38, %yy_syntax_error_arguments.exit ], [ 0, %2 ], [ 1, %.critedge.thread.i.i ], [ 1, %31 ] - %.048 = phi ptr [ @.str.568, %42 ], [ @.str.565, %39 ], [ @.str.566, %40 ], [ @.str.567, %41 ], [ @.str.63, %yy_syntax_error_arguments.exit ], [ @.str.63, %2 ], [ @.str.564, %.critedge.thread.i.i ], [ @.str.564, %31 ] - %43 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.048) #34 - %44 = shl nsw i32 %.1.i5, 1 - %45 = sext i32 %44 to i64 - %reass.sub = sub i64 %43, %45 - %46 = add i64 %reass.sub, 1 +yy_syntax_error_arguments.exit.thread6: ; preds = %yy_syntax_error_arguments.exit + br label %yy_syntax_error_arguments.exit.thread6 + +yy_syntax_error_arguments.exit.thread6:; preds = %31, %.critedge.thread.i.i, %2, %yy_syntax_error_arguments.exit, %43, %42, %41, %40, %39 + %.1.i5 = phi i32 [ %38, %43 ], [ %38, %40 ], [ %38, %41 ], [ %38, %42 ], [ %38, %yy_syntax_error_arguments.exit ], [ %38, %39 ], [ 0, %2 ], [ 1, %.critedge.thread.i.i ], [ 1, %31 ] + %.048 = phi ptr [ @.str.568, %43 ], [ @.str.565, %40 ], [ @.str.566, %41 ], [ @.str.567, %42 ], [ @.str.63, %yy_syntax_error_arguments.exit ], [ @.str.564, %39 ], [ @.str.63, %2 ], [ @.str.564, %.critedge.thread.i.i ], [ @.str.564, %31 ] + %44 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.048) #34 + %45 = shl nsw i32 %.1.i5, 1 + %46 = sext i32 %45 to i64 + %reass.sub = sub i64 %44, %46 + %47 = add i64 %reass.sub, 1 %.not13 = icmp sgt i32 %.1.i5, 0 br i1 %.not13, label %.lr.ph.preheader, label %._crit_edge @@ -25466,8 +25470,8 @@ yy_syntax_error_arguments.exit.thread6: ; preds = %31, %.critedge.thre br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !457 .lr.ph: ; preds = %.lr.ph.preheader, %47 - %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %47 ] - %.05114 = phi i64 [ %46, %.lr.ph.preheader ], [ %54, %47 ] + %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %48 ] + %.05114 = phi i64 [ %47, %.lr.ph.preheader ], [ %54, %48 ] %48 = getelementptr inbounds nuw [5 x i32], ptr %3, i64 0, i64 %indvars.iv %49 = load i32, ptr %48, align 4, !tbaa !12 %50 = sext i32 %49 to i64 @@ -25479,7 +25483,7 @@ yy_syntax_error_arguments.exit.thread6: ; preds = %31, %.critedge.thre br i1 %.not.not, label %yy_syntax_error_arguments.exit.thread8, label %47 ._crit_edge: ; preds = %47, %yy_syntax_error_arguments.exit.thread6 - %.051.lcssa = phi i64 [ %46, %yy_syntax_error_arguments.exit.thread6 ], [ %54, %47 ] + %.051.lcssa = phi i64 [ %47, %yy_syntax_error_arguments.exit.thread6 ], [ %54, %48 ] %55 = load i64, ptr %0, align 8, !tbaa !9 %56 = icmp slt i64 %55, %.051.lcssa br i1 %56, label %57, label %.preheader @@ -25492,12 +25496,12 @@ yy_syntax_error_arguments.exit.thread6: ; preds = %31, %.critedge.thre br label %yy_syntax_error_arguments.exit.thread8 .preheader: ; preds = %._crit_edge, %74 - %.149 = phi ptr [ %76, %74 ], [ %.048, %._crit_edge ] - %.041 = phi ptr [ %75, %74 ], [ %.0.val, %._crit_edge ] - %.0 = phi i32 [ %.1, %74 ], [ 0, %._crit_edge ] + %.149 = phi ptr [ %76, %75 ], [ %.048, %._crit_edge ] + %.041 = phi ptr [ %75, %75 ], [ %.0.val, %._crit_edge ] + %.0 = phi i32 [ %.1, %75 ], [ 0, %._crit_edge ] %59 = load i8, ptr %.149, align 1, !tbaa !6 store i8 %59, ptr %.041, align 1, !tbaa !6 - switch i8 %59, label %74 [ + switch i8 %59, label %75 [ i8 0, label %yy_syntax_error_arguments.exit.thread8 i8 37, label %60 ] @@ -25522,15 +25526,15 @@ yy_syntax_error_arguments.exit.thread6: ; preds = %31, %.critedge.thre br label %74 74: ; preds = %60, %.preheader, %65 - %.sink26 = phi i64 [ %73, %65 ], [ 1, %.preheader ], [ 1, %60 ] - %.sink = phi i64 [ 2, %65 ], [ 1, %.preheader ], [ 1, %60 ] - %.1 = phi i32 [ %66, %65 ], [ %.0, %.preheader ], [ %.0, %60 ] + %.sink26 = phi i64 [ %73, %66 ], [ 1, %.preheader ], [ 1, %61 ] + %.sink = phi i64 [ 2, %66 ], [ 1, %.preheader ], [ 1, %61 ] + %.1 = phi i32 [ %66, %66 ], [ %.0, %.preheader ], [ %.0, %61 ] %75 = getelementptr inbounds nuw i8, ptr %.041, i64 %.sink26 %76 = getelementptr inbounds nuw i8, ptr %.149, i64 %.sink br label %.preheader, !llvm.loop !458 yy_syntax_error_arguments.exit.thread8: ; preds = %.lr.ph, %.preheader, %.critedge.i.i, %57, %yy_syntax_error_arguments.exit - %.043 = phi i32 [ -2, %yy_syntax_error_arguments.exit ], [ -1, %57 ], [ %.2.i.i, %.critedge.i.i ], [ 0, %.preheader ], [ -2, %.lr.ph ] + %.043 = phi i32 [ %38, %yy_syntax_error_arguments.exit ], [ -1, %58 ], [ %.2.i.i, %.critedge.i.i ], [ 0, %.preheader ], [ -2, %.lr.ph ] call void @llvm.lifetime.end.p0(ptr nonnull %3) ret i32 %.043 } diff --git a/bench/ruff-rs/optimized/46wmnpgmgka682m3o5jca2e4b.ll b/bench/ruff-rs/optimized/46wmnpgmgka682m3o5jca2e4b.ll index 96736f56d72..a72437a9d44 100644 --- a/bench/ruff-rs/optimized/46wmnpgmgka682m3o5jca2e4b.ll +++ b/bench/ruff-rs/optimized/46wmnpgmgka682m3o5jca2e4b.ll @@ -54709,7 +54709,7 @@ _ZN5serde2de9MapAccess8next_key17hfe81454cb8a20233E.exit.thread.i: ; preds = %_Z i8 17, label %235 ] -default.unreachable: ; preds = %_ZN5serde2de9MapAccess8next_key17hfe81454cb8a20233E.exit.thread.i, %874 +default.unreachable: ; preds = %_ZN5serde2de9MapAccess8next_key17hfe81454cb8a20233E.exit.thread.i, %1009, %874 unreachable 201: ; preds = %_ZN5serde2de9MapAccess8next_key17hfe81454cb8a20233E.exit.thread.i @@ -57953,16 +57953,13 @@ _ZN5serde2de7Visitor12visit_string17h33f62990971aa189E.exit.i: ; preds = %911 br i1 %1008, label %1015, label %1009 1009: ; preds = %1003 - switch i64 %1004, label %.unreachabledefault.i29 [ - i64 8, label %"_ZN4core3ptr42drop_in_place$LT$toml_edit..item..Item$GT$17hb533e0236da4305bE.exit" - i64 9, label %1012 - i64 10, label %1013 - i64 11, label %1010 + switch i64 %1005, label %default.unreachable [ + i64 0, label %"_ZN4core3ptr42drop_in_place$LT$toml_edit..item..Item$GT$17hb533e0236da4305bE.exit" + i64 1, label %1012 + i64 2, label %1013 + i64 3, label %1010 ] -.unreachabledefault.i29: ; preds = %1009 - unreachable - 1010: ; preds = %1009 %1011 = getelementptr inbounds nuw i8, ptr %1, i64 8 call void @"_ZN4core3ptr62drop_in_place$LT$toml_edit..array_of_tables..ArrayOfTables$GT$17h4bf4b8f968a2e1a6E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %1011) @@ -58343,7 +58340,7 @@ _ZN5serde2de9MapAccess8next_key17h3fb3b3830bfed855E.exit.thread.i.thread: ; pred _ZN5serde2de9MapAccess8next_key17h3fb3b3830bfed855E.exit.thread.i.unreachabledefault: ; preds = %_ZN5serde2de9MapAccess8next_key17h3fb3b3830bfed855E.exit.thread.i unreachable -default.unreachable: ; preds = %258 +default.unreachable: ; preds = %393, %258 unreachable 107: ; preds = %_ZN5serde2de9MapAccess8next_key17h3fb3b3830bfed855E.exit.thread.i @@ -59450,16 +59447,13 @@ _ZN5serde2de7Visitor12visit_string17h622da542dbefac91E.exit.i: ; preds = %295 br i1 %392, label %399, label %393 393: ; preds = %387 - switch i64 %388, label %.unreachabledefault.i29 [ - i64 8, label %"_ZN4core3ptr42drop_in_place$LT$toml_edit..item..Item$GT$17hb533e0236da4305bE.exit" - i64 9, label %396 - i64 10, label %397 - i64 11, label %394 + switch i64 %389, label %default.unreachable [ + i64 0, label %"_ZN4core3ptr42drop_in_place$LT$toml_edit..item..Item$GT$17hb533e0236da4305bE.exit" + i64 1, label %396 + i64 2, label %397 + i64 3, label %394 ] -.unreachabledefault.i29: ; preds = %393 - unreachable - 394: ; preds = %393 %395 = getelementptr inbounds nuw i8, ptr %1, i64 8 call void @"_ZN4core3ptr62drop_in_place$LT$toml_edit..array_of_tables..ArrayOfTables$GT$17h4bf4b8f968a2e1a6E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %395) @@ -59836,7 +59830,7 @@ _ZN5serde2de9MapAccess8next_key17hf4d2897900736e4eE.exit.thread.i.thread: ; pred _ZN5serde2de9MapAccess8next_key17hf4d2897900736e4eE.exit.thread.i.unreachabledefault: ; preds = %_ZN5serde2de9MapAccess8next_key17hf4d2897900736e4eE.exit.thread.i unreachable -default.unreachable: ; preds = %257 +default.unreachable: ; preds = %390, %257 unreachable 109: ; preds = %_ZN5serde2de9MapAccess8next_key17hf4d2897900736e4eE.exit.thread.i @@ -60950,16 +60944,13 @@ _ZN5serde2de7Visitor12visit_string17h6244296004b8c313E.exit.i: ; preds = %293 br i1 %389, label %396, label %390 390: ; preds = %384 - switch i64 %385, label %.unreachabledefault.i31 [ - i64 8, label %"_ZN4core3ptr42drop_in_place$LT$toml_edit..item..Item$GT$17hb533e0236da4305bE.exit" - i64 9, label %393 - i64 10, label %394 - i64 11, label %391 + switch i64 %386, label %default.unreachable [ + i64 0, label %"_ZN4core3ptr42drop_in_place$LT$toml_edit..item..Item$GT$17hb533e0236da4305bE.exit" + i64 1, label %393 + i64 2, label %394 + i64 3, label %391 ] -.unreachabledefault.i31: ; preds = %390 - unreachable - 391: ; preds = %390 %392 = getelementptr inbounds nuw i8, ptr %1, i64 8 call void @"_ZN4core3ptr62drop_in_place$LT$toml_edit..array_of_tables..ArrayOfTables$GT$17h4bf4b8f968a2e1a6E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %392) diff --git a/bench/ruff-rs/optimized/6061x2mt3u1774xq1vyt1rxfo.ll b/bench/ruff-rs/optimized/6061x2mt3u1774xq1vyt1rxfo.ll index 446a435be33..cc1456b54d1 100644 --- a/bench/ruff-rs/optimized/6061x2mt3u1774xq1vyt1rxfo.ll +++ b/bench/ruff-rs/optimized/6061x2mt3u1774xq1vyt1rxfo.ll @@ -4599,7 +4599,7 @@ _ZN5serde2de9MapAccess8next_key17he3b870906cb35123E.exit.thread.i.thread: ; pred %.not229.i = icmp eq i64 %117, -9223372036854775806 br i1 %.not229.i, label %234, label %233 -default.unreachable: ; preds = %_ZN5serde2de9MapAccess8next_key17he3b870906cb35123E.exit.thread.i, %312 +default.unreachable: ; preds = %_ZN5serde2de9MapAccess8next_key17he3b870906cb35123E.exit.thread.i, %447, %312 unreachable 118: ; preds = %_ZN5serde2de9MapAccess8next_key17he3b870906cb35123E.exit.thread.i @@ -5900,16 +5900,13 @@ _ZN5serde2de7Visitor12visit_string17he5bf21701318d270E.exit.i: ; preds = %349 br i1 %446, label %453, label %447 447: ; preds = %441 - switch i64 %442, label %.unreachabledefault.i29 [ - i64 8, label %"_ZN4core3ptr42drop_in_place$LT$toml_edit..item..Item$GT$17he8054f3e5a97374eE.exit" - i64 9, label %450 - i64 10, label %451 - i64 11, label %448 + switch i64 %443, label %default.unreachable [ + i64 0, label %"_ZN4core3ptr42drop_in_place$LT$toml_edit..item..Item$GT$17he8054f3e5a97374eE.exit" + i64 1, label %450 + i64 2, label %451 + i64 3, label %448 ] -.unreachabledefault.i29: ; preds = %447 - unreachable - 448: ; preds = %447 %449 = getelementptr inbounds nuw i8, ptr %1, i64 8 call void @"_ZN4core3ptr62drop_in_place$LT$toml_edit..array_of_tables..ArrayOfTables$GT$17hfff403484e173254E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %449) @@ -6293,7 +6290,7 @@ _ZN5serde2de9MapAccess8next_key17ha8118df2f80ca17eE.exit.thread.i.thread: ; pred _ZN5serde2de9MapAccess8next_key17ha8118df2f80ca17eE.exit.thread.i.unreachabledefault: ; preds = %_ZN5serde2de9MapAccess8next_key17ha8118df2f80ca17eE.exit.thread.i unreachable -default.unreachable: ; preds = %229 +default.unreachable: ; preds = %364, %229 unreachable 103: ; preds = %_ZN5serde2de9MapAccess8next_key17ha8118df2f80ca17eE.exit.thread.i @@ -7286,16 +7283,13 @@ _ZN5serde2de7Visitor12visit_string17h49b9c9a9f169be92E.exit.i: ; preds = %266 br i1 %363, label %370, label %364 364: ; preds = %358 - switch i64 %359, label %.unreachabledefault.i29 [ - i64 8, label %"_ZN4core3ptr42drop_in_place$LT$toml_edit..item..Item$GT$17he8054f3e5a97374eE.exit" - i64 9, label %367 - i64 10, label %368 - i64 11, label %365 + switch i64 %360, label %default.unreachable [ + i64 0, label %"_ZN4core3ptr42drop_in_place$LT$toml_edit..item..Item$GT$17he8054f3e5a97374eE.exit" + i64 1, label %367 + i64 2, label %368 + i64 3, label %365 ] -.unreachabledefault.i29: ; preds = %364 - unreachable - 365: ; preds = %364 %366 = getelementptr inbounds nuw i8, ptr %1, i64 8 call void @"_ZN4core3ptr62drop_in_place$LT$toml_edit..array_of_tables..ArrayOfTables$GT$17hfff403484e173254E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %366) diff --git a/bench/ruff-rs/optimized/baj3a1ius5zor89zqkql7xhjb.ll b/bench/ruff-rs/optimized/baj3a1ius5zor89zqkql7xhjb.ll index fefa5726e4c..e662ce08ace 100644 --- a/bench/ruff-rs/optimized/baj3a1ius5zor89zqkql7xhjb.ll +++ b/bench/ruff-rs/optimized/baj3a1ius5zor89zqkql7xhjb.ll @@ -5387,7 +5387,7 @@ _ZN5serde2de9MapAccess8next_key17hfbac9a6cef67c0f7E.exit.i.i.i.i: ; preds = %83 %.not131.i.i.i.i = icmp eq i64 %91, -9223372036854775807 br i1 %.not131.i.i.i.i, label %135, label %134 -default.unreachable: ; preds = %240, %89, %176 +default.unreachable: ; preds = %240, %89, %395, %176 unreachable 92: ; preds = %89 @@ -6716,16 +6716,13 @@ _ZN5serde2de9MapAccess10next_value17h9ee44f54a39cda49E.exit.i.i.i.i.i: ; preds = br i1 %394, label %401, label %395 395: ; preds = %388 - switch i64 %390, label %.unreachabledefault.i22.i.i.i [ - i64 8, label %"_ZN10ty_project8metadata9pyproject1_93_$LT$impl$u20$serde..de..Deserialize$u20$for$u20$ty_project..metadata..pyproject..Project$GT$11deserialize17h8d5e0d19ea13c7b1E.exit.thread.i" - i64 9, label %398 - i64 10, label %399 - i64 11, label %396 + switch i64 %391, label %default.unreachable [ + i64 0, label %"_ZN10ty_project8metadata9pyproject1_93_$LT$impl$u20$serde..de..Deserialize$u20$for$u20$ty_project..metadata..pyproject..Project$GT$11deserialize17h8d5e0d19ea13c7b1E.exit.thread.i" + i64 1, label %398 + i64 2, label %399 + i64 3, label %396 ] -.unreachabledefault.i22.i.i.i: ; preds = %395 - unreachable - 396: ; preds = %395 %397 = getelementptr inbounds nuw i8, ptr %58, i64 8 call void @"_ZN4core3ptr62drop_in_place$LT$toml_edit..array_of_tables..ArrayOfTables$GT$17h9641b8da8e8a92cbE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %397) @@ -8237,7 +8234,7 @@ _ZN5serde2de9MapAccess10next_value17h3befa2055acd5a6dE.exit.i.i.i.i: ; preds = % i64 3, label %155 ] -default.unreachable: ; preds = %150 +default.unreachable: ; preds = %281, %150 unreachable 147: ; preds = %142 @@ -8711,16 +8708,13 @@ _ZN5serde2de7Visitor10visit_bool17hb8f48a9161d8667aE.exit.i.i.i.i: ; preds = %19 br i1 %280, label %287, label %281 281: ; preds = %275 - switch i64 %276, label %.unreachabledefault.i27.i.i.i [ - i64 8, label %"_ZN10ty_project8metadata9pyproject1_90_$LT$impl$u20$serde..de..Deserialize$u20$for$u20$ty_project..metadata..pyproject..Tool$GT$11deserialize17hdeeaf78f74ad01ddE.exit.i" - i64 9, label %284 - i64 10, label %285 - i64 11, label %282 + switch i64 %277, label %default.unreachable [ + i64 0, label %"_ZN10ty_project8metadata9pyproject1_90_$LT$impl$u20$serde..de..Deserialize$u20$for$u20$ty_project..metadata..pyproject..Tool$GT$11deserialize17hdeeaf78f74ad01ddE.exit.i" + i64 1, label %284 + i64 2, label %285 + i64 3, label %282 ] -.unreachabledefault.i27.i.i.i: ; preds = %281 - unreachable - 282: ; preds = %281 %283 = getelementptr inbounds nuw i8, ptr %48, i64 8 call void @"_ZN4core3ptr62drop_in_place$LT$toml_edit..array_of_tables..ArrayOfTables$GT$17h9641b8da8e8a92cbE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %283) @@ -9493,7 +9487,7 @@ define hidden void @"_ZN83_$LT$toml_edit..de..value..ValueDeserializer$u20$as$u2 i64 3, label %104 ] -default.unreachable: ; preds = %99 +default.unreachable: ; preds = %232, %99 unreachable 97: ; preds = %92 @@ -9934,16 +9928,13 @@ _ZN5serde2de7Visitor12visit_string17hb448dc117882ede1E.exit.i: ; preds = %135 br i1 %231, label %238, label %232 232: ; preds = %226 - switch i64 %227, label %.unreachabledefault.i25 [ - i64 8, label %"_ZN4core3ptr42drop_in_place$LT$toml_edit..item..Item$GT$17hc885ec3c822cdd62E.exit" - i64 9, label %235 - i64 10, label %236 - i64 11, label %233 + switch i64 %228, label %default.unreachable [ + i64 0, label %"_ZN4core3ptr42drop_in_place$LT$toml_edit..item..Item$GT$17hc885ec3c822cdd62E.exit" + i64 1, label %235 + i64 2, label %236 + i64 3, label %233 ] -.unreachabledefault.i25: ; preds = %232 - unreachable - 233: ; preds = %232 %234 = getelementptr inbounds nuw i8, ptr %1, i64 8 call void @"_ZN4core3ptr62drop_in_place$LT$toml_edit..array_of_tables..ArrayOfTables$GT$17h9641b8da8e8a92cbE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %234) @@ -10248,7 +10239,7 @@ define hidden void @"_ZN83_$LT$toml_edit..de..value..ValueDeserializer$u20$as$u2 i64 3, label %104 ] -default.unreachable: ; preds = %99 +default.unreachable: ; preds = %232, %99 unreachable 97: ; preds = %92 @@ -10689,16 +10680,13 @@ _ZN5serde2de7Visitor12visit_string17he69819060560b2b7E.exit.i: ; preds = %135 br i1 %231, label %238, label %232 232: ; preds = %226 - switch i64 %227, label %.unreachabledefault.i25 [ - i64 8, label %"_ZN4core3ptr42drop_in_place$LT$toml_edit..item..Item$GT$17hc885ec3c822cdd62E.exit" - i64 9, label %235 - i64 10, label %236 - i64 11, label %233 + switch i64 %228, label %default.unreachable [ + i64 0, label %"_ZN4core3ptr42drop_in_place$LT$toml_edit..item..Item$GT$17hc885ec3c822cdd62E.exit" + i64 1, label %235 + i64 2, label %236 + i64 3, label %233 ] -.unreachabledefault.i25: ; preds = %232 - unreachable - 233: ; preds = %232 %234 = getelementptr inbounds nuw i8, ptr %1, i64 8 call void @"_ZN4core3ptr62drop_in_place$LT$toml_edit..array_of_tables..ArrayOfTables$GT$17h9641b8da8e8a92cbE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %234) @@ -10978,7 +10966,7 @@ _ZN5serde2de9MapAccess8next_key17hf33f2661436a08ceE.exit.i: ; preds = %79 %.not209.i = icmp eq i64 %87, -9223372036854775806 br i1 %.not209.i, label %161, label %160 -default.unreachable: ; preds = %85, %245 +default.unreachable: ; preds = %85, %380, %245 unreachable 88: ; preds = %85 @@ -12055,16 +12043,13 @@ _ZN5serde2de7Visitor12visit_string17h0e24634a79472381E.exit.i: ; preds = %282 br i1 %379, label %386, label %380 380: ; preds = %374 - switch i64 %375, label %.unreachabledefault.i30 [ - i64 8, label %"_ZN4core3ptr42drop_in_place$LT$toml_edit..item..Item$GT$17hc885ec3c822cdd62E.exit" - i64 9, label %383 - i64 10, label %384 - i64 11, label %381 + switch i64 %376, label %default.unreachable [ + i64 0, label %"_ZN4core3ptr42drop_in_place$LT$toml_edit..item..Item$GT$17hc885ec3c822cdd62E.exit" + i64 1, label %383 + i64 2, label %384 + i64 3, label %381 ] -.unreachabledefault.i30: ; preds = %380 - unreachable - 381: ; preds = %380 %382 = getelementptr inbounds nuw i8, ptr %1, i64 8 call void @"_ZN4core3ptr62drop_in_place$LT$toml_edit..array_of_tables..ArrayOfTables$GT$17h9641b8da8e8a92cbE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %382) @@ -12596,7 +12581,7 @@ _ZN5serde2de9MapAccess10next_value17hd7766ae7e941c6dfE.exit.i: ; preds = %89 i64 3, label %154 ] -default.unreachable: ; preds = %149 +default.unreachable: ; preds = %282, %149 unreachable 147: ; preds = %142 @@ -13037,16 +13022,13 @@ _ZN5serde2de7Visitor12visit_string17h5b1d6e1fc254891bE.exit.i: ; preds = %185 br i1 %281, label %288, label %282 282: ; preds = %276 - switch i64 %277, label %.unreachabledefault.i31 [ - i64 8, label %"_ZN4core3ptr42drop_in_place$LT$toml_edit..item..Item$GT$17hc885ec3c822cdd62E.exit" - i64 9, label %285 - i64 10, label %286 - i64 11, label %283 + switch i64 %278, label %default.unreachable [ + i64 0, label %"_ZN4core3ptr42drop_in_place$LT$toml_edit..item..Item$GT$17hc885ec3c822cdd62E.exit" + i64 1, label %285 + i64 2, label %286 + i64 3, label %283 ] -.unreachabledefault.i31: ; preds = %282 - unreachable - 283: ; preds = %282 %284 = getelementptr inbounds nuw i8, ptr %1, i64 8 call void @"_ZN4core3ptr62drop_in_place$LT$toml_edit..array_of_tables..ArrayOfTables$GT$17h9641b8da8e8a92cbE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %284) @@ -13351,7 +13333,7 @@ define hidden void @"_ZN83_$LT$toml_edit..de..value..ValueDeserializer$u20$as$u2 i64 3, label %104 ] -default.unreachable: ; preds = %99 +default.unreachable: ; preds = %232, %99 unreachable 97: ; preds = %92 @@ -13792,16 +13774,13 @@ _ZN5serde2de7Visitor12visit_string17h9e45476df4353b32E.exit.i: ; preds = %135 br i1 %231, label %238, label %232 232: ; preds = %226 - switch i64 %227, label %.unreachabledefault.i25 [ - i64 8, label %"_ZN4core3ptr42drop_in_place$LT$toml_edit..item..Item$GT$17hc885ec3c822cdd62E.exit" - i64 9, label %235 - i64 10, label %236 - i64 11, label %233 + switch i64 %228, label %default.unreachable [ + i64 0, label %"_ZN4core3ptr42drop_in_place$LT$toml_edit..item..Item$GT$17hc885ec3c822cdd62E.exit" + i64 1, label %235 + i64 2, label %236 + i64 3, label %233 ] -.unreachabledefault.i25: ; preds = %232 - unreachable - 233: ; preds = %232 %234 = getelementptr inbounds nuw i8, ptr %1, i64 8 call void @"_ZN4core3ptr62drop_in_place$LT$toml_edit..array_of_tables..ArrayOfTables$GT$17h9641b8da8e8a92cbE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %234) @@ -14106,7 +14085,7 @@ define hidden void @"_ZN83_$LT$toml_edit..de..value..ValueDeserializer$u20$as$u2 i64 3, label %104 ] -default.unreachable: ; preds = %99 +default.unreachable: ; preds = %232, %99 unreachable 97: ; preds = %92 @@ -14547,16 +14526,13 @@ _ZN5serde2de7Visitor12visit_string17h236bef4e529d89deE.exit.i: ; preds = %135 br i1 %231, label %238, label %232 232: ; preds = %226 - switch i64 %227, label %.unreachabledefault.i25 [ - i64 8, label %"_ZN4core3ptr42drop_in_place$LT$toml_edit..item..Item$GT$17hc885ec3c822cdd62E.exit" - i64 9, label %235 - i64 10, label %236 - i64 11, label %233 + switch i64 %228, label %default.unreachable [ + i64 0, label %"_ZN4core3ptr42drop_in_place$LT$toml_edit..item..Item$GT$17hc885ec3c822cdd62E.exit" + i64 1, label %235 + i64 2, label %236 + i64 3, label %233 ] -.unreachabledefault.i25: ; preds = %232 - unreachable - 233: ; preds = %232 %234 = getelementptr inbounds nuw i8, ptr %1, i64 8 call void @"_ZN4core3ptr62drop_in_place$LT$toml_edit..array_of_tables..ArrayOfTables$GT$17h9641b8da8e8a92cbE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %234) @@ -14861,7 +14837,7 @@ define hidden void @"_ZN83_$LT$toml_edit..de..value..ValueDeserializer$u20$as$u2 i64 3, label %104 ] -default.unreachable: ; preds = %99 +default.unreachable: ; preds = %232, %99 unreachable 97: ; preds = %92 @@ -15302,16 +15278,13 @@ _ZN5serde2de7Visitor12visit_string17h1cab2a3f2e4291caE.exit.i: ; preds = %135 br i1 %231, label %238, label %232 232: ; preds = %226 - switch i64 %227, label %.unreachabledefault.i25 [ - i64 8, label %"_ZN4core3ptr42drop_in_place$LT$toml_edit..item..Item$GT$17hc885ec3c822cdd62E.exit" - i64 9, label %235 - i64 10, label %236 - i64 11, label %233 + switch i64 %228, label %default.unreachable [ + i64 0, label %"_ZN4core3ptr42drop_in_place$LT$toml_edit..item..Item$GT$17hc885ec3c822cdd62E.exit" + i64 1, label %235 + i64 2, label %236 + i64 3, label %233 ] -.unreachabledefault.i25: ; preds = %232 - unreachable - 233: ; preds = %232 %234 = getelementptr inbounds nuw i8, ptr %1, i64 8 call void @"_ZN4core3ptr62drop_in_place$LT$toml_edit..array_of_tables..ArrayOfTables$GT$17h9641b8da8e8a92cbE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %234) @@ -15616,7 +15589,7 @@ define hidden void @"_ZN83_$LT$toml_edit..de..value..ValueDeserializer$u20$as$u2 i64 3, label %104 ] -default.unreachable: ; preds = %99 +default.unreachable: ; preds = %232, %99 unreachable 97: ; preds = %92 @@ -16057,16 +16030,13 @@ _ZN5serde2de7Visitor12visit_string17h69109247ce859d64E.exit.i: ; preds = %135 br i1 %231, label %238, label %232 232: ; preds = %226 - switch i64 %227, label %.unreachabledefault.i25 [ - i64 8, label %"_ZN4core3ptr42drop_in_place$LT$toml_edit..item..Item$GT$17hc885ec3c822cdd62E.exit" - i64 9, label %235 - i64 10, label %236 - i64 11, label %233 + switch i64 %228, label %default.unreachable [ + i64 0, label %"_ZN4core3ptr42drop_in_place$LT$toml_edit..item..Item$GT$17hc885ec3c822cdd62E.exit" + i64 1, label %235 + i64 2, label %236 + i64 3, label %233 ] -.unreachabledefault.i25: ; preds = %232 - unreachable - 233: ; preds = %232 %234 = getelementptr inbounds nuw i8, ptr %1, i64 8 call void @"_ZN4core3ptr62drop_in_place$LT$toml_edit..array_of_tables..ArrayOfTables$GT$17h9641b8da8e8a92cbE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %234) @@ -16322,7 +16292,7 @@ _ZN5serde2de9MapAccess8next_key17hf30e03570de6d0baE.exit.i: ; preds = %71 .unreachabledefault: ; preds = %77 unreachable -default.unreachable: ; preds = %181 +default.unreachable: ; preds = %315, %181 unreachable 80: ; preds = %77 @@ -17178,16 +17148,13 @@ _ZN5serde2de7Visitor10visit_bool17h021a0f8ef5a0dedcE.exit.i: ; preds = %225 br i1 %314, label %321, label %315 315: ; preds = %309 - switch i64 %310, label %.unreachabledefault.i29 [ - i64 8, label %"_ZN4core3ptr42drop_in_place$LT$toml_edit..item..Item$GT$17hc885ec3c822cdd62E.exit" - i64 9, label %318 - i64 10, label %319 - i64 11, label %316 + switch i64 %311, label %default.unreachable [ + i64 0, label %"_ZN4core3ptr42drop_in_place$LT$toml_edit..item..Item$GT$17hc885ec3c822cdd62E.exit" + i64 1, label %318 + i64 2, label %319 + i64 3, label %316 ] -.unreachabledefault.i29: ; preds = %315 - unreachable - 316: ; preds = %315 %317 = getelementptr inbounds nuw i8, ptr %1, i64 8 call void @"_ZN4core3ptr62drop_in_place$LT$toml_edit..array_of_tables..ArrayOfTables$GT$17h9641b8da8e8a92cbE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %317) @@ -17459,7 +17426,7 @@ _ZN5serde2de9MapAccess8next_key17hb87e8a97c828d8eaE.exit.i: ; preds = %80 %.not219.i = icmp eq i32 %89, 3 br i1 %.not219.i, label %163, label %162 -default.unreachable: ; preds = %87, %250 +default.unreachable: ; preds = %87, %385, %250 unreachable 90: ; preds = %87 @@ -18573,16 +18540,13 @@ _ZN5serde2de7Visitor12visit_string17hbae61de9035ef257E.exit.i: ; preds = %287 br i1 %384, label %391, label %385 385: ; preds = %379 - switch i64 %380, label %.unreachabledefault.i30 [ - i64 8, label %"_ZN4core3ptr42drop_in_place$LT$toml_edit..item..Item$GT$17hc885ec3c822cdd62E.exit" - i64 9, label %388 - i64 10, label %389 - i64 11, label %386 + switch i64 %381, label %default.unreachable [ + i64 0, label %"_ZN4core3ptr42drop_in_place$LT$toml_edit..item..Item$GT$17hc885ec3c822cdd62E.exit" + i64 1, label %388 + i64 2, label %389 + i64 3, label %386 ] -.unreachabledefault.i30: ; preds = %385 - unreachable - 386: ; preds = %385 %387 = getelementptr inbounds nuw i8, ptr %1, i64 8 call void @"_ZN4core3ptr62drop_in_place$LT$toml_edit..array_of_tables..ArrayOfTables$GT$17h9641b8da8e8a92cbE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %387) @@ -18887,7 +18851,7 @@ define hidden void @"_ZN83_$LT$toml_edit..de..value..ValueDeserializer$u20$as$u2 i64 3, label %104 ] -default.unreachable: ; preds = %99 +default.unreachable: ; preds = %232, %99 unreachable 97: ; preds = %92 @@ -19328,16 +19292,13 @@ _ZN5serde2de7Visitor12visit_string17h79666d73b03afae6E.exit.i: ; preds = %135 br i1 %231, label %238, label %232 232: ; preds = %226 - switch i64 %227, label %.unreachabledefault.i25 [ - i64 8, label %"_ZN4core3ptr42drop_in_place$LT$toml_edit..item..Item$GT$17hc885ec3c822cdd62E.exit" - i64 9, label %235 - i64 10, label %236 - i64 11, label %233 + switch i64 %228, label %default.unreachable [ + i64 0, label %"_ZN4core3ptr42drop_in_place$LT$toml_edit..item..Item$GT$17hc885ec3c822cdd62E.exit" + i64 1, label %235 + i64 2, label %236 + i64 3, label %233 ] -.unreachabledefault.i25: ; preds = %232 - unreachable - 233: ; preds = %232 %234 = getelementptr inbounds nuw i8, ptr %1, i64 8 call void @"_ZN4core3ptr62drop_in_place$LT$toml_edit..array_of_tables..ArrayOfTables$GT$17h9641b8da8e8a92cbE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %234) @@ -19805,7 +19766,7 @@ _ZN5serde2de9MapAccess10next_value17ha072131bee613cb9E.exit.i: ; preds = %75 i64 3, label %143 ] -default.unreachable: ; preds = %138 +default.unreachable: ; preds = %271, %138 unreachable 136: ; preds = %131 @@ -20246,16 +20207,13 @@ _ZN5serde2de7Visitor12visit_string17hb35e4504578b513aE.exit.i: ; preds = %174 br i1 %270, label %277, label %271 271: ; preds = %265 - switch i64 %266, label %.unreachabledefault.i31 [ - i64 8, label %"_ZN4core3ptr42drop_in_place$LT$toml_edit..item..Item$GT$17hc885ec3c822cdd62E.exit" - i64 9, label %274 - i64 10, label %275 - i64 11, label %272 + switch i64 %267, label %default.unreachable [ + i64 0, label %"_ZN4core3ptr42drop_in_place$LT$toml_edit..item..Item$GT$17hc885ec3c822cdd62E.exit" + i64 1, label %274 + i64 2, label %275 + i64 3, label %272 ] -.unreachabledefault.i31: ; preds = %271 - unreachable - 272: ; preds = %271 %273 = getelementptr inbounds nuw i8, ptr %1, i64 8 call void @"_ZN4core3ptr62drop_in_place$LT$toml_edit..array_of_tables..ArrayOfTables$GT$17h9641b8da8e8a92cbE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %273) @@ -20560,7 +20518,7 @@ define hidden void @"_ZN83_$LT$toml_edit..de..value..ValueDeserializer$u20$as$u2 i64 3, label %104 ] -default.unreachable: ; preds = %99 +default.unreachable: ; preds = %232, %99 unreachable 97: ; preds = %92 @@ -21001,16 +20959,13 @@ _ZN5serde2de7Visitor12visit_string17hca867d1c9fe40881E.exit.i: ; preds = %135 br i1 %231, label %238, label %232 232: ; preds = %226 - switch i64 %227, label %.unreachabledefault.i25 [ - i64 8, label %"_ZN4core3ptr42drop_in_place$LT$toml_edit..item..Item$GT$17hc885ec3c822cdd62E.exit" - i64 9, label %235 - i64 10, label %236 - i64 11, label %233 + switch i64 %228, label %default.unreachable [ + i64 0, label %"_ZN4core3ptr42drop_in_place$LT$toml_edit..item..Item$GT$17hc885ec3c822cdd62E.exit" + i64 1, label %235 + i64 2, label %236 + i64 3, label %233 ] -.unreachabledefault.i25: ; preds = %232 - unreachable - 233: ; preds = %232 %234 = getelementptr inbounds nuw i8, ptr %1, i64 8 call void @"_ZN4core3ptr62drop_in_place$LT$toml_edit..array_of_tables..ArrayOfTables$GT$17h9641b8da8e8a92cbE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %234) diff --git a/bench/rust-analyzer-rs/optimized/4hdqg9y9agw1ekve.ll b/bench/rust-analyzer-rs/optimized/4hdqg9y9agw1ekve.ll index 9cb1f8985c2..e15919514fc 100644 --- a/bench/rust-analyzer-rs/optimized/4hdqg9y9agw1ekve.ll +++ b/bench/rust-analyzer-rs/optimized/4hdqg9y9agw1ekve.ll @@ -30179,9 +30179,9 @@ _ZN5rowan6cursor8NodeData6inc_rc17h79dd31861126988eE.llvm.14339125420948612040.e br label %185 172: ; preds = %213, %_ZN4core3ops8function6FnOnce9call_once17h40f4fceca60fb12fE.exit.thread.i - switch i64 %153, label %173 [ - i64 17, label %179 - i64 18, label %185 + switch i64 %155, label %173 [ + i64 0, label %179 + i64 1, label %185 ] 173: ; preds = %172 @@ -30864,7 +30864,7 @@ _ZN11ide_assists8handlers16extract_function17extraction_target17hebf56337d82c225 .invoke2388: ; preds = %.noexc217, %410 invoke void @_ZN3std7process5abort17h1cffb1827d7e6c16E() #44 - to label %.cont2389 unwind label %1530 + to label %.cont2390 unwind label %1530 .cont2389: ; preds = %.invoke2388 unreachable @@ -36851,7 +36851,7 @@ _ZN4core3ops8function6FnOnce9call_once17hd9d8c8651a40d774E.exit108.i: ; preds = br i1 %2461, label %2467, label %"_ZN4core3ptr84drop_in_place$LT$rowan..api..SyntaxNode$LT$syntax..syntax_node..RustLanguage$GT$$GT$17h96e144ffb0f33c83E.exit295" "_ZN4core3ptr84drop_in_place$LT$rowan..api..SyntaxNode$LT$syntax..syntax_node..RustLanguage$GT$$GT$17h96e144ffb0f33c83E.exit295": ; preds = %.invoke2390, %377, %371, %2467, %2462, %.thread, %2459 - %.pn164336 = phi { ptr, i32 } [ %.pn164, %.thread ], [ %.pn164, %2459 ], [ %.pn164, %2462 ], [ %.pn164, %2467 ], [ %372, %371 ], [ %372, %377 ], [ %.pn164, %.invoke2390 ] + %.pn164336 = phi { ptr, i32 } [ %.pn164, %.thread ], [ %.pn164, %2459 ], [ %.pn164, %2462 ], [ %.pn164, %2467 ], [ %372, %371 ], [ %372, %377 ], [ %.pn164, %.invoke2391 ] resume { ptr, i32 } %.pn164336 2462: ; preds = %2459 diff --git a/bench/rust-analyzer-rs/optimized/8q1esjraj83sh5t.ll b/bench/rust-analyzer-rs/optimized/8q1esjraj83sh5t.ll index 76a01770e6b..6d8f6c92093 100644 --- a/bench/rust-analyzer-rs/optimized/8q1esjraj83sh5t.ll +++ b/bench/rust-analyzer-rs/optimized/8q1esjraj83sh5t.ll @@ -33385,10 +33385,10 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit.i1586.i: ; preds = %2000 store ptr %2143, ptr %123, align 8, !noalias !5630 %2146 = getelementptr inbounds nuw i8, ptr %123, i64 8 store i64 %2145, ptr %2146, align 8, !noalias !5630 - switch i64 %.pn3.i370, label %_ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit10.i [ - i64 8, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit.i.i" - i64 7, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit648.i.i" - i64 12, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit680.i.i" + switch i64 %2145, label %_ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit10.i [ + i64 3, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit.i.i" + i64 2, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit648.i.i" + i64 7, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit680.i.i" ] "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit.i.i": ; preds = %2144 @@ -33445,12 +33445,12 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit.i1586.i: ; preds = %2000 br i1 %2159, label %2154, label %_ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit10.i "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit680.i.i": ; preds = %2144 - %bcmp.i679.i.i = call i32 @bcmp(ptr nonnull readonly align 1 %2143, ptr nonnull @anon.8ee6e441894c40610342b4e80829890a.407, i64 %2145), !alias.scope !5670, !noalias !5637 + %bcmp.i679.i.i = call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(7) %2143, ptr noundef nonnull dereferenceable(7) @anon.8ee6e441894c40610342b4e80829890a.407, i64 7), !alias.scope !5670, !noalias !5637 %2160 = icmp eq i32 %bcmp.i679.i.i, 0 br i1 %2160, label %2162, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit684.i.i" "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit684.i.i": ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit680.i.i" - %bcmp.i683.i.i = call i32 @bcmp(ptr nonnull readonly align 1 %2143, ptr nonnull @anon.8ee6e441894c40610342b4e80829890a.408, i64 %2145), !alias.scope !5674, !noalias !5637 + %bcmp.i683.i.i = call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(7) %2143, ptr noundef nonnull dereferenceable(7) @anon.8ee6e441894c40610342b4e80829890a.408, i64 7), !alias.scope !5674, !noalias !5637 %2161 = icmp eq i32 %bcmp.i683.i.i, 0 br i1 %2161, label %2165, label %_ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit10.i @@ -40409,13 +40409,13 @@ _ZN6hir_ty3mir4eval5pad1617h2c5525f80471d99aE.exit962.i: ; preds = %662 store ptr %2, ptr %251, align 8 %683 = getelementptr inbounds nuw i8, ptr %251, i64 8 store i64 %680, ptr %683, align 8 - switch i64 %3, label %_ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit [ - i64 7, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit" - i64 6, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5464" - i64 8, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5484" - i64 12, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5512" - i64 9, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5528" - i64 11, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5536" + switch i64 %680, label %_ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit [ + i64 4, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit" + i64 3, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5464" + i64 5, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5484" + i64 9, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5512" + i64 6, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5528" + i64 8, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5536" ] "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit": ; preds = %682 @@ -40499,22 +40499,22 @@ _ZN6hir_ty3mir4eval5pad1617h2c5525f80471d99aE.exit962.i: ; preds = %662 br i1 %700, label %687, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5520" "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5516": ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5496.thread.thread7984" - %bcmp.i5515 = tail call i32 @bcmp(ptr nonnull readonly align 1 %2, ptr nonnull @anon.8ee6e441894c40610342b4e80829890a.532, i64 %680), !alias.scope !7292 + %bcmp.i5515 = tail call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(5) %2, ptr noundef nonnull dereferenceable(5) @anon.8ee6e441894c40610342b4e80829890a.532, i64 5), !alias.scope !7292 %701 = icmp eq i32 %bcmp.i5515, 0 br i1 %701, label %687, label %_ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5520": ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5512" - %bcmp.i5519 = tail call i32 @bcmp(ptr nonnull readonly align 1 %2, ptr nonnull @anon.8ee6e441894c40610342b4e80829890a.533, i64 %680), !alias.scope !7296 + %bcmp.i5519 = tail call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(9) %2, ptr noundef nonnull dereferenceable(9) @anon.8ee6e441894c40610342b4e80829890a.533, i64 9), !alias.scope !7296 %702 = icmp eq i32 %bcmp.i5519, 0 br i1 %702, label %687, label %_ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5524": ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5480" - %bcmp.i5523 = tail call i32 @bcmp(ptr nonnull readonly align 1 %2, ptr nonnull @anon.8ee6e441894c40610342b4e80829890a.534, i64 %680), !alias.scope !7300 + %bcmp.i5523 = tail call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(3) %2, ptr noundef nonnull dereferenceable(3) @anon.8ee6e441894c40610342b4e80829890a.534, i64 3), !alias.scope !7300 %703 = icmp eq i32 %bcmp.i5523, 0 br i1 %703, label %705, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5544" "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5528": ; preds = %682 - %bcmp.i5527 = tail call i32 @bcmp(ptr nonnull readonly align 1 %2, ptr nonnull @anon.8ee6e441894c40610342b4e80829890a.535, i64 %680), !alias.scope !7304 + %bcmp.i5527 = tail call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(6) %2, ptr noundef nonnull dereferenceable(6) @anon.8ee6e441894c40610342b4e80829890a.535, i64 6), !alias.scope !7304 %704 = icmp eq i32 %bcmp.i5527, 0 br i1 %704, label %705, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5532" @@ -40523,12 +40523,12 @@ _ZN6hir_ty3mir4eval5pad1617h2c5525f80471d99aE.exit962.i: ; preds = %662 br i1 %706, label %836, label %844 "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5532": ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5528" - %bcmp.i5531 = tail call i32 @bcmp(ptr nonnull readonly align 1 %2, ptr nonnull @anon.8ee6e441894c40610342b4e80829890a.536, i64 %680), !alias.scope !7308 + %bcmp.i5531 = tail call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(6) %2, ptr noundef nonnull dereferenceable(6) @anon.8ee6e441894c40610342b4e80829890a.536, i64 6), !alias.scope !7308 %707 = icmp eq i32 %bcmp.i5531, 0 br i1 %707, label %705, label %_ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5536": ; preds = %682 - %bcmp.i5535 = tail call i32 @bcmp(ptr nonnull readonly align 1 %2, ptr nonnull @anon.8ee6e441894c40610342b4e80829890a.537, i64 %680), !alias.scope !7312 + %bcmp.i5535 = tail call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(8) %2, ptr noundef nonnull dereferenceable(8) @anon.8ee6e441894c40610342b4e80829890a.537, i64 8), !alias.scope !7312 %708 = icmp eq i32 %bcmp.i5535, 0 br i1 %708, label %705, label %_ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit @@ -40538,7 +40538,7 @@ _ZN6hir_ty3mir4eval5pad1617h2c5525f80471d99aE.exit962.i: ; preds = %662 br i1 %709, label %711, label %_ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5544": ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5524" - %bcmp.i5543 = tail call i32 @bcmp(ptr nonnull readonly align 1 %2, ptr nonnull @anon.8ee6e441894c40610342b4e80829890a.539, i64 %680), !alias.scope !7320 + %bcmp.i5543 = tail call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(3) %2, ptr noundef nonnull dereferenceable(3) @anon.8ee6e441894c40610342b4e80829890a.539, i64 3), !alias.scope !7320 %710 = icmp eq i32 %bcmp.i5543, 0 br i1 %710, label %714, label %_ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit @@ -41102,10 +41102,10 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit.i.i.i: ; preds = %774 871: ; preds = %865 %.val.i55588184 = load double, ptr %867, align 1, !alias.scope !7468, !noalias !7471 - switch i64 %3, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5576.thread" [ - i64 6, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5564" - i64 9, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5568" - i64 11, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5576" + switch i64 %680, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5576.thread" [ + i64 3, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5564" + i64 6, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5568" + i64 8, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5576" ] "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5564": ; preds = %871 @@ -41278,10 +41278,11 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit.i: ; preds = %894 921: ; preds = %915 %922 = getelementptr inbounds i8, ptr %917, i64 %890 %.val.i55778185 = load double, ptr %922, align 1, !alias.scope !7516, !noalias !7519 - switch i64 %3, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5627.thread.thread8048" [ - i64 7, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5583" - i64 6, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5587" - i64 8, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5607" + switch i64 %680, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5643.thread" [ + i64 4, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5583" + i64 3, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5587" + i64 5, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5607" + i64 9, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5635" ] "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5583": ; preds = %921 @@ -41409,10 +41410,6 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit.i: ; preds = %894 br label %774 "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5627.thread.thread8048": ; preds = %921 - %.not.i5632 = icmp eq i64 %680, 9 - br i1 %.not.i5632, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5635", label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5643.thread" - -"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5635": ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5627.thread.thread8048" %bcmp.i5634 = tail call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(9) %2, ptr noundef nonnull dereferenceable(9) @anon.8ee6e441894c40610342b4e80829890a.531, i64 9), !alias.scope !7576 %963 = icmp eq i32 %bcmp.i5634, 0 br i1 %963, label %967, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5643" @@ -41422,7 +41419,7 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit.i: ; preds = %894 br label %774 "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5639": ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5619.thread.thread8036" - %bcmp.i5638 = tail call i32 @bcmp(ptr nonnull readonly align 1 %2, ptr nonnull @anon.8ee6e441894c40610342b4e80829890a.532, i64 %680), !alias.scope !7580 + %bcmp.i5638 = tail call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(5) %2, ptr noundef nonnull dereferenceable(5) @anon.8ee6e441894c40610342b4e80829890a.532, i64 5), !alias.scope !7580 %966 = icmp eq i32 %bcmp.i5638, 0 br i1 %966, label %970, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5643.thread" @@ -41439,7 +41436,7 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit.i: ; preds = %894 %971 = tail call double @llvm.round.f64(double %.val.i55778185) br label %774 -"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5643.thread": ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5639", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5603", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5627.thread.thread8048", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5623.thread", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5643" +"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5643.thread": ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5639", %921, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5603", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5623.thread", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5643" tail call void @_ZN4core9panicking5panic17h44790a89027c670fE(ptr noalias noundef nonnull readonly align 1 @anon.8ee6e441894c40610342b4e80829890a.124, i64 noundef 40, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.8ee6e441894c40610342b4e80829890a.546) #64 unreachable @@ -41452,13 +41449,13 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit.i: ; preds = %894 store ptr %2, ptr %241, align 8 %975 = getelementptr inbounds nuw i8, ptr %241, i64 8 store i64 %680, ptr %975, align 8 - switch i64 %3, label %_ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit8966 [ - i64 7, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5647" - i64 6, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5655" - i64 8, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5675" - i64 12, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5703" - i64 9, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5719" - i64 11, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5727" + switch i64 %680, label %_ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit8966 [ + i64 4, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5647" + i64 3, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5655" + i64 5, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5675" + i64 9, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5703" + i64 6, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5719" + i64 8, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5727" ] "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5647": ; preds = %974 @@ -41548,22 +41545,22 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit.i: ; preds = %894 br i1 %993, label %980, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5711" "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5707": ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5687.thread.thread8079" - %bcmp.i5706 = tail call i32 @bcmp(ptr nonnull readonly align 1 %2, ptr nonnull @anon.8ee6e441894c40610342b4e80829890a.532, i64 %680), !alias.scope !7648 + %bcmp.i5706 = tail call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(5) %2, ptr noundef nonnull dereferenceable(5) @anon.8ee6e441894c40610342b4e80829890a.532, i64 5), !alias.scope !7648 %994 = icmp eq i32 %bcmp.i5706, 0 br i1 %994, label %980, label %_ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit8966 "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5711": ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5703" - %bcmp.i5710 = tail call i32 @bcmp(ptr nonnull readonly align 1 %2, ptr nonnull @anon.8ee6e441894c40610342b4e80829890a.533, i64 %680), !alias.scope !7652 + %bcmp.i5710 = tail call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(9) %2, ptr noundef nonnull dereferenceable(9) @anon.8ee6e441894c40610342b4e80829890a.533, i64 9), !alias.scope !7652 %995 = icmp eq i32 %bcmp.i5710, 0 br i1 %995, label %980, label %_ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit8966 "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5715": ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5671" - %bcmp.i5714 = tail call i32 @bcmp(ptr nonnull readonly align 1 %2, ptr nonnull @anon.8ee6e441894c40610342b4e80829890a.534, i64 %680), !alias.scope !7656 + %bcmp.i5714 = tail call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(3) %2, ptr noundef nonnull dereferenceable(3) @anon.8ee6e441894c40610342b4e80829890a.534, i64 3), !alias.scope !7656 %996 = icmp eq i32 %bcmp.i5714, 0 br i1 %996, label %998, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5735" "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5719": ; preds = %974 - %bcmp.i5718 = tail call i32 @bcmp(ptr nonnull readonly align 1 %2, ptr nonnull @anon.8ee6e441894c40610342b4e80829890a.535, i64 %680), !alias.scope !7660 + %bcmp.i5718 = tail call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(6) %2, ptr noundef nonnull dereferenceable(6) @anon.8ee6e441894c40610342b4e80829890a.535, i64 6), !alias.scope !7660 %997 = icmp eq i32 %bcmp.i5718, 0 br i1 %997, label %998, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5723" @@ -41572,12 +41569,12 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit.i: ; preds = %894 br i1 %999, label %1104, label %1112 "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5723": ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5719" - %bcmp.i5722 = tail call i32 @bcmp(ptr nonnull readonly align 1 %2, ptr nonnull @anon.8ee6e441894c40610342b4e80829890a.536, i64 %680), !alias.scope !7664 + %bcmp.i5722 = tail call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(6) %2, ptr noundef nonnull dereferenceable(6) @anon.8ee6e441894c40610342b4e80829890a.536, i64 6), !alias.scope !7664 %1000 = icmp eq i32 %bcmp.i5722, 0 br i1 %1000, label %998, label %_ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit8966 "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5727": ; preds = %974 - %bcmp.i5726 = tail call i32 @bcmp(ptr nonnull readonly align 1 %2, ptr nonnull @anon.8ee6e441894c40610342b4e80829890a.537, i64 %680), !alias.scope !7668 + %bcmp.i5726 = tail call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(8) %2, ptr noundef nonnull dereferenceable(8) @anon.8ee6e441894c40610342b4e80829890a.537, i64 8), !alias.scope !7668 %1001 = icmp eq i32 %bcmp.i5726, 0 br i1 %1001, label %998, label %_ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit8966 @@ -41587,7 +41584,7 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit.i: ; preds = %894 br i1 %1002, label %1004, label %_ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit8966 "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5735": ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5715" - %bcmp.i5734 = tail call i32 @bcmp(ptr nonnull readonly align 1 %2, ptr nonnull @anon.8ee6e441894c40610342b4e80829890a.539, i64 %680), !alias.scope !7676 + %bcmp.i5734 = tail call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(3) %2, ptr noundef nonnull dereferenceable(3) @anon.8ee6e441894c40610342b4e80829890a.539, i64 3), !alias.scope !7676 %1003 = icmp eq i32 %bcmp.i5734, 0 br i1 %1003, label %1007, label %_ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit8966 @@ -42061,10 +42058,10 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit8966: ; preds = %974, %"_ZN73_$LT$$ 1138: ; preds = %1132 %.val.i57788492 = load float, ptr %1134, align 1, !alias.scope !7773 - switch i64 %3, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5800.thread" [ - i64 6, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5788" - i64 9, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5792" - i64 11, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5800" + switch i64 %680, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5800.thread" [ + i64 3, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5788" + i64 6, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5792" + i64 8, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5800" ] "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5788": ; preds = %1138 @@ -42237,10 +42234,11 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit.i6311: ; preds = %1160 1187: ; preds = %1181 %1188 = getelementptr inbounds i8, ptr %1183, i64 %1156 %.val.i58018493 = load float, ptr %1188, align 1, !alias.scope !7819 - switch i64 %3, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5855.thread.thread8143" [ - i64 7, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5811" - i64 6, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5815" - i64 8, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5835" + switch i64 %680, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5871.thread" [ + i64 4, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5811" + i64 3, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5815" + i64 5, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5835" + i64 9, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5863" ] "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5811": ; preds = %1187 @@ -42368,10 +42366,6 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit.i6311: ; preds = %1160 br label %1065 "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5855.thread.thread8143": ; preds = %1187 - %.not.i5860 = icmp eq i64 %680, 9 - br i1 %.not.i5860, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5863", label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5871.thread" - -"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5863": ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5855.thread.thread8143" %bcmp.i5862 = tail call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(9) %2, ptr noundef nonnull dereferenceable(9) @anon.8ee6e441894c40610342b4e80829890a.531, i64 9), !alias.scope !7877 %1229 = icmp eq i32 %bcmp.i5862, 0 br i1 %1229, label %1233, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5871" @@ -42381,7 +42375,7 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit.i6311: ; preds = %1160 br label %1065 "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5867": ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5847.thread.thread8131" - %bcmp.i5866 = tail call i32 @bcmp(ptr nonnull readonly align 1 %2, ptr nonnull @anon.8ee6e441894c40610342b4e80829890a.532, i64 %680), !alias.scope !7881 + %bcmp.i5866 = tail call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(5) %2, ptr noundef nonnull dereferenceable(5) @anon.8ee6e441894c40610342b4e80829890a.532, i64 5), !alias.scope !7881 %1232 = icmp eq i32 %bcmp.i5866, 0 br i1 %1232, label %1236, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5871.thread" @@ -42398,7 +42392,7 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit.i6311: ; preds = %1160 %1237 = tail call float @llvm.round.f32(float %.val.i58018493) br label %1065 -"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5871.thread": ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5867", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5831", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5855.thread.thread8143", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5851.thread", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5871" +"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5871.thread": ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5867", %1187, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5831", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5851.thread", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9a641eefabb8cdcbE.exit5871" tail call void @_ZN4core9panicking5panic17h44790a89027c670fE(ptr noalias noundef nonnull readonly align 1 @anon.8ee6e441894c40610342b4e80829890a.124, i64 noundef 40, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.8ee6e441894c40610342b4e80829890a.555) #64 unreachable diff --git a/bench/soc-simulator/optimized/verilated.ll b/bench/soc-simulator/optimized/verilated.ll index c271138f624..e952f60bec5 100644 --- a/bench/soc-simulator/optimized/verilated.ll +++ b/bench/soc-simulator/optimized/verilated.ll @@ -5006,10 +5006,10 @@ define dso_local noundef double @_Z11VL_ITOR_D_WiPKj(i32 noundef %0, ptr noundef br i1 %10, label %6, label %11, !llvm.loop !33 11: ; preds = %6 - %12 = trunc nsw i64 %indvars.iv to i32 + %12 = trunc nsw i64 %indvars.iv.next to i32 switch i32 %12, label %19 [ - i32 1, label %13 - i32 2, label %16 + i32 0, label %13 + i32 1, label %16 ] 13: ; preds = %11 @@ -5023,12 +5023,13 @@ define dso_local noundef double @_Z11VL_ITOR_D_WiPKj(i32 noundef %0, ptr noundef br label %37 19: ; preds = %11 + %20 = trunc nsw i64 %indvars.iv to i32 %sext = shl i64 %indvars.iv, 32 %20 = ashr exact i64 %sext, 30 %21 = getelementptr i8, ptr %1, i64 %20 %22 = getelementptr i8, ptr %21, i64 -8 %23 = load i32, ptr %22, align 4 - %24 = add nsw i32 %12, -3 + %24 = add nsw i32 %20, -3 %25 = sext i32 %24 to i64 %26 = getelementptr inbounds i32, ptr %1, i64 %25 %27 = load i32, ptr %26, align 4 @@ -5081,10 +5082,10 @@ define dso_local noundef double @_Z12VL_ISTOR_D_WiPKj(i32 noundef %0, ptr nounde br i1 %19, label %15, label %20, !llvm.loop !33 20: ; preds = %15 - %21 = trunc nsw i64 %indvars.iv.i to i32 + %21 = trunc nsw i64 %indvars.iv.next.i to i32 switch i32 %21, label %28 [ - i32 1, label %22 - i32 2, label %25 + i32 0, label %22 + i32 1, label %25 ] 22: ; preds = %20 @@ -5098,12 +5099,13 @@ define dso_local noundef double @_Z12VL_ISTOR_D_WiPKj(i32 noundef %0, ptr nounde br label %_Z11VL_ITOR_D_WiPKj.exit 28: ; preds = %20 + %29 = trunc nsw i64 %indvars.iv.i to i32 %sext.i = shl i64 %indvars.iv.i, 32 %29 = ashr exact i64 %sext.i, 30 %30 = getelementptr i8, ptr %1, i64 %29 %31 = getelementptr i8, ptr %30, i64 -8 %32 = load i32, ptr %31, align 4 - %33 = add nsw i32 %21, -3 + %33 = add nsw i32 %29, -3 %34 = sext i32 %33 to i64 %35 = getelementptr inbounds i32, ptr %1, i64 %34 %36 = load i32, ptr %35, align 4 @@ -5159,7 +5161,7 @@ _ZL11VL_NEGATE_WiPjPKj.exit: ; preds = %.lr.ph.i, %46 br label %63 63: ; preds = %63, %_ZL11VL_NEGATE_WiPjPKj.exit - %indvars.iv.i13 = phi i64 [ %indvars.iv.next.i14, %63 ], [ %58, %_ZL11VL_NEGATE_WiPjPKj.exit ] + %indvars.iv.i13 = phi i64 [ %indvars.iv.next.i14, %64 ], [ %58, %_ZL11VL_NEGATE_WiPjPKj.exit ] %indvars.iv.next.i14 = add nsw i64 %indvars.iv.i13, -1 %64 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i14 %65 = load i32, ptr %64, align 4 @@ -5169,10 +5171,10 @@ _ZL11VL_NEGATE_WiPjPKj.exit: ; preds = %.lr.ph.i, %46 br i1 %67, label %63, label %68, !llvm.loop !33 68: ; preds = %63 - %69 = trunc nsw i64 %indvars.iv.i13 to i32 - switch i32 %69, label %76 [ - i32 1, label %70 - i32 2, label %73 + %69 = trunc nsw i64 %indvars.iv.next.i14 to i32 + switch i32 %69, label %77 [ + i32 0, label %70 + i32 1, label %73 ] 70: ; preds = %68 @@ -5186,12 +5188,13 @@ _ZL11VL_NEGATE_WiPjPKj.exit: ; preds = %.lr.ph.i, %46 br label %_Z11VL_ITOR_D_WiPKj.exit21 76: ; preds = %68 + %78 = trunc nsw i64 %indvars.iv.i13 to i32 %sext.i17 = shl i64 %indvars.iv.i13, 32 %77 = ashr exact i64 %sext.i17, 30 %78 = getelementptr i8, ptr %3, i64 %77 %79 = getelementptr i8, ptr %78, i64 -8 %80 = load i32, ptr %79, align 4 - %81 = add nsw i32 %69, -3 + %81 = add nsw i32 %78, -3 %82 = sext i32 %81 to i64 %83 = getelementptr inbounds i32, ptr %3, i64 %82 %84 = load i32, ptr %83, align 4 @@ -5210,7 +5213,7 @@ _ZL11VL_NEGATE_WiPjPKj.exit: ; preds = %.lr.ph.i, %46 br label %_Z11VL_ITOR_D_WiPKj.exit21 _Z11VL_ITOR_D_WiPKj.exit21: ; preds = %70, %73, %76 - %.0.i16 = phi double [ %72, %70 ], [ %75, %73 ], [ %93, %76 ] + %.0.i16 = phi double [ %72, %71 ], [ %75, %74 ], [ %93, %77 ] %94 = fneg double %.0.i16 br label %_Z11VL_ITOR_D_WiPKj.exit @@ -11743,9 +11746,10 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit: ; pred %21 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %18) #56 %22 = getelementptr inbounds nuw i8, ptr %0, i64 8 %23 = load i64, ptr %22, align 8 - switch i64 %23, label %26 [ - i64 0, label %24 - i64 -1, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit + %24 = add i64 %23, 1 + switch i64 %24, label %27 [ + i64 1, label %25 + i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit ] 24: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit @@ -11754,8 +11758,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit: ; pred br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit 26: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit - %27 = add nuw i64 %23, 1 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %21, ptr noundef nonnull align 1 dereferenceable(1) %3, i64 %27, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %21, ptr align 1 %3, i64 %23, i1 false) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit, %24, %26 diff --git a/bench/stockfish/optimized/position.ll b/bench/stockfish/optimized/position.ll index 3ef8231a6de..9c788f7d8a5 100644 --- a/bench/stockfish/optimized/position.ll +++ b/bench/stockfish/optimized/position.ll @@ -2872,21 +2872,21 @@ define dso_local noundef zeroext i1 @_ZNK9Stockfish8Position11gives_checkENS_4Mo switch i16 %43, label %default.unreachable [ i16 0, label %201 i16 1, label %44 - i16 2, label %126 + i16 2, label %128 i16 3, label %190 ] 44: ; preds = %42 %45 = lshr i16 %1, 12 %46 = and i16 %45, 3 + %narrow.i = add nuw nsw i16 %46, 2 %47 = getelementptr inbounds nuw i8, ptr %0, i64 256 %48 = load i64, ptr %47, align 8 %49 = xor i64 %48, %27 - switch i16 %46, label %default.unreachable [ - i16 1, label %50 - i16 2, label %66 - i16 3, label %82 - i16 0, label %114 + switch i16 %narrow.i, label %114 [ + i16 3, label %50 + i16 4, label %66 + i16 5, label %82 ] 50: ; preds = %44 @@ -2960,91 +2960,93 @@ define dso_local noundef zeroext i1 @_ZNK9Stockfish8Position11gives_checkENS_4Mo br label %_ZN9Stockfish10attacks_bbENS_9PieceTypeENS_6SquareEm.exit 114: ; preds = %44 - %115 = getelementptr inbounds nuw [64 x i64], ptr getelementptr inbounds nuw (i8, ptr @_ZN9Stockfish13PseudoAttacksE, i64 1024), i64 0, i64 %16 - %116 = load i64, ptr %115, align 8 + %115 = zext nneg i16 %narrow.i to i64 + %116 = getelementptr inbounds nuw [8 x [64 x i64]], ptr @_ZN9Stockfish13PseudoAttacksE, i64 0, i64 %115 + %117 = getelementptr inbounds nuw [64 x i64], ptr %116, i64 0, i64 %16 + %118 = load i64, ptr %117, align 8 br label %_ZN9Stockfish10attacks_bbENS_9PieceTypeENS_6SquareEm.exit _ZN9Stockfish10attacks_bbENS_9PieceTypeENS_6SquareEm.exit: ; preds = %50, %66, %82, %114 - %.0.i = phi i64 [ %116, %114 ], [ %65, %50 ], [ %81, %66 ], [ %113, %82 ] + %.0.i = phi i64 [ %118, %114 ], [ %65, %50 ], [ %81, %66 ], [ %113, %82 ] %117 = getelementptr inbounds nuw i8, ptr %0, i64 320 %118 = getelementptr inbounds nuw [2 x i64], ptr %117, i64 0, i64 %24 - %119 = load i64, ptr %118, align 8 - %120 = getelementptr inbounds nuw i8, ptr %0, i64 304 %121 = load i64, ptr %120, align 8 - %122 = and i64 %121, %119 - %neg24 = sub i64 0, %122 - %123 = and i64 %.0.i, %neg24 - %124 = and i64 %123, %122 - %125 = icmp ne i64 %124, 0 - br label %201 - -126: ; preds = %42 - %127 = and i16 %1, 7 - %128 = and i16 %3, 56 - %129 = or disjoint i16 %128, %127 - %130 = getelementptr inbounds nuw i8, ptr %0, i64 256 - %131 = load i64, ptr %130, align 8 - %132 = zext nneg i16 %129 to i64 - %133 = shl nuw i64 1, %132 - %134 = xor i64 %133, %131 - %135 = xor i64 %134, %27 - %136 = or i64 %135, %17 - %137 = getelementptr inbounds nuw i8, ptr %0, i64 320 - %138 = getelementptr inbounds nuw [2 x i64], ptr %137, i64 0, i64 %24 - %139 = load i64, ptr %138, align 8 - %140 = getelementptr inbounds nuw i8, ptr %0, i64 304 + %122 = getelementptr inbounds nuw i8, ptr %0, i64 304 + %123 = load i64, ptr %122, align 8 + %123 = and i64 %123, %121 + %neg24 = sub i64 0, %124 + %125 = and i64 %.0.i, %neg24 + %126 = and i64 %125, %124 + %127 = icmp ne i64 %126, 0 + br label %203 + +128:; preds = %42 + %129 = and i16 %1, 7 + %130 = and i16 %3, 56 + %131 = or disjoint i16 %130, %129 + %132 = getelementptr inbounds nuw i8, ptr %0, i64 256 + %133 = load i64, ptr %132, align 8 + %134 = zext nneg i16 %131 to i64 + %135 = shl nuw i64 1, %134 + %136 = xor i64 %135, %133 + %137 = xor i64 %136, %27 + %138 = or i64 %137, %17 + %139 = getelementptr inbounds nuw i8, ptr %0, i64 320 + %140 = getelementptr inbounds nuw [2 x i64], ptr %139, i64 0, i64 %24 %141 = load i64, ptr %140, align 8 - %142 = and i64 %141, %139 - %143 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %142, i1 true) - %144 = getelementptr inbounds nuw [64 x %"struct.Stockfish::Magic"], ptr @_ZN9Stockfish10RookMagicsE, i64 0, i64 %143 - %145 = getelementptr inbounds nuw i8, ptr %144, i64 16 - %146 = load ptr, ptr %145, align 16 - %147 = load i64, ptr %144, align 16 - %148 = and i64 %147, %136 - %149 = getelementptr inbounds nuw i8, ptr %144, i64 8 - %150 = load i64, ptr %149, align 8 - %151 = mul i64 %148, %150 - %152 = getelementptr inbounds nuw i8, ptr %144, i64 24 - %153 = load i32, ptr %152, align 8 - %154 = zext nneg i32 %153 to i64 - %155 = lshr i64 %151, %154 - %156 = and i64 %155, 4294967295 - %157 = getelementptr inbounds nuw i64, ptr %146, i64 %156 - %158 = load i64, ptr %157, align 8 - %159 = zext i32 %21 to i64 - %160 = getelementptr inbounds nuw [2 x i64], ptr %137, i64 0, i64 %159 - %161 = load i64, ptr %160, align 8 - %162 = getelementptr inbounds nuw i8, ptr %0, i64 296 + %142 = getelementptr inbounds nuw i8, ptr %0, i64 304 + %143 = load i64, ptr %142, align 8 + %144 = and i64 %143, %141 + %145 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %144, i1 true) + %146 = getelementptr inbounds nuw [64 x %"struct.Stockfish::Magic"], ptr @_ZN9Stockfish10RookMagicsE, i64 0, i64 %145 + %147 = getelementptr inbounds nuw i8, ptr %146, i64 16 + %148 = load ptr, ptr %147, align 16 + %149 = load i64, ptr %146, align 16 + %150 = and i64 %149, %138 + %151 = getelementptr inbounds nuw i8, ptr %146, i64 8 + %152 = load i64, ptr %151, align 8 + %153 = mul i64 %150, %152 + %154 = getelementptr inbounds nuw i8, ptr %146, i64 24 + %155 = load i32, ptr %154, align 8 + %156 = zext nneg i32 %155 to i64 + %157 = lshr i64 %153, %156 + %158 = and i64 %157, 4294967295 + %159 = getelementptr inbounds nuw i64, ptr %148, i64 %158 + %160 = load i64, ptr %159, align 8 + %161 = zext i32 %21 to i64 + %162 = getelementptr inbounds nuw [2 x i64], ptr %139, i64 0, i64 %161 %163 = load i64, ptr %162, align 8 - %164 = getelementptr inbounds nuw i8, ptr %0, i64 288 + %164 = getelementptr inbounds nuw i8, ptr %0, i64 296 %165 = load i64, ptr %164, align 8 - %166 = or i64 %165, %163 - %167 = and i64 %166, %158 - %168 = getelementptr inbounds nuw [64 x %"struct.Stockfish::Magic"], ptr @_ZN9Stockfish12BishopMagicsE, i64 0, i64 %143 - %169 = getelementptr inbounds nuw i8, ptr %168, i64 16 - %170 = load ptr, ptr %169, align 16 - %171 = load i64, ptr %168, align 16 - %172 = and i64 %171, %136 - %173 = getelementptr inbounds nuw i8, ptr %168, i64 8 - %174 = load i64, ptr %173, align 8 - %175 = mul i64 %172, %174 - %176 = getelementptr inbounds nuw i8, ptr %168, i64 24 - %177 = load i32, ptr %176, align 8 - %178 = zext nneg i32 %177 to i64 - %179 = lshr i64 %175, %178 - %180 = and i64 %179, 4294967295 - %181 = getelementptr inbounds nuw i64, ptr %170, i64 %180 - %182 = load i64, ptr %181, align 8 - %183 = getelementptr inbounds nuw i8, ptr %0, i64 280 + %166 = getelementptr inbounds nuw i8, ptr %0, i64 288 + %167 = load i64, ptr %166, align 8 + %168 = or i64 %167, %165 + %169 = and i64 %168, %160 + %170 = getelementptr inbounds nuw [64 x %"struct.Stockfish::Magic"], ptr @_ZN9Stockfish12BishopMagicsE, i64 0, i64 %145 + %171 = getelementptr inbounds nuw i8, ptr %170, i64 16 + %172 = load ptr, ptr %171, align 16 + %173 = load i64, ptr %170, align 16 + %174 = and i64 %173, %138 + %175 = getelementptr inbounds nuw i8, ptr %170, i64 8 + %176 = load i64, ptr %175, align 8 + %177 = mul i64 %174, %176 + %178 = getelementptr inbounds nuw i8, ptr %170, i64 24 + %179 = load i32, ptr %178, align 8 + %180 = zext nneg i32 %179 to i64 + %181 = lshr i64 %177, %180 + %182 = and i64 %181, 4294967295 + %183 = getelementptr inbounds nuw i64, ptr %172, i64 %182 %184 = load i64, ptr %183, align 8 - %185 = or i64 %184, %163 - %186 = and i64 %185, %182 - %187 = or i64 %186, %167 - %188 = and i64 %187, %161 - %189 = icmp ne i64 %188, 0 - br label %201 - -default.unreachable: ; preds = %44, %42 + %185 = getelementptr inbounds nuw i8, ptr %0, i64 280 + %186 = load i64, ptr %185, align 8 + %187 = or i64 %186, %165 + %188 = and i64 %187, %184 + %189 = or i64 %188, %169 + %190 = and i64 %189, %163 + %191 = icmp ne i64 %190, 0 + br label %203 + +default.unreachable: ; preds = %42 unreachable 190: ; preds = %42 @@ -3060,8 +3062,8 @@ default.unreachable: ; preds = %44, %42 %200 = icmp ne i64 %199, 0 br label %201 -201: ; preds = %29, %42, %2, %190, %126, %_ZN9Stockfish10attacks_bbENS_9PieceTypeENS_6SquareEm.exit - %.0 = phi i1 [ %200, %190 ], [ %125, %_ZN9Stockfish10attacks_bbENS_9PieceTypeENS_6SquareEm.exit ], [ %189, %126 ], [ true, %2 ], [ false, %42 ], [ %spec.select, %29 ] +201: ; preds = %29, %42, %2, %190, %128, %_ZN9Stockfish10attacks_bbENS_9PieceTypeENS_6SquareEm.exit + %.0 = phi i1 [ %200, %192 ], [ %127, %_ZN9Stockfish10attacks_bbENS_9PieceTypeENS_6SquareEm.exit ], [ %191, %128 ], [ true, %2 ], [ false, %42 ], [ %spec.select, %29 ] ret i1 %.0 } diff --git a/bench/uv-rs/optimized/9gblzleju1tx01j8eqsuev96k.ll b/bench/uv-rs/optimized/9gblzleju1tx01j8eqsuev96k.ll index 3296aaa19ed..cdcbbf9f3e6 100644 --- a/bench/uv-rs/optimized/9gblzleju1tx01j8eqsuev96k.ll +++ b/bench/uv-rs/optimized/9gblzleju1tx01j8eqsuev96k.ll @@ -3740,7 +3740,7 @@ define hidden void @"_ZN96_$LT$$RF$mut$u20$csv..deserializer..DeRecordWrap$LT$T$ unreachable 94: ; preds = %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17h69da4ac27b65e72bE.exit" - %cond = icmp eq i64 %.sroa.46.0.i, 3 + %cond = icmp eq i64 %91, 1 %95 = load i8, ptr %92, align 1, !alias.scope !1071, !noalias !1074 br i1 %cond, label %96, label %97 @@ -3763,7 +3763,11 @@ define hidden void @"_ZN96_$LT$$RF$mut$u20$csv..deserializer..DeRecordWrap$LT$T$ %99 = getelementptr inbounds nuw i8, ptr %.sroa.04.0.i, i64 3 %100 = add i64 %.sroa.46.0.i, -3 %101 = icmp ult i64 %91, 18 - br i1 %101, label %.lr.ph.split.i.preheader, label %.lr.ph.preheader + br i1 %101, label %.lr.ph.split.i.preheader, label %.preheader51.i60 + +.preheader51.i60: ; preds = %98 + %.not.i63107 = icmp eq i64 %100, 0 + br i1 %.not.i63107, label %"_ZN4core3num21_$LT$impl$u20$u64$GT$16from_ascii_radix17h1058f2fa72d27353E.exit.thread86", label %.lr.ph.preheader .preheader51.split.i: ; preds = %117 %102 = getelementptr inbounds nuw i8, ptr %.sroa.01.0.i110, i64 1 @@ -3778,9 +3782,9 @@ define hidden void @"_ZN96_$LT$$RF$mut$u20$csv..deserializer..DeRecordWrap$LT$T$ %108 = icmp ult i64 %91, 17 br i1 %108, label %.lr.ph.split.i.preheader, label %.lr.ph.preheader -.lr.ph.preheader: ; preds = %98, %107 - %.sroa.01.0.i110.ph = phi ptr [ %99, %98 ], [ %92, %107 ] - %.sroa.14.0.i109.ph = phi i64 [ %100, %98 ], [ %91, %107 ] +.lr.ph.preheader: ; preds = %107, %.preheader51.i60 + %.sroa.01.0.i110.ph = phi ptr [ %92, %107 ], [ %99, %.preheader51.i60 ] + %.sroa.14.0.i109.ph = phi i64 [ %91, %107 ], [ %100, %.preheader51.i60 ] br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %.preheader51.split.i @@ -3826,8 +3830,8 @@ define hidden void @"_ZN96_$LT$$RF$mut$u20$csv..deserializer..DeRecordWrap$LT$T$ %.not42.i = icmp eq i64 %129, 0 br i1 %.not42.i, label %"_ZN4core3num21_$LT$impl$u20$u64$GT$16from_ascii_radix17h1058f2fa72d27353E.exit.thread86", label %.lr.ph.split.i -"_ZN4core3num21_$LT$impl$u20$u64$GT$16from_ascii_radix17h1058f2fa72d27353E.exit.thread86": ; preds = %.preheader51.split.i, %127, %.preheader51.split.us.i, %80 - %.sroa.16.092 = phi i64 [ %85, %80 ], [ %.sroa.013.0.us.i, %.preheader51.split.us.i ], [ %132, %127 ], [ %106, %.preheader51.split.i ] +"_ZN4core3num21_$LT$impl$u20$u64$GT$16from_ascii_radix17h1058f2fa72d27353E.exit.thread86": ; preds = %.preheader51.split.i, %127, %.preheader51.split.us.i, %80, %.preheader51.i60 + %.sroa.16.092 = phi i64 [ 0, %.preheader51.i60 ], [ %85, %80 ], [ %.sroa.013.0.us.i, %.preheader51.split.us.i ], [ %132, %127 ], [ %106, %.preheader51.split.i ] %133 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %.sroa.16.092, ptr %133, align 8, !alias.scope !1076 store i64 2, ptr %0, align 8, !alias.scope !1076 diff --git a/bench/uv-rs/optimized/cpcs1za9hsjeowfvmgfmet1kp.ll b/bench/uv-rs/optimized/cpcs1za9hsjeowfvmgfmet1kp.ll index 1e11147ea1e..4a24b24e388 100644 --- a/bench/uv-rs/optimized/cpcs1za9hsjeowfvmgfmet1kp.ll +++ b/bench/uv-rs/optimized/cpcs1za9hsjeowfvmgfmet1kp.ll @@ -17300,48 +17300,48 @@ define void @"_ZN90_$LT$uv_python..downloads..PythonDownloadRequest$u20$as$u20$c br label %.lr.ph.lr.ph.lr.ph.lr.ph .lr.ph.lr.ph.lr.ph.lr.ph: ; preds = %3, %.outer - %.sroa.0.0.ph615 = phi i32 [ 0, %3 ], [ 1, %.outer ] - %.sroa.070.0.ph614 = phi i8 [ 36, %3 ], [ %.sroa.070.0.ph282495, %.outer ] - %.sroa.369.sroa.0.0.ph613 = phi i48 [ undef, %3 ], [ %.sroa.369.sroa.0.0.ph272546, %.outer ] - %.sroa.068.0.ph612 = phi i16 [ 39, %3 ], [ %.sroa.068.0.ph271545, %.outer ] - %.sroa.359.0.ph611 = phi i16 [ undef, %3 ], [ %.sroa.359.0.ph259577, %.outer ] - %.sroa.057.0.ph610 = phi i8 [ 4, %3 ], [ %.sroa.057.0.ph258576, %.outer ] - %.sroa.056.0.ph609 = phi i8 [ 3, %3 ], [ %70, %.outer ] - %.ph251608 = phi i64 [ 0, %3 ], [ %.ph228, %.outer ] - %.sroa.574.sroa.5.0.copyload153.ph606 = phi i64 [ 0, %3 ], [ %.sroa.574.sroa.5.0.copyload152.ph, %.outer ] + %.sroa.0.0.ph615 = phi i32 [ 0, %3 ], [ 1, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer" ] + %.sroa.070.0.ph614 = phi i8 [ 36, %3 ], [ %.sroa.070.0.ph282495, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer" ] + %.sroa.369.sroa.0.0.ph613 = phi i48 [ undef, %3 ], [ %.sroa.369.sroa.0.0.ph272546, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer" ] + %.sroa.068.0.ph612 = phi i16 [ 39, %3 ], [ %.sroa.068.0.ph271545, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer" ] + %.sroa.359.0.ph611 = phi i16 [ undef, %3 ], [ %.sroa.359.0.ph259577, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer" ] + %.sroa.057.0.ph610 = phi i8 [ 4, %3 ], [ %.sroa.057.0.ph258576, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer" ] + %.sroa.056.0.ph609 = phi i8 [ 3, %3 ], [ %70, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer" ] + %.ph251608 = phi i64 [ 0, %3 ], [ %.ph228, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer" ] + %.sroa.574.sroa.5.0.copyload153.ph606 = phi i64 [ 0, %3 ], [ %.sroa.574.sroa.5.0.copyload152.ph, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer" ] br label %.lr.ph.lr.ph.lr.ph .lr.ph.lr.ph.lr.ph: ; preds = %.lr.ph.lr.ph.lr.ph.lr.ph, %.outer254 - %.sroa.0.0.ph263581 = phi i32 [ %.sroa.0.0.ph615, %.lr.ph.lr.ph.lr.ph.lr.ph ], [ 4, %.outer254 ] - %.sroa.070.0.ph262580 = phi i8 [ %.sroa.070.0.ph614, %.lr.ph.lr.ph.lr.ph.lr.ph ], [ %.sroa.070.0.ph282495, %.outer254 ] - %.sroa.369.sroa.0.0.ph261579 = phi i48 [ %.sroa.369.sroa.0.0.ph613, %.lr.ph.lr.ph.lr.ph.lr.ph ], [ %.sroa.369.sroa.0.0.ph272546, %.outer254 ] - %.sroa.068.0.ph260578 = phi i16 [ %.sroa.068.0.ph612, %.lr.ph.lr.ph.lr.ph.lr.ph ], [ %.sroa.068.0.ph271545, %.outer254 ] - %.sroa.359.0.ph259577 = phi i16 [ %.sroa.359.0.ph611, %.lr.ph.lr.ph.lr.ph.lr.ph ], [ %.sroa.5101.0.copyload, %.outer254 ] - %.sroa.057.0.ph258576 = phi i8 [ %.sroa.057.0.ph610, %.lr.ph.lr.ph.lr.ph.lr.ph ], [ %.sroa.0100.0.copyload, %.outer254 ] - %.ph257575 = phi i64 [ %.ph251608, %.lr.ph.lr.ph.lr.ph.lr.ph ], [ %.ph228, %.outer254 ] - %.sroa.574.sroa.5.0.copyload153.ph255573 = phi i64 [ %.sroa.574.sroa.5.0.copyload153.ph606, %.lr.ph.lr.ph.lr.ph.lr.ph ], [ %.sroa.574.sroa.5.0.copyload152.ph, %.outer254 ] + %.sroa.0.0.ph263581 = phi i32 [ %.sroa.0.0.ph615, %.lr.ph.lr.ph.lr.ph.lr.ph ], [ 4, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer254" ] + %.sroa.070.0.ph262580 = phi i8 [ %.sroa.070.0.ph614, %.lr.ph.lr.ph.lr.ph.lr.ph ], [ %.sroa.070.0.ph282495, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer254" ] + %.sroa.369.sroa.0.0.ph261579 = phi i48 [ %.sroa.369.sroa.0.0.ph613, %.lr.ph.lr.ph.lr.ph.lr.ph ], [ %.sroa.369.sroa.0.0.ph272546, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer254" ] + %.sroa.068.0.ph260578 = phi i16 [ %.sroa.068.0.ph612, %.lr.ph.lr.ph.lr.ph.lr.ph ], [ %.sroa.068.0.ph271545, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer254" ] + %.sroa.359.0.ph259577 = phi i16 [ %.sroa.359.0.ph611, %.lr.ph.lr.ph.lr.ph.lr.ph ], [ %.sroa.5101.0.copyload, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer254" ] + %.sroa.057.0.ph258576 = phi i8 [ %.sroa.057.0.ph610, %.lr.ph.lr.ph.lr.ph.lr.ph ], [ %.sroa.0100.0.copyload, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer254" ] + %.ph257575 = phi i64 [ %.ph251608, %.lr.ph.lr.ph.lr.ph.lr.ph ], [ %.ph228, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer254" ] + %.sroa.574.sroa.5.0.copyload153.ph255573 = phi i64 [ %.sroa.574.sroa.5.0.copyload153.ph606, %.lr.ph.lr.ph.lr.ph.lr.ph ], [ %.sroa.574.sroa.5.0.copyload152.ph, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer254" ] br label %.lr.ph.lr.ph .lr.ph.lr.ph: ; preds = %.lr.ph.lr.ph.lr.ph, %.outer267 - %.sroa.0.0.ph274548 = phi i32 [ %.sroa.0.0.ph263581, %.lr.ph.lr.ph.lr.ph ], [ 3, %.outer267 ] - %.sroa.070.0.ph273547 = phi i8 [ %.sroa.070.0.ph262580, %.lr.ph.lr.ph.lr.ph ], [ %.sroa.070.0.ph282495, %.outer267 ] - %.sroa.369.sroa.0.0.ph272546 = phi i48 [ %.sroa.369.sroa.0.0.ph261579, %.lr.ph.lr.ph.lr.ph ], [ %.sroa.369.0.extract.trunc, %.outer267 ] - %.sroa.068.0.ph271545 = phi i16 [ %.sroa.068.0.ph260578, %.lr.ph.lr.ph.lr.ph ], [ %.sroa.068.0.extract.trunc, %.outer267 ] - %.ph270544 = phi i64 [ %.ph257575, %.lr.ph.lr.ph.lr.ph ], [ %.ph228, %.outer267 ] - %.sroa.574.sroa.5.0.copyload153.ph268542 = phi i64 [ %.sroa.574.sroa.5.0.copyload153.ph255573, %.lr.ph.lr.ph.lr.ph ], [ %.sroa.574.sroa.5.0.copyload152.ph, %.outer267 ] + %.sroa.0.0.ph274548 = phi i32 [ %.sroa.0.0.ph263581, %.lr.ph.lr.ph.lr.ph ], [ 3, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer267" ] + %.sroa.070.0.ph273547 = phi i8 [ %.sroa.070.0.ph262580, %.lr.ph.lr.ph.lr.ph ], [ %.sroa.070.0.ph282495, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer267" ] + %.sroa.369.sroa.0.0.ph272546 = phi i48 [ %.sroa.369.sroa.0.0.ph261579, %.lr.ph.lr.ph.lr.ph ], [ %.sroa.369.0.extract.trunc, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer267" ] + %.sroa.068.0.ph271545 = phi i16 [ %.sroa.068.0.ph260578, %.lr.ph.lr.ph.lr.ph ], [ %.sroa.068.0.extract.trunc, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer267" ] + %.ph270544 = phi i64 [ %.ph257575, %.lr.ph.lr.ph.lr.ph ], [ %.ph228, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer267" ] + %.sroa.574.sroa.5.0.copyload153.ph268542 = phi i64 [ %.sroa.574.sroa.5.0.copyload153.ph255573, %.lr.ph.lr.ph.lr.ph ], [ %.sroa.574.sroa.5.0.copyload152.ph, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer267" ] br label %.lr.ph .lr.ph: ; preds = %.lr.ph.lr.ph, %.outer278 - %.sroa.0.0.ph283496 = phi i32 [ %.sroa.0.0.ph274548, %.lr.ph.lr.ph ], [ 5, %.outer278 ] - %.sroa.070.0.ph282495 = phi i8 [ %.sroa.070.0.ph273547, %.lr.ph.lr.ph ], [ %109, %.outer278 ] - %.ph281494 = phi i64 [ %.ph270544, %.lr.ph.lr.ph ], [ %.ph228, %.outer278 ] - %.sroa.574.sroa.5.0.copyload153.ph279492 = phi i64 [ %.sroa.574.sroa.5.0.copyload153.ph268542, %.lr.ph.lr.ph ], [ %.sroa.574.sroa.5.0.copyload152.ph, %.outer278 ] + %.sroa.0.0.ph283496 = phi i32 [ %.sroa.0.0.ph274548, %.lr.ph.lr.ph ], [ 5, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer278" ] + %.sroa.070.0.ph282495 = phi i8 [ %.sroa.070.0.ph273547, %.lr.ph.lr.ph ], [ %109, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer278" ] + %.ph281494 = phi i64 [ %.ph270544, %.lr.ph.lr.ph ], [ %.ph228, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer278" ] + %.sroa.574.sroa.5.0.copyload153.ph279492 = phi i64 [ %.sroa.574.sroa.5.0.copyload153.ph268542, %.lr.ph.lr.ph ], [ %.sroa.574.sroa.5.0.copyload152.ph, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer278" ] br label %19 19: ; preds = %.lr.ph, %.backedge - %.sroa.0.0430 = phi i32 [ %.sroa.0.0.ph283496, %.lr.ph ], [ %.sroa.0.0.be, %.backedge ] - %20 = phi i64 [ %.ph281494, %.lr.ph ], [ %.ph228, %.backedge ] - %.sroa.574.sroa.5.0.copyload153429 = phi i64 [ %.sroa.574.sroa.5.0.copyload153.ph279492, %.lr.ph ], [ %.sroa.574.sroa.5.0.copyload152.ph, %.backedge ] + %.sroa.0.0430 = phi i32 [ %.sroa.0.0.ph283496, %.lr.ph ], [ %.sroa.0.0.be, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.backedge" ] + %20 = phi i64 [ %.ph281494, %.lr.ph ], [ %.ph228, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.backedge" ] + %.sroa.574.sroa.5.0.copyload153429 = phi i64 [ %.sroa.574.sroa.5.0.copyload153.ph279492, %.lr.ph ], [ %.sroa.574.sroa.5.0.copyload152.ph, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.backedge" ] %21 = icmp ult i64 %2, %.sroa.574.sroa.5.0.copyload153429 br i1 %21, label %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17hf1b458bba19643b2E.exit.thread.i", label %.lr.ph.split.split.i.i @@ -17438,17 +17438,18 @@ _ZN4core5slice6memchr6memchr17h6928691f02359212E.exit.thread21.i.i: ; preds = %. %.pn244 = phi i64 [ %2, %19 ], [ %2, %29 ], [ %2, %.noexc128 ], [ %2, %.preheader.i.i.i ], [ %2, %37 ], [ %36, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hf2911acfb79bdbbdE.exit.i.i" ] %.sroa.0.0.i.ph = getelementptr inbounds i8, ptr %1, i64 %20 %.sroa.4.0.i.ph = sub nuw i64 %.pn244, %20 + %40 = add i32 %.sroa.0.0430, 1 call void @llvm.experimental.noalias.scope.decl(metadata !4425) call void @llvm.experimental.noalias.scope.decl(metadata !4428) %.not.i = icmp eq i64 %.sroa.4.0.i.ph, 3 br i1 %.not.i, label %.preheader.i, label %.loopexit .preheader.i: ; preds = %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17hf1b458bba19643b2E.exit.thread.i", %41 - %.sroa.63.0.i = phi i64 [ %43, %41 ], [ 3, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17hf1b458bba19643b2E.exit.thread.i" ] - %.sroa.02.0.i = phi ptr [ %44, %41 ], [ @anon.f82e1a4c26125e7f86851b038c77e9f3.148, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17hf1b458bba19643b2E.exit.thread.i" ] - %.sroa.01.0.i = phi ptr [ %42, %41 ], [ %.sroa.0.0.i.ph, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17hf1b458bba19643b2E.exit.thread.i" ] + %.sroa.63.0.i = phi i64 [ %43, %42 ], [ 3, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17hf1b458bba19643b2E.exit.thread.i" ] + %.sroa.02.0.i = phi ptr [ %44, %42 ], [ @anon.f82e1a4c26125e7f86851b038c77e9f3.148, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17hf1b458bba19643b2E.exit.thread.i" ] + %.sroa.01.0.i = phi ptr [ %42, %42 ], [ %.sroa.0.0.i.ph, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17hf1b458bba19643b2E.exit.thread.i" ] %40 = icmp eq i64 %.sroa.63.0.i, 0 - br i1 %40, label %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit", label %41 + br i1 %40, label %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.backedge", label %41 41: ; preds = %.preheader.i %42 = getelementptr inbounds nuw i8, ptr %.sroa.01.0.i, i64 1 @@ -17467,17 +17468,13 @@ _ZN4core5slice6memchr6memchr17h6928691f02359212E.exit.thread21.i.i: ; preds = %. %53 = icmp eq i8 %48, %52 br i1 %53, label %.preheader.i, label %.loopexit -"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit": ; preds = %.preheader.i - %54 = add i32 %.sroa.0.0430, 1 - br label %.backedge - -.loopexit: ; preds = %41, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17hf1b458bba19643b2E.exit.thread.i" - switch i32 %.sroa.0.0430, label %55 [ - i32 0, label %62 - i32 1, label %63 - i32 2, label %64 - i32 3, label %65 - i32 4, label %66 +"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit": ; preds = %42, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17hf1b458bba19643b2E.exit.thread.i" + switch i32 %40, label %55 [ + i32 1, label %62 + i32 2, label %63 + i32 3, label %64 + i32 4, label %65 + i32 5, label %66 ] 55: ; preds = %.loopexit @@ -17645,8 +17642,8 @@ _ZN4core5slice6memchr6memchr17h6928691f02359212E.exit.thread21.i.i: ; preds = %. store i64 %.sroa.5183.0.copyload, ptr %.sroa.7.0..sroa_idx200, align 8 br label %.backedge -.backedge: ; preds = %"_ZN4core3ptr85drop_in_place$LT$core..option..Option$LT$uv_python..discovery..VersionRequest$GT$$GT$17hb9cdefca1af8baabE.exit136", %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit" - %.sroa.0.0.be = phi i32 [ %54, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit" ], [ 2, %"_ZN4core3ptr85drop_in_place$LT$core..option..Option$LT$uv_python..discovery..VersionRequest$GT$$GT$17hb9cdefca1af8baabE.exit136" ] +.backedge: ; preds = %.preheader.i, %"_ZN4core3ptr85drop_in_place$LT$core..option..Option$LT$uv_python..discovery..VersionRequest$GT$$GT$17hb9cdefca1af8baabE.exit136" + %.sroa.0.0.be = phi i32 [ 2, %"_ZN4core3ptr85drop_in_place$LT$core..option..Option$LT$uv_python..discovery..VersionRequest$GT$$GT$17hb9cdefca1af8baabE.exit136" ], [ %40, %.preheader.i ] br i1 %.ph, label %.outer278._crit_edge, label %19 98: ; preds = %64 @@ -17741,12 +17738,12 @@ _ZN4core5slice6memchr6memchr17h6928691f02359212E.exit.thread21.i.i: ; preds = %. ret void .outer278._crit_edge: ; preds = %.outer, %.outer254, %.outer267, %.outer278, %.backedge - %.sroa.056.0.ph.lcssa398 = phi i8 [ %.sroa.056.0.ph609, %.backedge ], [ %.sroa.056.0.ph609, %.outer278 ], [ %.sroa.056.0.ph609, %.outer267 ], [ %.sroa.056.0.ph609, %.outer254 ], [ %70, %.outer ] - %.sroa.057.0.ph258.lcssa384 = phi i8 [ %.sroa.057.0.ph258576, %.backedge ], [ %.sroa.057.0.ph258576, %.outer278 ], [ %.sroa.057.0.ph258576, %.outer267 ], [ %.sroa.0100.0.copyload, %.outer254 ], [ %.sroa.057.0.ph258576, %.outer ] - %.sroa.359.0.ph259.lcssa372 = phi i16 [ %.sroa.359.0.ph259577, %.backedge ], [ %.sroa.359.0.ph259577, %.outer278 ], [ %.sroa.359.0.ph259577, %.outer267 ], [ %.sroa.5101.0.copyload, %.outer254 ], [ %.sroa.359.0.ph259577, %.outer ] - %.sroa.068.0.ph271.lcssa359 = phi i16 [ %.sroa.068.0.ph271545, %.backedge ], [ %.sroa.068.0.ph271545, %.outer278 ], [ %.sroa.068.0.extract.trunc, %.outer267 ], [ %.sroa.068.0.ph271545, %.outer254 ], [ %.sroa.068.0.ph271545, %.outer ] - %.sroa.369.sroa.0.0.ph272.lcssa348 = phi i48 [ %.sroa.369.sroa.0.0.ph272546, %.backedge ], [ %.sroa.369.sroa.0.0.ph272546, %.outer278 ], [ %.sroa.369.0.extract.trunc, %.outer267 ], [ %.sroa.369.sroa.0.0.ph272546, %.outer254 ], [ %.sroa.369.sroa.0.0.ph272546, %.outer ] - %.sroa.070.0.ph282.lcssa336 = phi i8 [ %.sroa.070.0.ph282495, %.backedge ], [ %109, %.outer278 ], [ %.sroa.070.0.ph282495, %.outer267 ], [ %.sroa.070.0.ph282495, %.outer254 ], [ %.sroa.070.0.ph282495, %.outer ] + %.sroa.056.0.ph.lcssa398 = phi i8 [ %.sroa.056.0.ph609, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.backedge" ], [ %.sroa.056.0.ph609, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer278" ], [ %.sroa.056.0.ph609, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer267" ], [ %.sroa.056.0.ph609, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer254" ], [ %70, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer" ] + %.sroa.057.0.ph258.lcssa384 = phi i8 [ %.sroa.057.0.ph258576, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.backedge" ], [ %.sroa.057.0.ph258576, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer278" ], [ %.sroa.057.0.ph258576, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer267" ], [ %.sroa.0100.0.copyload, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer254" ], [ %.sroa.057.0.ph258576, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer" ] + %.sroa.359.0.ph259.lcssa372 = phi i16 [ %.sroa.359.0.ph259577, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.backedge" ], [ %.sroa.359.0.ph259577, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer278" ], [ %.sroa.359.0.ph259577, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer267" ], [ %.sroa.5101.0.copyload, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer254" ], [ %.sroa.359.0.ph259577, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer" ] + %.sroa.068.0.ph271.lcssa359 = phi i16 [ %.sroa.068.0.ph271545, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.backedge" ], [ %.sroa.068.0.ph271545, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer278" ], [ %.sroa.068.0.extract.trunc, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer267" ], [ %.sroa.068.0.ph271545, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer254" ], [ %.sroa.068.0.ph271545, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer" ] + %.sroa.369.sroa.0.0.ph272.lcssa348 = phi i48 [ %.sroa.369.sroa.0.0.ph272546, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.backedge" ], [ %.sroa.369.sroa.0.0.ph272546, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer278" ], [ %.sroa.369.0.extract.trunc, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer267" ], [ %.sroa.369.sroa.0.0.ph272546, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer254" ], [ %.sroa.369.sroa.0.0.ph272546, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer" ] + %.sroa.070.0.ph282.lcssa336 = phi i8 [ %.sroa.070.0.ph282495, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.backedge" ], [ %109, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer278" ], [ %.sroa.070.0.ph282495, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer267" ], [ %.sroa.070.0.ph282495, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer254" ], [ %.sroa.070.0.ph282495, %"_ZN4core5slice5ascii30_$LT$impl$u20$$u5b$u8$u5d$$GT$20eq_ignore_ascii_case17hb5faa0411e81ad20E.exit.outer" ] %.sroa.4140.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.4140.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(24) %12, i64 24, i1 false) %.sroa.0119.0.insert.ext = zext i8 %.sroa.057.0.ph258.lcssa384 to i24 diff --git a/bench/velox/optimized/TypeCalculation.yy.ll b/bench/velox/optimized/TypeCalculation.yy.ll index 32350e6d9d8..a3486a6a0ba 100644 --- a/bench/velox/optimized/TypeCalculation.yy.ll +++ b/bench/velox/optimized/TypeCalculation.yy.ll @@ -112,7 +112,7 @@ $_ZNSt6vectorIN8facebook5velox10expression9calculate6Parser17stack_symbol_typeES @.str.51 = private unnamed_addr constant [49 x i8] c"cannot create std::vector larger than max_size()\00", align 1 @.str.52 = private unnamed_addr constant [26 x i8] c"vector::_M_realloc_insert\00", align 1 @llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I_TypeCalculation.yy.cc, ptr null }] -@switch.table._ZNK8facebook5velox10expression9calculate6Parser15yysyntax_error_B5cxx11ERKNS3_7contextE = private unnamed_addr constant [4 x ptr] [ptr @.str.7, ptr @.str.8, ptr @.str.9, ptr @.str.10], align 8 +@switch.table._ZNK8facebook5velox10expression9calculate6Parser15yysyntax_error_B5cxx11ERKNS3_7contextE = private unnamed_addr constant [5 x ptr] [ptr @.str.6, ptr @.str.7, ptr @.str.8, ptr @.str.9, ptr @.str.10], align 8 @_ZN8facebook5velox10expression9calculate6ParserC1EPNS2_7ScannerE = unnamed_addr alias void (ptr, ptr), ptr @_ZN8facebook5velox10expression9calculate6ParserC2EPNS2_7ScannerE @_ZN8facebook5velox10expression9calculate6ParserD1Ev = unnamed_addr alias void (ptr), ptr @_ZN8facebook5velox10expression9calculate6ParserD2Ev @@ -2379,10 +2379,9 @@ _ZNK8facebook5velox10expression9calculate6Parser26yy_syntax_error_arguments_ERKN br i1 %17, label %switch.lookup, label %sw.epilog switch.lookup: ; preds = %_ZNK8facebook5velox10expression9calculate6Parser26yy_syntax_error_arguments_ERKNS3_7contextEPNS3_11symbol_kind16symbol_kind_typeEi.exit - %switch.tableidx = add nsw i32 %yycount.2.i.i, -1 %switch.offset = add nuw nsw i32 %yycount.2.i.i, 1 - %18 = zext nneg i32 %switch.tableidx to i64 - %switch.gep = getelementptr inbounds nuw [4 x ptr], ptr @switch.table._ZNK8facebook5velox10expression9calculate6Parser15yysyntax_error_B5cxx11ERKNS3_7contextE, i64 0, i64 %18 + %18 = zext nneg i32 %yycount.2.i.i to i64 + %switch.gep = getelementptr inbounds nuw [5 x ptr], ptr @switch.table._ZNK8facebook5velox10expression9calculate6Parser15yysyntax_error_B5cxx11ERKNS3_7contextE, i64 0, i64 %18 %switch.load = load ptr, ptr %switch.gep, align 8 br label %sw.epilog diff --git a/bench/verilator/optimized/V3PreProc.ll b/bench/verilator/optimized/V3PreProc.ll index ae1295a8da8..11687977cd0 100644 --- a/bench/verilator/optimized/V3PreProc.ll +++ b/bench/verilator/optimized/V3PreProc.ll @@ -23661,9 +23661,9 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i357 ._crit_edge.i.i.i359: ; preds = %.noexc362, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i357 %578 = phi ptr [ %576, %.noexc362 ], [ %566, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i357 ] - switch i64 %570, label %581 [ - i64 2, label %579 - i64 1, label %582 + switch i64 %574, label %581 [ + i64 1, label %579 + i64 0, label %582 ] 579: ; preds = %._crit_edge.i.i.i359 @@ -33307,9 +33307,9 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit483: ; preds = %_Z ._crit_edge.i.i484: ; preds = %.noexc486, %544 %553 = phi ptr [ %551, %.noexc486 ], [ %174, %544 ] - switch i32 %547, label %556 [ - i32 2, label %554 - i32 1, label %557 + switch i64 %549, label %556 [ + i64 1, label %554 + i64 0, label %557 ] 554: ; preds = %._crit_edge.i.i484 @@ -42145,9 +42145,9 @@ _ZNSt5stackI11VPreIfEntrySt5dequeIS0_SaIS0_EEE3topEv.exit1529: ; preds = %3604, ._crit_edge.i.i1531: ; preds = %.noexc1533, %.thread1798 %3625 = phi ptr [ %3623, %.noexc1533 ], [ %370, %.thread1798 ] - switch i32 %3619, label %3628 [ - i32 2, label %3626 - i32 1, label %3629 + switch i64 %3621, label %3628 [ + i64 1, label %3626 + i64 0, label %3629 ] 3626: ; preds = %._crit_edge.i.i1531 diff --git a/bench/wasmi-rs/optimized/5j8r45rfbax70rfnan7wcjxtw.ll b/bench/wasmi-rs/optimized/5j8r45rfbax70rfnan7wcjxtw.ll index a83ef4e0014..c32e2da40fa 100644 --- a/bench/wasmi-rs/optimized/5j8r45rfbax70rfnan7wcjxtw.ll +++ b/bench/wasmi-rs/optimized/5j8r45rfbax70rfnan7wcjxtw.ll @@ -10252,14 +10252,15 @@ define noundef nonnull align 8 dereferenceable(112) ptr @_ZN5wasmi5error5Error4k define noundef range(i8 0, 12) i8 @_ZN5wasmi5error5Error12as_trap_code17h2cfe97fc22c8a29aE(ptr noalias noundef readonly align 8 captures(none) dereferenceable(8) %0) unnamed_addr #14 { %2 = load ptr, ptr %0, align 8, !alias.scope !855, !nonnull !10, !align !44, !noundef !10 %3 = load i8, ptr %2, align 8, !range !153, !alias.scope !858, !noundef !10 - %4 = icmp ne i8 %3, 15 - tail call void @llvm.assume(i1 %4) - switch i8 %3, label %_ZN5wasmi5error9ErrorKind12as_trap_code17h3dd7ef51ce3d5b09E.exit [ - i8 6, label %5 - i8 11, label %20 - i8 13, label %8 - i8 14, label %12 - i8 17, label %16 + %4 = add nsw i8 %3, -5 + %5 = icmp ne i8 %4, 9 + tail call void @llvm.assume(i1 %5) + switch i8 %4, label %_ZN5wasmi5error9ErrorKind12as_trap_code17h3dd7ef51ce3d5b09E.exit [ + i8 0, label %6 + i8 5, label %21 + i8 7, label %9 + i8 7, label %16 + i8 11, label %17 ] 5: ; preds = %1 @@ -10274,18 +10275,18 @@ define noundef range(i8 0, 12) i8 @_ZN5wasmi5error5Error12as_trap_code17h2cfe97f %11 = icmp ult i64 %switch.tableidx, 8 br i1 %11, label %switch.lookup, label %_ZN5wasmi5error9ErrorKind12as_trap_code17h3dd7ef51ce3d5b09E.exit -12: ; preds = %1 - %13 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %14 = load i64, ptr %13, align 8, !range !863, !alias.scope !858, !noundef !10 - %switch.tableidx2 = add nsw i64 %14, -4 - %15 = icmp ult i64 %switch.tableidx2, 7 - br i1 %15, label %switch.lookup1, label %_ZN5wasmi5error9ErrorKind12as_trap_code17h3dd7ef51ce3d5b09E.exit - 16: ; preds = %1 %17 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %18 = load i64, ptr %17, align 8, !range !11, !alias.scope !858, !noundef !10 - %19 = trunc nuw i64 %18 to i1 - %spec.select = select i1 %19, i8 9, i8 11 + %18 = load i64, ptr %17, align 8, !range !863, !alias.scope !858, !noundef !10 + %switch.tableidx2 = add nsw i64 %18, -4 + %19 = icmp ult i64 %switch.tableidx2, 7 + br i1 %16, label %switch.lookup1, label %_ZN5wasmi5error9ErrorKind12as_trap_code17h3dd7ef51ce3d5b09E.exit + +17: ; preds = %1 + %18 = getelementptr inbounds nuw i8, ptr %2, i64 8 + %19 = load i64, ptr %18, align 8, !range !11, !alias.scope !858, !noundef !10 + %20 = trunc nuw i64 %19 to i1 + %spec.select = select i1 %20, i8 9, i8 11 br label %_ZN5wasmi5error9ErrorKind12as_trap_code17h3dd7ef51ce3d5b09E.exit 20: ; preds = %1 @@ -10330,14 +10331,15 @@ define { i32, i32 } @_ZN5wasmi5error5Error15i32_exit_status17h01c9e3a22c7b6a22E( define hidden noundef zeroext i1 @_ZN5wasmi5error5Error14is_out_of_fuel17h8d939b0720cdfed8E(ptr noalias noundef readonly align 8 captures(none) dereferenceable(8) %0) unnamed_addr #14 { %2 = load ptr, ptr %0, align 8, !alias.scope !870, !nonnull !10, !align !44, !noundef !10 %3 = load i8, ptr %2, align 8, !range !153, !noundef !10 - %4 = icmp ne i8 %3, 15 - tail call void @llvm.assume(i1 %4) - switch i8 %3, label %22 [ - i8 6, label %5 - i8 11, label %9 - i8 13, label %10 - i8 14, label %14 - i8 17, label %18 + %4 = add nsw i8 %3, -5 + %5 = icmp ne i8 %4, 9 + tail call void @llvm.assume(i1 %5) + switch i8 %4, label %23 [ + i8 0, label %6 + i8 5, label %10 + i8 7, label %14 + i8 7, label %18 + i8 11, label %19 ] 5: ; preds = %1 @@ -10346,43 +10348,44 @@ define hidden noundef zeroext i1 @_ZN5wasmi5error5Error14is_out_of_fuel17h8d939b %8 = icmp eq i8 %7, 9 br label %22 -9: ; preds = %1 - br label %22 - 10: ; preds = %1 - %11 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %12 = load i64, ptr %11, align 8, !range !862, !noundef !10 - %13 = icmp eq i64 %12, 8 - br label %22 + br label %23 14: ; preds = %1 %15 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %16 = load i64, ptr %15, align 8, !range !863, !noundef !10 - %17 = icmp eq i64 %16, 10 + %16 = load i64, ptr %15, align 8, !range !862, !noundef !10 + %17 = icmp eq i64 %16, 8 br label %22 18: ; preds = %1 %19 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %20 = load i64, ptr %19, align 8, !range !11, !noundef !10 - %21 = trunc nuw i64 %20 to i1 + %20 = load i64, ptr %19, align 8, !range !863, !noundef !10 + %18 = icmp eq i64 %20, 10 br label %22 -22: ; preds = %1, %18, %14, %10, %9, %5 - %.sroa.0.0 = phi i1 [ %8, %5 ], [ true, %9 ], [ %13, %10 ], [ %17, %14 ], [ %21, %18 ], [ false, %1 ] +22: ; preds = %1 + %20 = getelementptr inbounds nuw i8, ptr %2, i64 8 + %21 = load i64, ptr %20, align 8, !range !11, !noundef !10 + %22 = trunc nuw i64 %21 to i1 + br label %23 + +23: ; preds = %1, %19, %15, %11, %10, %6 + %.sroa.0.0 = phi i1 [ %9, %6 ], [ true, %10 ], [ %14, %11 ], [ %18, %15 ], [ %22, %19 ], [ false, %1 ] ret i1 %.sroa.0.0 } ; Function Attrs: nonlazybind uwtable define void @_ZN5wasmi5error5Error14into_resumable17hfbbdda1bc07d7848E(ptr dead_on_unwind noalias noundef writable writeonly sret([32 x i8]) align 8 captures(none) dereferenceable(32) initializes((0, 16)) %0, ptr noalias noundef nonnull align 8 %1) unnamed_addr #0 personality ptr @rust_eh_personality { %3 = load i8, ptr %1, align 8, !range !153, !noundef !10 - %4 = icmp ne i8 %3, 15 - tail call void @llvm.assume(i1 %4) - switch i8 %3, label %17 [ - i8 17, label %13 - i8 14, label %9 - i8 13, label %5 - i8 10, label %._crit_edge41 - i8 11, label %19 + %4 = add nsw i8 %3, -5 + %5 = icmp ne i8 %4, 9 + tail call void @llvm.assume(i1 %5) + switch i8 %4, label %18 [ + i8 14, label %14 + i8 8, label %9 + i8 7, label %6 + i8 4, label %._crit_edge41 + i8 5, label %20 ], !prof !873 5: ; preds = %2 @@ -10391,21 +10394,21 @@ define void @_ZN5wasmi5error5Error14into_resumable17hfbbdda1bc07d7848E(ptr dead_ %8 = icmp eq i64 %7, 8 br i1 %8, label %.thread39, label %17 -9: ; preds = %2 - %10 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %11 = load i64, ptr %10, align 8, !range !863, !noundef !10 - %12 = icmp eq i64 %11, 10 - br i1 %12, label %.thread39, label %17 - -13: ; preds = %2 - %14 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %15 = load i64, ptr %14, align 8, !range !11, !noundef !10 - %16 = trunc nuw i64 %15 to i1 - br i1 %16, label %.thread39, label %17 - -17: ; preds = %2, %9, %5, %13 - %18 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %1, ptr %18, align 8 +17: ; preds = %2 + %18 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %12 = load i64, ptr %18, align 8, !range !863, !noundef !10 + %13 = icmp eq i64 %12, 10 + br i1 %13, label %.thread39, label %18 + +14: ; preds = %2 + %15 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %16 = load i64, ptr %15, align 8, !range !11, !noundef !10 + %17 = trunc nuw i64 %16 to i1 + br i1 %17, label %.thread39, label %18 + +18: ; preds = %2, %10, %6, %14 + %19 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %1, ptr %19, align 8 store i64 1, ptr %0, align 8 br label %23 @@ -10422,9 +10425,9 @@ define void @_ZN5wasmi5error5Error14into_resumable17hfbbdda1bc07d7848E(ptr dead_ br label %.thread31 .thread31: ; preds = %19, %._crit_edge41 - %.sroa.6.0.ph = phi i64 [ undef, %19 ], [ %.sroa.3.0.copyload, %._crit_edge41 ] - %.sroa.4.0.ph.in = phi ptr [ %20, %19 ], [ %.sroa.2.0..sroa_idx, %._crit_edge41 ] - %.sroa.02.0.ph = phi ptr [ null, %19 ], [ %.sroa.08.0.copyload.pre, %._crit_edge41 ] + %.sroa.6.0.ph = phi i64 [ undef, %20 ], [ %.sroa.3.0.copyload, %._crit_edge41 ] + %.sroa.4.0.ph.in = phi ptr [ %20, %20 ], [ %.sroa.2.0..sroa_idx, %._crit_edge41 ] + %.sroa.02.0.ph = phi ptr [ null, %20 ], [ %.sroa.08.0.copyload.pre, %._crit_edge41 ] %.sroa.4.0.ph = load i64, ptr %.sroa.4.0.ph.in, align 8 %21 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %.sroa.02.0.ph, ptr %21, align 8 @@ -10444,7 +10447,7 @@ define void @_ZN5wasmi5error5Error14into_resumable17hfbbdda1bc07d7848E(ptr dead_ store i64 %.sroa.01.0, ptr %.sroa.4.0..sroa_idx4, align 8 store i64 0, ptr %0, align 8 invoke fastcc void @"_ZN4core3ptr44drop_in_place$LT$wasmi..error..ErrorKind$GT$17h50f8d00acadb0d1aE"(ptr noalias noundef align 8 dereferenceable(112) %1) - to label %24 unwind label %25 + to label %25 unwind label %25 23: ; preds = %24, %17 ret void @@ -10470,14 +10473,15 @@ define noundef zeroext i1 @"_ZN58_$LT$wasmi..error..Error$u20$as$u20$core..fmt.. ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: write) uwtable define noundef range(i8 0, 12) i8 @_ZN5wasmi5error9ErrorKind12as_trap_code17h3dd7ef51ce3d5b09E(ptr noalias noundef readonly align 8 captures(none) dereferenceable(112) %0) unnamed_addr #15 { %2 = load i8, ptr %0, align 8, !range !153, !noundef !10 - %3 = icmp ne i8 %2, 15 - tail call void @llvm.assume(i1 %3) - switch i8 %2, label %20 [ - i8 6, label %4 - i8 11, label %19 - i8 13, label %7 - i8 14, label %11 - i8 17, label %15 + %3 = add nsw i8 %2, -5 + %4 = icmp ne i8 %3, 9 + tail call void @llvm.assume(i1 %4) + switch i8 %3, label %21 [ + i8 0, label %5 + i8 5, label %20 + i8 7, label %8 + i8 7, label %15 + i8 11, label %16 ] 4: ; preds = %1 @@ -10523,7 +10527,7 @@ switch.lookup2: ; preds = %11 br label %20 20: ; preds = %15, %switch.lookup2, %11, %switch.lookup, %7, %4, %1, %19 - %.sroa.0.0 = phi i8 [ 11, %11 ], [ 11, %7 ], [ 11, %1 ], [ %6, %4 ], [ 9, %19 ], [ %switch.masked, %switch.lookup ], [ %switch.masked6, %switch.lookup2 ], [ %spec.select, %15 ] + %.sroa.0.0 = phi i8 [ 11, %11 ], [ 11, %7 ], [ 11, %1 ], [ %6, %5 ], [ 9, %20 ], [ %switch.masked, %switch.lookup ], [ %switch.masked6, %switch.lookup2 ], [ %spec.select, %16 ] ret i8 %.sroa.0.0 } diff --git a/bench/wasmi-rs/optimized/81ldxvoogvmj2mhf7lldfei32.ll b/bench/wasmi-rs/optimized/81ldxvoogvmj2mhf7lldfei32.ll index be3cf08e936..92bda5915c9 100644 --- a/bench/wasmi-rs/optimized/81ldxvoogvmj2mhf7lldfei32.ll +++ b/bench/wasmi-rs/optimized/81ldxvoogvmj2mhf7lldfei32.ll @@ -2803,11 +2803,12 @@ define hidden void @_ZN4core3ptr25swap_nonoverlapping_bytes26swap_nonoverlapping define internal void @"_ZN4core3ptr53drop_in_place$LT$wast..core..types..InnerTypeKind$GT$17hf944851fa1249037E"(ptr noalias noundef align 8 dereferenceable(56) %0) unnamed_addr #0 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 48 %3 = load i8, ptr %2, align 8, !range !48, !noundef !4 - %4 = icmp ne i8 %3, 4 - tail call void @llvm.assume(i1 %4) - switch i8 %3, label %5 [ - i8 2, label %6 - i8 3, label %7 + %4 = add nsw i8 %3, -2 + %5 = icmp ne i8 %4, 2 + tail call void @llvm.assume(i1 %5) + switch i8 %4, label %6 [ + i8 0, label %7 + i8 1, label %8 ] 5: ; preds = %7, %6, %1 diff --git a/bench/wasmtime-rs/optimized/2wry4odhn7m84bj2.ll b/bench/wasmtime-rs/optimized/2wry4odhn7m84bj2.ll index 7b4e13a10b1..1efebc1916c 100644 --- a/bench/wasmtime-rs/optimized/2wry4odhn7m84bj2.ll +++ b/bench/wasmtime-rs/optimized/2wry4odhn7m84bj2.ll @@ -30744,7 +30744,7 @@ switch.lookup: ; preds = %28 br label %_ZN8wasmtime7runtime5types8matching9memory_ty17h0b977f0d9bf01981E.exit _ZN8wasmtime7runtime5types8matching9memory_ty17h0b977f0d9bf01981E.exit: ; preds = %.split.i, %.split23.i, %93, %76, %67, %58, %"_ZN69_$LT$wasmtime_types..WasmFuncType$u20$as$u20$core..cmp..PartialEq$GT$2eq17h3f587a21214608d8E.exit.thread", %"_ZN69_$LT$wasmtime_types..WasmFuncType$u20$as$u20$core..cmp..PartialEq$GT$2eq17h3f587a21214608d8E.exit", %switch.lookup50, %switch.lookup45, %switch.lookup40, %switch.lookup, %44 - %.0 = phi ptr [ %47, %44 ], [ %57, %switch.lookup ], [ %92, %switch.lookup40 ], [ %126, %switch.lookup45 ], [ %228, %switch.lookup50 ], [ %229, %"_ZN69_$LT$wasmtime_types..WasmFuncType$u20$as$u20$core..cmp..PartialEq$GT$2eq17h3f587a21214608d8E.exit.thread" ], [ null, %"_ZN69_$LT$wasmtime_types..WasmFuncType$u20$as$u20$core..cmp..PartialEq$GT$2eq17h3f587a21214608d8E.exit" ], [ %65, %58 ], [ %74, %67 ], [ %85, %76 ], [ %96, %93 ], [ %116, %.split.i ], [ %112, %.split23.i ] + %.0 = phi ptr [ %47, %44 ], [ %57, %switch.lookup ], [ %92, %switch.lookup41 ], [ %126, %switch.lookup46 ], [ %228, %switch.lookup51 ], [ %229, %"_ZN69_$LT$wasmtime_types..WasmFuncType$u20$as$u20$core..cmp..PartialEq$GT$2eq17h3f587a21214608d8E.exit.thread" ], [ null, %"_ZN69_$LT$wasmtime_types..WasmFuncType$u20$as$u20$core..cmp..PartialEq$GT$2eq17h3f587a21214608d8E.exit" ], [ %65, %58 ], [ %74, %67 ], [ %85, %76 ], [ %96, %93 ], [ %116, %.split.i ], [ %112, %.split23.i ] ret ptr %.0 58: ; preds = %31 @@ -30787,14 +30787,13 @@ switch.lookup40: ; preds = %31 call void @llvm.lifetime.start.p0(ptr nonnull %21) call void @llvm.lifetime.start.p0(ptr nonnull %20) call void @llvm.lifetime.start.p0(ptr nonnull %19) - %switch.tableidx = add nsw i64 %32, -2 - %switch.gep41 = getelementptr inbounds [5 x i64], ptr @switch.table._ZN8wasmtime7runtime5types8matching9entity_ty17h65f59e172b33105aE.258, i64 0, i64 %switch.tableidx - %switch.load42 = load i64, ptr %switch.gep41, align 8 - %switch.gep43 = getelementptr inbounds [5 x ptr], ptr @switch.table._ZN8wasmtime7runtime5types8matching9entity_ty17h65f59e172b33105aE.259, i64 0, i64 %switch.tableidx - %switch.load44 = load ptr, ptr %switch.gep43, align 8 - store ptr %switch.load44, ptr %19, align 8 + %switch.gep42 = getelementptr inbounds nuw [5 x i64], ptr @switch.table._ZN8wasmtime7runtime5types8matching9entity_ty17h65f59e172b33105aE.258, i64 0, i64 %33 + %switch.load43 = load i64, ptr %switch.gep42, align 8 + %switch.gep44 = getelementptr inbounds nuw [5 x ptr], ptr @switch.table._ZN8wasmtime7runtime5types8matching9entity_ty17h65f59e172b33105aE.259, i64 0, i64 %33 + %switch.load45 = load ptr, ptr %switch.gep44, align 8 + store ptr %switch.load45, ptr %19, align 8 %86 = getelementptr inbounds nuw i8, ptr %19, i64 8 - store i64 %switch.load42, ptr %86, align 8 + store i64 %switch.load43, ptr %86, align 8 store ptr %19, ptr %20, align 8 %87 = getelementptr inbounds nuw i8, ptr %20, i64 8 store ptr @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h4c78af84c82888acE", ptr %87, align 8 diff --git a/bench/wireshark/optimized/packet-ftp.ll b/bench/wireshark/optimized/packet-ftp.ll index 0a6fad9578a..04b893d0e50 100644 --- a/bench/wireshark/optimized/packet-ftp.ll +++ b/bench/wireshark/optimized/packet-ftp.ll @@ -953,10 +953,10 @@ isvalid_rfc2428_delimiter.exit.i: ; preds = %320 %352 = sext i32 %.07793.i to i64 %353 = getelementptr i8, ptr %324, i64 %352 %354 = getelementptr i8, ptr %353, i64 1 - switch i32 %.26596.i, label %374 [ - i32 1, label %355 - i32 2, label %360 - i32 3, label %369 + switch i32 %351, label %374 [ + i32 2, label %355 + i32 3, label %360 + i32 4, label %369 ] 355: ; preds = %350 @@ -994,14 +994,13 @@ isvalid_rfc2428_delimiter.exit.i: ; preds = %320 .sink.split.i: ; preds = %369, %367, %365 %.sink.i = phi ptr [ %17, %367 ], [ %17, %365 ], [ %19, %369 ] %.171.ph.i = phi i1 [ %368, %367 ], [ %366, %365 ], [ %.07095.i, %369 ] - %.366.ph.i = phi i32 [ 3, %367 ], [ 3, %365 ], [ 4, %369 ] store i32 %348, ptr %.sink.i, align 4 br label %374 374: ; preds = %.sink.split.i, %355, %350, %.lr.ph97.i %.178.i = phi i32 [ %.07793.i, %.lr.ph97.i ], [ %347, %350 ], [ %347, %355 ], [ %347, %.sink.split.i ] %.171.i = phi i1 [ %.07095.i, %.lr.ph97.i ], [ %.07095.i, %350 ], [ %.07095.i, %355 ], [ %.171.ph.i, %.sink.split.i ] - %.366.i = phi i32 [ %.26596.i, %.lr.ph97.i ], [ %351, %350 ], [ 2, %355 ], [ %.366.ph.i, %.sink.split.i ] + %.366.i = phi i32 [ %.26596.i, %.lr.ph97.i ], [ %351, %350 ], [ 2, %355 ], [ %351, %.sink.split.i ] %indvars.iv.next109.i = add nuw nsw i64 %indvars.iv108.i, 1 %exitcond111.not.i = icmp eq i64 %indvars.iv.next109.i, %wide.trip.count110.i br i1 %exitcond111.not.i, label %parse_eprt_request.exit, label %.lr.ph97.i, !llvm.loop !10 diff --git a/bench/wireshark/optimized/packet-rtp-midi.ll b/bench/wireshark/optimized/packet-rtp-midi.ll index 930554b3ddb..9254363b16e 100644 --- a/bench/wireshark/optimized/packet-rtp-midi.ll +++ b/bench/wireshark/optimized/packet-rtp-midi.ll @@ -2257,9 +2257,9 @@ switch.lookup465: ; preds = %45 br label %.sink.split .sink.split: ; preds = %36, %switch.lookup465 - %hf_rtp_midi_deltatime4.sink = phi ptr [ %switch.load467, %switch.lookup465 ], [ @hf_rtp_midi_deltatime4, %36 ] - %.sink464 = phi i32 [ %switch.offset468, %switch.lookup465 ], [ 4, %36 ] - %.lcssa8.i.ph = phi i32 [ %switch.offset469, %switch.lookup465 ], [ 4, %36 ] + %hf_rtp_midi_deltatime4.sink = phi ptr [ %switch.load467, %switch.lookup457 ], [ @hf_rtp_midi_deltatime4, %36 ] + %.sink464 = phi i32 [ %switch.offset468, %switch.lookup457 ], [ 4, %36 ] + %.lcssa8.i.ph = phi i32 [ %switch.offset469, %switch.lookup457 ], [ 4, %36 ] %48 = load i32, ptr %hf_rtp_midi_deltatime4.sink, align 4 %49 = tail call ptr @proto_tree_add_uint(ptr noundef %33, i32 noundef %48, ptr noundef %0, i32 noundef %.2120285, i32 noundef %.sink464, i32 noundef %42) br label %50 @@ -2685,8 +2685,8 @@ default.unreachable: ; preds = %75 br label %.thread.i185 .thread.i185: ; preds = %292, %.split.i184, %.thread.i185.loopexit487, %.thread.i185.loopexit, %287 - %.184.i = phi ptr [ %288, %287 ], [ @rtp_midi_common_status_sysex_segment_complete, %.thread.i185.loopexit ], [ @rtp_midi_common_status_sysex_cancel, %.split.i184 ], [ %288, %292 ], [ @rtp_midi_common_status_sysex_segment_start, %.thread.i185.loopexit487 ] - %.182.i = phi i32 [ 0, %287 ], [ %291, %.thread.i185.loopexit ], [ %291, %.split.i184 ], [ %291, %292 ], [ %291, %.thread.i185.loopexit487 ] + %.184.i = phi ptr [ %288, %287 ], [ @rtp_midi_common_status_sysex_segment_complete, %.thread.i185.loopexit ], [ @rtp_midi_common_status_sysex_cancel, %.split.i184 ], [ %288, %292 ], [ @rtp_midi_common_status_sysex_segment_start, %.thread.i185.loopexit479 ] + %.182.i = phi i32 [ 0, %287 ], [ %291, %.thread.i185.loopexit ], [ %291, %.split.i184 ], [ %291, %292 ], [ %291, %.thread.i185.loopexit479 ] %293 = add i32 %.182.i, -1 %294 = add i32 %.0140.i, -1 %295 = add i32 %.182.i, 1 @@ -3612,8 +3612,8 @@ decode_sysex_common_rt_mtc.exit.thread.i.i: ; preds = %decode_sysex_common br label %.thread.i168 .thread.i168: ; preds = %842, %.split.i, %.thread.i168.loopexit488, %.thread.i168.loopexit, %837 - %.133.i = phi i32 [ 0, %837 ], [ %841, %.thread.i168.loopexit ], [ %841, %.split.i ], [ %841, %842 ], [ %841, %.thread.i168.loopexit488 ] - %.1.i169 = phi ptr [ %838, %837 ], [ @rtp_midi_common_status_sysex_segment_end, %.thread.i168.loopexit ], [ @rtp_midi_common_status_sysex_cancel, %.split.i ], [ %838, %842 ], [ @rtp_midi_common_status_sysex_segment, %.thread.i168.loopexit488 ] + %.133.i = phi i32 [ 0, %837 ], [ %841, %.thread.i168.loopexit ], [ %841, %.split.i ], [ %841, %842 ], [ %841, %.thread.i168.loopexit480 ] + %.1.i169 = phi ptr [ %838, %837 ], [ @rtp_midi_common_status_sysex_segment_end, %.thread.i168.loopexit ], [ @rtp_midi_common_status_sysex_cancel, %.split.i ], [ %838, %842 ], [ @rtp_midi_common_status_sysex_segment, %.thread.i168.loopexit480 ] %843 = add i32 %.0140.i, -1 %844 = add i32 %.133.i, 1 %845 = load i32, ptr @ett_rtp_midi_command, align 4 @@ -4288,9 +4288,8 @@ switch.lookup: ; preds = %1246 %1248 = zext nneg i32 %.01183.i.i to i64 %switch.gep = getelementptr inbounds nuw [4 x ptr], ptr @switch.table.dissect_rtp_midi, i64 0, i64 %1248 %switch.load = load ptr, ptr %switch.gep, align 8 - %switch.offset = add nuw nsw i32 %.01183.i.i, 1 %1249 = load i32, ptr %switch.load, align 4 - %1250 = tail call ptr @proto_tree_add_uint(ptr noundef %1204, i32 noundef %1249, ptr noundef %0, i32 noundef %.1129.i.i, i32 noundef %switch.offset, i32 noundef %1242) + %1250 = tail call ptr @proto_tree_add_uint(ptr noundef %1204, i32 noundef %1249, ptr noundef %0, i32 noundef %.1129.i.i, i32 noundef %1243, i32 noundef %1242) br label %1251 1251: ; preds = %1246, %switch.lookup diff --git a/bench/wireshark/optimized/packet-snmp.ll b/bench/wireshark/optimized/packet-snmp.ll index e5922f72399..c6c63bac765 100644 --- a/bench/wireshark/optimized/packet-snmp.ll +++ b/bench/wireshark/optimized/packet-snmp.ll @@ -845,9 +845,9 @@ define hidden noundef i32 @dissect_snmp_engineid(ptr noundef %0, ptr noundef %1, ] 38: ; preds = %30 - switch i32 %4, label %.thread138 [ - i32 9, label %39 - i32 5, label %.thread135 + switch i32 %37, label %.thread138 [ + i32 4, label %39 + i32 0, label %.thread135 ] 39: ; preds = %38 @@ -857,9 +857,9 @@ define hidden noundef i32 @dissect_snmp_engineid(ptr noundef %0, ptr noundef %1, br label %.thread135 43: ; preds = %30 - switch i32 %4, label %.thread138 [ - i32 21, label %44 - i32 5, label %.thread135 + switch i32 %37, label %.thread138 [ + i32 16, label %44 + i32 0, label %.thread135 ] 44: ; preds = %43 @@ -881,9 +881,9 @@ define hidden noundef i32 @dissect_snmp_engineid(ptr noundef %0, ptr noundef %1, br label %55 54: ; preds = %48 - switch i32 %4, label %.thread138 [ - i32 11, label %55 - i32 5, label %.thread135 + switch i32 %37, label %.thread138 [ + i32 6, label %55 + i32 0, label %.thread135 ] 55: ; preds = %54, %.thread @@ -913,9 +913,10 @@ define hidden noundef i32 @dissect_snmp_engineid(ptr noundef %0, ptr noundef %1, %67 = icmp eq i32 %14, -2147481627 %68 = select i1 %67, ptr @.str.2, ptr @.str.3 tail call void (ptr, ptr, ...) @proto_item_append_text(ptr noundef %35, ptr noundef nonnull %68) - switch i32 %4, label %94 [ - i32 17, label %69 - i32 13, label %69 + switch i32 %37, label %.thread138 [ + i32 12, label %69 + i32 8, label %69 + i32 0, label %.thread135 ] 69: ; preds = %66, %66 @@ -959,17 +960,17 @@ define hidden noundef i32 @dissect_snmp_engineid(ptr noundef %0, ptr noundef %1, %93 = add i32 %4, %3 br label %.thread135 -94: ; preds = %66, %30, %88 +94: ; preds = %30, %88 %.not = icmp eq i32 %37, 0 br i1 %.not, label %.thread135, label %.thread138 -.thread138: ; preds = %38, %43, %54, %59, %94 +.thread138: ; preds = %66, %38, %43, %54, %59, %94 %95 = tail call ptr @proto_tree_add_expert(ptr noundef %0, ptr noundef %1, ptr noundef nonnull @ei_snmp_rfc3411_non_conformant, ptr noundef %2, i32 noundef %36, i32 noundef %37) %96 = add i32 %4, %3 br label %.thread135 -.thread135: ; preds = %38, %43, %54, %79, %61, %55, %44, %39, %90, %22, %94, %.thread138, %28, %8, %5, %26 - %.0124 = phi i32 [ %18, %26 ], [ %3, %5 ], [ %3, %8 ], [ %18, %28 ], [ %96, %.thread138 ], [ %36, %94 ], [ %87, %79 ], [ %64, %61 ], [ %58, %55 ], [ %47, %44 ], [ %42, %39 ], [ %93, %90 ], [ %25, %22 ], [ %36, %54 ], [ %36, %43 ], [ %36, %38 ] +.thread135: ; preds = %66, %38, %43, %54, %79, %61, %55, %44, %39, %90, %22, %94, %.thread138, %28, %8, %5, %26 + %.0124 = phi i32 [ %18, %26 ], [ %3, %5 ], [ %3, %8 ], [ %18, %28 ], [ %96, %.thread138 ], [ %36, %94 ], [ %87, %79 ], [ %64, %61 ], [ %58, %55 ], [ %47, %44 ], [ %42, %39 ], [ %93, %90 ], [ %25, %22 ], [ %36, %54 ], [ %36, %43 ], [ %36, %38 ], [ %36, %66 ] call void @llvm.lifetime.end.p0(ptr nonnull %6) ret i32 %.0124 } diff --git a/bench/wireshark/optimized/packet-wassp.ll b/bench/wireshark/optimized/packet-wassp.ll index d82b95e78db..7c015a2172a 100644 --- a/bench/wireshark/optimized/packet-wassp.ll +++ b/bench/wireshark/optimized/packet-wassp.ll @@ -2049,13 +2049,12 @@ define internal void @topology_moder_print(ptr noundef %0, i16 noundef zeroext % %3 = zext i16 %1 to i32 %4 = and i16 %1, 4095 %5 = lshr i16 %1, 14 - %6 = xor i16 %5, 2 %.not35 = icmp eq i16 %4, 0 - switch i16 %6, label %default.unreachable [ - i16 1, label %7 - i16 3, label %13 - i16 0, label %19 - i16 2, label %25 + switch i16 %5, label %default.unreachable [ + i16 3, label %7 + i16 1, label %13 + i16 2, label %19 + i16 0, label %25 ] 7: ; preds = %2 diff --git a/bench/yara-x-rs/optimized/aqllqyzrtxqplivthssual6c8.ll b/bench/yara-x-rs/optimized/aqllqyzrtxqplivthssual6c8.ll index 251695433cc..5fead5bb01c 100644 --- a/bench/yara-x-rs/optimized/aqllqyzrtxqplivthssual6c8.ll +++ b/bench/yara-x-rs/optimized/aqllqyzrtxqplivthssual6c8.ll @@ -61288,11 +61288,12 @@ define noundef range(i8 0, 4) i8 @"_ZN99_$LT$yara_x..re..fast..compiler..Pattern %.sroa.7 = alloca [24 x i8], align 8 %.sroa.8 = alloca [16 x i8], align 8 %5 = load i64, ptr %1, align 8, !range !52, !noundef !3 - %6 = icmp ne i64 %5, 4 - tail call void @llvm.assume(i1 %6) - switch i64 %5, label %7 [ - i64 6, label %8 - i64 9, label %10 + %6 = add nsw i64 %5, -2 + %7 = icmp ne i64 %6, 2 + tail call void @llvm.assume(i1 %7) + switch i64 %6, label %8 [ + i64 4, label %9 + i64 7, label %11 ] 7: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17hffbe74602a19f753E.exit", %8, %2 @@ -61330,7 +61331,7 @@ define noundef range(i8 0, 4) i8 @"_ZN99_$LT$yara_x..re..fast..compiler..Pattern br label %25 25: ; preds = %28, %19 - %26 = phi ptr [ %29, %28 ], [ %21, %19 ] + %26 = phi ptr [ %29, %29 ], [ %21, %20 ] %27 = icmp eq ptr %26, %24 br i1 %27, label %_ZN6yara_x2re4fast8compiler15PatternSplitter14finish_literal17hd85a25ee5c1079f4E.exit.thread9, label %28 @@ -61403,7 +61404,7 @@ _ZN6yara_x2re4fast8compiler15PatternSplitter14finish_literal17hd85a25ee5c1079f4E unreachable common.resume: ; preds = %55, %39 - %common.resume.op = phi { ptr, i32 } [ %40, %39 ], [ %56, %55 ] + %common.resume.op = phi { ptr, i32 } [ %40, %40 ], [ %56, %56 ] resume { ptr, i32 } %common.resume.op "_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h543bbe454095c7d0E.exit": ; preds = %32, %38 diff --git a/bench/yara-x-rs/optimized/cco05ky1qb53ayhfyotquzvcb.ll b/bench/yara-x-rs/optimized/cco05ky1qb53ayhfyotquzvcb.ll index be5e8b799ea..f44c52de57b 100644 --- a/bench/yara-x-rs/optimized/cco05ky1qb53ayhfyotquzvcb.ll +++ b/bench/yara-x-rs/optimized/cco05ky1qb53ayhfyotquzvcb.ll @@ -17217,9 +17217,9 @@ define internal fastcc void @"_ZN13yara_x_parser3ast7cst2ast16Builder$LT$I$GT$11 br i1 %97, label %101, label %.invoke, !prof !54 101: ; preds = %98 - switch i64 %57, label %104 [ - i64 2, label %"_ZN39_$LT$u32$u20$as$u20$num_traits..Num$GT$14from_str_radix17h9feb915462acb6f0E.exit140" - i64 3, label %102 + switch i64 %99, label %104 [ + i64 0, label %"_ZN39_$LT$u32$u20$as$u20$num_traits..Num$GT$14from_str_radix17h9feb915462acb6f0E.exit140" + i64 1, label %102 ] 102: ; preds = %101 @@ -17240,9 +17240,13 @@ define internal fastcc void @"_ZN13yara_x_parser3ast7cst2ast16Builder$LT$I$GT$11 %108 = icmp ult i64 %99, 10 br i1 %108, label %.lr.ph.split.us.i.i121.preheader, label %.lr.ph.preheader -.lr.ph.preheader: ; preds = %105, %119 - %.sroa.03.0.us.i.i136190.ph = phi ptr [ %106, %105 ], [ %100, %119 ] - %.sroa.149.0.us.i.i135189.ph = phi i64 [ %107, %105 ], [ %99, %119 ] +.lr.ph.preheader: ; preds = %105 + %.not.us.i.i137187 = icmp eq i64 %107, 0 + br i1 %.not.us.i.i137187, label %.loopexit.i.i126, label %.lr.ph.preheader + +.lr.ph.preheader: ; preds = %119, %.preheader64.i.i130 + %.sroa.03.0.us.i.i136190.ph = phi ptr [ %100, %119 ], [ %106, %.preheader64.i.i130 ] + %.sroa.149.0.us.i.i135189.ph = phi i64 [ %99, %119 ], [ %107, %.preheader64.i.i130 ] br label %.lr.ph .preheader64.split.us.i.i133: ; preds = %115 @@ -17294,8 +17298,8 @@ define internal fastcc void @"_ZN13yara_x_parser3ast7cst2ast16Builder$LT$I$GT$11 %.not56.us.i.i125 = icmp eq i64 %127, 0 br i1 %.not56.us.i.i125, label %.loopexit.i.i126, label %.lr.ph.split.us.i.i121 -.loopexit.i.i126: ; preds = %.preheader64.split.us.i.i133, %125 - %.sroa.016.1.i.i127 = phi i32 [ %129, %125 ], [ %112, %.preheader64.split.us.i.i133 ] +.loopexit.i.i126: ; preds = %.preheader64.split.us.i.i133, %125, %.lr.ph.preheader + %.sroa.016.1.i.i127 = phi i32 [ 0, %.preheader64.i.i130 ], [ %129, %125 ], [ %112, %.preheader64.split.us.i.i133 ] %130 = zext i32 %.sroa.016.1.i.i127 to i64 %131 = shl nuw i64 %130, 32 br label %"_ZN39_$LT$u32$u20$as$u20$num_traits..Num$GT$14from_str_radix17h9feb915462acb6f0E.exit140" @@ -17308,7 +17312,7 @@ define internal fastcc void @"_ZN13yara_x_parser3ast7cst2ast16Builder$LT$I$GT$11 "_ZN39_$LT$u32$u20$as$u20$num_traits..Num$GT$14from_str_radix17h9feb915462acb6f0E.exit140": ; preds = %115, %.lr.ph.split.us.i.i121, %101, %102, %102, %.loopexit.i.i126, %.split.us.i.i138 %.sroa.0.0.i.i115 = phi i64 [ 0, %.loopexit.i.i126 ], [ 1, %101 ], [ 1, %102 ], [ 1, %102 ], [ 1, %.split.us.i.i138 ], [ 1, %.lr.ph.split.us.i.i121 ], [ 1, %115 ] - %.sroa.8.0.insert.insert.i.i116 = phi i64 [ %131, %.loopexit.i.i126 ], [ 0, %101 ], [ 256, %102 ], [ 256, %102 ], [ %spec.select.i.i139, %.split.us.i.i138 ], [ 256, %.lr.ph.split.us.i.i121 ], [ 256, %115 ] + %.sroa.8.0.insert.insert.i.i116 = phi i64 [ %131, %.loopexit.i.i126 ], [ %99, %101 ], [ 256, %102 ], [ 256, %102 ], [ %spec.select.i.i139, %.split.us.i.i138 ], [ 256, %.lr.ph.split.us.i.i121 ], [ 256, %115 ] %.sroa.0.0.insert.insert.i.i117 = or disjoint i64 %.sroa.8.0.insert.insert.i.i116, %.sroa.0.0.i.i115 br label %134 @@ -17324,9 +17328,9 @@ define internal fastcc void @"_ZN13yara_x_parser3ast7cst2ast16Builder$LT$I$GT$11 br i1 %54, label %140, label %.invoke, !prof !54 140: ; preds = %137 - switch i64 %53, label %143 [ - i64 2, label %"_ZN39_$LT$u32$u20$as$u20$num_traits..Num$GT$14from_str_radix17h9feb915462acb6f0E.exit156" - i64 3, label %141 + switch i64 %138, label %143 [ + i64 0, label %"_ZN39_$LT$u32$u20$as$u20$num_traits..Num$GT$14from_str_radix17h9feb915462acb6f0E.exit156" + i64 1, label %141 ] 141: ; preds = %140 @@ -17350,11 +17354,15 @@ define internal fastcc void @"_ZN13yara_x_parser3ast7cst2ast16Builder$LT$I$GT$11 %145 = getelementptr inbounds nuw i8, ptr %52, i64 3 %146 = add i64 %53, -3 %147 = icmp ult i64 %138, 10 - br i1 %147, label %.lr.ph.split.i.i.preheader, label %.lr.ph195.preheader + br i1 %147, label %.lr.ph.split.i.i.preheader, label %.preheader64.i.i151 + +.preheader64.i.i151: ; preds = %144 + %.not.i.i191 = icmp eq i64 %146, 0 + br i1 %.not.i.i191, label %.loopexit.i.i147, label %.lr.ph195.preheader -.lr.ph195.preheader: ; preds = %144, %152 - %.sroa.03.0.i.i194.ph = phi ptr [ %145, %144 ], [ %139, %152 ] - %.sroa.149.0.i.i193.ph = phi i64 [ %146, %144 ], [ %138, %152 ] +.lr.ph195.preheader: ; preds = %152, %.preheader64.i.i151 + %.sroa.03.0.i.i194.ph = phi ptr [ %139, %152 ], [ %145, %.preheader64.i.i151 ] + %.sroa.149.0.i.i193.ph = phi i64 [ %138, %152 ], [ %146, %.preheader64.i.i151 ] br label %.lr.ph195 .preheader64.split.i.i: ; preds = %162 @@ -17369,8 +17377,8 @@ define internal fastcc void @"_ZN13yara_x_parser3ast7cst2ast16Builder$LT$I$GT$11 %153 = icmp ult i64 %138, 9 br i1 %153, label %.lr.ph.split.i.i.preheader, label %.lr.ph195.preheader -.loopexit.i.i147: ; preds = %.preheader64.split.i.i, %177 - %.sroa.016.1.i.i148 = phi i32 [ %181, %177 ], [ %151, %.preheader64.split.i.i ] +.loopexit.i.i147: ; preds = %.preheader64.split.i.i, %177, %.preheader64.i.i151 + %.sroa.016.1.i.i148 = phi i32 [ 0, %.preheader64.i.i151 ], [ %181, %177 ], [ %151, %.preheader64.split.i.i ] %154 = zext i32 %.sroa.016.1.i.i148 to i64 %155 = shl nuw i64 %154, 32 br label %"_ZN39_$LT$u32$u20$as$u20$num_traits..Num$GT$14from_str_radix17h9feb915462acb6f0E.exit156" @@ -17427,7 +17435,7 @@ define internal fastcc void @"_ZN13yara_x_parser3ast7cst2ast16Builder$LT$I$GT$11 "_ZN39_$LT$u32$u20$as$u20$num_traits..Num$GT$14from_str_radix17h9feb915462acb6f0E.exit156": ; preds = %162, %.lr.ph.split.i.i, %140, %141, %141, %.loopexit.i.i147, %.split.us.i.i154 %.sroa.0.0.i.i141 = phi i64 [ 0, %.loopexit.i.i147 ], [ 1, %140 ], [ 1, %141 ], [ 1, %141 ], [ 1, %.split.us.i.i154 ], [ 1, %.lr.ph.split.i.i ], [ 1, %162 ] - %.sroa.8.0.insert.insert.i.i142 = phi i64 [ %155, %.loopexit.i.i147 ], [ 0, %140 ], [ 256, %141 ], [ 256, %141 ], [ %spec.select.i.i155, %.split.us.i.i154 ], [ 256, %.lr.ph.split.i.i ], [ 256, %162 ] + %.sroa.8.0.insert.insert.i.i142 = phi i64 [ %155, %.loopexit.i.i147 ], [ %138, %140 ], [ 256, %141 ], [ 256, %141 ], [ %spec.select.i.i155, %.split.us.i.i154 ], [ 256, %.lr.ph.split.i.i ], [ 256, %162 ] %.sroa.0.0.insert.insert.i.i143 = or disjoint i64 %.sroa.8.0.insert.insert.i.i142, %.sroa.0.0.i.i141 br label %134 @@ -17838,9 +17846,9 @@ define internal fastcc void @"_ZN13yara_x_parser3ast7cst2ast16Builder$LT$I$GT$11 br i1 %94, label %98, label %.invoke, !prof !54 98: ; preds = %95 - switch i64 %57, label %101 [ - i64 2, label %.loopexit - i64 3, label %99 + switch i64 %96, label %101 [ + i64 0, label %.loopexit + i64 1, label %99 ] 99: ; preds = %98 @@ -17861,9 +17869,13 @@ define internal fastcc void @"_ZN13yara_x_parser3ast7cst2ast16Builder$LT$I$GT$11 %105 = icmp ult i64 %96, 4 br i1 %105, label %.lr.ph.split.us.i.i92.preheader, label %.lr.ph.preheader -.lr.ph.preheader: ; preds = %102, %116 - %.sroa.02.0.us.i.i106170.ph = phi ptr [ %103, %102 ], [ %97, %116 ] - %.sroa.14.0.us.i.i105169.ph = phi i64 [ %104, %102 ], [ %96, %116 ] +.lr.ph.preheader: ; preds = %102 + %.not.us.not.i.not.i107167 = icmp eq i64 %104, 0 + br i1 %.not.us.not.i.not.i107167, label %.loopexit228, label %.lr.ph.preheader + +.lr.ph.preheader: ; preds = %116, %.preheader46.i.i100 + %.sroa.02.0.us.i.i106170.ph = phi ptr [ %97, %116 ], [ %103, %.preheader46.i.i100 ] + %.sroa.14.0.us.i.i105169.ph = phi i64 [ %96, %116 ], [ %104, %.preheader46.i.i100 ] br label %.lr.ph .preheader46.split.us.i.i103: ; preds = %.lr.ph @@ -17921,9 +17933,9 @@ define internal fastcc void @"_ZN13yara_x_parser3ast7cst2ast16Builder$LT$I$GT$11 br i1 %54, label %130, label %.invoke, !prof !54 130: ; preds = %127 - switch i64 %53, label %133 [ - i64 2, label %.loopexit - i64 3, label %131 + switch i64 %128, label %133 [ + i64 0, label %.loopexit + i64 1, label %131 ] 131: ; preds = %130 @@ -17947,7 +17959,11 @@ define internal fastcc void @"_ZN13yara_x_parser3ast7cst2ast16Builder$LT$I$GT$11 %135 = getelementptr inbounds nuw i8, ptr %52, i64 3 %136 = add i64 %53, -3 %137 = icmp ult i64 %128, 4 - br i1 %137, label %.lr.ph.split.i.i.preheader, label %.lr.ph181.preheader + br i1 %137, label %.lr.ph.split.i.i.preheader, label %.preheader46.i.i116 + +.preheader46.i.i116: ; preds = %134 + %.not.not.i.not.i177 = icmp eq i64 %136, 0 + br i1 %.not.not.i.not.i177, label %.loopexit228, label %.lr.ph181.preheader .preheader46.split.i.i: ; preds = %.lr.ph181 %138 = getelementptr inbounds nuw i8, ptr %.sroa.02.0.i.i180, i64 1 @@ -17962,9 +17978,9 @@ define internal fastcc void @"_ZN13yara_x_parser3ast7cst2ast16Builder$LT$I$GT$11 %144 = icmp ult i64 %128, 3 br i1 %144, label %.lr.ph.split.i.i.preheader, label %.lr.ph181.preheader -.lr.ph181.preheader: ; preds = %134, %143 - %.sroa.02.0.i.i180.ph = phi ptr [ %135, %134 ], [ %129, %143 ] - %.sroa.14.0.i.i179.ph = phi i64 [ %136, %134 ], [ %128, %143 ] +.lr.ph181.preheader: ; preds = %143, %.preheader46.i.i116 + %.sroa.02.0.i.i180.ph = phi ptr [ %129, %143 ], [ %135, %.preheader46.i.i116 ] + %.sroa.14.0.i.i179.ph = phi i64 [ %128, %143 ], [ %136, %.preheader46.i.i116 ] br label %.lr.ph181 .lr.ph181: ; preds = %.lr.ph181.preheader, %.preheader46.split.i.i @@ -18095,8 +18111,8 @@ define internal fastcc void @"_ZN13yara_x_parser3ast7cst2ast16Builder$LT$I$GT$11 cleanup br label %.body -.loopexit218: ; preds = %.preheader46.split.us.i.i, %87, %.preheader46.split.us.i.i103, %121, %.preheader46.split.i.i, %161 - %.sroa.8.0.i.i.pn = phi i8 [ %166, %161 ], [ %142, %.preheader46.split.i.i ], [ %126, %121 ], [ %110, %.preheader46.split.us.i.i103 ], [ %92, %87 ], [ %.sroa.014.0.us.i.i, %.preheader46.split.us.i.i ] +.loopexit218: ; preds = %.preheader46.split.us.i.i, %87, %.preheader46.split.us.i.i103, %121, %.preheader46.split.i.i, %161, %.preheader46.i.i116, %.lr.ph.preheader + %.sroa.8.0.i.i.pn = phi i8 [ 0, %.preheader46.i.i116 ], [ 0, %.preheader46.i.i100 ], [ %166, %161 ], [ %142, %.preheader46.split.i.i ], [ %126, %121 ], [ %110, %.preheader46.split.us.i.i103 ], [ %92, %87 ], [ %.sroa.014.0.us.i.i, %.preheader46.split.us.i.i ] %188 = getelementptr inbounds nuw i8, ptr %1, i64 456 %or.cond.i.i = and i1 %.not, %.not69 br i1 %or.cond.i.i, label %208, label %189 diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c5409e09ef4..2cc6e52e7ce 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/143677 export COMPTIME_MODE=0 # Please rebase manually