diff --git a/bench/image-rs/optimized/2mngkegtim1o10y3.ll b/bench/image-rs/optimized/2mngkegtim1o10y3.ll index 30f4d356ea4..c54bc0b06c7 100644 --- a/bench/image-rs/optimized/2mngkegtim1o10y3.ll +++ b/bench/image-rs/optimized/2mngkegtim1o10y3.ll @@ -22471,9 +22471,9 @@ common.resume: ; preds = %.body, %26 .body: ; preds = %49, %45 %.pn = phi { ptr, i32 } [ %50, %49 ], [ %46, %45 ] invoke void @"_ZN4core3ptr47drop_in_place$LT$exr..meta..attribute..Text$GT$17h730822ae9eeaa833E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %10) #50 - to label %common.resume unwind label %112 + to label %common.resume unwind label %111 -49: ; preds = %88, %72 +49: ; preds = %87, %72 %50 = landingpad { ptr, i32 } cleanup br label %.body @@ -22529,105 +22529,103 @@ common.resume: ; preds = %.body, %26 br label %"_ZN4core3ptr47drop_in_place$LT$exr..meta..attribute..Text$GT$17h730822ae9eeaa833E.exit" 72: ; preds = %"_ZN8smallvec17SmallVec$LT$A$GT$6triple17ha64a200e030c2792E.llvm.15361875792781664197.exit.i.i.i" - %73 = trunc nuw i8 %68 to i1 - call void @llvm.assume(i1 %73) - %74 = getelementptr inbounds i8, ptr %9, i64 16 - %75 = load ptr, ptr %74, align 8, !alias.scope !2601, !noalias !2604, !nonnull !4, !noundef !4 - %76 = getelementptr inbounds i8, ptr %9, i64 8 - %77 = load i64, ptr %76, align 8, !alias.scope !2601, !noalias !2604, !noundef !4 - %..i.i.i.i.i3 = call i64 @llvm.umin.i64(i64 %.sink2.i.i.i.i, i64 %77) - %78 = call i32 @memcmp(ptr nonnull readonly align 1 %.sink3.i.i.i.i, ptr nonnull readonly align 1 %75, i64 %..i.i.i.i.i3), !alias.scope !2606 - %79 = trunc nuw i8 %68 to i1 - call void @llvm.assume(i1 %79) - %80 = getelementptr inbounds i8, ptr %9, i64 16 - %81 = load ptr, ptr %80, align 8, !alias.scope !2622, !nonnull !4, !noundef !4 - %82 = getelementptr inbounds i8, ptr %9, i64 8 - %83 = load i64, ptr %82, align 8, !alias.scope !2622, !noundef !4 + %73 = getelementptr inbounds i8, ptr %9, i64 16 + %74 = load ptr, ptr %73, align 8, !alias.scope !2601, !noalias !2604, !nonnull !4, !noundef !4 + %75 = getelementptr inbounds i8, ptr %9, i64 8 + %76 = load i64, ptr %75, align 8, !alias.scope !2601, !noalias !2604, !noundef !4 + %..i.i.i.i.i3 = call i64 @llvm.umin.i64(i64 %.sink2.i.i.i.i, i64 %76) + %77 = call i32 @memcmp(ptr nonnull readonly align 1 %.sink3.i.i.i.i, ptr nonnull readonly align 1 %74, i64 %..i.i.i.i.i3), !alias.scope !2606 + %78 = trunc nuw i8 %68 to i1 + call void @llvm.assume(i1 %78) + %79 = getelementptr inbounds i8, ptr %9, i64 16 + %80 = load ptr, ptr %79, align 8, !alias.scope !2622, !nonnull !4, !noundef !4 + %81 = getelementptr inbounds i8, ptr %9, i64 8 + %82 = load i64, ptr %81, align 8, !alias.scope !2622, !noundef !4 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6), !noalias !2622 store i64 %66, ptr %6, align 8, !noalias !2622 - %84 = getelementptr inbounds i8, ptr %6, i64 8 - store ptr %81, ptr %84, align 8, !noalias !2622 - %85 = getelementptr inbounds i8, ptr %6, i64 16 - store i64 %83, ptr %85, align 8, !noalias !2622 + %83 = getelementptr inbounds i8, ptr %6, i64 8 + store ptr %80, ptr %83, align 8, !noalias !2622 + %84 = getelementptr inbounds i8, ptr %6, i64 16 + store i64 %82, ptr %84, align 8, !noalias !2622 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5), !noalias !2623 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf92e389c95c4703bE.llvm.9832446184049035033"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %6) to label %.noexc unwind label %49 .noexc: ; preds = %72 - %86 = getelementptr inbounds i8, ptr %5, i64 8 - %87 = load i64, ptr %86, align 8, !range !125, !noalias !2623, !noundef !4 - %.not.i.i.i.i.i.i = icmp eq i64 %87, 0 - br i1 %.not.i.i.i.i.i.i, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i", label %88 - -88: ; preds = %.noexc - %89 = load ptr, ptr %5, align 8, !noalias !2623, !nonnull !4, !noundef !4 - %90 = getelementptr inbounds i8, ptr %5, i64 16 - %91 = load i64, ptr %90, align 8, !noalias !2623, !noundef !4 - invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %85, ptr noundef nonnull %89, i64 noundef %87, i64 noundef %91) + %85 = getelementptr inbounds i8, ptr %5, i64 8 + %86 = load i64, ptr %85, align 8, !range !125, !noalias !2623, !noundef !4 + %.not.i.i.i.i.i.i = icmp eq i64 %86, 0 + br i1 %.not.i.i.i.i.i.i, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i", label %87 + +87: ; preds = %.noexc + %88 = load ptr, ptr %5, align 8, !noalias !2623, !nonnull !4, !noundef !4 + %89 = getelementptr inbounds i8, ptr %5, i64 16 + %90 = load i64, ptr %89, align 8, !noalias !2623, !noundef !4 + invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %84, ptr noundef nonnull %88, i64 noundef %86, i64 noundef %90) to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i" unwind label %49 -"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i": ; preds = %88, %.noexc +"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i": ; preds = %87, %.noexc call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5), !noalias !2623 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6), !noalias !2622 br label %"_ZN4core3ptr47drop_in_place$LT$exr..meta..attribute..Text$GT$17h730822ae9eeaa833E.exit" "_ZN4core3ptr47drop_in_place$LT$exr..meta..attribute..Text$GT$17h730822ae9eeaa833E.exit": ; preds = %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i", %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i" - %92 = phi i32 [ %78, %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i" ], [ %70, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i" ] - %.sink2.i8.i.i.i4 = phi i64 [ %77, %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i" ], [ %66, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i" ] + %91 = phi i32 [ %77, %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i" ], [ %70, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i" ] + %.sink2.i8.i.i.i4 = phi i64 [ %76, %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i" ], [ %66, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i" ] call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %9) call void @llvm.experimental.noalias.scope.decl(metadata !2630) call void @llvm.experimental.noalias.scope.decl(metadata !2633) call void @llvm.experimental.noalias.scope.decl(metadata !2636) - br i1 %54, label %94, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i8" + br i1 %54, label %93, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i8" "_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i8": ; preds = %"_ZN4core3ptr47drop_in_place$LT$exr..meta..attribute..Text$GT$17h730822ae9eeaa833E.exit" - %93 = icmp eq i8 %55, 0 - call void @llvm.assume(i1 %93) + %92 = icmp eq i8 %55, 0 + call void @llvm.assume(i1 %92) br label %"_ZN4core3ptr47drop_in_place$LT$exr..meta..attribute..Text$GT$17h730822ae9eeaa833E.exit11" -94: ; preds = %"_ZN4core3ptr47drop_in_place$LT$exr..meta..attribute..Text$GT$17h730822ae9eeaa833E.exit" - %95 = trunc nuw i8 %55 to i1 - call void @llvm.assume(i1 %95) - %96 = getelementptr inbounds i8, ptr %10, i64 16 - %97 = load ptr, ptr %96, align 8, !alias.scope !2639, !nonnull !4, !noundef !4 - %98 = getelementptr inbounds i8, ptr %10, i64 8 - %99 = load i64, ptr %98, align 8, !alias.scope !2639, !noundef !4 +93: ; preds = %"_ZN4core3ptr47drop_in_place$LT$exr..meta..attribute..Text$GT$17h730822ae9eeaa833E.exit" + %94 = trunc nuw i8 %55 to i1 + call void @llvm.assume(i1 %94) + %95 = getelementptr inbounds i8, ptr %10, i64 16 + %96 = load ptr, ptr %95, align 8, !alias.scope !2639, !nonnull !4, !noundef !4 + %97 = getelementptr inbounds i8, ptr %10, i64 8 + %98 = load i64, ptr %97, align 8, !alias.scope !2639, !noundef !4 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4), !noalias !2639 store i64 %53, ptr %4, align 8, !noalias !2639 - %100 = getelementptr inbounds i8, ptr %4, i64 8 - store ptr %97, ptr %100, align 8, !noalias !2639 - %101 = getelementptr inbounds i8, ptr %4, i64 16 - store i64 %99, ptr %101, align 8, !noalias !2639 + %99 = getelementptr inbounds i8, ptr %4, i64 8 + store ptr %96, ptr %99, align 8, !noalias !2639 + %100 = getelementptr inbounds i8, ptr %4, i64 16 + store i64 %98, ptr %100, align 8, !noalias !2639 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3), !noalias !2640 call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf92e389c95c4703bE.llvm.9832446184049035033"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4), !noalias !2639 - %102 = getelementptr inbounds i8, ptr %3, i64 8 - %103 = load i64, ptr %102, align 8, !range !125, !noalias !2640, !noundef !4 - %.not.i.i.i.i.i.i9 = icmp eq i64 %103, 0 - br i1 %.not.i.i.i.i.i.i9, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i10", label %104 - -104: ; preds = %94 - %105 = load ptr, ptr %3, align 8, !noalias !2640, !nonnull !4, !noundef !4 - %106 = getelementptr inbounds i8, ptr %3, i64 16 - %107 = load i64, ptr %106, align 8, !noalias !2640, !noundef !4 - call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %101, ptr noundef nonnull %105, i64 noundef %103, i64 noundef %107), !noalias !2639 + %101 = getelementptr inbounds i8, ptr %3, i64 8 + %102 = load i64, ptr %101, align 8, !range !125, !noalias !2640, !noundef !4 + %.not.i.i.i.i.i.i9 = icmp eq i64 %102, 0 + br i1 %.not.i.i.i.i.i.i9, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i10", label %103 + +103: ; preds = %93 + %104 = load ptr, ptr %3, align 8, !noalias !2640, !nonnull !4, !noundef !4 + %105 = getelementptr inbounds i8, ptr %3, i64 16 + %106 = load i64, ptr %105, align 8, !noalias !2640, !noundef !4 + call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %100, ptr noundef nonnull %104, i64 noundef %102, i64 noundef %106), !noalias !2639 br label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i10" -"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i10": ; preds = %104, %94 +"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i10": ; preds = %103, %93 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3), !noalias !2640 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4), !noalias !2639 br label %"_ZN4core3ptr47drop_in_place$LT$exr..meta..attribute..Text$GT$17h730822ae9eeaa833E.exit11" "_ZN4core3ptr47drop_in_place$LT$exr..meta..attribute..Text$GT$17h730822ae9eeaa833E.exit11": ; preds = %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i8", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i10" - %108 = icmp eq i32 %92, 0 - %109 = sub i64 %.sink2.i.i.i.i, %.sink2.i8.i.i.i4 - %110 = sext i32 %92 to i64 - %spec.store.select.i.i.i.i.i = select i1 %108, i64 %109, i64 %110 - %111 = icmp slt i64 %spec.store.select.i.i.i.i.i, 0 + %107 = icmp eq i32 %91, 0 + %108 = sub i64 %.sink2.i.i.i.i, %.sink2.i8.i.i.i4 + %109 = sext i32 %91 to i64 + %spec.store.select.i.i.i.i.i = select i1 %107, i64 %108, i64 %109 + %110 = icmp slt i64 %spec.store.select.i.i.i.i.i, 0 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %10) - ret i1 %111 + ret i1 %110 -112: ; preds = %.body - %113 = landingpad { ptr, i32 } +111: ; preds = %.body + %112 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #51 unreachable @@ -22745,9 +22743,9 @@ common.resume: ; preds = %.body, %26 .body: ; preds = %49, %45 %.pn = phi { ptr, i32 } [ %50, %49 ], [ %46, %45 ] invoke void @"_ZN4core3ptr47drop_in_place$LT$exr..meta..attribute..Text$GT$17h730822ae9eeaa833E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %10) #50 - to label %common.resume unwind label %112 + to label %common.resume unwind label %111 -49: ; preds = %88, %72 +49: ; preds = %87, %72 %50 = landingpad { ptr, i32 } cleanup br label %.body @@ -22803,105 +22801,103 @@ common.resume: ; preds = %.body, %26 br label %"_ZN4core3ptr47drop_in_place$LT$exr..meta..attribute..Text$GT$17h730822ae9eeaa833E.exit" 72: ; preds = %"_ZN8smallvec17SmallVec$LT$A$GT$6triple17ha64a200e030c2792E.llvm.15361875792781664197.exit.i.i.i" - %73 = trunc nuw i8 %68 to i1 - call void @llvm.assume(i1 %73) - %74 = getelementptr inbounds i8, ptr %9, i64 16 - %75 = load ptr, ptr %74, align 8, !alias.scope !2709, !noalias !2712, !nonnull !4, !noundef !4 - %76 = getelementptr inbounds i8, ptr %9, i64 8 - %77 = load i64, ptr %76, align 8, !alias.scope !2709, !noalias !2712, !noundef !4 - %..i.i.i.i.i3 = call i64 @llvm.umin.i64(i64 %.sink2.i.i.i.i, i64 %77) - %78 = call i32 @memcmp(ptr nonnull readonly align 1 %.sink3.i.i.i.i, ptr nonnull readonly align 1 %75, i64 %..i.i.i.i.i3), !alias.scope !2714 - %79 = trunc nuw i8 %68 to i1 - call void @llvm.assume(i1 %79) - %80 = getelementptr inbounds i8, ptr %9, i64 16 - %81 = load ptr, ptr %80, align 8, !alias.scope !2730, !nonnull !4, !noundef !4 - %82 = getelementptr inbounds i8, ptr %9, i64 8 - %83 = load i64, ptr %82, align 8, !alias.scope !2730, !noundef !4 + %73 = getelementptr inbounds i8, ptr %9, i64 16 + %74 = load ptr, ptr %73, align 8, !alias.scope !2709, !noalias !2712, !nonnull !4, !noundef !4 + %75 = getelementptr inbounds i8, ptr %9, i64 8 + %76 = load i64, ptr %75, align 8, !alias.scope !2709, !noalias !2712, !noundef !4 + %..i.i.i.i.i3 = call i64 @llvm.umin.i64(i64 %.sink2.i.i.i.i, i64 %76) + %77 = call i32 @memcmp(ptr nonnull readonly align 1 %.sink3.i.i.i.i, ptr nonnull readonly align 1 %74, i64 %..i.i.i.i.i3), !alias.scope !2714 + %78 = trunc nuw i8 %68 to i1 + call void @llvm.assume(i1 %78) + %79 = getelementptr inbounds i8, ptr %9, i64 16 + %80 = load ptr, ptr %79, align 8, !alias.scope !2730, !nonnull !4, !noundef !4 + %81 = getelementptr inbounds i8, ptr %9, i64 8 + %82 = load i64, ptr %81, align 8, !alias.scope !2730, !noundef !4 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6), !noalias !2730 store i64 %66, ptr %6, align 8, !noalias !2730 - %84 = getelementptr inbounds i8, ptr %6, i64 8 - store ptr %81, ptr %84, align 8, !noalias !2730 - %85 = getelementptr inbounds i8, ptr %6, i64 16 - store i64 %83, ptr %85, align 8, !noalias !2730 + %83 = getelementptr inbounds i8, ptr %6, i64 8 + store ptr %80, ptr %83, align 8, !noalias !2730 + %84 = getelementptr inbounds i8, ptr %6, i64 16 + store i64 %82, ptr %84, align 8, !noalias !2730 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5), !noalias !2731 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf92e389c95c4703bE.llvm.9832446184049035033"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %6) to label %.noexc unwind label %49 .noexc: ; preds = %72 - %86 = getelementptr inbounds i8, ptr %5, i64 8 - %87 = load i64, ptr %86, align 8, !range !125, !noalias !2731, !noundef !4 - %.not.i.i.i.i.i.i = icmp eq i64 %87, 0 - br i1 %.not.i.i.i.i.i.i, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i", label %88 - -88: ; preds = %.noexc - %89 = load ptr, ptr %5, align 8, !noalias !2731, !nonnull !4, !noundef !4 - %90 = getelementptr inbounds i8, ptr %5, i64 16 - %91 = load i64, ptr %90, align 8, !noalias !2731, !noundef !4 - invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %85, ptr noundef nonnull %89, i64 noundef %87, i64 noundef %91) + %85 = getelementptr inbounds i8, ptr %5, i64 8 + %86 = load i64, ptr %85, align 8, !range !125, !noalias !2731, !noundef !4 + %.not.i.i.i.i.i.i = icmp eq i64 %86, 0 + br i1 %.not.i.i.i.i.i.i, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i", label %87 + +87: ; preds = %.noexc + %88 = load ptr, ptr %5, align 8, !noalias !2731, !nonnull !4, !noundef !4 + %89 = getelementptr inbounds i8, ptr %5, i64 16 + %90 = load i64, ptr %89, align 8, !noalias !2731, !noundef !4 + invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %84, ptr noundef nonnull %88, i64 noundef %86, i64 noundef %90) to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i" unwind label %49 -"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i": ; preds = %88, %.noexc +"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i": ; preds = %87, %.noexc call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5), !noalias !2731 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6), !noalias !2730 br label %"_ZN4core3ptr47drop_in_place$LT$exr..meta..attribute..Text$GT$17h730822ae9eeaa833E.exit" "_ZN4core3ptr47drop_in_place$LT$exr..meta..attribute..Text$GT$17h730822ae9eeaa833E.exit": ; preds = %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i", %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i" - %92 = phi i32 [ %78, %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i" ], [ %70, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i" ] - %.sink2.i8.i.i.i4 = phi i64 [ %77, %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i" ], [ %66, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i" ] + %91 = phi i32 [ %77, %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i" ], [ %70, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i" ] + %.sink2.i8.i.i.i4 = phi i64 [ %76, %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i" ], [ %66, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i" ] call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %9) call void @llvm.experimental.noalias.scope.decl(metadata !2738) call void @llvm.experimental.noalias.scope.decl(metadata !2741) call void @llvm.experimental.noalias.scope.decl(metadata !2744) - br i1 %54, label %94, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i8" + br i1 %54, label %93, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i8" "_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i8": ; preds = %"_ZN4core3ptr47drop_in_place$LT$exr..meta..attribute..Text$GT$17h730822ae9eeaa833E.exit" - %93 = icmp eq i8 %55, 0 - call void @llvm.assume(i1 %93) + %92 = icmp eq i8 %55, 0 + call void @llvm.assume(i1 %92) br label %"_ZN4core3ptr47drop_in_place$LT$exr..meta..attribute..Text$GT$17h730822ae9eeaa833E.exit11" -94: ; preds = %"_ZN4core3ptr47drop_in_place$LT$exr..meta..attribute..Text$GT$17h730822ae9eeaa833E.exit" - %95 = trunc nuw i8 %55 to i1 - call void @llvm.assume(i1 %95) - %96 = getelementptr inbounds i8, ptr %10, i64 16 - %97 = load ptr, ptr %96, align 8, !alias.scope !2747, !nonnull !4, !noundef !4 - %98 = getelementptr inbounds i8, ptr %10, i64 8 - %99 = load i64, ptr %98, align 8, !alias.scope !2747, !noundef !4 +93: ; preds = %"_ZN4core3ptr47drop_in_place$LT$exr..meta..attribute..Text$GT$17h730822ae9eeaa833E.exit" + %94 = trunc nuw i8 %55 to i1 + call void @llvm.assume(i1 %94) + %95 = getelementptr inbounds i8, ptr %10, i64 16 + %96 = load ptr, ptr %95, align 8, !alias.scope !2747, !nonnull !4, !noundef !4 + %97 = getelementptr inbounds i8, ptr %10, i64 8 + %98 = load i64, ptr %97, align 8, !alias.scope !2747, !noundef !4 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4), !noalias !2747 store i64 %53, ptr %4, align 8, !noalias !2747 - %100 = getelementptr inbounds i8, ptr %4, i64 8 - store ptr %97, ptr %100, align 8, !noalias !2747 - %101 = getelementptr inbounds i8, ptr %4, i64 16 - store i64 %99, ptr %101, align 8, !noalias !2747 + %99 = getelementptr inbounds i8, ptr %4, i64 8 + store ptr %96, ptr %99, align 8, !noalias !2747 + %100 = getelementptr inbounds i8, ptr %4, i64 16 + store i64 %98, ptr %100, align 8, !noalias !2747 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3), !noalias !2748 call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf92e389c95c4703bE.llvm.9832446184049035033"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4), !noalias !2747 - %102 = getelementptr inbounds i8, ptr %3, i64 8 - %103 = load i64, ptr %102, align 8, !range !125, !noalias !2748, !noundef !4 - %.not.i.i.i.i.i.i9 = icmp eq i64 %103, 0 - br i1 %.not.i.i.i.i.i.i9, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i10", label %104 - -104: ; preds = %94 - %105 = load ptr, ptr %3, align 8, !noalias !2748, !nonnull !4, !noundef !4 - %106 = getelementptr inbounds i8, ptr %3, i64 16 - %107 = load i64, ptr %106, align 8, !noalias !2748, !noundef !4 - call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %101, ptr noundef nonnull %105, i64 noundef %103, i64 noundef %107), !noalias !2747 + %101 = getelementptr inbounds i8, ptr %3, i64 8 + %102 = load i64, ptr %101, align 8, !range !125, !noalias !2748, !noundef !4 + %.not.i.i.i.i.i.i9 = icmp eq i64 %102, 0 + br i1 %.not.i.i.i.i.i.i9, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i10", label %103 + +103: ; preds = %93 + %104 = load ptr, ptr %3, align 8, !noalias !2748, !nonnull !4, !noundef !4 + %105 = getelementptr inbounds i8, ptr %3, i64 16 + %106 = load i64, ptr %105, align 8, !noalias !2748, !noundef !4 + call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %100, ptr noundef nonnull %104, i64 noundef %102, i64 noundef %106), !noalias !2747 br label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i10" -"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i10": ; preds = %104, %94 +"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i10": ; preds = %103, %93 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3), !noalias !2748 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4), !noalias !2747 br label %"_ZN4core3ptr47drop_in_place$LT$exr..meta..attribute..Text$GT$17h730822ae9eeaa833E.exit11" "_ZN4core3ptr47drop_in_place$LT$exr..meta..attribute..Text$GT$17h730822ae9eeaa833E.exit11": ; preds = %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i8", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i10" - %108 = icmp eq i32 %92, 0 - %109 = sub i64 %.sink2.i.i.i.i, %.sink2.i8.i.i.i4 - %110 = sext i32 %92 to i64 - %spec.store.select.i.i.i.i.i = select i1 %108, i64 %109, i64 %110 - %111 = icmp slt i64 %spec.store.select.i.i.i.i.i, 0 + %107 = icmp eq i32 %91, 0 + %108 = sub i64 %.sink2.i.i.i.i, %.sink2.i8.i.i.i4 + %109 = sext i32 %91 to i64 + %spec.store.select.i.i.i.i.i = select i1 %107, i64 %108, i64 %109 + %110 = icmp slt i64 %spec.store.select.i.i.i.i.i, 0 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %10) - ret i1 %111 + ret i1 %110 -112: ; preds = %.body - %113 = landingpad { ptr, i32 } +111: ; preds = %.body + %112 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #51 unreachable diff --git a/bench/llvm/optimized/AArch64AsmBackend.cpp.ll b/bench/llvm/optimized/AArch64AsmBackend.cpp.ll index f255edd17d9..be162491c8a 100644 --- a/bench/llvm/optimized/AArch64AsmBackend.cpp.ll +++ b/bench/llvm/optimized/AArch64AsmBackend.cpp.ll @@ -341,11 +341,11 @@ define dso_local noundef nonnull ptr @_ZN4llvm25createAArch64leAsmBackendERKNS_6 ] 8: ; preds = %4 - %9 = tail call noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #16 - tail call void @_ZN4llvm12MCAsmBackendC2ENS_10endiannessEj(ptr noundef nonnull align 8 dereferenceable(80) %9, i32 noundef 1, i32 noundef 1320) #17 + %9 = tail call noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #15 + tail call void @_ZN4llvm12MCAsmBackendC2ENS_10endiannessEj(ptr noundef nonnull align 8 dereferenceable(80) %9, i32 noundef 1, i32 noundef 1320) #16 store ptr getelementptr inbounds inrange(-16, 232) (i8, ptr @_ZTVN12_GLOBAL__N_117AArch64AsmBackendE, i64 16), ptr %9, align 8 %10 = getelementptr inbounds nuw i8, ptr %9, i64 16 - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(56) %10, ptr noundef nonnull align 8 dereferenceable(56) %5) #17 + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(56) %10, ptr noundef nonnull align 8 dereferenceable(56) %5) #16 %11 = getelementptr inbounds nuw i8, ptr %9, i64 48 %12 = getelementptr inbounds nuw i8, ptr %1, i64 40 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 8 dereferenceable(24) %12, i64 24, i1 false) @@ -355,11 +355,11 @@ define dso_local noundef nonnull ptr @_ZN4llvm25createAArch64leAsmBackendERKNS_6 br label %36 14: ; preds = %4 - %15 = tail call noalias noundef nonnull dereferenceable(72) ptr @_Znwm(i64 noundef 72) #16 - tail call void @_ZN4llvm12MCAsmBackendC2ENS_10endiannessEj(ptr noundef nonnull align 8 dereferenceable(72) %15, i32 noundef 1, i32 noundef 1320) #17 + %15 = tail call noalias noundef nonnull dereferenceable(72) ptr @_Znwm(i64 noundef 72) #15 + tail call void @_ZN4llvm12MCAsmBackendC2ENS_10endiannessEj(ptr noundef nonnull align 8 dereferenceable(72) %15, i32 noundef 1, i32 noundef 1320) #16 store ptr getelementptr inbounds inrange(-16, 232) (i8, ptr @_ZTVN12_GLOBAL__N_117AArch64AsmBackendE, i64 16), ptr %15, align 8 %16 = getelementptr inbounds nuw i8, ptr %15, i64 16 - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(56) %16, ptr noundef nonnull align 8 dereferenceable(56) %5) #17 + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(56) %16, ptr noundef nonnull align 8 dereferenceable(56) %5) #16 %17 = getelementptr inbounds nuw i8, ptr %15, i64 48 %18 = getelementptr inbounds nuw i8, ptr %1, i64 40 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 8 dereferenceable(24) %18, i64 24, i1 false) @@ -394,12 +394,12 @@ _ZN4llvm23MCELFObjectTargetWriter8getOSABIENS_6Triple6OSTypeE.exit: ; preds = %1 %26 = getelementptr inbounds nuw i8, ptr %1, i64 56 %27 = load i32, ptr %26, align 8 %28 = icmp eq i32 %27, 10 - %29 = tail call noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #16 + %29 = tail call noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #15 %30 = zext i1 %28 to i8 - tail call void @_ZN4llvm12MCAsmBackendC2ENS_10endiannessEj(ptr noundef nonnull align 8 dereferenceable(74) %29, i32 noundef 1, i32 noundef 1320) #17 + tail call void @_ZN4llvm12MCAsmBackendC2ENS_10endiannessEj(ptr noundef nonnull align 8 dereferenceable(74) %29, i32 noundef 1, i32 noundef 1320) #16 store ptr getelementptr inbounds inrange(-16, 232) (i8, ptr @_ZTVN12_GLOBAL__N_117AArch64AsmBackendE, i64 16), ptr %29, align 8 %31 = getelementptr inbounds nuw i8, ptr %29, i64 16 - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(56) %31, ptr noundef nonnull align 8 dereferenceable(56) %5) #17 + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(56) %31, ptr noundef nonnull align 8 dereferenceable(56) %5) #16 %32 = getelementptr inbounds nuw i8, ptr %29, i64 48 %33 = getelementptr inbounds nuw i8, ptr %1, i64 40 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %32, ptr noundef nonnull align 8 dereferenceable(24) %33, i64 24, i1 false) @@ -448,12 +448,12 @@ _ZN4llvm23MCELFObjectTargetWriter8getOSABIENS_6Triple6OSTypeE.exit: ; preds = %4 %12 = getelementptr inbounds nuw i8, ptr %1, i64 56 %13 = load i32, ptr %12, align 8 %14 = icmp eq i32 %13, 10 - %15 = tail call noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #16 + %15 = tail call noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #15 %16 = zext i1 %14 to i8 - tail call void @_ZN4llvm12MCAsmBackendC2ENS_10endiannessEj(ptr noundef nonnull align 8 dereferenceable(74) %15, i32 noundef 0, i32 noundef 1320) #17 + tail call void @_ZN4llvm12MCAsmBackendC2ENS_10endiannessEj(ptr noundef nonnull align 8 dereferenceable(74) %15, i32 noundef 0, i32 noundef 1320) #16 store ptr getelementptr inbounds inrange(-16, 232) (i8, ptr @_ZTVN12_GLOBAL__N_117AArch64AsmBackendE, i64 16), ptr %15, align 8 %17 = getelementptr inbounds nuw i8, ptr %15, i64 16 - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(56) %17, ptr noundef nonnull align 8 dereferenceable(56) %11) #17 + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(56) %17, ptr noundef nonnull align 8 dereferenceable(56) %11) #16 %18 = getelementptr inbounds nuw i8, ptr %15, i64 48 %19 = getelementptr inbounds nuw i8, ptr %1, i64 40 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(24) %19, i64 24, i1 false) @@ -469,8 +469,8 @@ _ZN4llvm23MCELFObjectTargetWriter8getOSABIENS_6Triple6OSTypeE.exit: ; preds = %4 define internal void @_ZN12_GLOBAL__N_123DarwinAArch64AsmBackendD2Ev(ptr noundef nonnull align 8 dereferenceable(80) initializes((0, 8)) %0) unnamed_addr #0 align 2 { store ptr getelementptr inbounds inrange(-16, 232) (i8, ptr @_ZTVN12_GLOBAL__N_117AArch64AsmBackendE, i64 16), ptr %0, align 8 %2 = getelementptr inbounds nuw i8, ptr %0, i64 16 - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(56) %2) #17 - tail call void @_ZN4llvm12MCAsmBackendD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %0) #17 + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(56) %2) #16 + tail call void @_ZN4llvm12MCAsmBackendD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %0) #16 ret void } @@ -478,9 +478,9 @@ define internal void @_ZN12_GLOBAL__N_123DarwinAArch64AsmBackendD2Ev(ptr noundef define internal void @_ZN12_GLOBAL__N_123DarwinAArch64AsmBackendD0Ev(ptr noundef nonnull align 8 dereferenceable(80) initializes((0, 8)) %0) unnamed_addr #0 align 2 { store ptr getelementptr inbounds inrange(-16, 232) (i8, ptr @_ZTVN12_GLOBAL__N_117AArch64AsmBackendE, i64 16), ptr %0, align 8 %2 = getelementptr inbounds nuw i8, ptr %0, i64 16 - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(56) %2) #17 - tail call void @_ZN4llvm12MCAsmBackendD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %0) #17 - tail call void @_ZdlPvm(ptr noundef nonnull %0, i64 noundef 80) #18 + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(56) %2) #16 + tail call void @_ZN4llvm12MCAsmBackendD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %0) #16 + tail call void @_ZdlPvm(ptr noundef nonnull %0, i64 noundef 80) #17 ret void } @@ -501,26 +501,16 @@ define linkonce_odr hidden void @_ZN4llvm12MCAsmBackend5resetEv(ptr noundef nonn ; Function Attrs: mustprogress nounwind uwtable define internal void @_ZNK12_GLOBAL__N_123DarwinAArch64AsmBackend24createObjectTargetWriterEv(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr") align 8 %0, ptr noundef nonnull align 8 dereferenceable(80) %1) unnamed_addr #0 align 2 { -_ZN4llvm8ExpectedIjED2Ev.exit5: +_ZN4llvm8ExpectedIjED2Ev.exit: %2 = alloca %"class.llvm::Expected", align 8 %3 = alloca %"class.llvm::Expected", align 8 %4 = getelementptr inbounds nuw i8, ptr %1, i64 16 - call void @_ZN4llvm5MachO10getCPUTypeERKNS_6TripleE(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected") align 8 %2, ptr noundef nonnull align 8 dereferenceable(56) %4) #17 - %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %6 = load i8, ptr %5, align 8 - %7 = trunc i8 %6 to i1 - %8 = xor i1 %7, true - call void @llvm.assume(i1 %8) - %9 = load i32, ptr %2, align 8 - call void @_ZN4llvm5MachO13getCPUSubTypeERKNS_6TripleE(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected") align 8 %3, ptr noundef nonnull align 8 dereferenceable(56) %4) #17 - %10 = getelementptr inbounds nuw i8, ptr %3, i64 8 - %11 = load i8, ptr %10, align 8 - %12 = trunc i8 %11 to i1 - %13 = xor i1 %12, true - call void @llvm.assume(i1 %13) - %14 = load i32, ptr %3, align 8 - %15 = call noundef zeroext i1 @_ZNK4llvm6Triple11isArch32BitEv(ptr noundef nonnull align 8 dereferenceable(56) %4) #17 - call void @_ZN4llvm29createAArch64MachObjectWriterEjjb(ptr dead_on_unwind writable sret(%"class.std::unique_ptr") align 8 %0, i32 noundef %9, i32 noundef %14, i1 noundef zeroext %15) #17 + call void @_ZN4llvm5MachO10getCPUTypeERKNS_6TripleE(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected") align 8 %2, ptr noundef nonnull align 8 dereferenceable(56) %4) #16 + %5 = load i32, ptr %2, align 8 + call void @_ZN4llvm5MachO13getCPUSubTypeERKNS_6TripleE(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected") align 8 %3, ptr noundef nonnull align 8 dereferenceable(56) %4) #16 + %6 = load i32, ptr %3, align 8 + %7 = call noundef zeroext i1 @_ZNK4llvm6Triple11isArch32BitEv(ptr noundef nonnull align 8 dereferenceable(56) %4) #16 + call void @_ZN4llvm29createAArch64MachObjectWriterEjjb(ptr dead_on_unwind writable sret(%"class.std::unique_ptr") align 8 %0, i32 noundef %5, i32 noundef %6, i1 noundef zeroext %7) #16 ret void } @@ -1757,7 +1747,7 @@ define internal noundef nonnull align 8 dereferenceable(24) ptr @_ZNK12_GLOBAL__ br i1 %3, label %4, label %6 4: ; preds = %2 - %5 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK4llvm12MCAsmBackend16getFixupKindInfoENS_11MCFixupKindE(ptr noundef nonnull align 8 dereferenceable(16) %0, i32 noundef 0) #17 + %5 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK4llvm12MCAsmBackend16getFixupKindInfoENS_11MCFixupKindE(ptr noundef nonnull align 8 dereferenceable(16) %0, i32 noundef 0) #16 br label %14 6: ; preds = %2 @@ -1765,7 +1755,7 @@ define internal noundef nonnull align 8 dereferenceable(24) ptr @_ZNK12_GLOBAL__ br i1 %7, label %8, label %10 8: ; preds = %6 - %9 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK4llvm12MCAsmBackend16getFixupKindInfoENS_11MCFixupKindE(ptr noundef nonnull align 8 dereferenceable(16) %0, i32 noundef %1) #17 + %9 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK4llvm12MCAsmBackend16getFixupKindInfoENS_11MCFixupKindE(ptr noundef nonnull align 8 dereferenceable(16) %0, i32 noundef %1) #16 br label %14 10: ; preds = %6 @@ -1926,7 +1916,7 @@ _ZL20getFixupKindNumBytesj.exit: ; preds = %66, %68, %69, %70, %72 = load ptr, ptr %0, align 8 %73 = getelementptr inbounds i8, ptr %72, i64 64 %74 = load ptr, ptr %73, align 8 - %75 = tail call noundef nonnull align 8 dereferenceable(24) ptr %74(ptr noundef nonnull align 8 dereferenceable(72) %0, i32 noundef %36) #17 + %75 = tail call noundef nonnull align 8 dereferenceable(24) ptr %74(ptr noundef nonnull align 8 dereferenceable(72) %0, i32 noundef %36) #16 %.sroa.1.0..sroa_idx = getelementptr inbounds i8, ptr %75, i64 8 %.sroa.1.0.copyload = load i32, ptr %.sroa.1.0..sroa_idx, align 8 %76 = load ptr, ptr %1, align 8 @@ -1999,7 +1989,7 @@ _ZL20getFixupKindNumBytesj.exit: ; preds = %66, %68, %69, %70, store i8 1, ptr %86, align 1 store ptr @.str.250, ptr %10, align 8 store i8 3, ptr %85, align 8 - call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i.i, ptr noundef nonnull align 8 dereferenceable(34) %10) #17 + call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i.i, ptr noundef nonnull align 8 dereferenceable(34) %10) #16 br label %87 87: ; preds = %83, %80 @@ -2027,7 +2017,7 @@ _ZL20getFixupKindNumBytesj.exit: ; preds = %66, %68, %69, %70, store i8 1, ptr %101, align 1 store ptr @.str.250, ptr %11, align 8 store i8 3, ptr %100, align 8 - call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i192.i, ptr noundef nonnull align 8 dereferenceable(34) %11) #17 + call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i192.i, ptr noundef nonnull align 8 dereferenceable(34) %11) #16 br label %102 102: ; preds = %98, %95 @@ -2060,7 +2050,7 @@ _ZL20getFixupKindNumBytesj.exit: ; preds = %66, %68, %69, %70, store i8 1, ptr %121, align 1 store ptr @.str.250, ptr %12, align 8 store i8 3, ptr %120, align 8 - call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i193.i, ptr noundef nonnull align 8 dereferenceable(34) %12) #17 + call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i193.i, ptr noundef nonnull align 8 dereferenceable(34) %12) #16 br label %122 122: ; preds = %118, %115 @@ -2076,7 +2066,7 @@ _ZL20getFixupKindNumBytesj.exit: ; preds = %66, %68, %69, %70, store i8 1, ptr %127, align 1 store ptr @.str.251, ptr %13, align 8 store i8 3, ptr %126, align 8 - call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i194.i, ptr noundef nonnull align 8 dereferenceable(34) %13) #17 + call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i194.i, ptr noundef nonnull align 8 dereferenceable(34) %13) #16 br label %128 128: ; preds = %124, %122 @@ -2100,7 +2090,7 @@ _ZL20getFixupKindNumBytesj.exit: ; preds = %66, %68, %69, %70, store i8 1, ptr %138, align 1 store ptr @.str.250, ptr %14, align 8 store i8 3, ptr %137, align 8 - call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i195.i, ptr noundef nonnull align 8 dereferenceable(34) %14) #17 + call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i195.i, ptr noundef nonnull align 8 dereferenceable(34) %14) #16 br label %_ZL16adjustFixupValueRKN4llvm7MCFixupERKNS_7MCValueEmRNS_9MCContextERKNS_6TripleEb.exit 139: ; preds = %_ZL20getFixupKindNumBytesj.exit @@ -2119,7 +2109,7 @@ _ZL20getFixupKindNumBytesj.exit: ; preds = %66, %68, %69, %70, store i8 1, ptr %146, align 1 store ptr @.str.250, ptr %15, align 8 store i8 3, ptr %145, align 8 - call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i196.i, ptr noundef nonnull align 8 dereferenceable(34) %15) #17 + call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i196.i, ptr noundef nonnull align 8 dereferenceable(34) %15) #16 br label %147 147: ; preds = %143, %139 @@ -2135,7 +2125,7 @@ _ZL20getFixupKindNumBytesj.exit: ; preds = %66, %68, %69, %70, store i8 1, ptr %152, align 1 store ptr @.str.252, ptr %16, align 8 store i8 3, ptr %151, align 8 - call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i197.i, ptr noundef nonnull align 8 dereferenceable(34) %16) #17 + call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i197.i, ptr noundef nonnull align 8 dereferenceable(34) %16) #16 br label %153 153: ; preds = %149, %147 @@ -2158,7 +2148,7 @@ _ZL20getFixupKindNumBytesj.exit: ; preds = %66, %68, %69, %70, store i8 1, ptr %162, align 1 store ptr @.str.250, ptr %17, align 8 store i8 3, ptr %161, align 8 - call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i198.i, ptr noundef nonnull align 8 dereferenceable(34) %17) #17 + call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i198.i, ptr noundef nonnull align 8 dereferenceable(34) %17) #16 br label %163 163: ; preds = %159, %155 @@ -2174,7 +2164,7 @@ _ZL20getFixupKindNumBytesj.exit: ; preds = %66, %68, %69, %70, store i8 1, ptr %168, align 1 store ptr @.str.253, ptr %18, align 8 store i8 3, ptr %167, align 8 - call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i199.i, ptr noundef nonnull align 8 dereferenceable(34) %18) #17 + call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i199.i, ptr noundef nonnull align 8 dereferenceable(34) %18) #16 br label %169 169: ; preds = %165, %163 @@ -2197,7 +2187,7 @@ _ZL20getFixupKindNumBytesj.exit: ; preds = %66, %68, %69, %70, store i8 1, ptr %178, align 1 store ptr @.str.250, ptr %19, align 8 store i8 3, ptr %177, align 8 - call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i200.i, ptr noundef nonnull align 8 dereferenceable(34) %19) #17 + call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i200.i, ptr noundef nonnull align 8 dereferenceable(34) %19) #16 br label %179 179: ; preds = %175, %171 @@ -2213,7 +2203,7 @@ _ZL20getFixupKindNumBytesj.exit: ; preds = %66, %68, %69, %70, store i8 1, ptr %184, align 1 store ptr @.str.254, ptr %20, align 8 store i8 3, ptr %183, align 8 - call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i201.i, ptr noundef nonnull align 8 dereferenceable(34) %20) #17 + call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i201.i, ptr noundef nonnull align 8 dereferenceable(34) %20) #16 br label %185 185: ; preds = %181, %179 @@ -2236,7 +2226,7 @@ _ZL20getFixupKindNumBytesj.exit: ; preds = %66, %68, %69, %70, store i8 1, ptr %194, align 1 store ptr @.str.250, ptr %21, align 8 store i8 3, ptr %193, align 8 - call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i202.i, ptr noundef nonnull align 8 dereferenceable(34) %21) #17 + call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i202.i, ptr noundef nonnull align 8 dereferenceable(34) %21) #16 br label %195 195: ; preds = %191, %187 @@ -2252,7 +2242,7 @@ _ZL20getFixupKindNumBytesj.exit: ; preds = %66, %68, %69, %70, store i8 1, ptr %200, align 1 store ptr @.str.255, ptr %22, align 8 store i8 3, ptr %199, align 8 - call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i203.i, ptr noundef nonnull align 8 dereferenceable(34) %22) #17 + call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i203.i, ptr noundef nonnull align 8 dereferenceable(34) %22) #16 br label %201 201: ; preds = %197, %195 @@ -2283,7 +2273,7 @@ _ZL20getFixupKindNumBytesj.exit: ; preds = %66, %68, %69, %70, store i8 1, ptr %211, align 1 store ptr @.str.256, ptr %23, align 8 store i8 3, ptr %210, align 8 - call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i204.i, ptr noundef nonnull align 8 dereferenceable(34) %23) #17 + call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i204.i, ptr noundef nonnull align 8 dereferenceable(34) %23) #16 br label %212 212: ; preds = %208, %206 @@ -2299,7 +2289,7 @@ _ZL20getFixupKindNumBytesj.exit: ; preds = %66, %68, %69, %70, store i8 1, ptr %216, align 1 store ptr @.str.257, ptr %24, align 8 store i8 3, ptr %215, align 8 - call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i205.i, ptr noundef nonnull align 8 dereferenceable(34) %24) #17 + call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i205.i, ptr noundef nonnull align 8 dereferenceable(34) %24) #16 br label %_ZL16adjustFixupValueRKN4llvm7MCFixupERKNS_7MCValueEmRNS_9MCContextERKNS_6TripleEb.exit 217: ; preds = %203 @@ -2316,7 +2306,7 @@ _ZL20getFixupKindNumBytesj.exit: ; preds = %66, %68, %69, %70, store i8 1, ptr %221, align 1 store ptr @.str.258, ptr %25, align 8 store i8 3, ptr %220, align 8 - call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i206.i, ptr noundef nonnull align 8 dereferenceable(34) %25) #17 + call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i206.i, ptr noundef nonnull align 8 dereferenceable(34) %25) #16 br label %_ZL16adjustFixupValueRKN4llvm7MCFixupERKNS_7MCValueEmRNS_9MCContextERKNS_6TripleEb.exit 222: ; preds = %217 @@ -2399,7 +2389,7 @@ _ZL20getFixupKindNumBytesj.exit: ; preds = %66, %68, %69, %70, store i8 1, ptr %255, align 1 store ptr @.str.250, ptr %26, align 8 store i8 3, ptr %254, align 8 - call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i207.i, ptr noundef nonnull align 8 dereferenceable(34) %26) #17 + call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i207.i, ptr noundef nonnull align 8 dereferenceable(34) %26) #16 br label %256 256: ; preds = %252, %250 @@ -2419,7 +2409,7 @@ _ZL20getFixupKindNumBytesj.exit: ; preds = %66, %68, %69, %70, store i8 1, ptr %262, align 1 store ptr @.str.250, ptr %27, align 8 store i8 3, ptr %261, align 8 - call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i208.i, ptr noundef nonnull align 8 dereferenceable(34) %27) #17 + call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i208.i, ptr noundef nonnull align 8 dereferenceable(34) %27) #16 br label %_ZL16adjustFixupValueRKN4llvm7MCFixupERKNS_7MCValueEmRNS_9MCContextERKNS_6TripleEb.exit 263: ; preds = %_ZL20getFixupKindNumBytesj.exit @@ -2435,7 +2425,7 @@ _ZL20getFixupKindNumBytesj.exit: ; preds = %66, %68, %69, %70, store i8 1, ptr %269, align 1 store ptr @.str.250, ptr %28, align 8 store i8 3, ptr %268, align 8 - call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i209.i, ptr noundef nonnull align 8 dereferenceable(34) %28) #17 + call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i209.i, ptr noundef nonnull align 8 dereferenceable(34) %28) #16 br label %270 270: ; preds = %266, %263 @@ -2451,7 +2441,7 @@ _ZL20getFixupKindNumBytesj.exit: ; preds = %66, %68, %69, %70, store i8 1, ptr %275, align 1 store ptr @.str.251, ptr %29, align 8 store i8 3, ptr %274, align 8 - call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i210.i, ptr noundef nonnull align 8 dereferenceable(34) %29) #17 + call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i210.i, ptr noundef nonnull align 8 dereferenceable(34) %29) #16 br label %276 276: ; preds = %272, %270 @@ -2472,7 +2462,7 @@ _ZL20getFixupKindNumBytesj.exit: ; preds = %66, %68, %69, %70, store i8 1, ptr %284, align 1 store ptr @.str.250, ptr %30, align 8 store i8 3, ptr %283, align 8 - call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i211.i, ptr noundef nonnull align 8 dereferenceable(34) %30) #17 + call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i211.i, ptr noundef nonnull align 8 dereferenceable(34) %30) #16 br label %285 285: ; preds = %281, %279 @@ -2488,7 +2478,7 @@ _ZL20getFixupKindNumBytesj.exit: ; preds = %66, %68, %69, %70, store i8 1, ptr %290, align 1 store ptr @.str.251, ptr %31, align 8 store i8 3, ptr %289, align 8 - call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i212.i, ptr noundef nonnull align 8 dereferenceable(34) %31) #17 + call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i212.i, ptr noundef nonnull align 8 dereferenceable(34) %31) #16 br label %291 291: ; preds = %287, %285 @@ -2509,7 +2499,7 @@ _ZL20getFixupKindNumBytesj.exit: ; preds = %66, %68, %69, %70, store i8 1, ptr %299, align 1 store ptr @.str.259, ptr %32, align 8 store i8 3, ptr %298, align 8 - call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i213.i, ptr noundef nonnull align 8 dereferenceable(34) %32) #17 + call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i213.i, ptr noundef nonnull align 8 dereferenceable(34) %32) #16 br label %300 300: ; preds = %296, %294 @@ -2525,7 +2515,7 @@ _ZL20getFixupKindNumBytesj.exit: ; preds = %66, %68, %69, %70, store i8 1, ptr %306, align 1 store ptr @.str.250, ptr %33, align 8 store i8 3, ptr %305, align 8 - call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i214.i, ptr noundef nonnull align 8 dereferenceable(34) %33) #17 + call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i214.i, ptr noundef nonnull align 8 dereferenceable(34) %33) #16 br label %307 307: ; preds = %303, %300 @@ -2541,7 +2531,7 @@ _ZL20getFixupKindNumBytesj.exit: ; preds = %66, %68, %69, %70, store i8 1, ptr %312, align 1 store ptr @.str.251, ptr %34, align 8 store i8 3, ptr %311, align 8 - call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i215.i, ptr noundef nonnull align 8 dereferenceable(34) %34) #17 + call void @_ZN4llvm9MCContext11reportErrorENS_5SMLocERKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(2432) %76, ptr %.sroa.0.0.copyload.i215.i, ptr noundef nonnull align 8 dereferenceable(34) %34) #16 br label %313 313: ; preds = %309, %307 @@ -2736,14 +2726,14 @@ define linkonce_odr hidden noundef i32 @_ZNK4llvm12MCAsmBackend17getMaximumNopSi define internal noundef zeroext i1 @_ZNK12_GLOBAL__N_117AArch64AsmBackend12writeNopDataERN4llvm11raw_ostreamEmPKNS1_15MCSubtargetInfoE(ptr nocapture nonnull readnone align 8 %0, ptr noundef nonnull align 8 dereferenceable(48) %1, i64 noundef %2, ptr nocapture readnone %3) unnamed_addr #0 align 2 { %5 = trunc i64 %2 to i32 %6 = and i32 %5, 3 - %7 = tail call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream11write_zerosEj(ptr noundef nonnull align 8 dereferenceable(48) %1, i32 noundef %6) #17 + %7 = tail call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream11write_zerosEj(ptr noundef nonnull align 8 dereferenceable(48) %1, i32 noundef %6) #16 %8 = lshr i64 %2, 2 %.not6 = icmp ult i64 %2, 4 br i1 %.not6, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %4, %.lr.ph %.07 = phi i64 [ %10, %.lr.ph ], [ 0, %4 ] - %9 = tail call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(48) %1, ptr noundef nonnull @.str.260, i64 noundef 4) #17 + %9 = tail call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(48) %1, ptr noundef nonnull @.str.260, i64 noundef 4) #16 %10 = add nuw nsw i64 %.07, 1 %.not = icmp eq i64 %10, %8 br i1 %.not, label %._crit_edge, label %.lr.ph, !llvm.loop !7 @@ -2778,11 +2768,11 @@ define internal noundef i64 @_ZNK12_GLOBAL__N_123DarwinAArch64AsmBackend29genera 13: ; preds = %3 %14 = getelementptr inbounds nuw i8, ptr %1, i64 16 %15 = load ptr, ptr %14, align 8 - %16 = tail call noundef zeroext i1 @_ZNK4llvm12MCAsmBackend28isDarwinCanonicalPersonalityEPKNS_8MCSymbolE(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef %15) #17 + %16 = tail call noundef zeroext i1 @_ZNK4llvm12MCAsmBackend28isDarwinCanonicalPersonalityEPKNS_8MCSymbolE(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef %15) #16 br i1 %16, label %.lr.ph, label %17 17: ; preds = %13 - %18 = tail call noundef zeroext i1 @_ZNK4llvm9MCContext29emitCompactUnwindNonCanonicalEv(ptr noundef nonnull align 8 dereferenceable(2432) %2) #17 + %18 = tail call noundef zeroext i1 @_ZNK4llvm9MCContext29emitCompactUnwindNonCanonicalEv(ptr noundef nonnull align 8 dereferenceable(2432) %2) #16 br i1 %18, label %.lr.ph, label %_ZN4llvmL15getDRegFromBRegEj.exit170.thread.thread.thread.thread .lr.ph: ; preds = %13, %17 @@ -2815,7 +2805,7 @@ define internal noundef i64 @_ZNK12_GLOBAL__N_123DarwinAArch64AsmBackend29genera %25 = load ptr, ptr %19, align 8 %.0.in.i = getelementptr inbounds nuw i8, ptr %21, i64 8 %.0.i = load i32, ptr %.0.in.i, align 8 - %26 = tail call i64 @_ZNK4llvm14MCRegisterInfo13getLLVMRegNumEjb(ptr noundef nonnull align 8 dereferenceable(224) %25, i32 noundef %.0.i, i1 noundef zeroext true) #17 + %26 = tail call i64 @_ZNK4llvm14MCRegisterInfo13getLLVMRegNumEjb(ptr noundef nonnull align 8 dereferenceable(224) %25, i32 noundef %.0.i, i1 noundef zeroext true) #16 %.sroa.0177.0.extract.trunc = trunc i64 %26 to i32 %27 = tail call fastcc noundef i32 @_ZN4llvmL15getXRegFromWRegEj(i32 noundef %.sroa.0177.0.extract.trunc) %.not122 = icmp eq i32 %27, 2 @@ -2850,12 +2840,12 @@ define internal noundef i64 @_ZNK12_GLOBAL__N_123DarwinAArch64AsmBackend29genera %39 = load ptr, ptr %19, align 8 %.0.in.i150 = getelementptr i8, ptr %21, i64 112 %.0.i151 = load i32, ptr %.0.in.i150, align 8 - %40 = tail call i64 @_ZNK4llvm14MCRegisterInfo13getLLVMRegNumEjb(ptr noundef nonnull align 8 dereferenceable(224) %39, i32 noundef %.0.i151, i1 noundef zeroext true) #17 + %40 = tail call i64 @_ZNK4llvm14MCRegisterInfo13getLLVMRegNumEjb(ptr noundef nonnull align 8 dereferenceable(224) %39, i32 noundef %.0.i151, i1 noundef zeroext true) #16 %.sroa.0175.0.extract.trunc = trunc i64 %40 to i32 %41 = load ptr, ptr %19, align 8 %.0.in.i152 = getelementptr inbounds nuw i8, ptr %33, i64 8 %.0.i153 = load i32, ptr %.0.in.i152, align 8 - %42 = tail call i64 @_ZNK4llvm14MCRegisterInfo13getLLVMRegNumEjb(ptr noundef nonnull align 8 dereferenceable(224) %41, i32 noundef %.0.i153, i1 noundef zeroext true) #17 + %42 = tail call i64 @_ZNK4llvm14MCRegisterInfo13getLLVMRegNumEjb(ptr noundef nonnull align 8 dereferenceable(224) %41, i32 noundef %.0.i153, i1 noundef zeroext true) #16 %.sroa.0173.0.extract.trunc = trunc i64 %42 to i32 %43 = tail call fastcc noundef i32 @_ZN4llvmL15getXRegFromWRegEj(i32 noundef %.sroa.0175.0.extract.trunc) %44 = tail call fastcc noundef i32 @_ZN4llvmL15getXRegFromWRegEj(i32 noundef %.sroa.0173.0.extract.trunc) @@ -2878,7 +2868,7 @@ define internal noundef i64 @_ZNK12_GLOBAL__N_123DarwinAArch64AsmBackend29genera %51 = load ptr, ptr %19, align 8 %.0.in.i156 = getelementptr inbounds nuw i8, ptr %21, i64 8 %.0.i157 = load i32, ptr %.0.in.i156, align 8 - %52 = tail call i64 @_ZNK4llvm14MCRegisterInfo13getLLVMRegNumEjb(ptr noundef nonnull align 8 dereferenceable(224) %51, i32 noundef %.0.i157, i1 noundef zeroext true) #17 + %52 = tail call i64 @_ZNK4llvm14MCRegisterInfo13getLLVMRegNumEjb(ptr noundef nonnull align 8 dereferenceable(224) %51, i32 noundef %.0.i157, i1 noundef zeroext true) #16 %.sroa.0171.0.extract.trunc = trunc i64 %52 to i32 %53 = add i64 %.0113202, 1 %54 = icmp eq i64 %53, %11 @@ -2908,7 +2898,7 @@ define internal noundef i64 @_ZNK12_GLOBAL__N_123DarwinAArch64AsmBackend29genera %63 = load ptr, ptr %19, align 8 %.0.in.i162 = getelementptr inbounds nuw i8, ptr %59, i64 8 %.0.i163 = load i32, ptr %.0.in.i162, align 8 - %64 = tail call i64 @_ZNK4llvm14MCRegisterInfo13getLLVMRegNumEjb(ptr noundef nonnull align 8 dereferenceable(224) %63, i32 noundef %.0.i163, i1 noundef zeroext true) #17 + %64 = tail call i64 @_ZNK4llvm14MCRegisterInfo13getLLVMRegNumEjb(ptr noundef nonnull align 8 dereferenceable(224) %63, i32 noundef %.0.i163, i1 noundef zeroext true) #16 %.0.in.i164 = getelementptr inbounds nuw i8, ptr %59, i64 16 %.0.i165 = load i64, ptr %.0.in.i164, align 8 %65 = add nsw i64 %.0.i161, -8 @@ -3124,14 +3114,14 @@ declare void @_ZN4llvm12MCAsmBackendC2ENS_10endiannessEj(ptr noundef nonnull ali define internal void @_ZN12_GLOBAL__N_117AArch64AsmBackendD2Ev(ptr noundef nonnull align 8 dereferenceable(72) initializes((0, 8)) %0) unnamed_addr #0 align 2 { store ptr getelementptr inbounds inrange(-16, 232) (i8, ptr @_ZTVN12_GLOBAL__N_117AArch64AsmBackendE, i64 16), ptr %0, align 8 %2 = getelementptr inbounds nuw i8, ptr %0, i64 16 - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(56) %2) #17 - tail call void @_ZN4llvm12MCAsmBackendD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %0) #17 + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(56) %2) #16 + tail call void @_ZN4llvm12MCAsmBackendD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %0) #16 ret void } ; Function Attrs: cold mustprogress noreturn nounwind memory(inaccessiblemem: write) uwtable define internal void @_ZN12_GLOBAL__N_117AArch64AsmBackendD0Ev(ptr nocapture nonnull readnone align 8 %0) unnamed_addr #7 align 2 { - tail call void @llvm.trap() #19 + tail call void @llvm.trap() #18 unreachable } @@ -3330,8 +3320,8 @@ declare i64 @llvm.abs.i64(i64, i1 immarg) #12 define internal void @_ZN12_GLOBAL__N_121COFFAArch64AsmBackendD2Ev(ptr noundef nonnull align 8 dereferenceable(72) initializes((0, 8)) %0) unnamed_addr #0 align 2 { store ptr getelementptr inbounds inrange(-16, 232) (i8, ptr @_ZTVN12_GLOBAL__N_117AArch64AsmBackendE, i64 16), ptr %0, align 8 %2 = getelementptr inbounds nuw i8, ptr %0, i64 16 - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(56) %2) #17 - tail call void @_ZN4llvm12MCAsmBackendD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %0) #17 + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(56) %2) #16 + tail call void @_ZN4llvm12MCAsmBackendD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %0) #16 ret void } @@ -3339,16 +3329,16 @@ define internal void @_ZN12_GLOBAL__N_121COFFAArch64AsmBackendD2Ev(ptr noundef n define internal void @_ZN12_GLOBAL__N_121COFFAArch64AsmBackendD0Ev(ptr noundef nonnull align 8 dereferenceable(72) initializes((0, 8)) %0) unnamed_addr #0 align 2 { store ptr getelementptr inbounds inrange(-16, 232) (i8, ptr @_ZTVN12_GLOBAL__N_117AArch64AsmBackendE, i64 16), ptr %0, align 8 %2 = getelementptr inbounds nuw i8, ptr %0, i64 16 - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(56) %2) #17 - tail call void @_ZN4llvm12MCAsmBackendD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %0) #17 - tail call void @_ZdlPvm(ptr noundef nonnull %0, i64 noundef 72) #18 + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(56) %2) #16 + tail call void @_ZN4llvm12MCAsmBackendD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %0) #16 + tail call void @_ZdlPvm(ptr noundef nonnull %0, i64 noundef 72) #17 ret void } ; Function Attrs: mustprogress nounwind uwtable define internal void @_ZNK12_GLOBAL__N_121COFFAArch64AsmBackend24createObjectTargetWriterEv(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr") align 8 %0, ptr noundef nonnull align 8 dereferenceable(72) %1) unnamed_addr #0 align 2 { %3 = getelementptr inbounds nuw i8, ptr %1, i64 16 - tail call void @_ZN4llvm32createAArch64WinCOFFObjectWriterERKNS_6TripleE(ptr dead_on_unwind writable sret(%"class.std::unique_ptr") align 8 %0, ptr noundef nonnull align 8 dereferenceable(56) %3) #17 + tail call void @_ZN4llvm32createAArch64WinCOFFObjectWriterERKNS_6TripleE(ptr dead_on_unwind writable sret(%"class.std::unique_ptr") align 8 %0, ptr noundef nonnull align 8 dereferenceable(56) %3) #16 ret void } @@ -3358,8 +3348,8 @@ declare void @_ZN4llvm32createAArch64WinCOFFObjectWriterERKNS_6TripleE(ptr dead_ define internal void @_ZN12_GLOBAL__N_120ELFAArch64AsmBackendD2Ev(ptr noundef nonnull align 8 dereferenceable(74) initializes((0, 8)) %0) unnamed_addr #0 align 2 { store ptr getelementptr inbounds inrange(-16, 232) (i8, ptr @_ZTVN12_GLOBAL__N_117AArch64AsmBackendE, i64 16), ptr %0, align 8 %2 = getelementptr inbounds nuw i8, ptr %0, i64 16 - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(56) %2) #17 - tail call void @_ZN4llvm12MCAsmBackendD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %0) #17 + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(56) %2) #16 + tail call void @_ZN4llvm12MCAsmBackendD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %0) #16 ret void } @@ -3367,9 +3357,9 @@ define internal void @_ZN12_GLOBAL__N_120ELFAArch64AsmBackendD2Ev(ptr noundef no define internal void @_ZN12_GLOBAL__N_120ELFAArch64AsmBackendD0Ev(ptr noundef nonnull align 8 dereferenceable(74) initializes((0, 8)) %0) unnamed_addr #0 align 2 { store ptr getelementptr inbounds inrange(-16, 232) (i8, ptr @_ZTVN12_GLOBAL__N_117AArch64AsmBackendE, i64 16), ptr %0, align 8 %2 = getelementptr inbounds nuw i8, ptr %0, i64 16 - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(56) %2) #17 - tail call void @_ZN4llvm12MCAsmBackendD2Ev(ptr noundef nonnull align 8 dereferenceable(74) %0) #17 - tail call void @_ZdlPvm(ptr noundef nonnull %0, i64 noundef 80) #18 + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(56) %2) #16 + tail call void @_ZN4llvm12MCAsmBackendD2Ev(ptr noundef nonnull align 8 dereferenceable(74) %0) #16 + tail call void @_ZdlPvm(ptr noundef nonnull %0, i64 noundef 80) #17 ret void } @@ -3380,23 +3370,20 @@ define internal void @_ZNK12_GLOBAL__N_120ELFAArch64AsmBackend24createObjectTarg %5 = getelementptr inbounds nuw i8, ptr %1, i64 73 %6 = load i8, ptr %5, align 1 %7 = trunc i8 %6 to i1 - tail call void @_ZN4llvm28createAArch64ELFObjectWriterEhb(ptr dead_on_unwind writable sret(%"class.std::unique_ptr") align 8 %0, i8 noundef zeroext %4, i1 noundef zeroext %7) #17 + tail call void @_ZN4llvm28createAArch64ELFObjectWriterEhb(ptr dead_on_unwind writable sret(%"class.std::unique_ptr") align 8 %0, i8 noundef zeroext %4, i1 noundef zeroext %7) #16 ret void } declare void @_ZN4llvm28createAArch64ELFObjectWriterEhb(ptr dead_on_unwind writable sret(%"class.std::unique_ptr") align 8, i8 noundef zeroext, i1 noundef zeroext) local_unnamed_addr #5 -; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) -declare void @llvm.assume(i1 noundef) #13 - ; Function Attrs: nofree nounwind willreturn memory(argmem: read) -declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #14 +declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #13 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #15 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #14 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #15 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #14 attributes #0 = { mustprogress nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } @@ -3411,13 +3398,12 @@ attributes #9 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stac attributes #10 = { cold noreturn nounwind memory(inaccessiblemem: write) } attributes #11 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #12 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #13 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } -attributes #14 = { nofree nounwind willreturn memory(argmem: read) } -attributes #15 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #16 = { builtin nounwind allocsize(0) } -attributes #17 = { nounwind } -attributes #18 = { builtin nounwind } -attributes #19 = { noreturn nounwind } +attributes #13 = { nofree nounwind willreturn memory(argmem: read) } +attributes #14 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #15 = { builtin nounwind allocsize(0) } +attributes #16 = { nounwind } +attributes #17 = { builtin nounwind } +attributes #18 = { noreturn nounwind } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/llvm/optimized/AsmParser.cpp.ll b/bench/llvm/optimized/AsmParser.cpp.ll index dbf0e80c43f..2def361e5b7 100644 --- a/bench/llvm/optimized/AsmParser.cpp.ll +++ b/bench/llvm/optimized/AsmParser.cpp.ll @@ -12109,7 +12109,7 @@ define internal fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_19AsmParser26enabledG %17 = getelementptr inbounds nuw i8, ptr %16, i64 1777 %18 = load i8, ptr %17, align 1 %19 = trunc i8 %18 to i1 - br i1 %19, label %20, label %98 + br i1 %19, label %20, label %94 20: ; preds = %1 %21 = load ptr, ptr %0, align 8 @@ -12119,7 +12119,7 @@ define internal fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_19AsmParser26enabledG %25 = getelementptr inbounds nuw i8, ptr %24, i64 1780 %26 = load i32, ptr %25, align 4 %27 = icmp eq i32 %26, 0 - br i1 %27, label %28, label %98 + br i1 %27, label %28, label %94 28: ; preds = %20 %29 = getelementptr inbounds i8, ptr %0, i64 528 @@ -12268,20 +12268,15 @@ _ZN4llvm9MCContext19getMCDwarfLineTableEj.exit: ; preds = %65, %.critedge.i.i %90 = getelementptr inbounds i8, ptr %89, i64 688 %91 = load ptr, ptr %90, align 8 call void %91(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected") align 8 %2, ptr noundef nonnull align 8 dereferenceable(288) %77, i32 noundef 0, ptr %83, i64 %84, ptr noundef nonnull byval(%"class.llvm::StringRef") align 8 %3, ptr noundef nonnull byval(%"class.std::optional.285") align 8 %4, ptr noundef nonnull byval(%"class.std::optional.292") align 8 %88, i32 noundef 0) #28 - %92 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %93 = load i8, ptr %92, align 8 - %94 = trunc i8 %93 to i1 - %95 = xor i1 %94, true - call void @llvm.assume(i1 %95) - %96 = load i32, ptr %2, align 8 + %92 = load i32, ptr %2, align 8 call void @llvm.lifetime.end.p0(i64 17, ptr nonnull %4) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) - %97 = getelementptr inbounds nuw i8, ptr %73, i64 1780 - store i32 %96, ptr %97, align 4 - br label %98 + %93 = getelementptr inbounds nuw i8, ptr %73, i64 1780 + store i32 %92, ptr %93, align 4 + br label %94 -98: ; preds = %20, %_ZN4llvm9MCContext19getMCDwarfLineTableEj.exit, %1 +94: ; preds = %20, %_ZN4llvm9MCContext19getMCDwarfLineTableEj.exit, %1 ret i1 %19 } @@ -22499,7 +22494,7 @@ _ZN4llvm11SmallStringILj256EED2Ev.exit: ; preds = %114, %_ZN4llvm11raw %116 = call noundef zeroext i1 @_ZNK4llvm15SmallVectorBaseIjE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %115) #28 %117 = xor i1 %116, true %brmerge = or i1 %41, %117 - br i1 %brmerge, label %232, label %118 + br i1 %brmerge, label %228, label %118 118: ; preds = %_ZN4llvm11SmallStringILj256EED2Ev.exit %119 = call fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_19AsmParser26enabledGenDwarfForAssemblyEv(ptr noundef nonnull align 8 dereferenceable(928) %0) @@ -22586,7 +22581,7 @@ _ZNK4llvm9SetVectorIPNS_9MCSectionENS_11SmallVectorIS2_Lj0EEENS_8DenseSetIS2_NS_ %173 = getelementptr inbounds i8, ptr %0, i64 488 %174 = load i64, ptr %173, align 8 %175 = icmp eq i64 %174, 0 - br i1 %175, label %207, label %176 + br i1 %175, label %203, label %176 176: ; preds = %172 %177 = getelementptr inbounds nuw i8, ptr %0, i64 480 @@ -22611,73 +22606,68 @@ _ZNK4llvm9SetVectorIPNS_9MCSectionENS_11SmallVectorIS2_Lj0EEENS_8DenseSetIS2_NS_ %183 = getelementptr inbounds i8, ptr %182, i64 688 %184 = load ptr, ptr %183, align 8 call void %184(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected") align 8 %7, ptr noundef nonnull align 8 dereferenceable(288) %181, i32 noundef 0, ptr null, i64 0, ptr noundef nonnull byval(%"class.llvm::StringRef") align 8 %8, ptr noundef nonnull byval(%"class.std::optional.285") align 8 %10, ptr noundef nonnull byval(%"class.std::optional.292") align 8 %9, i32 noundef 0) #28 - %185 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %186 = load i8, ptr %185, align 8 - %187 = trunc i8 %186 to i1 - %188 = xor i1 %187, true - call void @llvm.assume(i1 %188) - %189 = load i32, ptr %7, align 8 + %185 = load i32, ptr %7, align 8 call void @llvm.lifetime.end.p0(i64 17, ptr nonnull %10) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) - %190 = load ptr, ptr %0, align 8 - %191 = getelementptr inbounds i8, ptr %190, i64 48 + %186 = load ptr, ptr %0, align 8 + %187 = getelementptr inbounds i8, ptr %186, i64 48 + %188 = load ptr, ptr %187, align 8 + %189 = call noundef nonnull align 8 dereferenceable(2432) ptr %188(ptr noundef nonnull align 8 dereferenceable(928) %0) #28 + %190 = getelementptr inbounds nuw i8, ptr %189, i64 1780 + store i32 %185, ptr %190, align 4 + %191 = getelementptr inbounds nuw i8, ptr %0, i64 248 %192 = load ptr, ptr %191, align 8 - %193 = call noundef nonnull align 8 dereferenceable(2432) ptr %192(ptr noundef nonnull align 8 dereferenceable(928) %0) #28 - %194 = getelementptr inbounds nuw i8, ptr %193, i64 1780 - store i32 %189, ptr %194, align 4 - %195 = getelementptr inbounds nuw i8, ptr %0, i64 248 - %196 = load ptr, ptr %195, align 8 - %197 = getelementptr inbounds nuw i8, ptr %0, i64 504 - %.sroa.01.0.copyload = load ptr, ptr %197, align 8 - %198 = getelementptr inbounds nuw i8, ptr %0, i64 512 - %199 = load i32, ptr %198, align 8 - %200 = call i64 @_ZNK4llvm9SourceMgr16getLineAndColumnENS_5SMLocEj(ptr noundef nonnull align 8 dereferenceable(64) %196, ptr %.sroa.01.0.copyload, i32 noundef %199) #28 - %.sroa.01.0.extract.trunc.i43 = trunc i64 %200 to i32 - %201 = getelementptr inbounds nuw i8, ptr %0, i64 496 - %202 = load i64, ptr %201, align 8 - %203 = trunc i64 %202 to i32 - %204 = xor i32 %.sroa.01.0.extract.trunc.i43, -1 - %205 = add i32 %204, %.027 - %206 = add i32 %205, %203 - br label %207 - -207: ; preds = %176, %172 - %.1 = phi i32 [ %.027, %172 ], [ %206, %176 ] + %193 = getelementptr inbounds nuw i8, ptr %0, i64 504 + %.sroa.01.0.copyload = load ptr, ptr %193, align 8 + %194 = getelementptr inbounds nuw i8, ptr %0, i64 512 + %195 = load i32, ptr %194, align 8 + %196 = call i64 @_ZNK4llvm9SourceMgr16getLineAndColumnENS_5SMLocEj(ptr noundef nonnull align 8 dereferenceable(64) %192, ptr %.sroa.01.0.copyload, i32 noundef %195) #28 + %.sroa.01.0.extract.trunc.i43 = trunc i64 %196 to i32 + %197 = getelementptr inbounds nuw i8, ptr %0, i64 496 + %198 = load i64, ptr %197, align 8 + %199 = trunc i64 %198 to i32 + %200 = xor i32 %.sroa.01.0.extract.trunc.i43, -1 + %201 = add i32 %200, %.027 + %202 = add i32 %201, %199 + br label %203 + +203: ; preds = %176, %172 + %.1 = phi i32 [ %.027, %172 ], [ %202, %176 ] + %204 = load ptr, ptr %0, align 8 + %205 = getelementptr inbounds i8, ptr %204, i64 56 + %206 = load ptr, ptr %205, align 8 + %207 = call noundef nonnull align 8 dereferenceable(288) ptr %206(ptr noundef nonnull align 8 dereferenceable(928) %0) #28 %208 = load ptr, ptr %0, align 8 - %209 = getelementptr inbounds i8, ptr %208, i64 56 + %209 = getelementptr inbounds i8, ptr %208, i64 48 %210 = load ptr, ptr %209, align 8 - %211 = call noundef nonnull align 8 dereferenceable(288) ptr %210(ptr noundef nonnull align 8 dereferenceable(928) %0) #28 - %212 = load ptr, ptr %0, align 8 - %213 = getelementptr inbounds i8, ptr %212, i64 48 - %214 = load ptr, ptr %213, align 8 - %215 = call noundef nonnull align 8 dereferenceable(2432) ptr %214(ptr noundef nonnull align 8 dereferenceable(928) %0) #28 - %216 = getelementptr inbounds nuw i8, ptr %215, i64 1780 - %217 = load i32, ptr %216, align 4 + %211 = call noundef nonnull align 8 dereferenceable(2432) ptr %210(ptr noundef nonnull align 8 dereferenceable(928) %0) #28 + %212 = getelementptr inbounds nuw i8, ptr %211, i64 1780 + %213 = load i32, ptr %212, align 4 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %20, i8 0, i64 16, i1 false) - %218 = load ptr, ptr %211, align 8 - %219 = getelementptr inbounds i8, ptr %218, i64 720 - %220 = load ptr, ptr %219, align 8 - call void %220(ptr noundef nonnull align 8 dereferenceable(288) %211, i32 noundef %217, i32 noundef %.1, i32 noundef 0, i32 noundef 1, i32 noundef 0, i32 noundef 0, ptr noundef nonnull byval(%"class.llvm::StringRef") align 8 %20) #28 + %214 = load ptr, ptr %207, align 8 + %215 = getelementptr inbounds i8, ptr %214, i64 720 + %216 = load ptr, ptr %215, align 8 + call void %216(ptr noundef nonnull align 8 dereferenceable(288) %207, i32 noundef %213, i32 noundef %.1, i32 noundef 0, i32 noundef 1, i32 noundef 0, i32 noundef 0, ptr noundef nonnull byval(%"class.llvm::StringRef") align 8 %20) #28 br label %.critedge -.critedge: ; preds = %.lr.ph.i.i.i.i.i.i, %120, %207, %118 - %221 = load ptr, ptr %25, align 8 - %222 = getelementptr inbounds nuw i8, ptr %1, i64 80 - %223 = getelementptr inbounds nuw i8, ptr %0, i64 232 - %224 = load ptr, ptr %223, align 8 - %225 = getelementptr inbounds nuw i8, ptr %221, i64 64 - %226 = load i8, ptr %225, align 8 - %227 = trunc i8 %226 to i1 - %228 = load ptr, ptr %221, align 8 - %229 = getelementptr inbounds i8, ptr %228, i64 80 - %230 = load ptr, ptr %229, align 8 - %231 = call noundef zeroext i1 %230(ptr noundef nonnull align 8 dereferenceable(304) %221, ptr %5, ptr noundef nonnull align 4 dereferenceable(4) %222, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(288) %224, ptr noundef nonnull align 8 dereferenceable(8) %21, i1 noundef zeroext %227) #28 - br label %232 - -232: ; preds = %.critedge, %_ZN4llvm11SmallStringILj256EED2Ev.exit - %.0 = phi i1 [ true, %_ZN4llvm11SmallStringILj256EED2Ev.exit ], [ %231, %.critedge ] +.critedge: ; preds = %.lr.ph.i.i.i.i.i.i, %120, %203, %118 + %217 = load ptr, ptr %25, align 8 + %218 = getelementptr inbounds nuw i8, ptr %1, i64 80 + %219 = getelementptr inbounds nuw i8, ptr %0, i64 232 + %220 = load ptr, ptr %219, align 8 + %221 = getelementptr inbounds nuw i8, ptr %217, i64 64 + %222 = load i8, ptr %221, align 8 + %223 = trunc i8 %222 to i1 + %224 = load ptr, ptr %217, align 8 + %225 = getelementptr inbounds i8, ptr %224, i64 80 + %226 = load ptr, ptr %225, align 8 + %227 = call noundef zeroext i1 %226(ptr noundef nonnull align 8 dereferenceable(304) %217, ptr %5, ptr noundef nonnull align 4 dereferenceable(4) %218, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(288) %220, ptr noundef nonnull align 8 dereferenceable(8) %21, i1 noundef zeroext %223) #28 + br label %228 + +228: ; preds = %.critedge, %_ZN4llvm11SmallStringILj256EED2Ev.exit + %.0 = phi i1 [ true, %_ZN4llvm11SmallStringILj256EED2Ev.exit ], [ %227, %.critedge ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #28 ret i1 %.0 } diff --git a/bench/llvm/optimized/COFFObjectFile.cpp.ll b/bench/llvm/optimized/COFFObjectFile.cpp.ll index 4f2fbaeff50..8c85ac7c241 100644 --- a/bench/llvm/optimized/COFFObjectFile.cpp.ll +++ b/bench/llvm/optimized/COFFObjectFile.cpp.ll @@ -688,209 +688,204 @@ _ZN4llvm8ExpectedImED2Ev.exit: %3 = alloca %"class.llvm::Expected.7", align 8 %4 = alloca %"class.llvm::Expected.11", align 8 call void @_ZNK4llvm6object10ObjectFile14getSymbolValueENS0_11DataRefImplE(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected.7") align 8 %3, ptr noundef nonnull align 8 dereferenceable(48) %1, i64 %2) #28 - %5 = getelementptr inbounds nuw i8, ptr %3, i64 8 - %6 = load i8, ptr %5, align 8 - %7 = trunc i8 %6 to i1 - %8 = xor i1 %7, true - call void @llvm.assume(i1 %8) - %9 = load i64, ptr %3, align 8 - %10 = getelementptr inbounds nuw i8, ptr %1, i64 96 - %11 = load ptr, ptr %10, align 8 - %.not.i = icmp eq ptr %11, null + %5 = load i64, ptr %3, align 8 + %6 = getelementptr inbounds nuw i8, ptr %1, i64 96 + %7 = load ptr, ptr %6, align 8 + %.not.i = icmp eq ptr %7, null br i1 %.not.i, label %_ZNK4llvm6object14COFFObjectFile13getCOFFSymbolERKNS0_11DataRefImplE.exit.thread, label %_ZNK4llvm6object14COFFObjectFile13getCOFFSymbolERKNS0_11DataRefImplE.exit _ZNK4llvm6object14COFFObjectFile13getCOFFSymbolERKNS0_11DataRefImplE.exit.thread: ; preds = %_ZN4llvm8ExpectedImED2Ev.exit - %12 = getelementptr inbounds nuw i8, ptr %1, i64 104 - %13 = load ptr, ptr %12, align 8 - %14 = icmp ne ptr %13, null - call void @llvm.assume(i1 %14) - %15 = inttoptr i64 %2 to ptr - %16 = getelementptr inbounds nuw i8, ptr %15, i64 12 - call void @llvm.assume(i1 true) [ "align"(ptr %16, i64 1) ] - %.0.copyload.i.i.i4.i = load i32, ptr %16, align 1 + %8 = getelementptr inbounds nuw i8, ptr %1, i64 104 + %9 = load ptr, ptr %8, align 8 + %10 = icmp ne ptr %9, null + call void @llvm.assume(i1 %10) + %11 = inttoptr i64 %2 to ptr + %12 = getelementptr inbounds nuw i8, ptr %11, i64 12 + call void @llvm.assume(i1 true) [ "align"(ptr %12, i64 1) ] + %.0.copyload.i.i.i4.i = load i32, ptr %12, align 1 br label %_ZNK4llvm6object13COFFSymbolRef16getSectionNumberEv.exit _ZNK4llvm6object14COFFObjectFile13getCOFFSymbolERKNS0_11DataRefImplE.exit: ; preds = %_ZN4llvm8ExpectedImED2Ev.exit - %17 = inttoptr i64 %2 to ptr + %13 = inttoptr i64 %2 to ptr %.not.i2 = icmp ne i64 %2, 0 call void @llvm.assume(i1 %.not.i2) - %18 = getelementptr inbounds nuw i8, ptr %17, i64 12 - call void @llvm.assume(i1 true) [ "align"(ptr %18, i64 1) ] - %.0.copyload.i.i.i.i = load i16, ptr %18, align 1 - %19 = icmp ult i16 %.0.copyload.i.i.i.i, -256 - call void @llvm.assume(i1 true) [ "align"(ptr %18, i64 1) ] - br i1 %19, label %20, label %22 + %14 = getelementptr inbounds nuw i8, ptr %13, i64 12 + call void @llvm.assume(i1 true) [ "align"(ptr %14, i64 1) ] + %.0.copyload.i.i.i.i = load i16, ptr %14, align 1 + %15 = icmp ult i16 %.0.copyload.i.i.i.i, -256 + call void @llvm.assume(i1 true) [ "align"(ptr %14, i64 1) ] + br i1 %15, label %16, label %18 -20: ; preds = %_ZNK4llvm6object14COFFObjectFile13getCOFFSymbolERKNS0_11DataRefImplE.exit - %21 = zext i16 %.0.copyload.i.i.i.i to i32 +16: ; preds = %_ZNK4llvm6object14COFFObjectFile13getCOFFSymbolERKNS0_11DataRefImplE.exit + %17 = zext i16 %.0.copyload.i.i.i.i to i32 br label %_ZNK4llvm6object13COFFSymbolRef16getSectionNumberEv.exit -22: ; preds = %_ZNK4llvm6object14COFFObjectFile13getCOFFSymbolERKNS0_11DataRefImplE.exit - %23 = sext i16 %.0.copyload.i.i.i.i to i32 +18: ; preds = %_ZNK4llvm6object14COFFObjectFile13getCOFFSymbolERKNS0_11DataRefImplE.exit + %19 = sext i16 %.0.copyload.i.i.i.i to i32 br label %_ZNK4llvm6object13COFFSymbolRef16getSectionNumberEv.exit -_ZNK4llvm6object13COFFSymbolRef16getSectionNumberEv.exit: ; preds = %20, %22, %_ZNK4llvm6object14COFFObjectFile13getCOFFSymbolERKNS0_11DataRefImplE.exit.thread - %.pn.i.i.i = phi ptr [ %17, %20 ], [ %17, %22 ], [ %15, %_ZNK4llvm6object14COFFObjectFile13getCOFFSymbolERKNS0_11DataRefImplE.exit.thread ] - %.sroa.0.0.i29 = phi ptr [ %17, %20 ], [ %17, %22 ], [ null, %_ZNK4llvm6object14COFFObjectFile13getCOFFSymbolERKNS0_11DataRefImplE.exit.thread ] - %.sroa.3.0.i28 = phi ptr [ null, %20 ], [ null, %22 ], [ %15, %_ZNK4llvm6object14COFFObjectFile13getCOFFSymbolERKNS0_11DataRefImplE.exit.thread ] - %.0.i = phi i32 [ %21, %20 ], [ %23, %22 ], [ %.0.copyload.i.i.i4.i, %_ZNK4llvm6object14COFFObjectFile13getCOFFSymbolERKNS0_11DataRefImplE.exit.thread ] - %24 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i29, i64 16 - %25 = getelementptr inbounds nuw i8, ptr %.sroa.3.0.i28, i64 18 - %.in.i.i.i.i = select i1 %.not.i, ptr %25, ptr %24 - %26 = load i8, ptr %.in.i.i.i.i, align 1 - switch i8 %26, label %_ZNK4llvm6object13COFFSymbolRef8isCommonEv.exit.thread [ - i8 2, label %27 +_ZNK4llvm6object13COFFSymbolRef16getSectionNumberEv.exit: ; preds = %16, %18, %_ZNK4llvm6object14COFFObjectFile13getCOFFSymbolERKNS0_11DataRefImplE.exit.thread + %.pn.i.i.i = phi ptr [ %13, %16 ], [ %13, %18 ], [ %11, %_ZNK4llvm6object14COFFObjectFile13getCOFFSymbolERKNS0_11DataRefImplE.exit.thread ] + %.sroa.0.0.i29 = phi ptr [ %13, %16 ], [ %13, %18 ], [ null, %_ZNK4llvm6object14COFFObjectFile13getCOFFSymbolERKNS0_11DataRefImplE.exit.thread ] + %.sroa.3.0.i28 = phi ptr [ null, %16 ], [ null, %18 ], [ %11, %_ZNK4llvm6object14COFFObjectFile13getCOFFSymbolERKNS0_11DataRefImplE.exit.thread ] + %.0.i = phi i32 [ %17, %16 ], [ %19, %18 ], [ %.0.copyload.i.i.i4.i, %_ZNK4llvm6object14COFFObjectFile13getCOFFSymbolERKNS0_11DataRefImplE.exit.thread ] + %20 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i29, i64 16 + %21 = getelementptr inbounds nuw i8, ptr %.sroa.3.0.i28, i64 18 + %.in.i.i.i.i = select i1 %.not.i, ptr %21, ptr %20 + %22 = load i8, ptr %.in.i.i.i.i, align 1 + switch i8 %22, label %_ZNK4llvm6object13COFFSymbolRef8isCommonEv.exit.thread [ + i8 2, label %23 i8 105, label %_ZNK4llvm6object13COFFSymbolRef14isAnyUndefinedEv.exit.thread i8 104, label %.thread ] -27: ; preds = %_ZNK4llvm6object13COFFSymbolRef16getSectionNumberEv.exit - br i1 %.not.i, label %34, label %28 +23: ; preds = %_ZNK4llvm6object13COFFSymbolRef16getSectionNumberEv.exit + br i1 %.not.i, label %30, label %24 -28: ; preds = %27 - %29 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i29, i64 12 - call void @llvm.assume(i1 true) [ "align"(ptr %29, i64 1) ] - %.0.copyload.i.i.i.i.i.i = load i16, ptr %29, align 1 - %30 = icmp ult i16 %.0.copyload.i.i.i.i.i.i, -256 - call void @llvm.assume(i1 true) [ "align"(ptr %29, i64 1) ] - br i1 %30, label %32, label %.thread.thread.thread +24: ; preds = %23 + %25 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i29, i64 12 + call void @llvm.assume(i1 true) [ "align"(ptr %25, i64 1) ] + %.0.copyload.i.i.i.i.i.i = load i16, ptr %25, align 1 + %26 = icmp ult i16 %.0.copyload.i.i.i.i.i.i, -256 + call void @llvm.assume(i1 true) [ "align"(ptr %25, i64 1) ] + br i1 %26, label %28, label %.thread.thread.thread -.thread.thread.thread: ; preds = %28 - %31 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i29, i64 12 - call void @llvm.assume(i1 true) [ "align"(ptr %31, i64 1) ] - call void @llvm.assume(i1 true) [ "align"(ptr %31, i64 1) ] +.thread.thread.thread: ; preds = %24 + %27 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i29, i64 12 + call void @llvm.assume(i1 true) [ "align"(ptr %27, i64 1) ] + call void @llvm.assume(i1 true) [ "align"(ptr %27, i64 1) ] br label %_ZNK4llvm6object13COFFSymbolRef8isCommonEv.exit.thread -32: ; preds = %28 - %33 = zext i16 %.0.copyload.i.i.i.i.i.i to i32 +28: ; preds = %24 + %29 = zext i16 %.0.copyload.i.i.i.i.i.i to i32 br label %_ZNK4llvm6object13COFFSymbolRef16getSectionNumberEv.exit.i.i -34: ; preds = %27 - %35 = getelementptr inbounds nuw i8, ptr %.sroa.3.0.i28, i64 12 - call void @llvm.assume(i1 true) [ "align"(ptr %35, i64 1) ] - %.0.copyload.i.i.i4.i.i.i = load i32, ptr %35, align 1 +30: ; preds = %23 + %31 = getelementptr inbounds nuw i8, ptr %.sroa.3.0.i28, i64 12 + call void @llvm.assume(i1 true) [ "align"(ptr %31, i64 1) ] + %.0.copyload.i.i.i4.i.i.i = load i32, ptr %31, align 1 br label %_ZNK4llvm6object13COFFSymbolRef16getSectionNumberEv.exit.i.i -_ZNK4llvm6object13COFFSymbolRef16getSectionNumberEv.exit.i.i: ; preds = %34, %32 - %.0.i.i.i = phi i32 [ %33, %32 ], [ %.0.copyload.i.i.i4.i.i.i, %34 ] - %36 = icmp eq i32 %.0.i.i.i, 0 - br i1 %36, label %_ZNK4llvm6object13COFFSymbolRef11isUndefinedEv.exit.i, label %.thread +_ZNK4llvm6object13COFFSymbolRef16getSectionNumberEv.exit.i.i: ; preds = %30, %28 + %.0.i.i.i = phi i32 [ %29, %28 ], [ %.0.copyload.i.i.i4.i.i.i, %30 ] + %32 = icmp eq i32 %.0.i.i.i, 0 + br i1 %32, label %_ZNK4llvm6object13COFFSymbolRef11isUndefinedEv.exit.i, label %.thread _ZNK4llvm6object13COFFSymbolRef11isUndefinedEv.exit.i: ; preds = %_ZNK4llvm6object13COFFSymbolRef16getSectionNumberEv.exit.i.i - %37 = getelementptr inbounds nuw i8, ptr %.pn.i.i.i, i64 8 - call void @llvm.assume(i1 true) [ "align"(ptr %37, i64 1) ] - %.0.copyload.i.i.i.i2.i.i = load i32, ptr %37, align 1 - %38 = icmp eq i32 %.0.copyload.i.i.i.i2.i.i, 0 - br i1 %38, label %_ZNK4llvm6object13COFFSymbolRef14isAnyUndefinedEv.exit.thread, label %.thread + %33 = getelementptr inbounds nuw i8, ptr %.pn.i.i.i, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %33, i64 1) ] + %.0.copyload.i.i.i.i2.i.i = load i32, ptr %33, align 1 + %34 = icmp eq i32 %.0.copyload.i.i.i.i2.i.i, 0 + br i1 %34, label %_ZNK4llvm6object13COFFSymbolRef14isAnyUndefinedEv.exit.thread, label %.thread .thread: ; preds = %_ZNK4llvm6object13COFFSymbolRef16getSectionNumberEv.exit, %_ZNK4llvm6object13COFFSymbolRef16getSectionNumberEv.exit.i.i, %_ZNK4llvm6object13COFFSymbolRef11isUndefinedEv.exit.i - br i1 %.not.i, label %43, label %.thread.thread + br i1 %.not.i, label %39, label %.thread.thread .thread.thread: ; preds = %.thread %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i29, i64 12 %.0.copyload.i.i.i.i.i.pre = load i16, ptr %.phi.trans.insert, align 1 - %39 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i29, i64 12 - call void @llvm.assume(i1 true) [ "align"(ptr %39, i64 1) ] - %40 = icmp ult i16 %.0.copyload.i.i.i.i.i.pre, -256 - call void @llvm.assume(i1 true) [ "align"(ptr %39, i64 1) ] - br i1 %40, label %41, label %_ZNK4llvm6object13COFFSymbolRef8isCommonEv.exit.thread + %35 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i29, i64 12 + call void @llvm.assume(i1 true) [ "align"(ptr %35, i64 1) ] + %36 = icmp ult i16 %.0.copyload.i.i.i.i.i.pre, -256 + call void @llvm.assume(i1 true) [ "align"(ptr %35, i64 1) ] + br i1 %36, label %37, label %_ZNK4llvm6object13COFFSymbolRef8isCommonEv.exit.thread -41: ; preds = %.thread.thread - %42 = zext i16 %.0.copyload.i.i.i.i.i.pre to i32 +37: ; preds = %.thread.thread + %38 = zext i16 %.0.copyload.i.i.i.i.i.pre to i32 br label %_ZNK4llvm6object13COFFSymbolRef16getSectionNumberEv.exit.i -43: ; preds = %.thread - %44 = getelementptr inbounds nuw i8, ptr %.sroa.3.0.i28, i64 12 - call void @llvm.assume(i1 true) [ "align"(ptr %44, i64 1) ] - %.0.copyload.i.i.i4.i.i = load i32, ptr %44, align 1 +39: ; preds = %.thread + %40 = getelementptr inbounds nuw i8, ptr %.sroa.3.0.i28, i64 12 + call void @llvm.assume(i1 true) [ "align"(ptr %40, i64 1) ] + %.0.copyload.i.i.i4.i.i = load i32, ptr %40, align 1 br label %_ZNK4llvm6object13COFFSymbolRef16getSectionNumberEv.exit.i -_ZNK4llvm6object13COFFSymbolRef16getSectionNumberEv.exit.i: ; preds = %43, %41 - %.0.i.i = phi i32 [ %42, %41 ], [ %.0.copyload.i.i.i4.i.i, %43 ] - %45 = icmp eq i32 %.0.i.i, 0 - br i1 %45, label %_ZNK4llvm6object13COFFSymbolRef8isCommonEv.exit, label %_ZNK4llvm6object13COFFSymbolRef8isCommonEv.exit.thread +_ZNK4llvm6object13COFFSymbolRef16getSectionNumberEv.exit.i: ; preds = %39, %37 + %.0.i.i = phi i32 [ %38, %37 ], [ %.0.copyload.i.i.i4.i.i, %39 ] + %41 = icmp eq i32 %.0.i.i, 0 + br i1 %41, label %_ZNK4llvm6object13COFFSymbolRef8isCommonEv.exit, label %_ZNK4llvm6object13COFFSymbolRef8isCommonEv.exit.thread _ZNK4llvm6object13COFFSymbolRef8isCommonEv.exit: ; preds = %_ZNK4llvm6object13COFFSymbolRef16getSectionNumberEv.exit.i - %46 = getelementptr inbounds nuw i8, ptr %.pn.i.i.i, i64 8 - call void @llvm.assume(i1 true) [ "align"(ptr %46, i64 1) ] - %.0.copyload.i.i.i.i4.i = load i32, ptr %46, align 1 - %47 = icmp ne i32 %.0.copyload.i.i.i.i4.i, 0 - %48 = icmp slt i32 %.0.i, 1 - %or.cond = select i1 %47, i1 true, i1 %48 - br i1 %or.cond, label %_ZNK4llvm6object13COFFSymbolRef14isAnyUndefinedEv.exit.thread, label %52 + %42 = getelementptr inbounds nuw i8, ptr %.pn.i.i.i, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %42, i64 1) ] + %.0.copyload.i.i.i.i4.i = load i32, ptr %42, align 1 + %43 = icmp ne i32 %.0.copyload.i.i.i.i4.i, 0 + %44 = icmp slt i32 %.0.i, 1 + %or.cond = select i1 %43, i1 true, i1 %44 + br i1 %or.cond, label %_ZNK4llvm6object13COFFSymbolRef14isAnyUndefinedEv.exit.thread, label %48 _ZNK4llvm6object13COFFSymbolRef8isCommonEv.exit.thread: ; preds = %.thread.thread.thread, %_ZNK4llvm6object13COFFSymbolRef16getSectionNumberEv.exit, %.thread.thread, %_ZNK4llvm6object13COFFSymbolRef16getSectionNumberEv.exit.i %.old = icmp slt i32 %.0.i, 1 - br i1 %.old, label %_ZNK4llvm6object13COFFSymbolRef14isAnyUndefinedEv.exit.thread, label %52 + br i1 %.old, label %_ZNK4llvm6object13COFFSymbolRef14isAnyUndefinedEv.exit.thread, label %48 _ZNK4llvm6object13COFFSymbolRef14isAnyUndefinedEv.exit.thread: ; preds = %_ZNK4llvm6object13COFFSymbolRef16getSectionNumberEv.exit, %_ZNK4llvm6object13COFFSymbolRef11isUndefinedEv.exit.i, %_ZNK4llvm6object13COFFSymbolRef8isCommonEv.exit.thread, %_ZNK4llvm6object13COFFSymbolRef8isCommonEv.exit - %49 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %50 = load i8, ptr %49, align 8 - %51 = and i8 %50, -2 - store i8 %51, ptr %49, align 8 - store i64 %9, ptr %0, align 8 + %45 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %46 = load i8, ptr %45, align 8 + %47 = and i8 %46, -2 + store i8 %47, ptr %45, align 8 + store i64 %5, ptr %0, align 8 br label %_ZN4llvm8ExpectedIPKNS_6object12coff_sectionEED2Ev.exit -52: ; preds = %_ZNK4llvm6object13COFFSymbolRef8isCommonEv.exit, %_ZNK4llvm6object13COFFSymbolRef8isCommonEv.exit.thread +48: ; preds = %_ZNK4llvm6object13COFFSymbolRef8isCommonEv.exit, %_ZNK4llvm6object13COFFSymbolRef8isCommonEv.exit.thread call void @_ZNK4llvm6object14COFFObjectFile10getSectionEi(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected.11") align 8 %4, ptr noundef nonnull align 8 dereferenceable(232) %1, i32 noundef %.0.i) - %53 = getelementptr inbounds nuw i8, ptr %4, i64 8 - %54 = load i8, ptr %53, align 8 - %55 = trunc i8 %54 to i1 - br i1 %55, label %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i10, label %56 - -56: ; preds = %52 - %57 = load ptr, ptr %4, align 8 - %58 = getelementptr inbounds nuw i8, ptr %57, i64 12 - call void @llvm.assume(i1 true) [ "align"(ptr %58, i64 1) ] - %.0.copyload.i.i.i = load i32, ptr %58, align 1 - %59 = zext i32 %.0.copyload.i.i.i to i64 - %60 = add i64 %9, %59 - %61 = getelementptr inbounds nuw i8, ptr %1, i64 64 - %62 = load ptr, ptr %61, align 8 - %.not.i4 = icmp eq ptr %62, null - br i1 %.not.i4, label %66, label %63 + %49 = getelementptr inbounds nuw i8, ptr %4, i64 8 + %50 = load i8, ptr %49, align 8 + %51 = trunc i8 %50 to i1 + br i1 %51, label %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i10, label %52 -63: ; preds = %56 - %64 = getelementptr inbounds nuw i8, ptr %62, i64 28 - call void @llvm.assume(i1 true) [ "align"(ptr %64, i64 1) ] - %.0.copyload.i.i.i.i5 = load i32, ptr %64, align 1 - %65 = zext i32 %.0.copyload.i.i.i.i5 to i64 - br label %71 +52: ; preds = %48 + %53 = load ptr, ptr %4, align 8 + %54 = getelementptr inbounds nuw i8, ptr %53, i64 12 + call void @llvm.assume(i1 true) [ "align"(ptr %54, i64 1) ] + %.0.copyload.i.i.i = load i32, ptr %54, align 1 + %55 = zext i32 %.0.copyload.i.i.i to i64 + %56 = add i64 %5, %55 + %57 = getelementptr inbounds nuw i8, ptr %1, i64 64 + %58 = load ptr, ptr %57, align 8 + %.not.i4 = icmp eq ptr %58, null + br i1 %.not.i4, label %62, label %59 -66: ; preds = %56 - %67 = getelementptr inbounds nuw i8, ptr %1, i64 72 - %68 = load ptr, ptr %67, align 8 - %.not3.i = icmp eq ptr %68, null - br i1 %.not3.i, label %71, label %69 +59: ; preds = %52 + %60 = getelementptr inbounds nuw i8, ptr %58, i64 28 + call void @llvm.assume(i1 true) [ "align"(ptr %60, i64 1) ] + %.0.copyload.i.i.i.i5 = load i32, ptr %60, align 1 + %61 = zext i32 %.0.copyload.i.i.i.i5 to i64 + br label %67 -69: ; preds = %66 - %70 = getelementptr inbounds nuw i8, ptr %68, i64 24 - call void @llvm.assume(i1 true) [ "align"(ptr %70, i64 1) ] - %.0.copyload.i.i.i4.i7 = load i64, ptr %70, align 1 - br label %71 +62: ; preds = %52 + %63 = getelementptr inbounds nuw i8, ptr %1, i64 72 + %64 = load ptr, ptr %63, align 8 + %.not3.i = icmp eq ptr %64, null + br i1 %.not3.i, label %67, label %65 -71: ; preds = %69, %66, %63 - %.0.i6 = phi i64 [ %65, %63 ], [ %.0.copyload.i.i.i4.i7, %69 ], [ 0, %66 ] - %72 = add i64 %60, %.0.i6 - %73 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %74 = load i8, ptr %73, align 8 - %75 = and i8 %74, -2 - store i8 %75, ptr %73, align 8 - %storemerge = inttoptr i64 %72 to ptr +65: ; preds = %62 + %66 = getelementptr inbounds nuw i8, ptr %64, i64 24 + call void @llvm.assume(i1 true) [ "align"(ptr %66, i64 1) ] + %.0.copyload.i.i.i4.i7 = load i64, ptr %66, align 1 + br label %67 + +67: ; preds = %65, %62, %59 + %.0.i6 = phi i64 [ %61, %59 ], [ %.0.copyload.i.i.i4.i7, %65 ], [ 0, %62 ] + %68 = add i64 %56, %.0.i6 + %69 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %70 = load i8, ptr %69, align 8 + %71 = and i8 %70, -2 + store i8 %71, ptr %69, align 8 + %storemerge = inttoptr i64 %68 to ptr store ptr %storemerge, ptr %0, align 8 br label %_ZN4llvm8ExpectedIPKNS_6object12coff_sectionEED2Ev.exit -_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i10: ; preds = %52 - %76 = load i64, ptr %4, align 8, !noalias !14 - %77 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %78 = load i8, ptr %77, align 8 - %79 = or i8 %78, 1 - store i8 %79, ptr %77, align 8 - %storemerge38 = inttoptr i64 %76 to ptr +_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i10: ; preds = %48 + %72 = load i64, ptr %4, align 8, !noalias !14 + %73 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %74 = load i8, ptr %73, align 8 + %75 = or i8 %74, 1 + store i8 %75, ptr %73, align 8 + %storemerge38 = inttoptr i64 %72 to ptr store ptr %storemerge38, ptr %0, align 8 br label %_ZN4llvm8ExpectedIPKNS_6object12coff_sectionEED2Ev.exit -_ZN4llvm8ExpectedIPKNS_6object12coff_sectionEED2Ev.exit: ; preds = %71, %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i10, %_ZNK4llvm6object13COFFSymbolRef14isAnyUndefinedEv.exit.thread +_ZN4llvm8ExpectedIPKNS_6object12coff_sectionEED2Ev.exit: ; preds = %67, %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i10, %_ZNK4llvm6object13COFFSymbolRef14isAnyUndefinedEv.exit.thread ret void } diff --git a/bench/llvm/optimized/DwarfCompileUnit.cpp.ll b/bench/llvm/optimized/DwarfCompileUnit.cpp.ll index 5b8406d3f44..731ee53450d 100644 --- a/bench/llvm/optimized/DwarfCompileUnit.cpp.ll +++ b/bench/llvm/optimized/DwarfCompileUnit.cpp.ll @@ -1003,7 +1003,7 @@ define dso_local noundef i32 @_ZN4llvm16DwarfCompileUnit19getOrCreateSourceIDEPK %20 = load i32, ptr %19, align 8 %21 = select i1 %18, i32 0, i32 %20 %.not = icmp eq ptr %1, null - br i1 %.not, label %22, label %34 + br i1 %.not, label %22, label %30 22: ; preds = %2 %23 = load ptr, ptr %11, align 8 @@ -1024,120 +1024,115 @@ define dso_local noundef i32 @_ZN4llvm16DwarfCompileUnit19getOrCreateSourceIDEPK %27 = getelementptr inbounds i8, ptr %26, i64 688 %28 = load ptr, ptr %27, align 8 call void %28(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected") align 8 %6, ptr noundef nonnull align 8 dereferenceable(288) %25, i32 noundef 0, ptr nonnull @.str.3, i64 0, ptr noundef nonnull byval(%"class.llvm::StringRef") align 8 %7, ptr noundef nonnull byval(%"class.std::optional") align 8 %9, ptr noundef nonnull byval(%"class.std::optional.314") align 8 %8, i32 noundef %21) #23 - %29 = getelementptr inbounds nuw i8, ptr %6, i64 8 - %30 = load i8, ptr %29, align 8 - %31 = trunc i8 %30 to i1 - %32 = xor i1 %31, true - call void @llvm.assume(i1 %32) - %33 = load i32, ptr %6, align 8 + %29 = load i32, ptr %6, align 8 call void @llvm.lifetime.end.p0(i64 17, ptr nonnull %9) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) - br label %92 + br label %84 -34: ; preds = %2 - %35 = getelementptr inbounds nuw i8, ptr %0, i64 656 - %36 = load ptr, ptr %35, align 8 - %.not13 = icmp eq ptr %36, %1 - br i1 %.not13, label %._crit_edge, label %37 +30: ; preds = %2 + %31 = getelementptr inbounds nuw i8, ptr %0, i64 656 + %32 = load ptr, ptr %31, align 8 + %.not13 = icmp eq ptr %32, %1 + br i1 %.not13, label %._crit_edge, label %33 -._crit_edge: ; preds = %34 +._crit_edge: ; preds = %30 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %0, i64 664 %.pre = load i32, ptr %.phi.trans.insert, align 8 - br label %92 + br label %84 -37: ; preds = %34 - store ptr %1, ptr %35, align 8 - %38 = load ptr, ptr %11, align 8 - %39 = getelementptr inbounds nuw i8, ptr %38, i64 80 - %40 = load ptr, ptr %39, align 8 - %41 = getelementptr inbounds i8, ptr %1, i64 -16 - %42 = load i64, ptr %41, align 8 - %43 = and i64 %42, 2 - %.not.i.i.i.i.i = icmp eq i64 %43, 0 - br i1 %.not.i.i.i.i.i, label %48, label %44 +33: ; preds = %30 + store ptr %1, ptr %31, align 8 + %34 = load ptr, ptr %11, align 8 + %35 = getelementptr inbounds nuw i8, ptr %34, i64 80 + %36 = load ptr, ptr %35, align 8 + %37 = getelementptr inbounds i8, ptr %1, i64 -16 + %38 = load i64, ptr %37, align 8 + %39 = and i64 %38, 2 + %.not.i.i.i.i.i = icmp eq i64 %39, 0 + br i1 %.not.i.i.i.i.i, label %44, label %40 -44: ; preds = %37 - %45 = getelementptr inbounds i8, ptr %1, i64 -32 - %46 = load ptr, ptr %45, align 8 - %47 = tail call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %45) #23 +40: ; preds = %33 + %41 = getelementptr inbounds i8, ptr %1, i64 -32 + %42 = load ptr, ptr %41, align 8 + %43 = tail call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %41) #23 br label %_ZNK4llvm6DINode12getOperandAsINS_8MDStringEEEPT_j.exit.i.i -48: ; preds = %37 - %49 = lshr i64 %42, 2 - %50 = and i64 %49, 15 - %51 = sub nsw i64 0, %50 - %52 = getelementptr inbounds %"class.llvm::MDOperand", ptr %41, i64 %51 +44: ; preds = %33 + %45 = lshr i64 %38, 2 + %46 = and i64 %45, 15 + %47 = sub nsw i64 0, %46 + %48 = getelementptr inbounds %"class.llvm::MDOperand", ptr %37, i64 %47 br label %_ZNK4llvm6DINode12getOperandAsINS_8MDStringEEEPT_j.exit.i.i -_ZNK4llvm6DINode12getOperandAsINS_8MDStringEEEPT_j.exit.i.i: ; preds = %48, %44 - %.sroa.0.0.i.i.i.i.i = phi ptr [ %52, %48 ], [ %46, %44 ] - %53 = getelementptr inbounds i8, ptr %.sroa.0.0.i.i.i.i.i, i64 8 - %54 = load ptr, ptr %53, align 8 - %.not.i.i = icmp eq ptr %54, null - br i1 %.not.i.i, label %_ZNK4llvm6DIFile12getDirectoryEv.exit, label %55 +_ZNK4llvm6DINode12getOperandAsINS_8MDStringEEEPT_j.exit.i.i: ; preds = %44, %40 + %.sroa.0.0.i.i.i.i.i = phi ptr [ %48, %44 ], [ %42, %40 ] + %49 = getelementptr inbounds i8, ptr %.sroa.0.0.i.i.i.i.i, i64 8 + %50 = load ptr, ptr %49, align 8 + %.not.i.i = icmp eq ptr %50, null + br i1 %.not.i.i, label %_ZNK4llvm6DIFile12getDirectoryEv.exit, label %51 -55: ; preds = %_ZNK4llvm6DINode12getOperandAsINS_8MDStringEEEPT_j.exit.i.i - %56 = tail call { ptr, i64 } @_ZNK4llvm8MDString9getStringEv(ptr noundef nonnull align 8 dereferenceable(16) %54) #23 - %57 = extractvalue { ptr, i64 } %56, 0 - %58 = extractvalue { ptr, i64 } %56, 1 +51: ; preds = %_ZNK4llvm6DINode12getOperandAsINS_8MDStringEEEPT_j.exit.i.i + %52 = tail call { ptr, i64 } @_ZNK4llvm8MDString9getStringEv(ptr noundef nonnull align 8 dereferenceable(16) %50) #23 + %53 = extractvalue { ptr, i64 } %52, 0 + %54 = extractvalue { ptr, i64 } %52, 1 br label %_ZNK4llvm6DIFile12getDirectoryEv.exit -_ZNK4llvm6DIFile12getDirectoryEv.exit: ; preds = %_ZNK4llvm6DINode12getOperandAsINS_8MDStringEEEPT_j.exit.i.i, %55 - %.sroa.0.0.i.i = phi ptr [ %57, %55 ], [ null, %_ZNK4llvm6DINode12getOperandAsINS_8MDStringEEEPT_j.exit.i.i ] - %.sroa.4.0.i.i = phi i64 [ %58, %55 ], [ 0, %_ZNK4llvm6DINode12getOperandAsINS_8MDStringEEEPT_j.exit.i.i ] - %59 = load i64, ptr %41, align 8 - %60 = and i64 %59, 2 - %.not.i.i.i.i.i14 = icmp eq i64 %60, 0 - br i1 %.not.i.i.i.i.i14, label %65, label %61 +_ZNK4llvm6DIFile12getDirectoryEv.exit: ; preds = %_ZNK4llvm6DINode12getOperandAsINS_8MDStringEEEPT_j.exit.i.i, %51 + %.sroa.0.0.i.i = phi ptr [ %53, %51 ], [ null, %_ZNK4llvm6DINode12getOperandAsINS_8MDStringEEEPT_j.exit.i.i ] + %.sroa.4.0.i.i = phi i64 [ %54, %51 ], [ 0, %_ZNK4llvm6DINode12getOperandAsINS_8MDStringEEEPT_j.exit.i.i ] + %55 = load i64, ptr %37, align 8 + %56 = and i64 %55, 2 + %.not.i.i.i.i.i14 = icmp eq i64 %56, 0 + br i1 %.not.i.i.i.i.i14, label %61, label %57 -61: ; preds = %_ZNK4llvm6DIFile12getDirectoryEv.exit - %62 = getelementptr inbounds i8, ptr %1, i64 -32 - %63 = load ptr, ptr %62, align 8 - %64 = tail call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %62) #23 +57: ; preds = %_ZNK4llvm6DIFile12getDirectoryEv.exit + %58 = getelementptr inbounds i8, ptr %1, i64 -32 + %59 = load ptr, ptr %58, align 8 + %60 = tail call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %58) #23 br label %_ZNK4llvm6DINode12getOperandAsINS_8MDStringEEEPT_j.exit.i.i15 -65: ; preds = %_ZNK4llvm6DIFile12getDirectoryEv.exit - %66 = lshr i64 %59, 2 - %67 = and i64 %66, 15 - %68 = sub nsw i64 0, %67 - %69 = getelementptr inbounds %"class.llvm::MDOperand", ptr %41, i64 %68 +61: ; preds = %_ZNK4llvm6DIFile12getDirectoryEv.exit + %62 = lshr i64 %55, 2 + %63 = and i64 %62, 15 + %64 = sub nsw i64 0, %63 + %65 = getelementptr inbounds %"class.llvm::MDOperand", ptr %37, i64 %64 br label %_ZNK4llvm6DINode12getOperandAsINS_8MDStringEEEPT_j.exit.i.i15 -_ZNK4llvm6DINode12getOperandAsINS_8MDStringEEEPT_j.exit.i.i15: ; preds = %65, %61 - %.sroa.0.0.i.i.i.i.i16 = phi ptr [ %69, %65 ], [ %63, %61 ] - %70 = load ptr, ptr %.sroa.0.0.i.i.i.i.i16, align 8 - %.not.i.i17 = icmp eq ptr %70, null - br i1 %.not.i.i17, label %_ZNK4llvm6DIFile11getFilenameEv.exit, label %71 +_ZNK4llvm6DINode12getOperandAsINS_8MDStringEEEPT_j.exit.i.i15: ; preds = %61, %57 + %.sroa.0.0.i.i.i.i.i16 = phi ptr [ %65, %61 ], [ %59, %57 ] + %66 = load ptr, ptr %.sroa.0.0.i.i.i.i.i16, align 8 + %.not.i.i17 = icmp eq ptr %66, null + br i1 %.not.i.i17, label %_ZNK4llvm6DIFile11getFilenameEv.exit, label %67 -71: ; preds = %_ZNK4llvm6DINode12getOperandAsINS_8MDStringEEEPT_j.exit.i.i15 - %72 = tail call { ptr, i64 } @_ZNK4llvm8MDString9getStringEv(ptr noundef nonnull align 8 dereferenceable(16) %70) #23 - %73 = extractvalue { ptr, i64 } %72, 0 - %74 = extractvalue { ptr, i64 } %72, 1 +67: ; preds = %_ZNK4llvm6DINode12getOperandAsINS_8MDStringEEEPT_j.exit.i.i15 + %68 = tail call { ptr, i64 } @_ZNK4llvm8MDString9getStringEv(ptr noundef nonnull align 8 dereferenceable(16) %66) #23 + %69 = extractvalue { ptr, i64 } %68, 0 + %70 = extractvalue { ptr, i64 } %68, 1 br label %_ZNK4llvm6DIFile11getFilenameEv.exit -_ZNK4llvm6DIFile11getFilenameEv.exit: ; preds = %_ZNK4llvm6DINode12getOperandAsINS_8MDStringEEEPT_j.exit.i.i15, %71 - %.sroa.0.0.i.i18 = phi ptr [ %73, %71 ], [ null, %_ZNK4llvm6DINode12getOperandAsINS_8MDStringEEEPT_j.exit.i.i15 ] - %.sroa.4.0.i.i19 = phi i64 [ %74, %71 ], [ 0, %_ZNK4llvm6DINode12getOperandAsINS_8MDStringEEEPT_j.exit.i.i15 ] - %75 = getelementptr inbounds nuw i8, ptr %0, i64 208 - %76 = load ptr, ptr %75, align 8 - call void @_ZNK4llvm10DwarfDebug13getMD5AsBytesEPKNS_6DIFileE(ptr dead_on_unwind nonnull writable sret(%"class.std::optional") align 1 %10, ptr noundef nonnull align 8 dereferenceable(5828) %76, ptr noundef nonnull %1) #23 - %77 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %78 = load ptr, ptr %77, align 8, !noalias !10 - %.not.i = icmp eq ptr %78, null - br i1 %.not.i, label %_ZNK4llvm6DIFile9getSourceEv.exit, label %79 - -79: ; preds = %_ZNK4llvm6DIFile11getFilenameEv.exit - %80 = call { ptr, i64 } @_ZNK4llvm8MDString9getStringEv(ptr noundef nonnull align 8 dereferenceable(16) %78) #23, !noalias !10 - %81 = extractvalue { ptr, i64 } %80, 0 - %82 = extractvalue { ptr, i64 } %80, 1 +_ZNK4llvm6DIFile11getFilenameEv.exit: ; preds = %_ZNK4llvm6DINode12getOperandAsINS_8MDStringEEEPT_j.exit.i.i15, %67 + %.sroa.0.0.i.i18 = phi ptr [ %69, %67 ], [ null, %_ZNK4llvm6DINode12getOperandAsINS_8MDStringEEEPT_j.exit.i.i15 ] + %.sroa.4.0.i.i19 = phi i64 [ %70, %67 ], [ 0, %_ZNK4llvm6DINode12getOperandAsINS_8MDStringEEEPT_j.exit.i.i15 ] + %71 = getelementptr inbounds nuw i8, ptr %0, i64 208 + %72 = load ptr, ptr %71, align 8 + call void @_ZNK4llvm10DwarfDebug13getMD5AsBytesEPKNS_6DIFileE(ptr dead_on_unwind nonnull writable sret(%"class.std::optional") align 1 %10, ptr noundef nonnull align 8 dereferenceable(5828) %72, ptr noundef nonnull %1) #23 + %73 = getelementptr inbounds nuw i8, ptr %1, i64 40 + %74 = load ptr, ptr %73, align 8, !noalias !10 + %.not.i = icmp eq ptr %74, null + br i1 %.not.i, label %_ZNK4llvm6DIFile9getSourceEv.exit, label %75 + +75: ; preds = %_ZNK4llvm6DIFile11getFilenameEv.exit + %76 = call { ptr, i64 } @_ZNK4llvm8MDString9getStringEv(ptr noundef nonnull align 8 dereferenceable(16) %74) #23, !noalias !10 + %77 = extractvalue { ptr, i64 } %76, 0 + %78 = extractvalue { ptr, i64 } %76, 1 br label %_ZNK4llvm6DIFile9getSourceEv.exit -_ZNK4llvm6DIFile9getSourceEv.exit: ; preds = %_ZNK4llvm6DIFile11getFilenameEv.exit, %79 - %.sroa.2.0 = phi i64 [ undef, %_ZNK4llvm6DIFile11getFilenameEv.exit ], [ %82, %79 ] - %.sroa.0.0 = phi ptr [ undef, %_ZNK4llvm6DIFile11getFilenameEv.exit ], [ %81, %79 ] - %.sink.i = phi i8 [ 0, %_ZNK4llvm6DIFile11getFilenameEv.exit ], [ 1, %79 ] +_ZNK4llvm6DIFile9getSourceEv.exit: ; preds = %_ZNK4llvm6DIFile11getFilenameEv.exit, %75 + %.sroa.2.0 = phi i64 [ undef, %_ZNK4llvm6DIFile11getFilenameEv.exit ], [ %78, %75 ] + %.sroa.0.0 = phi ptr [ undef, %_ZNK4llvm6DIFile11getFilenameEv.exit ], [ %77, %75 ] + %.sink.i = phi i8 [ 0, %_ZNK4llvm6DIFile11getFilenameEv.exit ], [ 1, %75 ] call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) @@ -1149,25 +1144,20 @@ _ZNK4llvm6DIFile9getSourceEv.exit: ; preds = %_ZNK4llvm6DIFile11g store ptr %.sroa.0.0.i.i18, ptr %4, align 8 %.sroa.23.0..sroa_idx.i22 = getelementptr inbounds i8, ptr %4, i64 8 store i64 %.sroa.4.0.i.i19, ptr %.sroa.23.0..sroa_idx.i22, align 8 - %83 = load ptr, ptr %40, align 8 - %84 = getelementptr inbounds i8, ptr %83, i64 688 - %85 = load ptr, ptr %84, align 8 - call void %85(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected") align 8 %3, ptr noundef nonnull align 8 dereferenceable(288) %40, i32 noundef 0, ptr %.sroa.0.0.i.i, i64 %.sroa.4.0.i.i, ptr noundef nonnull byval(%"class.llvm::StringRef") align 8 %4, ptr noundef nonnull byval(%"class.std::optional") align 8 %10, ptr noundef nonnull byval(%"class.std::optional.314") align 8 %5, i32 noundef %21) #23 - %86 = getelementptr inbounds nuw i8, ptr %3, i64 8 - %87 = load i8, ptr %86, align 8 - %88 = trunc i8 %87 to i1 - %89 = xor i1 %88, true - call void @llvm.assume(i1 %89) - %90 = load i32, ptr %3, align 8 + %79 = load ptr, ptr %36, align 8 + %80 = getelementptr inbounds i8, ptr %79, i64 688 + %81 = load ptr, ptr %80, align 8 + call void %81(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected") align 8 %3, ptr noundef nonnull align 8 dereferenceable(288) %36, i32 noundef 0, ptr %.sroa.0.0.i.i, i64 %.sroa.4.0.i.i, ptr noundef nonnull byval(%"class.llvm::StringRef") align 8 %4, ptr noundef nonnull byval(%"class.std::optional") align 8 %10, ptr noundef nonnull byval(%"class.std::optional.314") align 8 %5, i32 noundef %21) #23 + %82 = load i32, ptr %3, align 8 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) - %91 = getelementptr inbounds nuw i8, ptr %0, i64 664 - store i32 %90, ptr %91, align 8 - br label %92 + %83 = getelementptr inbounds nuw i8, ptr %0, i64 664 + store i32 %82, ptr %83, align 8 + br label %84 -92: ; preds = %_ZNK4llvm6DIFile9getSourceEv.exit, %._crit_edge, %22 - %.0 = phi i32 [ %33, %22 ], [ %.pre, %._crit_edge ], [ %90, %_ZNK4llvm6DIFile9getSourceEv.exit ] +84: ; preds = %_ZNK4llvm6DIFile9getSourceEv.exit, %._crit_edge, %22 + %.0 = phi i32 [ %29, %22 ], [ %.pre, %._crit_edge ], [ %82, %_ZNK4llvm6DIFile9getSourceEv.exit ] ret i32 %.0 } diff --git a/bench/llvm/optimized/DwarfDebug.cpp.ll b/bench/llvm/optimized/DwarfDebug.cpp.ll index 95b4f20e496..2904ab0defd 100644 --- a/bench/llvm/optimized/DwarfDebug.cpp.ll +++ b/bench/llvm/optimized/DwarfDebug.cpp.ll @@ -22145,7 +22145,7 @@ _ZNK4llvm11DIMacroFile7getFileEv.exit: ; preds = %54, %58 %65 = load i8, ptr %64, align 1 %66 = trunc i8 %65 to i1 %67 = load ptr, ptr %16, align 8 - br i1 %66, label %68, label %123 + br i1 %66, label %68, label %119 68: ; preds = %_ZNK4llvm11DIMacroFile7getFileEv.exit %69 = call noundef ptr @_ZN4llvm10DwarfDebug15getDwoLineTableERKNS_16DwarfCompileUnitE(ptr noundef nonnull align 8 dereferenceable(5828) %0, ptr noundef nonnull align 8 dereferenceable(696) %2) @@ -22256,69 +22256,64 @@ _ZNK4llvm6DIFile9getSourceEv.exit: ; preds = %_ZNK4llvm6DIFile11g %117 = getelementptr inbounds nuw i8, ptr %69, i64 520 store i8 1, ptr %117, align 8 call void @_ZN4llvm22MCDwarfLineTableHeader10tryGetFileERNS_9StringRefES2_St8optionalINS_3MD59MD5ResultEES3_IS1_Etj(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected") align 8 %9, ptr noundef nonnull align 8 dereferenceable(521) %69, ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull byval(%"class.std::optional.305") align 8 %14, ptr noundef nonnull byval(%"class.std::optional.311") align 8 %10, i16 noundef zeroext %108, i32 noundef 0) #27 - %118 = getelementptr inbounds nuw i8, ptr %9, i64 8 - %119 = load i8, ptr %118, align 8 - %120 = trunc i8 %119 to i1 - %121 = xor i1 %120, true - call void @llvm.assume(i1 %121) - %122 = load i32, ptr %9, align 8 + %118 = load i32, ptr %9, align 8 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) - br label %125 + br label %121 -123: ; preds = %_ZNK4llvm11DIMacroFile7getFileEv.exit - %124 = call noundef i32 @_ZN4llvm16DwarfCompileUnit19getOrCreateSourceIDEPKNS_6DIFileE(ptr noundef nonnull align 8 dereferenceable(696) %2, ptr noundef %63) #27 - br label %125 +119: ; preds = %_ZNK4llvm11DIMacroFile7getFileEv.exit + %120 = call noundef i32 @_ZN4llvm16DwarfCompileUnit19getOrCreateSourceIDEPKNS_6DIFileE(ptr noundef nonnull align 8 dereferenceable(696) %2, ptr noundef %63) #27 + br label %121 -125: ; preds = %123, %_ZNK4llvm6DIFile9getSourceEv.exit - %.sink34 = phi i32 [ %124, %123 ], [ %122, %_ZNK4llvm6DIFile9getSourceEv.exit ] - %126 = zext i32 %.sink34 to i64 - call void @_ZNK4llvm10AsmPrinter11emitULEB128EmPKcj(ptr noundef nonnull align 8 dereferenceable(785) %67, i64 noundef %126, ptr noundef null, i32 noundef 0) #27 - %127 = load i64, ptr %51, align 8 - %128 = and i64 %127, 2 - %.not.i.i.i.i28 = icmp eq i64 %128, 0 - br i1 %.not.i.i.i.i28, label %133, label %129 +121: ; preds = %119, %_ZNK4llvm6DIFile9getSourceEv.exit + %.sink34 = phi i32 [ %120, %119 ], [ %118, %_ZNK4llvm6DIFile9getSourceEv.exit ] + %122 = zext i32 %.sink34 to i64 + call void @_ZNK4llvm10AsmPrinter11emitULEB128EmPKcj(ptr noundef nonnull align 8 dereferenceable(785) %67, i64 noundef %122, ptr noundef null, i32 noundef 0) #27 + %123 = load i64, ptr %51, align 8 + %124 = and i64 %123, 2 + %.not.i.i.i.i28 = icmp eq i64 %124, 0 + br i1 %.not.i.i.i.i28, label %129, label %125 -129: ; preds = %125 - %130 = getelementptr inbounds i8, ptr %1, i64 -32 - %131 = load ptr, ptr %130, align 8 - %132 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %130) #27 +125: ; preds = %121 + %126 = getelementptr inbounds i8, ptr %1, i64 -32 + %127 = load ptr, ptr %126, align 8 + %128 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %126) #27 br label %_ZNK4llvm11DIMacroFile11getElementsEv.exit -133: ; preds = %125 - %134 = lshr i64 %127, 2 - %135 = and i64 %134, 15 - %136 = sub nsw i64 0, %135 - %137 = getelementptr inbounds %"class.llvm::MDOperand", ptr %51, i64 %136 +129: ; preds = %121 + %130 = lshr i64 %123, 2 + %131 = and i64 %130, 15 + %132 = sub nsw i64 0, %131 + %133 = getelementptr inbounds %"class.llvm::MDOperand", ptr %51, i64 %132 br label %_ZNK4llvm11DIMacroFile11getElementsEv.exit -_ZNK4llvm11DIMacroFile11getElementsEv.exit: ; preds = %129, %133 - %.sroa.0.0.i.i.i.i29 = phi ptr [ %137, %133 ], [ %131, %129 ] - %138 = getelementptr inbounds i8, ptr %.sroa.0.0.i.i.i.i29, i64 8 - %139 = load ptr, ptr %138, align 8 - call void @_ZN4llvm10DwarfDebug16handleMacroNodesENS_24MDTupleTypedArrayWrapperINS_11DIMacroNodeEEERNS_16DwarfCompileUnitE(ptr noundef nonnull align 8 dereferenceable(5828) %0, ptr %139, ptr noundef nonnull align 8 dereferenceable(696) %2) - %140 = load ptr, ptr %16, align 8 - %141 = getelementptr inbounds nuw i8, ptr %140, i64 80 - %142 = load ptr, ptr %141, align 8 - %143 = call { ptr, i64 } %5(i32 noundef %4) #27 - %144 = extractvalue { ptr, i64 } %143, 0 - %145 = extractvalue { ptr, i64 } %143, 1 - %146 = getelementptr inbounds nuw i8, ptr %15, i64 32 - store i8 5, ptr %146, align 8 - %147 = getelementptr inbounds nuw i8, ptr %15, i64 33 - store i8 1, ptr %147, align 1 - store ptr %144, ptr %15, align 8 - %148 = getelementptr inbounds nuw i8, ptr %15, i64 8 - store i64 %145, ptr %148, align 8 - %149 = load ptr, ptr %142, align 8 - %150 = getelementptr inbounds i8, ptr %149, i64 120 - %151 = load ptr, ptr %150, align 8 - call void %151(ptr noundef nonnull align 8 dereferenceable(288) %142, ptr noundef nonnull align 8 dereferenceable(34) %15, i1 noundef zeroext true) #27 - %152 = load ptr, ptr %16, align 8 - %153 = zext i32 %4 to i64 - call void @_ZNK4llvm10AsmPrinter11emitULEB128EmPKcj(ptr noundef nonnull align 8 dereferenceable(785) %152, i64 noundef %153, ptr noundef null, i32 noundef 0) #27 +_ZNK4llvm11DIMacroFile11getElementsEv.exit: ; preds = %125, %129 + %.sroa.0.0.i.i.i.i29 = phi ptr [ %133, %129 ], [ %127, %125 ] + %134 = getelementptr inbounds i8, ptr %.sroa.0.0.i.i.i.i29, i64 8 + %135 = load ptr, ptr %134, align 8 + call void @_ZN4llvm10DwarfDebug16handleMacroNodesENS_24MDTupleTypedArrayWrapperINS_11DIMacroNodeEEERNS_16DwarfCompileUnitE(ptr noundef nonnull align 8 dereferenceable(5828) %0, ptr %135, ptr noundef nonnull align 8 dereferenceable(696) %2) + %136 = load ptr, ptr %16, align 8 + %137 = getelementptr inbounds nuw i8, ptr %136, i64 80 + %138 = load ptr, ptr %137, align 8 + %139 = call { ptr, i64 } %5(i32 noundef %4) #27 + %140 = extractvalue { ptr, i64 } %139, 0 + %141 = extractvalue { ptr, i64 } %139, 1 + %142 = getelementptr inbounds nuw i8, ptr %15, i64 32 + store i8 5, ptr %142, align 8 + %143 = getelementptr inbounds nuw i8, ptr %15, i64 33 + store i8 1, ptr %143, align 1 + store ptr %140, ptr %15, align 8 + %144 = getelementptr inbounds nuw i8, ptr %15, i64 8 + store i64 %141, ptr %144, align 8 + %145 = load ptr, ptr %138, align 8 + %146 = getelementptr inbounds i8, ptr %145, i64 120 + %147 = load ptr, ptr %146, align 8 + call void %147(ptr noundef nonnull align 8 dereferenceable(288) %138, ptr noundef nonnull align 8 dereferenceable(34) %15, i1 noundef zeroext true) #27 + %148 = load ptr, ptr %16, align 8 + %149 = zext i32 %4 to i64 + call void @_ZNK4llvm10AsmPrinter11emitULEB128EmPKcj(ptr noundef nonnull align 8 dereferenceable(785) %148, i64 noundef %149, ptr noundef null, i32 noundef 0) #27 ret void } diff --git a/bench/llvm/optimized/DwarfUnit.cpp.ll b/bench/llvm/optimized/DwarfUnit.cpp.ll index e15e65b2362..eaf2e7eac75 100644 --- a/bench/llvm/optimized/DwarfUnit.cpp.ll +++ b/bench/llvm/optimized/DwarfUnit.cpp.ll @@ -1768,7 +1768,7 @@ define dso_local noundef i32 @_ZN4llvm13DwarfTypeUnit19getOrCreateSourceIDEPKNS_ %12 = getelementptr inbounds nuw i8, ptr %0, i64 344 %13 = load ptr, ptr %12, align 8 %14 = tail call noundef i32 @_ZN4llvm16DwarfCompileUnit19getOrCreateSourceIDEPKNS_6DIFileE(ptr noundef nonnull align 8 dereferenceable(696) %13, ptr noundef %1) #19 - br label %101 + br label %97 15: ; preds = %2 %16 = getelementptr inbounds nuw i8, ptr %0, i64 360 @@ -1930,20 +1930,15 @@ _ZNK4llvm6DIFile9getSourceEv.exit: ; preds = %_ZNK4llvm6DIFile11g %95 = getelementptr inbounds nuw i8, ptr %44, i64 520 store i8 1, ptr %95, align 8 call void @_ZN4llvm22MCDwarfLineTableHeader10tryGetFileERNS_9StringRefES2_St8optionalINS_3MD59MD5ResultEES3_IS1_Etj(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected") align 8 %5, ptr noundef nonnull align 8 dereferenceable(521) %44, ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull byval(%"class.std::optional.395") align 8 %8, ptr noundef nonnull byval(%"class.std::optional.401") align 8 %6, i16 noundef zeroext %86, i32 noundef 0) #19 - %96 = getelementptr inbounds nuw i8, ptr %5, i64 8 - %97 = load i8, ptr %96, align 8 - %98 = trunc i8 %97 to i1 - %99 = xor i1 %98, true - call void @llvm.assume(i1 %99) - %100 = load i32, ptr %5, align 8 + %96 = load i32, ptr %5, align 8 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) - br label %101 + br label %97 -101: ; preds = %_ZNK4llvm6DIFile9getSourceEv.exit, %11 - %.0 = phi i32 [ %100, %_ZNK4llvm6DIFile9getSourceEv.exit ], [ %14, %11 ] +97: ; preds = %_ZNK4llvm6DIFile9getSourceEv.exit, %11 + %.0 = phi i32 [ %96, %_ZNK4llvm6DIFile9getSourceEv.exit ], [ %14, %11 ] ret i32 %.0 } diff --git a/bench/llvm/optimized/InputFile.cpp.ll b/bench/llvm/optimized/InputFile.cpp.ll index e02e29c6f0d..53c0fdc89e0 100644 --- a/bench/llvm/optimized/InputFile.cpp.ll +++ b/bench/llvm/optimized/InputFile.cpp.ll @@ -4266,16 +4266,15 @@ define dso_local noundef nonnull align 8 dereferenceable(248) ptr @_ZN4llvm3pdb9 %.0.copyload.i.i.i.i.i.i.i.i = load i64, ptr %19, align 8 %20 = and i64 %.0.copyload.i.i.i.i.i.i.i.i, 6 %21 = icmp eq i64 %20, 0 - br i1 %21, label %22, label %79 + br i1 %21, label %22, label %75 22: ; preds = %18 %23 = select i1 %17, ptr %14, ptr %9 %24 = and i64 %.0.copyload.i.i.i.i.i.i.i.i, -8 %25 = inttoptr i64 %24 to ptr - %26 = getelementptr inbounds nuw i8, ptr %3, i64 8 - br i1 %17, label %.critedge, label %27 + br i1 %17, label %.critedge, label %26 -27: ; preds = %22 +26: ; preds = %22 call void @_ZN4llvm3pdb7PDBFile15getPDBTpiStreamEv(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected.252") align 8 %3, ptr noundef nonnull align 8 dereferenceable(280) %25) #19 br label %_ZN4llvm8ExpectedIRNS_3pdb9TpiStreamEED2Ev.exit @@ -4283,279 +4282,275 @@ define dso_local noundef nonnull align 8 dereferenceable(248) ptr @_ZN4llvm3pdb9 call void @_ZN4llvm3pdb7PDBFile15getPDBIpiStreamEv(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected.252") align 8 %3, ptr noundef nonnull align 8 dereferenceable(280) %25) #19 br label %_ZN4llvm8ExpectedIRNS_3pdb9TpiStreamEED2Ev.exit -_ZN4llvm8ExpectedIRNS_3pdb9TpiStreamEED2Ev.exit: ; preds = %.critedge, %27 - %28 = load i8, ptr %26, align 8 - %29 = trunc i8 %28 to i1 - %30 = xor i1 %29, true - call void @llvm.assume(i1 %30) - %31 = load ptr, ptr %3, align 8 - %32 = getelementptr inbounds nuw i8, ptr %31, i64 80 - %33 = call noundef i32 @_ZNK4llvm3pdb9TpiStream17getNumTypeRecordsEv(ptr noundef nonnull align 8 dereferenceable(360) %31) #19 - store i32 %33, ptr %4, align 4 - call void @_ZNK4llvm3pdb9TpiStream19getTypeIndexOffsetsEv(ptr dead_on_unwind nonnull writable sret(%"class.llvm::FixedStreamArray.251") align 8 %5, ptr noundef nonnull align 8 dereferenceable(360) %31) #19 - call void @_ZSt11make_uniqueIN4llvm8codeview24LazyRandomTypeCollectionEJRKNS0_14VarStreamArrayINS1_8CVRecordINS1_12TypeLeafKindEEENS0_23VarStreamArrayExtractorIS6_EEEERjRNS0_16FixedStreamArrayINS1_15TypeIndexOffsetEEEEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.21") align 8 %6, ptr noundef nonnull align 8 dereferenceable(56) %32, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 8 dereferenceable(48) %5) - %34 = load ptr, ptr %6, align 8 +_ZN4llvm8ExpectedIRNS_3pdb9TpiStreamEED2Ev.exit: ; preds = %.critedge, %26 + %27 = load ptr, ptr %3, align 8 + %28 = getelementptr inbounds nuw i8, ptr %27, i64 80 + %29 = call noundef i32 @_ZNK4llvm3pdb9TpiStream17getNumTypeRecordsEv(ptr noundef nonnull align 8 dereferenceable(360) %27) #19 + store i32 %29, ptr %4, align 4 + call void @_ZNK4llvm3pdb9TpiStream19getTypeIndexOffsetsEv(ptr dead_on_unwind nonnull writable sret(%"class.llvm::FixedStreamArray.251") align 8 %5, ptr noundef nonnull align 8 dereferenceable(360) %27) #19 + call void @_ZSt11make_uniqueIN4llvm8codeview24LazyRandomTypeCollectionEJRKNS0_14VarStreamArrayINS1_8CVRecordINS1_12TypeLeafKindEEENS0_23VarStreamArrayExtractorIS6_EEEERjRNS0_16FixedStreamArrayINS1_15TypeIndexOffsetEEEEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.21") align 8 %6, ptr noundef nonnull align 8 dereferenceable(56) %28, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 8 dereferenceable(48) %5) + %30 = load ptr, ptr %6, align 8 store ptr null, ptr %6, align 8 - %35 = load ptr, ptr %23, align 8 - store ptr %34, ptr %23, align 8 - %.not.i.i.i.i = icmp eq ptr %35, null + %31 = load ptr, ptr %23, align 8 + store ptr %30, ptr %23, align 8 + %.not.i.i.i.i = icmp eq ptr %31, null br i1 %.not.i.i.i.i, label %_ZNSt10unique_ptrIN4llvm8codeview24LazyRandomTypeCollectionESt14default_deleteIS2_EED2Ev.exit, label %_ZNSt10unique_ptrIN4llvm8codeview24LazyRandomTypeCollectionESt14default_deleteIS2_EEaSEOS5_.exit _ZNSt10unique_ptrIN4llvm8codeview24LazyRandomTypeCollectionESt14default_deleteIS2_EEaSEOS5_.exit: ; preds = %_ZN4llvm8ExpectedIRNS_3pdb9TpiStreamEED2Ev.exit - %36 = load ptr, ptr %35, align 8 - %37 = getelementptr inbounds i8, ptr %36, i64 8 - %38 = load ptr, ptr %37, align 8 - call void %38(ptr noundef nonnull align 8 dereferenceable(248) %35) #19 + %32 = load ptr, ptr %31, align 8 + %33 = getelementptr inbounds i8, ptr %32, i64 8 + %34 = load ptr, ptr %33, align 8 + call void %34(ptr noundef nonnull align 8 dereferenceable(248) %31) #19 %.pr = load ptr, ptr %6, align 8 %.not.i = icmp eq ptr %.pr, null br i1 %.not.i, label %_ZNSt10unique_ptrIN4llvm8codeview24LazyRandomTypeCollectionESt14default_deleteIS2_EED2Ev.exit, label %_ZNKSt14default_deleteIN4llvm8codeview24LazyRandomTypeCollectionEEclEPS2_.exit.i _ZNKSt14default_deleteIN4llvm8codeview24LazyRandomTypeCollectionEEclEPS2_.exit.i: ; preds = %_ZNSt10unique_ptrIN4llvm8codeview24LazyRandomTypeCollectionESt14default_deleteIS2_EEaSEOS5_.exit - %39 = load ptr, ptr %.pr, align 8 - %40 = getelementptr inbounds i8, ptr %39, i64 8 - %41 = load ptr, ptr %40, align 8 - call void %41(ptr noundef nonnull align 8 dereferenceable(248) %.pr) #19 + %35 = load ptr, ptr %.pr, align 8 + %36 = getelementptr inbounds i8, ptr %35, i64 8 + %37 = load ptr, ptr %36, align 8 + call void %37(ptr noundef nonnull align 8 dereferenceable(248) %.pr) #19 br label %_ZNSt10unique_ptrIN4llvm8codeview24LazyRandomTypeCollectionESt14default_deleteIS2_EED2Ev.exit _ZNSt10unique_ptrIN4llvm8codeview24LazyRandomTypeCollectionESt14default_deleteIS2_EED2Ev.exit: ; preds = %_ZN4llvm8ExpectedIRNS_3pdb9TpiStreamEED2Ev.exit, %_ZNSt10unique_ptrIN4llvm8codeview24LazyRandomTypeCollectionESt14default_deleteIS2_EEaSEOS5_.exit, %_ZNKSt14default_deleteIN4llvm8codeview24LazyRandomTypeCollectionEEclEPS2_.exit.i store ptr null, ptr %6, align 8 - %42 = load ptr, ptr %23, align 8 - %43 = getelementptr inbounds nuw i8, ptr %5, i64 8 - %44 = load ptr, ptr %43, align 8 - %.not.i.i.i.i.i.i = icmp eq ptr %44, null - br i1 %.not.i.i.i.i.i.i, label %_ZN4llvm16FixedStreamArrayINS_8codeview15TypeIndexOffsetEED2Ev.exit, label %45 - -45: ; preds = %_ZNSt10unique_ptrIN4llvm8codeview24LazyRandomTypeCollectionESt14default_deleteIS2_EED2Ev.exit - %46 = getelementptr inbounds nuw i8, ptr %44, i64 8 - %47 = load atomic i64, ptr %46 acquire, align 8 - %48 = icmp eq i64 %47, 4294967297 - %49 = trunc i64 %47 to i32 - br i1 %48, label %50, label %55 - -50: ; preds = %45 - store i32 0, ptr %46, align 8 - %51 = getelementptr inbounds nuw i8, ptr %44, i64 12 - store i32 0, ptr %51, align 4 - %52 = load ptr, ptr %44, align 8 - %53 = getelementptr inbounds i8, ptr %52, i64 16 - %54 = load ptr, ptr %53, align 8 - call void %54(ptr noundef nonnull align 8 dereferenceable(16) %44) #19 + %38 = load ptr, ptr %23, align 8 + %39 = getelementptr inbounds nuw i8, ptr %5, i64 8 + %40 = load ptr, ptr %39, align 8 + %.not.i.i.i.i.i.i = icmp eq ptr %40, null + br i1 %.not.i.i.i.i.i.i, label %_ZN4llvm16FixedStreamArrayINS_8codeview15TypeIndexOffsetEED2Ev.exit, label %41 + +41: ; preds = %_ZNSt10unique_ptrIN4llvm8codeview24LazyRandomTypeCollectionESt14default_deleteIS2_EED2Ev.exit + %42 = getelementptr inbounds nuw i8, ptr %40, i64 8 + %43 = load atomic i64, ptr %42 acquire, align 8 + %44 = icmp eq i64 %43, 4294967297 + %45 = trunc i64 %43 to i32 + br i1 %44, label %46, label %51 + +46: ; preds = %41 + store i32 0, ptr %42, align 8 + %47 = getelementptr inbounds nuw i8, ptr %40, i64 12 + store i32 0, ptr %47, align 4 + %48 = load ptr, ptr %40, align 8 + %49 = getelementptr inbounds i8, ptr %48, i64 16 + %50 = load ptr, ptr %49, align 8 + call void %50(ptr noundef nonnull align 8 dereferenceable(16) %40) #19 br label %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv.exit.sink.split.i.i.i.i.i.i.i -55: ; preds = %45 - %56 = load i8, ptr @__libc_single_threaded, align 1 - %.not.i.i.i.i.i.i.i = icmp eq i8 %56, 0 - br i1 %.not.i.i.i.i.i.i.i, label %59, label %57 +51: ; preds = %41 + %52 = load i8, ptr @__libc_single_threaded, align 1 + %.not.i.i.i.i.i.i.i = icmp eq i8 %52, 0 + br i1 %.not.i.i.i.i.i.i.i, label %55, label %53 + +53: ; preds = %51 + %54 = add nsw i32 %45, -1 + store i32 %54, ptr %42, align 4 + br label %57 + +55: ; preds = %51 + %56 = atomicrmw volatile add ptr %42, i32 -1 acq_rel, align 4 + br label %57 + +57: ; preds = %55, %53 + %.0.i.i.i.i.i.i.i = phi i32 [ %45, %53 ], [ %56, %55 ] + %58 = icmp eq i32 %.0.i.i.i.i.i.i.i, 1 + br i1 %58, label %59, label %_ZN4llvm16FixedStreamArrayINS_8codeview15TypeIndexOffsetEED2Ev.exit + +59: ; preds = %57 + %60 = load ptr, ptr %40, align 8 + %61 = getelementptr inbounds i8, ptr %60, i64 16 + %62 = load ptr, ptr %61, align 8 + call void %62(ptr noundef nonnull align 8 dereferenceable(16) %40) #19 + %63 = getelementptr inbounds nuw i8, ptr %40, i64 12 + %64 = load i8, ptr @__libc_single_threaded, align 1 + %.not.i.i.i.i.i.i.i.i.i = icmp eq i8 %64, 0 + br i1 %.not.i.i.i.i.i.i.i.i.i, label %68, label %65 -57: ; preds = %55 - %58 = add nsw i32 %49, -1 - store i32 %58, ptr %46, align 4 - br label %61 - -59: ; preds = %55 - %60 = atomicrmw volatile add ptr %46, i32 -1 acq_rel, align 4 - br label %61 - -61: ; preds = %59, %57 - %.0.i.i.i.i.i.i.i = phi i32 [ %49, %57 ], [ %60, %59 ] - %62 = icmp eq i32 %.0.i.i.i.i.i.i.i, 1 - br i1 %62, label %63, label %_ZN4llvm16FixedStreamArrayINS_8codeview15TypeIndexOffsetEED2Ev.exit - -63: ; preds = %61 - %64 = load ptr, ptr %44, align 8 - %65 = getelementptr inbounds i8, ptr %64, i64 16 - %66 = load ptr, ptr %65, align 8 - call void %66(ptr noundef nonnull align 8 dereferenceable(16) %44) #19 - %67 = getelementptr inbounds nuw i8, ptr %44, i64 12 - %68 = load i8, ptr @__libc_single_threaded, align 1 - %.not.i.i.i.i.i.i.i.i.i = icmp eq i8 %68, 0 - br i1 %.not.i.i.i.i.i.i.i.i.i, label %72, label %69 - -69: ; preds = %63 - %70 = load i32, ptr %67, align 4 - %71 = add nsw i32 %70, -1 - store i32 %71, ptr %67, align 4 - br label %74 +65: ; preds = %59 + %66 = load i32, ptr %63, align 4 + %67 = add nsw i32 %66, -1 + store i32 %67, ptr %63, align 4 + br label %70 -72: ; preds = %63 - %73 = atomicrmw volatile add ptr %67, i32 -1 acq_rel, align 4 - br label %74 +68: ; preds = %59 + %69 = atomicrmw volatile add ptr %63, i32 -1 acq_rel, align 4 + br label %70 -74: ; preds = %72, %69 - %.0.i.i.i.i.i.i.i.i.i = phi i32 [ %70, %69 ], [ %73, %72 ] - %75 = icmp eq i32 %.0.i.i.i.i.i.i.i.i.i, 1 - br i1 %75, label %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv.exit.sink.split.i.i.i.i.i.i.i, label %_ZN4llvm16FixedStreamArrayINS_8codeview15TypeIndexOffsetEED2Ev.exit +70: ; preds = %68, %65 + %.0.i.i.i.i.i.i.i.i.i = phi i32 [ %66, %65 ], [ %69, %68 ] + %71 = icmp eq i32 %.0.i.i.i.i.i.i.i.i.i, 1 + br i1 %71, label %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv.exit.sink.split.i.i.i.i.i.i.i, label %_ZN4llvm16FixedStreamArrayINS_8codeview15TypeIndexOffsetEED2Ev.exit -_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv.exit.sink.split.i.i.i.i.i.i.i: ; preds = %74, %50 - %76 = load ptr, ptr %44, align 8 - %77 = getelementptr inbounds i8, ptr %76, i64 24 - %78 = load ptr, ptr %77, align 8 - call void %78(ptr noundef nonnull align 8 dereferenceable(16) %44) #19 +_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv.exit.sink.split.i.i.i.i.i.i.i: ; preds = %70, %46 + %72 = load ptr, ptr %40, align 8 + %73 = getelementptr inbounds i8, ptr %72, i64 24 + %74 = load ptr, ptr %73, align 8 + call void %74(ptr noundef nonnull align 8 dereferenceable(16) %40) #19 br label %_ZN4llvm16FixedStreamArrayINS_8codeview15TypeIndexOffsetEED2Ev.exit -79: ; preds = %18 - %80 = and i64 %.0.copyload.i.i.i.i.i.i.i.i, -8 - %81 = inttoptr i64 %80 to ptr - %82 = load ptr, ptr %81, align 8, !noalias !217 - %83 = getelementptr inbounds i8, ptr %82, i64 352 - %84 = load ptr, ptr %83, align 8, !noalias !217 - %85 = tail call { i64, ptr } %84(ptr noundef nonnull align 8 dereferenceable(48) %81) #19, !noalias !217 - %86 = extractvalue { i64, ptr } %85, 0 - %87 = extractvalue { i64, ptr } %85, 1 - %88 = load ptr, ptr %81, align 8, !noalias !217 - %89 = getelementptr inbounds i8, ptr %88, i64 360 - %90 = load ptr, ptr %89, align 8, !noalias !217 - %91 = tail call { i64, ptr } %90(ptr noundef nonnull align 8 dereferenceable(48) %81) #19, !noalias !217 - %92 = extractvalue { i64, ptr } %91, 0 - %93 = extractvalue { i64, ptr } %91, 1 - store i64 %86, ptr %7, align 8 - %94 = getelementptr inbounds nuw i8, ptr %7, i64 8 - store ptr %87, ptr %94, align 8 - %95 = icmp ne ptr %87, %93 - %.not.i.i.i.i3563 = icmp ne i64 %86, %92 - %.not2.i64 = select i1 %95, i1 true, i1 %.not.i.i.i.i3563 +75: ; preds = %18 + %76 = and i64 %.0.copyload.i.i.i.i.i.i.i.i, -8 + %77 = inttoptr i64 %76 to ptr + %78 = load ptr, ptr %77, align 8, !noalias !217 + %79 = getelementptr inbounds i8, ptr %78, i64 352 + %80 = load ptr, ptr %79, align 8, !noalias !217 + %81 = tail call { i64, ptr } %80(ptr noundef nonnull align 8 dereferenceable(48) %77) #19, !noalias !217 + %82 = extractvalue { i64, ptr } %81, 0 + %83 = extractvalue { i64, ptr } %81, 1 + %84 = load ptr, ptr %77, align 8, !noalias !217 + %85 = getelementptr inbounds i8, ptr %84, i64 360 + %86 = load ptr, ptr %85, align 8, !noalias !217 + %87 = tail call { i64, ptr } %86(ptr noundef nonnull align 8 dereferenceable(48) %77) #19, !noalias !217 + %88 = extractvalue { i64, ptr } %87, 0 + %89 = extractvalue { i64, ptr } %87, 1 + store i64 %82, ptr %7, align 8 + %90 = getelementptr inbounds nuw i8, ptr %7, i64 8 + store ptr %83, ptr %90, align 8 + %91 = icmp ne ptr %83, %89 + %.not.i.i.i.i3563 = icmp ne i64 %82, %88 + %.not2.i64 = select i1 %91, i1 true, i1 %.not.i.i.i.i3563 br i1 %.not2.i64, label %.lr.ph, label %._crit_edge -.lr.ph: ; preds = %79 - %96 = getelementptr inbounds nuw i8, ptr %8, i64 40 - %97 = getelementptr inbounds nuw i8, ptr %8, i64 52 - %98 = getelementptr inbounds nuw i8, ptr %8, i64 8 - br label %99 - -99: ; preds = %.lr.ph, %143 - %lhsv.i.i.i.i66 = phi i64 [ %86, %.lr.ph ], [ %lhsv.i.i.i.i, %143 ] - %100 = phi ptr [ %87, %.lr.ph ], [ %148, %143 ] - %.165 = phi ptr [ undef, %.lr.ph ], [ %.2, %143 ] - store i8 0, ptr %96, align 8 +.lr.ph: ; preds = %75 + %92 = getelementptr inbounds nuw i8, ptr %8, i64 40 + %93 = getelementptr inbounds nuw i8, ptr %8, i64 52 + %94 = getelementptr inbounds nuw i8, ptr %8, i64 8 + br label %95 + +95: ; preds = %.lr.ph, %139 + %lhsv.i.i.i.i66 = phi i64 [ %82, %.lr.ph ], [ %lhsv.i.i.i.i, %139 ] + %96 = phi ptr [ %83, %.lr.ph ], [ %144, %139 ] + %.165 = phi ptr [ undef, %.lr.ph ], [ %.2, %139 ] + store i8 0, ptr %92, align 8 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %8, i8 0, i64 32, i1 false) - store i32 0, ptr %97, align 4 - %101 = call fastcc noundef zeroext i1 @_ZL15isDebugTSectionN4llvm6object10SectionRefERNS_14VarStreamArrayINS_8codeview8CVRecordINS3_12TypeLeafKindEEENS_23VarStreamArrayExtractorIS6_EEEE(i64 %lhsv.i.i.i.i66, ptr %100, ptr noundef nonnull align 8 dereferenceable(56) %8) - br i1 %101, label %102, label %_ZNSt10unique_ptrIN4llvm8codeview24LazyRandomTypeCollectionESt14default_deleteIS2_EED2Ev.exit41 - -102: ; preds = %99 - %103 = call noalias noundef nonnull dereferenceable(248) ptr @_Znwm(i64 noundef 248) #20, !noalias !220 - call void @_ZN4llvm8codeview24LazyRandomTypeCollectionC1ERKNS_14VarStreamArrayINS0_8CVRecordINS0_12TypeLeafKindEEENS_23VarStreamArrayExtractorIS5_EEEEj(ptr noundef nonnull align 8 dereferenceable(248) %103, ptr noundef nonnull align 8 dereferenceable(56) %8, i32 noundef 100) #19, !noalias !220 - %104 = load ptr, ptr %9, align 8 - store ptr %103, ptr %9, align 8 - %.not.i.i.i.i36 = icmp eq ptr %104, null + store i32 0, ptr %93, align 4 + %97 = call fastcc noundef zeroext i1 @_ZL15isDebugTSectionN4llvm6object10SectionRefERNS_14VarStreamArrayINS_8codeview8CVRecordINS3_12TypeLeafKindEEENS_23VarStreamArrayExtractorIS6_EEEE(i64 %lhsv.i.i.i.i66, ptr %96, ptr noundef nonnull align 8 dereferenceable(56) %8) + br i1 %97, label %98, label %_ZNSt10unique_ptrIN4llvm8codeview24LazyRandomTypeCollectionESt14default_deleteIS2_EED2Ev.exit41 + +98: ; preds = %95 + %99 = call noalias noundef nonnull dereferenceable(248) ptr @_Znwm(i64 noundef 248) #20, !noalias !220 + call void @_ZN4llvm8codeview24LazyRandomTypeCollectionC1ERKNS_14VarStreamArrayINS0_8CVRecordINS0_12TypeLeafKindEEENS_23VarStreamArrayExtractorIS5_EEEEj(ptr noundef nonnull align 8 dereferenceable(248) %99, ptr noundef nonnull align 8 dereferenceable(56) %8, i32 noundef 100) #19, !noalias !220 + %100 = load ptr, ptr %9, align 8 + store ptr %99, ptr %9, align 8 + %.not.i.i.i.i36 = icmp eq ptr %100, null br i1 %.not.i.i.i.i36, label %_ZNSt10unique_ptrIN4llvm8codeview24LazyRandomTypeCollectionESt14default_deleteIS2_EED2Ev.exit41, label %_ZNKSt14default_deleteIN4llvm8codeview24LazyRandomTypeCollectionEEclEPS2_.exit.i.i.i.i37 -_ZNKSt14default_deleteIN4llvm8codeview24LazyRandomTypeCollectionEEclEPS2_.exit.i.i.i.i37: ; preds = %102 - %105 = load ptr, ptr %104, align 8 - %106 = getelementptr inbounds i8, ptr %105, i64 8 - %107 = load ptr, ptr %106, align 8 - call void %107(ptr noundef nonnull align 8 dereferenceable(248) %104) #19 +_ZNKSt14default_deleteIN4llvm8codeview24LazyRandomTypeCollectionEEclEPS2_.exit.i.i.i.i37: ; preds = %98 + %101 = load ptr, ptr %100, align 8 + %102 = getelementptr inbounds i8, ptr %101, i64 8 + %103 = load ptr, ptr %102, align 8 + call void %103(ptr noundef nonnull align 8 dereferenceable(248) %100) #19 %.pre = load ptr, ptr %9, align 8 br label %_ZNSt10unique_ptrIN4llvm8codeview24LazyRandomTypeCollectionESt14default_deleteIS2_EED2Ev.exit41 -_ZNSt10unique_ptrIN4llvm8codeview24LazyRandomTypeCollectionESt14default_deleteIS2_EED2Ev.exit41: ; preds = %102, %_ZNKSt14default_deleteIN4llvm8codeview24LazyRandomTypeCollectionEEclEPS2_.exit.i.i.i.i37, %99 - %.2 = phi ptr [ %.165, %99 ], [ %.pre, %_ZNKSt14default_deleteIN4llvm8codeview24LazyRandomTypeCollectionEEclEPS2_.exit.i.i.i.i37 ], [ %103, %102 ] - %108 = load ptr, ptr %98, align 8 - %.not.i.i.i.i.i.i42 = icmp eq ptr %108, null - br i1 %.not.i.i.i.i.i.i42, label %_ZN4llvm14VarStreamArrayINS_8codeview8CVRecordINS1_12TypeLeafKindEEENS_23VarStreamArrayExtractorIS4_EEED2Ev.exit, label %109 - -109: ; preds = %_ZNSt10unique_ptrIN4llvm8codeview24LazyRandomTypeCollectionESt14default_deleteIS2_EED2Ev.exit41 - %110 = getelementptr inbounds nuw i8, ptr %108, i64 8 - %111 = load atomic i64, ptr %110 acquire, align 8 - %112 = icmp eq i64 %111, 4294967297 - %113 = trunc i64 %111 to i32 - br i1 %112, label %114, label %119 - -114: ; preds = %109 - store i32 0, ptr %110, align 8 - %115 = getelementptr inbounds nuw i8, ptr %108, i64 12 - store i32 0, ptr %115, align 4 - %116 = load ptr, ptr %108, align 8 - %117 = getelementptr inbounds i8, ptr %116, i64 16 - %118 = load ptr, ptr %117, align 8 - call void %118(ptr noundef nonnull align 8 dereferenceable(16) %108) #19 +_ZNSt10unique_ptrIN4llvm8codeview24LazyRandomTypeCollectionESt14default_deleteIS2_EED2Ev.exit41: ; preds = %98, %_ZNKSt14default_deleteIN4llvm8codeview24LazyRandomTypeCollectionEEclEPS2_.exit.i.i.i.i37, %95 + %.2 = phi ptr [ %.165, %95 ], [ %.pre, %_ZNKSt14default_deleteIN4llvm8codeview24LazyRandomTypeCollectionEEclEPS2_.exit.i.i.i.i37 ], [ %99, %98 ] + %104 = load ptr, ptr %94, align 8 + %.not.i.i.i.i.i.i42 = icmp eq ptr %104, null + br i1 %.not.i.i.i.i.i.i42, label %_ZN4llvm14VarStreamArrayINS_8codeview8CVRecordINS1_12TypeLeafKindEEENS_23VarStreamArrayExtractorIS4_EEED2Ev.exit, label %105 + +105: ; preds = %_ZNSt10unique_ptrIN4llvm8codeview24LazyRandomTypeCollectionESt14default_deleteIS2_EED2Ev.exit41 + %106 = getelementptr inbounds nuw i8, ptr %104, i64 8 + %107 = load atomic i64, ptr %106 acquire, align 8 + %108 = icmp eq i64 %107, 4294967297 + %109 = trunc i64 %107 to i32 + br i1 %108, label %110, label %115 + +110: ; preds = %105 + store i32 0, ptr %106, align 8 + %111 = getelementptr inbounds nuw i8, ptr %104, i64 12 + store i32 0, ptr %111, align 4 + %112 = load ptr, ptr %104, align 8 + %113 = getelementptr inbounds i8, ptr %112, i64 16 + %114 = load ptr, ptr %113, align 8 + call void %114(ptr noundef nonnull align 8 dereferenceable(16) %104) #19 br label %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv.exit.sink.split.i.i.i.i.i.i.i47 -119: ; preds = %109 - %120 = load i8, ptr @__libc_single_threaded, align 1 - %.not.i.i.i.i.i.i.i43 = icmp eq i8 %120, 0 - br i1 %.not.i.i.i.i.i.i.i43, label %123, label %121 - -121: ; preds = %119 - %122 = add nsw i32 %113, -1 - store i32 %122, ptr %110, align 4 - br label %125 - -123: ; preds = %119 - %124 = atomicrmw volatile add ptr %110, i32 -1 acq_rel, align 4 - br label %125 - -125: ; preds = %123, %121 - %.0.i.i.i.i.i.i.i44 = phi i32 [ %113, %121 ], [ %124, %123 ] - %126 = icmp eq i32 %.0.i.i.i.i.i.i.i44, 1 - br i1 %126, label %127, label %_ZN4llvm14VarStreamArrayINS_8codeview8CVRecordINS1_12TypeLeafKindEEENS_23VarStreamArrayExtractorIS4_EEED2Ev.exit - -127: ; preds = %125 - %128 = load ptr, ptr %108, align 8 - %129 = getelementptr inbounds i8, ptr %128, i64 16 - %130 = load ptr, ptr %129, align 8 - call void %130(ptr noundef nonnull align 8 dereferenceable(16) %108) #19 - %131 = getelementptr inbounds nuw i8, ptr %108, i64 12 - %132 = load i8, ptr @__libc_single_threaded, align 1 - %.not.i.i.i.i.i.i.i.i.i45 = icmp eq i8 %132, 0 - br i1 %.not.i.i.i.i.i.i.i.i.i45, label %136, label %133 - -133: ; preds = %127 - %134 = load i32, ptr %131, align 4 - %135 = add nsw i32 %134, -1 - store i32 %135, ptr %131, align 4 - br label %138 - -136: ; preds = %127 - %137 = atomicrmw volatile add ptr %131, i32 -1 acq_rel, align 4 - br label %138 - -138: ; preds = %136, %133 - %.0.i.i.i.i.i.i.i.i.i46 = phi i32 [ %134, %133 ], [ %137, %136 ] - %139 = icmp eq i32 %.0.i.i.i.i.i.i.i.i.i46, 1 - br i1 %139, label %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv.exit.sink.split.i.i.i.i.i.i.i47, label %_ZN4llvm14VarStreamArrayINS_8codeview8CVRecordINS1_12TypeLeafKindEEENS_23VarStreamArrayExtractorIS4_EEED2Ev.exit - -_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv.exit.sink.split.i.i.i.i.i.i.i47: ; preds = %138, %114 - %140 = load ptr, ptr %108, align 8 - %141 = getelementptr inbounds i8, ptr %140, i64 24 - %142 = load ptr, ptr %141, align 8 - call void %142(ptr noundef nonnull align 8 dereferenceable(16) %108) #19 +115: ; preds = %105 + %116 = load i8, ptr @__libc_single_threaded, align 1 + %.not.i.i.i.i.i.i.i43 = icmp eq i8 %116, 0 + br i1 %.not.i.i.i.i.i.i.i43, label %119, label %117 + +117: ; preds = %115 + %118 = add nsw i32 %109, -1 + store i32 %118, ptr %106, align 4 + br label %121 + +119: ; preds = %115 + %120 = atomicrmw volatile add ptr %106, i32 -1 acq_rel, align 4 + br label %121 + +121: ; preds = %119, %117 + %.0.i.i.i.i.i.i.i44 = phi i32 [ %109, %117 ], [ %120, %119 ] + %122 = icmp eq i32 %.0.i.i.i.i.i.i.i44, 1 + br i1 %122, label %123, label %_ZN4llvm14VarStreamArrayINS_8codeview8CVRecordINS1_12TypeLeafKindEEENS_23VarStreamArrayExtractorIS4_EEED2Ev.exit + +123: ; preds = %121 + %124 = load ptr, ptr %104, align 8 + %125 = getelementptr inbounds i8, ptr %124, i64 16 + %126 = load ptr, ptr %125, align 8 + call void %126(ptr noundef nonnull align 8 dereferenceable(16) %104) #19 + %127 = getelementptr inbounds nuw i8, ptr %104, i64 12 + %128 = load i8, ptr @__libc_single_threaded, align 1 + %.not.i.i.i.i.i.i.i.i.i45 = icmp eq i8 %128, 0 + br i1 %.not.i.i.i.i.i.i.i.i.i45, label %132, label %129 + +129: ; preds = %123 + %130 = load i32, ptr %127, align 4 + %131 = add nsw i32 %130, -1 + store i32 %131, ptr %127, align 4 + br label %134 + +132: ; preds = %123 + %133 = atomicrmw volatile add ptr %127, i32 -1 acq_rel, align 4 + br label %134 + +134: ; preds = %132, %129 + %.0.i.i.i.i.i.i.i.i.i46 = phi i32 [ %130, %129 ], [ %133, %132 ] + %135 = icmp eq i32 %.0.i.i.i.i.i.i.i.i.i46, 1 + br i1 %135, label %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv.exit.sink.split.i.i.i.i.i.i.i47, label %_ZN4llvm14VarStreamArrayINS_8codeview8CVRecordINS1_12TypeLeafKindEEENS_23VarStreamArrayExtractorIS4_EEED2Ev.exit + +_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv.exit.sink.split.i.i.i.i.i.i.i47: ; preds = %134, %110 + %136 = load ptr, ptr %104, align 8 + %137 = getelementptr inbounds i8, ptr %136, i64 24 + %138 = load ptr, ptr %137, align 8 + call void %138(ptr noundef nonnull align 8 dereferenceable(16) %104) #19 br label %_ZN4llvm14VarStreamArrayINS_8codeview8CVRecordINS1_12TypeLeafKindEEENS_23VarStreamArrayExtractorIS4_EEED2Ev.exit -_ZN4llvm14VarStreamArrayINS_8codeview8CVRecordINS1_12TypeLeafKindEEENS_23VarStreamArrayExtractorIS4_EEED2Ev.exit: ; preds = %_ZNSt10unique_ptrIN4llvm8codeview24LazyRandomTypeCollectionESt14default_deleteIS2_EED2Ev.exit41, %125, %138, %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv.exit.sink.split.i.i.i.i.i.i.i47 - br i1 %101, label %_ZN4llvm16FixedStreamArrayINS_8codeview15TypeIndexOffsetEED2Ev.exit, label %143 - -143: ; preds = %_ZN4llvm14VarStreamArrayINS_8codeview8CVRecordINS1_12TypeLeafKindEEENS_23VarStreamArrayExtractorIS4_EEED2Ev.exit - %144 = load ptr, ptr %94, align 8 - %145 = load ptr, ptr %144, align 8 - %146 = getelementptr inbounds i8, ptr %145, i64 136 - %147 = load ptr, ptr %146, align 8 - call void %147(ptr noundef nonnull align 8 dereferenceable(48) %144, ptr noundef nonnull align 8 dereferenceable(16) %7) #19 - %148 = load ptr, ptr %94, align 8 - %149 = icmp ne ptr %148, %93 +_ZN4llvm14VarStreamArrayINS_8codeview8CVRecordINS1_12TypeLeafKindEEENS_23VarStreamArrayExtractorIS4_EEED2Ev.exit: ; preds = %_ZNSt10unique_ptrIN4llvm8codeview24LazyRandomTypeCollectionESt14default_deleteIS2_EED2Ev.exit41, %121, %134, %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv.exit.sink.split.i.i.i.i.i.i.i47 + br i1 %97, label %_ZN4llvm16FixedStreamArrayINS_8codeview15TypeIndexOffsetEED2Ev.exit, label %139 + +139: ; preds = %_ZN4llvm14VarStreamArrayINS_8codeview8CVRecordINS1_12TypeLeafKindEEENS_23VarStreamArrayExtractorIS4_EEED2Ev.exit + %140 = load ptr, ptr %90, align 8 + %141 = load ptr, ptr %140, align 8 + %142 = getelementptr inbounds i8, ptr %141, i64 136 + %143 = load ptr, ptr %142, align 8 + call void %143(ptr noundef nonnull align 8 dereferenceable(48) %140, ptr noundef nonnull align 8 dereferenceable(16) %7) #19 + %144 = load ptr, ptr %90, align 8 + %145 = icmp ne ptr %144, %89 %lhsv.i.i.i.i = load i64, ptr %7, align 8 - %.not.i.i.i.i35 = icmp ne i64 %lhsv.i.i.i.i, %92 - %.not2.i = select i1 %149, i1 true, i1 %.not.i.i.i.i35 - br i1 %.not2.i, label %99, label %._crit_edge - -._crit_edge: ; preds = %143, %79 - %150 = call noalias noundef nonnull dereferenceable(248) ptr @_Znwm(i64 noundef 248) #20, !noalias !223 - call void @_ZN4llvm8codeview24LazyRandomTypeCollectionC1Ej(ptr noundef nonnull align 8 dereferenceable(248) %150, i32 noundef 100) #19, !noalias !223 - %151 = load ptr, ptr %9, align 8 - store ptr %150, ptr %9, align 8 - %.not.i.i.i.i48 = icmp eq ptr %151, null + %.not.i.i.i.i35 = icmp ne i64 %lhsv.i.i.i.i, %88 + %.not2.i = select i1 %145, i1 true, i1 %.not.i.i.i.i35 + br i1 %.not2.i, label %95, label %._crit_edge + +._crit_edge: ; preds = %139, %75 + %146 = call noalias noundef nonnull dereferenceable(248) ptr @_Znwm(i64 noundef 248) #20, !noalias !223 + call void @_ZN4llvm8codeview24LazyRandomTypeCollectionC1Ej(ptr noundef nonnull align 8 dereferenceable(248) %146, i32 noundef 100) #19, !noalias !223 + %147 = load ptr, ptr %9, align 8 + store ptr %146, ptr %9, align 8 + %.not.i.i.i.i48 = icmp eq ptr %147, null br i1 %.not.i.i.i.i48, label %_ZN4llvm16FixedStreamArrayINS_8codeview15TypeIndexOffsetEED2Ev.exit, label %_ZNKSt14default_deleteIN4llvm8codeview24LazyRandomTypeCollectionEEclEPS2_.exit.i.i.i.i49 _ZNKSt14default_deleteIN4llvm8codeview24LazyRandomTypeCollectionEEclEPS2_.exit.i.i.i.i49: ; preds = %._crit_edge - %152 = load ptr, ptr %151, align 8 - %153 = getelementptr inbounds i8, ptr %152, i64 8 - %154 = load ptr, ptr %153, align 8 - call void %154(ptr noundef nonnull align 8 dereferenceable(248) %151) #19 + %148 = load ptr, ptr %147, align 8 + %149 = getelementptr inbounds i8, ptr %148, i64 8 + %150 = load ptr, ptr %149, align 8 + call void %150(ptr noundef nonnull align 8 dereferenceable(248) %147) #19 %.pre68 = load ptr, ptr %9, align 8 br label %_ZN4llvm16FixedStreamArrayINS_8codeview15TypeIndexOffsetEED2Ev.exit -_ZN4llvm16FixedStreamArrayINS_8codeview15TypeIndexOffsetEED2Ev.exit: ; preds = %_ZN4llvm14VarStreamArrayINS_8codeview8CVRecordINS1_12TypeLeafKindEEENS_23VarStreamArrayExtractorIS4_EEED2Ev.exit, %._crit_edge, %_ZNKSt14default_deleteIN4llvm8codeview24LazyRandomTypeCollectionEEclEPS2_.exit.i.i.i.i49, %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv.exit.sink.split.i.i.i.i.i.i.i, %74, %61, %_ZNSt10unique_ptrIN4llvm8codeview24LazyRandomTypeCollectionESt14default_deleteIS2_EED2Ev.exit, %13, %2 - %.021 = phi ptr [ %10, %2 ], [ %15, %13 ], [ %42, %_ZNSt10unique_ptrIN4llvm8codeview24LazyRandomTypeCollectionESt14default_deleteIS2_EED2Ev.exit ], [ %42, %61 ], [ %42, %74 ], [ %42, %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv.exit.sink.split.i.i.i.i.i.i.i ], [ %.pre68, %_ZNKSt14default_deleteIN4llvm8codeview24LazyRandomTypeCollectionEEclEPS2_.exit.i.i.i.i49 ], [ %150, %._crit_edge ], [ %.2, %_ZN4llvm14VarStreamArrayINS_8codeview8CVRecordINS1_12TypeLeafKindEEENS_23VarStreamArrayExtractorIS4_EEED2Ev.exit ] +_ZN4llvm16FixedStreamArrayINS_8codeview15TypeIndexOffsetEED2Ev.exit: ; preds = %_ZN4llvm14VarStreamArrayINS_8codeview8CVRecordINS1_12TypeLeafKindEEENS_23VarStreamArrayExtractorIS4_EEED2Ev.exit, %._crit_edge, %_ZNKSt14default_deleteIN4llvm8codeview24LazyRandomTypeCollectionEEclEPS2_.exit.i.i.i.i49, %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv.exit.sink.split.i.i.i.i.i.i.i, %70, %57, %_ZNSt10unique_ptrIN4llvm8codeview24LazyRandomTypeCollectionESt14default_deleteIS2_EED2Ev.exit, %13, %2 + %.021 = phi ptr [ %10, %2 ], [ %15, %13 ], [ %38, %_ZNSt10unique_ptrIN4llvm8codeview24LazyRandomTypeCollectionESt14default_deleteIS2_EED2Ev.exit ], [ %38, %57 ], [ %38, %70 ], [ %38, %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv.exit.sink.split.i.i.i.i.i.i.i ], [ %.pre68, %_ZNKSt14default_deleteIN4llvm8codeview24LazyRandomTypeCollectionEEclEPS2_.exit.i.i.i.i49 ], [ %146, %._crit_edge ], [ %.2, %_ZN4llvm14VarStreamArrayINS_8codeview8CVRecordINS1_12TypeLeafKindEEENS_23VarStreamArrayExtractorIS4_EEED2Ev.exit ] ret ptr %.021 } @@ -5063,122 +5058,112 @@ define dso_local noundef zeroext i1 @_ZNK4llvm3pdb19SymbolGroupIteratoreqERKS1_( %.0.copyload.i.i.i.i.i.i.i.i.i = load i64, ptr %8, align 8 %9 = and i64 %.0.copyload.i.i.i.i.i.i.i.i.i, 6 %10 = icmp eq i64 %9, 0 - br i1 %10, label %_ZN4llvm8ExpectedIRNS_3pdb9DbiStreamEED2Ev.exit.i, label %22 + br i1 %10, label %_ZN4llvm8ExpectedIRNS_3pdb9DbiStreamEED2Ev.exit.i, label %18 _ZN4llvm8ExpectedIRNS_3pdb9DbiStreamEED2Ev.exit.i: ; preds = %7 %11 = and i64 %.0.copyload.i.i.i.i.i.i.i.i.i, -8 %12 = inttoptr i64 %11 to ptr call void @_ZN4llvm3pdb7PDBFile15getPDBDbiStreamEv(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected.30") align 8 %4, ptr noundef nonnull align 8 dereferenceable(280) %12) #19 - %13 = getelementptr inbounds nuw i8, ptr %4, i64 8 - %14 = load i8, ptr %13, align 8 - %15 = trunc i8 %14 to i1 - %16 = xor i1 %15, true - call void @llvm.assume(i1 %16) - %17 = load ptr, ptr %4, align 8 - %18 = call noundef nonnull align 8 dereferenceable(352) ptr @_ZNK4llvm3pdb9DbiStream7modulesEv(ptr noundef nonnull align 8 dereferenceable(1224) %17) #19 - %19 = call noundef i32 @_ZNK4llvm3pdb13DbiModuleList14getModuleCountEv(ptr noundef nonnull align 8 dereferenceable(352) %18) #19 - %20 = load i32, ptr %0, align 8 - %21 = icmp eq i32 %20, %19 + %13 = load ptr, ptr %4, align 8 + %14 = call noundef nonnull align 8 dereferenceable(352) ptr @_ZNK4llvm3pdb9DbiStream7modulesEv(ptr noundef nonnull align 8 dereferenceable(1224) %13) #19 + %15 = call noundef i32 @_ZNK4llvm3pdb13DbiModuleList14getModuleCountEv(ptr noundef nonnull align 8 dereferenceable(352) %14) #19 + %16 = load i32, ptr %0, align 8 + %17 = icmp eq i32 %16, %15 br label %_ZNK4llvm3pdb19SymbolGroupIterator5isEndEv.exit -22: ; preds = %7 - %23 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %24 = and i64 %.0.copyload.i.i.i.i.i.i.i.i.i, -8 - %25 = inttoptr i64 %24 to ptr - %26 = load ptr, ptr %25, align 8 - %27 = getelementptr inbounds i8, ptr %26, i64 360 - %28 = load ptr, ptr %27, align 8 - %29 = tail call { i64, ptr } %28(ptr noundef nonnull align 8 dereferenceable(232) %25) #19 - %30 = extractvalue { i64, ptr } %29, 0 - %31 = extractvalue { i64, ptr } %29, 1 - %32 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %33 = load ptr, ptr %32, align 8 - %34 = icmp eq ptr %33, %31 - %lhsv.i.i.i.i = load i64, ptr %23, align 8 - %.not.i.i.i.i = icmp eq i64 %lhsv.i.i.i.i, %30 - %35 = select i1 %34, i1 %.not.i.i.i.i, i1 false +18: ; preds = %7 + %19 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %20 = and i64 %.0.copyload.i.i.i.i.i.i.i.i.i, -8 + %21 = inttoptr i64 %20 to ptr + %22 = load ptr, ptr %21, align 8 + %23 = getelementptr inbounds i8, ptr %22, i64 360 + %24 = load ptr, ptr %23, align 8 + %25 = tail call { i64, ptr } %24(ptr noundef nonnull align 8 dereferenceable(232) %21) #19 + %26 = extractvalue { i64, ptr } %25, 0 + %27 = extractvalue { i64, ptr } %25, 1 + %28 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %29 = load ptr, ptr %28, align 8 + %30 = icmp eq ptr %29, %27 + %lhsv.i.i.i.i = load i64, ptr %19, align 8 + %.not.i.i.i.i = icmp eq i64 %lhsv.i.i.i.i, %26 + %31 = select i1 %30, i1 %.not.i.i.i.i, i1 false br label %_ZNK4llvm3pdb19SymbolGroupIterator5isEndEv.exit -_ZNK4llvm3pdb19SymbolGroupIterator5isEndEv.exit: ; preds = %2, %_ZN4llvm8ExpectedIRNS_3pdb9DbiStreamEED2Ev.exit.i, %22 - %.0.i = phi i1 [ %21, %_ZN4llvm8ExpectedIRNS_3pdb9DbiStreamEED2Ev.exit.i ], [ %35, %22 ], [ true, %2 ] +_ZNK4llvm3pdb19SymbolGroupIterator5isEndEv.exit: ; preds = %2, %_ZN4llvm8ExpectedIRNS_3pdb9DbiStreamEED2Ev.exit.i, %18 + %.0.i = phi i1 [ %17, %_ZN4llvm8ExpectedIRNS_3pdb9DbiStreamEED2Ev.exit.i ], [ %31, %18 ], [ true, %2 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) - %36 = getelementptr inbounds nuw i8, ptr %1, i64 32 - %37 = load ptr, ptr %36, align 8 - %.not.i8 = icmp eq ptr %37, null - br i1 %.not.i8, label %_ZNK4llvm3pdb19SymbolGroupIterator5isEndEv.exit14.thread, label %38 + %32 = getelementptr inbounds nuw i8, ptr %1, i64 32 + %33 = load ptr, ptr %32, align 8 + %.not.i8 = icmp eq ptr %33, null + br i1 %.not.i8, label %_ZNK4llvm3pdb19SymbolGroupIterator5isEndEv.exit14.thread, label %34 _ZNK4llvm3pdb19SymbolGroupIterator5isEndEv.exit14.thread: ; preds = %_ZNK4llvm3pdb19SymbolGroupIterator5isEndEv.exit call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) - br label %67 - -38: ; preds = %_ZNK4llvm3pdb19SymbolGroupIterator5isEndEv.exit - %39 = getelementptr inbounds nuw i8, ptr %37, i64 32 - %.0.copyload.i.i.i.i.i.i.i.i.i9 = load i64, ptr %39, align 8 - %40 = and i64 %.0.copyload.i.i.i.i.i.i.i.i.i9, 6 - %41 = icmp eq i64 %40, 0 - br i1 %41, label %_ZN4llvm8ExpectedIRNS_3pdb9DbiStreamEED2Ev.exit.i13, label %53 - -_ZN4llvm8ExpectedIRNS_3pdb9DbiStreamEED2Ev.exit.i13: ; preds = %38 - %42 = and i64 %.0.copyload.i.i.i.i.i.i.i.i.i9, -8 - %43 = inttoptr i64 %42 to ptr - call void @_ZN4llvm3pdb7PDBFile15getPDBDbiStreamEv(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected.30") align 8 %3, ptr noundef nonnull align 8 dereferenceable(280) %43) #19 - %44 = getelementptr inbounds nuw i8, ptr %3, i64 8 - %45 = load i8, ptr %44, align 8 - %46 = trunc i8 %45 to i1 - %47 = xor i1 %46, true - call void @llvm.assume(i1 %47) - %48 = load ptr, ptr %3, align 8 - %49 = call noundef nonnull align 8 dereferenceable(352) ptr @_ZNK4llvm3pdb9DbiStream7modulesEv(ptr noundef nonnull align 8 dereferenceable(1224) %48) #19 - %50 = call noundef i32 @_ZNK4llvm3pdb13DbiModuleList14getModuleCountEv(ptr noundef nonnull align 8 dereferenceable(352) %49) #19 - %51 = load i32, ptr %1, align 8 - %52 = icmp eq i32 %51, %50 + br label %59 + +34: ; preds = %_ZNK4llvm3pdb19SymbolGroupIterator5isEndEv.exit + %35 = getelementptr inbounds nuw i8, ptr %33, i64 32 + %.0.copyload.i.i.i.i.i.i.i.i.i9 = load i64, ptr %35, align 8 + %36 = and i64 %.0.copyload.i.i.i.i.i.i.i.i.i9, 6 + %37 = icmp eq i64 %36, 0 + br i1 %37, label %_ZN4llvm8ExpectedIRNS_3pdb9DbiStreamEED2Ev.exit.i13, label %45 + +_ZN4llvm8ExpectedIRNS_3pdb9DbiStreamEED2Ev.exit.i13: ; preds = %34 + %38 = and i64 %.0.copyload.i.i.i.i.i.i.i.i.i9, -8 + %39 = inttoptr i64 %38 to ptr + call void @_ZN4llvm3pdb7PDBFile15getPDBDbiStreamEv(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected.30") align 8 %3, ptr noundef nonnull align 8 dereferenceable(280) %39) #19 + %40 = load ptr, ptr %3, align 8 + %41 = call noundef nonnull align 8 dereferenceable(352) ptr @_ZNK4llvm3pdb9DbiStream7modulesEv(ptr noundef nonnull align 8 dereferenceable(1224) %40) #19 + %42 = call noundef i32 @_ZNK4llvm3pdb13DbiModuleList14getModuleCountEv(ptr noundef nonnull align 8 dereferenceable(352) %41) #19 + %43 = load i32, ptr %1, align 8 + %44 = icmp eq i32 %43, %42 br label %_ZNK4llvm3pdb19SymbolGroupIterator5isEndEv.exit14 -53: ; preds = %38 - %54 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %55 = and i64 %.0.copyload.i.i.i.i.i.i.i.i.i9, -8 - %56 = inttoptr i64 %55 to ptr - %57 = load ptr, ptr %56, align 8 - %58 = getelementptr inbounds i8, ptr %57, i64 360 - %59 = load ptr, ptr %58, align 8 - %60 = call { i64, ptr } %59(ptr noundef nonnull align 8 dereferenceable(232) %56) #19 - %61 = extractvalue { i64, ptr } %60, 0 - %62 = extractvalue { i64, ptr } %60, 1 - %63 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %64 = load ptr, ptr %63, align 8 - %65 = icmp eq ptr %64, %62 - %lhsv.i.i.i.i10 = load i64, ptr %54, align 8 - %.not.i.i.i.i11 = icmp eq i64 %lhsv.i.i.i.i10, %61 - %66 = select i1 %65, i1 %.not.i.i.i.i11, i1 false +45: ; preds = %34 + %46 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %47 = and i64 %.0.copyload.i.i.i.i.i.i.i.i.i9, -8 + %48 = inttoptr i64 %47 to ptr + %49 = load ptr, ptr %48, align 8 + %50 = getelementptr inbounds i8, ptr %49, i64 360 + %51 = load ptr, ptr %50, align 8 + %52 = call { i64, ptr } %51(ptr noundef nonnull align 8 dereferenceable(232) %48) #19 + %53 = extractvalue { i64, ptr } %52, 0 + %54 = extractvalue { i64, ptr } %52, 1 + %55 = getelementptr inbounds nuw i8, ptr %1, i64 16 + %56 = load ptr, ptr %55, align 8 + %57 = icmp eq ptr %56, %54 + %lhsv.i.i.i.i10 = load i64, ptr %46, align 8 + %.not.i.i.i.i11 = icmp eq i64 %lhsv.i.i.i.i10, %53 + %58 = select i1 %57, i1 %.not.i.i.i.i11, i1 false br label %_ZNK4llvm3pdb19SymbolGroupIterator5isEndEv.exit14 -_ZNK4llvm3pdb19SymbolGroupIterator5isEndEv.exit14: ; preds = %_ZN4llvm8ExpectedIRNS_3pdb9DbiStreamEED2Ev.exit.i13, %53 - %.0.i12 = phi i1 [ %52, %_ZN4llvm8ExpectedIRNS_3pdb9DbiStreamEED2Ev.exit.i13 ], [ %66, %53 ] +_ZNK4llvm3pdb19SymbolGroupIterator5isEndEv.exit14: ; preds = %_ZN4llvm8ExpectedIRNS_3pdb9DbiStreamEED2Ev.exit.i13, %45 + %.0.i12 = phi i1 [ %44, %_ZN4llvm8ExpectedIRNS_3pdb9DbiStreamEED2Ev.exit.i13 ], [ %58, %45 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) %brmerge = or i1 %.0.i, %.0.i12 - br i1 %brmerge, label %67, label %70 + br i1 %brmerge, label %59, label %62 -67: ; preds = %_ZNK4llvm3pdb19SymbolGroupIterator5isEndEv.exit14.thread, %_ZNK4llvm3pdb19SymbolGroupIterator5isEndEv.exit14 +59: ; preds = %_ZNK4llvm3pdb19SymbolGroupIterator5isEndEv.exit14.thread, %_ZNK4llvm3pdb19SymbolGroupIterator5isEndEv.exit14 %.0.i1217 = phi i1 [ true, %_ZNK4llvm3pdb19SymbolGroupIterator5isEndEv.exit14.thread ], [ %.0.i12, %_ZNK4llvm3pdb19SymbolGroupIterator5isEndEv.exit14 ] - %68 = xor i1 %.0.i, %.0.i1217 - %69 = xor i1 %68, true - br label %77 - -70: ; preds = %_ZNK4llvm3pdb19SymbolGroupIterator5isEndEv.exit14 - %71 = load ptr, ptr %5, align 8 - %72 = load ptr, ptr %36, align 8 - %.not = icmp eq ptr %71, %72 - br i1 %.not, label %73, label %77 - -73: ; preds = %70 - %74 = load i32, ptr %0, align 8 - %75 = load i32, ptr %1, align 8 - %76 = icmp eq i32 %74, %75 - br label %77 - -77: ; preds = %70, %73, %67 - %.0 = phi i1 [ %69, %67 ], [ %76, %73 ], [ false, %70 ] + %60 = xor i1 %.0.i, %.0.i1217 + %61 = xor i1 %60, true + br label %69 + +62: ; preds = %_ZNK4llvm3pdb19SymbolGroupIterator5isEndEv.exit14 + %63 = load ptr, ptr %5, align 8 + %64 = load ptr, ptr %32, align 8 + %.not = icmp eq ptr %63, %64 + br i1 %.not, label %65, label %69 + +65: ; preds = %62 + %66 = load i32, ptr %0, align 8 + %67 = load i32, ptr %1, align 8 + %68 = icmp eq i32 %66, %67 + br label %69 + +69: ; preds = %62, %65, %59 + %.0 = phi i1 [ %61, %59 ], [ %68, %65 ], [ false, %62 ] ret i1 %.0 } @@ -5188,51 +5173,46 @@ define dso_local noundef zeroext i1 @_ZNK4llvm3pdb19SymbolGroupIterator5isEndEv( %3 = getelementptr inbounds nuw i8, ptr %0, i64 32 %4 = load ptr, ptr %3, align 8 %.not = icmp eq ptr %4, null - br i1 %.not, label %34, label %5 + br i1 %.not, label %30, label %5 5: ; preds = %1 %6 = getelementptr inbounds nuw i8, ptr %4, i64 32 %.0.copyload.i.i.i.i.i.i.i.i = load i64, ptr %6, align 8 %7 = and i64 %.0.copyload.i.i.i.i.i.i.i.i, 6 %8 = icmp eq i64 %7, 0 - br i1 %8, label %_ZN4llvm8ExpectedIRNS_3pdb9DbiStreamEED2Ev.exit, label %20 + br i1 %8, label %_ZN4llvm8ExpectedIRNS_3pdb9DbiStreamEED2Ev.exit, label %16 _ZN4llvm8ExpectedIRNS_3pdb9DbiStreamEED2Ev.exit: ; preds = %5 %9 = and i64 %.0.copyload.i.i.i.i.i.i.i.i, -8 %10 = inttoptr i64 %9 to ptr call void @_ZN4llvm3pdb7PDBFile15getPDBDbiStreamEv(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected.30") align 8 %2, ptr noundef nonnull align 8 dereferenceable(280) %10) #19 - %11 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %12 = load i8, ptr %11, align 8 - %13 = trunc i8 %12 to i1 - %14 = xor i1 %13, true - call void @llvm.assume(i1 %14) - %15 = load ptr, ptr %2, align 8 - %16 = call noundef nonnull align 8 dereferenceable(352) ptr @_ZNK4llvm3pdb9DbiStream7modulesEv(ptr noundef nonnull align 8 dereferenceable(1224) %15) #19 - %17 = call noundef i32 @_ZNK4llvm3pdb13DbiModuleList14getModuleCountEv(ptr noundef nonnull align 8 dereferenceable(352) %16) #19 - %18 = load i32, ptr %0, align 8 - %19 = icmp eq i32 %18, %17 - br label %34 + %11 = load ptr, ptr %2, align 8 + %12 = call noundef nonnull align 8 dereferenceable(352) ptr @_ZNK4llvm3pdb9DbiStream7modulesEv(ptr noundef nonnull align 8 dereferenceable(1224) %11) #19 + %13 = call noundef i32 @_ZNK4llvm3pdb13DbiModuleList14getModuleCountEv(ptr noundef nonnull align 8 dereferenceable(352) %12) #19 + %14 = load i32, ptr %0, align 8 + %15 = icmp eq i32 %14, %13 + br label %30 -20: ; preds = %5 - %21 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %22 = and i64 %.0.copyload.i.i.i.i.i.i.i.i, -8 - %23 = inttoptr i64 %22 to ptr - %24 = load ptr, ptr %23, align 8 - %25 = getelementptr inbounds i8, ptr %24, i64 360 - %26 = load ptr, ptr %25, align 8 - %27 = tail call { i64, ptr } %26(ptr noundef nonnull align 8 dereferenceable(232) %23) #19 - %28 = extractvalue { i64, ptr } %27, 0 - %29 = extractvalue { i64, ptr } %27, 1 - %30 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %31 = load ptr, ptr %30, align 8 - %32 = icmp eq ptr %31, %29 - %lhsv.i.i.i = load i64, ptr %21, align 8 - %.not.i.i.i = icmp eq i64 %lhsv.i.i.i, %28 - %33 = select i1 %32, i1 %.not.i.i.i, i1 false - br label %34 +16: ; preds = %5 + %17 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %18 = and i64 %.0.copyload.i.i.i.i.i.i.i.i, -8 + %19 = inttoptr i64 %18 to ptr + %20 = load ptr, ptr %19, align 8 + %21 = getelementptr inbounds i8, ptr %20, i64 360 + %22 = load ptr, ptr %21, align 8 + %23 = tail call { i64, ptr } %22(ptr noundef nonnull align 8 dereferenceable(232) %19) #19 + %24 = extractvalue { i64, ptr } %23, 0 + %25 = extractvalue { i64, ptr } %23, 1 + %26 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %27 = load ptr, ptr %26, align 8 + %28 = icmp eq ptr %27, %25 + %lhsv.i.i.i = load i64, ptr %17, align 8 + %.not.i.i.i = icmp eq i64 %lhsv.i.i.i, %24 + %29 = select i1 %28, i1 %.not.i.i.i, i1 false + br label %30 -34: ; preds = %1, %20, %_ZN4llvm8ExpectedIRNS_3pdb9DbiStreamEED2Ev.exit - %.0 = phi i1 [ %19, %_ZN4llvm8ExpectedIRNS_3pdb9DbiStreamEED2Ev.exit ], [ %33, %20 ], [ true, %1 ] +30: ; preds = %1, %16, %_ZN4llvm8ExpectedIRNS_3pdb9DbiStreamEED2Ev.exit + %.0 = phi i1 [ %15, %_ZN4llvm8ExpectedIRNS_3pdb9DbiStreamEED2Ev.exit ], [ %29, %16 ], [ true, %1 ] ret i1 %.0 } @@ -5262,7 +5242,7 @@ define dso_local noundef nonnull align 8 dereferenceable(200) ptr @_ZN4llvm3pdb1 _ZNK4llvm3pdb19SymbolGroupIterator5isEndEv.exit.thread: ; preds = %1 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) - br label %43 + br label %39 7: ; preds = %1 %8 = getelementptr inbounds nuw i8, ptr %6, i64 32 @@ -5275,56 +5255,51 @@ _ZN4llvm8ExpectedIRNS_3pdb9DbiStreamEED2Ev.exit.i: ; preds = %7 %11 = and i64 %.0.copyload.i.i.i.i.i.i.i.i.i, -8 %12 = inttoptr i64 %11 to ptr call void @_ZN4llvm3pdb7PDBFile15getPDBDbiStreamEv(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected.30") align 8 %2, ptr noundef nonnull align 8 dereferenceable(280) %12) #19 - %13 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %14 = load i8, ptr %13, align 8 - %15 = trunc i8 %14 to i1 - %16 = xor i1 %15, true - call void @llvm.assume(i1 %16) - %17 = load ptr, ptr %2, align 8 - %18 = call noundef nonnull align 8 dereferenceable(352) ptr @_ZNK4llvm3pdb9DbiStream7modulesEv(ptr noundef nonnull align 8 dereferenceable(1224) %17) #19 - %19 = call noundef i32 @_ZNK4llvm3pdb13DbiModuleList14getModuleCountEv(ptr noundef nonnull align 8 dereferenceable(352) %18) #19 - %20 = load i32, ptr %0, align 8 - %21 = icmp eq i32 %20, %19 + %13 = load ptr, ptr %2, align 8 + %14 = call noundef nonnull align 8 dereferenceable(352) ptr @_ZNK4llvm3pdb9DbiStream7modulesEv(ptr noundef nonnull align 8 dereferenceable(1224) %13) #19 + %15 = call noundef i32 @_ZNK4llvm3pdb13DbiModuleList14getModuleCountEv(ptr noundef nonnull align 8 dereferenceable(352) %14) #19 + %16 = load i32, ptr %0, align 8 + %17 = icmp eq i32 %16, %15 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) - br i1 %21, label %43, label %35 + br i1 %17, label %39, label %31 _ZNK4llvm3pdb19SymbolGroupIterator5isEndEv.exit: ; preds = %7 - %22 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %23 = and i64 %.0.copyload.i.i.i.i.i.i.i.i.i, -8 - %24 = inttoptr i64 %23 to ptr - %25 = load ptr, ptr %24, align 8 - %26 = getelementptr inbounds i8, ptr %25, i64 360 - %27 = load ptr, ptr %26, align 8 - %28 = tail call { i64, ptr } %27(ptr noundef nonnull align 8 dereferenceable(232) %24) #19 - %29 = extractvalue { i64, ptr } %28, 0 - %30 = extractvalue { i64, ptr } %28, 1 - %31 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %32 = load ptr, ptr %31, align 8 - %33 = icmp eq ptr %32, %30 - %lhsv.i.i.i.i = load i64, ptr %22, align 8 - %.not.i.i.i.i = icmp eq i64 %lhsv.i.i.i.i, %29 - %34 = select i1 %33, i1 %.not.i.i.i.i, i1 false + %18 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %19 = and i64 %.0.copyload.i.i.i.i.i.i.i.i.i, -8 + %20 = inttoptr i64 %19 to ptr + %21 = load ptr, ptr %20, align 8 + %22 = getelementptr inbounds i8, ptr %21, i64 360 + %23 = load ptr, ptr %22, align 8 + %24 = tail call { i64, ptr } %23(ptr noundef nonnull align 8 dereferenceable(232) %20) #19 + %25 = extractvalue { i64, ptr } %24, 0 + %26 = extractvalue { i64, ptr } %24, 1 + %27 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %28 = load ptr, ptr %27, align 8 + %29 = icmp eq ptr %28, %26 + %lhsv.i.i.i.i = load i64, ptr %18, align 8 + %.not.i.i.i.i = icmp eq i64 %lhsv.i.i.i.i, %25 + %30 = select i1 %29, i1 %.not.i.i.i.i, i1 false call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) - br i1 %34, label %43, label %35 + br i1 %30, label %39, label %31 -35: ; preds = %_ZN4llvm8ExpectedIRNS_3pdb9DbiStreamEED2Ev.exit.i, %_ZNK4llvm3pdb19SymbolGroupIterator5isEndEv.exit - %36 = load ptr, ptr %5, align 8 - %37 = getelementptr inbounds nuw i8, ptr %36, i64 32 - %.0.copyload.i.i.i.i.i.i.i.i = load i64, ptr %37, align 8 - %38 = and i64 %.0.copyload.i.i.i.i.i.i.i.i, 6 - %39 = icmp eq i64 %38, 0 - br i1 %39, label %40, label %42 - -40: ; preds = %35 - %41 = load i32, ptr %0, align 8 - call void @_ZN4llvm3pdb11SymbolGroup16initializeForPdbEj(ptr noundef nonnull align 8 dereferenceable(168) %5, i32 noundef %41) - br label %43 - -42: ; preds = %35 +31: ; preds = %_ZN4llvm8ExpectedIRNS_3pdb9DbiStreamEED2Ev.exit.i, %_ZNK4llvm3pdb19SymbolGroupIterator5isEndEv.exit + %32 = load ptr, ptr %5, align 8 + %33 = getelementptr inbounds nuw i8, ptr %32, i64 32 + %.0.copyload.i.i.i.i.i.i.i.i = load i64, ptr %33, align 8 + %34 = and i64 %.0.copyload.i.i.i.i.i.i.i.i, 6 + %35 = icmp eq i64 %34, 0 + br i1 %35, label %36, label %38 + +36: ; preds = %31 + %37 = load i32, ptr %0, align 8 + call void @_ZN4llvm3pdb11SymbolGroup16initializeForPdbEj(ptr noundef nonnull align 8 dereferenceable(168) %5, i32 noundef %37) + br label %39 + +38: ; preds = %31 call void @_ZN4llvm3pdb19SymbolGroupIterator16scanToNextDebugSEv(ptr noundef nonnull align 8 dereferenceable(200) %0) - br label %43 + br label %39 -43: ; preds = %_ZN4llvm8ExpectedIRNS_3pdb9DbiStreamEED2Ev.exit.i, %_ZNK4llvm3pdb19SymbolGroupIterator5isEndEv.exit.thread, %_ZNK4llvm3pdb19SymbolGroupIterator5isEndEv.exit, %42, %40 +39: ; preds = %_ZN4llvm8ExpectedIRNS_3pdb9DbiStreamEED2Ev.exit.i, %_ZNK4llvm3pdb19SymbolGroupIterator5isEndEv.exit.thread, %_ZNK4llvm3pdb19SymbolGroupIterator5isEndEv.exit, %38, %36 ret ptr %0 } diff --git a/bench/llvm/optimized/LinePrinter.cpp.ll b/bench/llvm/optimized/LinePrinter.cpp.ll index 64c260d23f9..d59c6c8cf79 100644 --- a/bench/llvm/optimized/LinePrinter.cpp.ll +++ b/bench/llvm/optimized/LinePrinter.cpp.ll @@ -2617,46 +2617,45 @@ define dso_local void @_ZN4llvm3pdb11LinePrinter21formatMsfStreamBlocksERNS0_7PD %14 = getelementptr inbounds nuw i8, ptr %4, i64 32 %15 = getelementptr inbounds nuw i8, ptr %4, i64 40 %16 = getelementptr inbounds nuw i8, ptr %4, i64 48 - %17 = getelementptr inbounds nuw i8, ptr %5, i64 16 %.sroa.2.0..sroa_idx.i = getelementptr inbounds i8, ptr %5, i64 8 - %18 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %17 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.sroa.26.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %6, i64 8 - %19 = getelementptr inbounds nuw i8, ptr %6, i64 16 + %18 = getelementptr inbounds nuw i8, ptr %6, i64 16 %.sroa.2.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %6, i64 24 - %20 = getelementptr inbounds nuw i8, ptr %6, i64 32 - %21 = getelementptr inbounds nuw i8, ptr %6, i64 36 - %22 = getelementptr inbounds nuw i8, ptr %6, i64 40 - %23 = getelementptr inbounds nuw i8, ptr %6, i64 41 - %24 = getelementptr inbounds nuw i8, ptr %6, i64 42 - br label %25 - -25: ; preds = %.lr.ph, %_ZN4llvm3pdb11LinePrinter7NewLineEv.exit14 - %.sroa.023.029 = phi ptr [ %10, %.lr.ph ], [ %109, %_ZN4llvm3pdb11LinePrinter7NewLineEv.exit14 ] - %.028 = phi i64 [ %8, %.lr.ph ], [ %108, %_ZN4llvm3pdb11LinePrinter7NewLineEv.exit14 ] - %26 = load ptr, ptr %0, align 8 - %27 = getelementptr inbounds nuw i8, ptr %26, i64 24 - %28 = load ptr, ptr %27, align 8 - %29 = getelementptr inbounds nuw i8, ptr %26, i64 32 - %30 = load ptr, ptr %29, align 8 - %31 = icmp eq ptr %28, %30 - br i1 %31, label %32, label %34 + %19 = getelementptr inbounds nuw i8, ptr %6, i64 32 + %20 = getelementptr inbounds nuw i8, ptr %6, i64 36 + %21 = getelementptr inbounds nuw i8, ptr %6, i64 40 + %22 = getelementptr inbounds nuw i8, ptr %6, i64 41 + %23 = getelementptr inbounds nuw i8, ptr %6, i64 42 + br label %24 + +24: ; preds = %.lr.ph, %_ZN4llvm3pdb11LinePrinter7NewLineEv.exit14 + %.sroa.023.029 = phi ptr [ %10, %.lr.ph ], [ %105, %_ZN4llvm3pdb11LinePrinter7NewLineEv.exit14 ] + %.028 = phi i64 [ %8, %.lr.ph ], [ %104, %_ZN4llvm3pdb11LinePrinter7NewLineEv.exit14 ] + %25 = load ptr, ptr %0, align 8 + %26 = getelementptr inbounds nuw i8, ptr %25, i64 24 + %27 = load ptr, ptr %26, align 8 + %28 = getelementptr inbounds nuw i8, ptr %25, i64 32 + %29 = load ptr, ptr %28, align 8 + %30 = icmp eq ptr %27, %29 + br i1 %30, label %31, label %33 -32: ; preds = %25 - %33 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(48) %26, ptr noundef nonnull @.str, i64 noundef 1) #16 - br label %_ZN4llvm8ExpectedINS_8ArrayRefIhEEED2Ev.exit +31: ; preds = %24 + %32 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(48) %25, ptr noundef nonnull @.str, i64 noundef 1) #16 + br label %_ZN4llvm3pdb11LinePrinter7NewLineEv.exit -34: ; preds = %25 - store i8 10, ptr %30, align 1 - %35 = load ptr, ptr %29, align 8 - %36 = getelementptr inbounds i8, ptr %35, i64 1 - store ptr %36, ptr %29, align 8 - br label %_ZN4llvm8ExpectedINS_8ArrayRefIhEEED2Ev.exit +33: ; preds = %24 + store i8 10, ptr %29, align 1 + %34 = load ptr, ptr %28, align 8 + %35 = getelementptr inbounds i8, ptr %34, i64 1 + store ptr %35, ptr %28, align 8 + br label %_ZN4llvm3pdb11LinePrinter7NewLineEv.exit -_ZN4llvm8ExpectedINS_8ArrayRefIhEEED2Ev.exit: ; preds = %32, %34 - %37 = load ptr, ptr %0, align 8 - %38 = load i32, ptr %11, align 4 - %39 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream6indentEj(ptr noundef nonnull align 8 dereferenceable(48) %37, i32 noundef %38) #16 - %40 = load ptr, ptr %0, align 8 +_ZN4llvm3pdb11LinePrinter7NewLineEv.exit: ; preds = %31, %33 + %36 = load ptr, ptr %0, align 8 + %37 = load i32, ptr %11, align 4 + %38 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream6indentEj(ptr noundef nonnull align 8 dereferenceable(48) %36, i32 noundef %37) #16 + %39 = load ptr, ptr %0, align 8 call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.023.029, i64 1) ] %.0.copyload.i.i.i = load i32, ptr %.sroa.023.029, align 1 store ptr @.str.8, ptr %4, align 8, !alias.scope !70 @@ -2667,121 +2666,117 @@ _ZN4llvm8ExpectedINS_8ArrayRefIhEEED2Ev.exit: ; preds = %32, %34 store ptr getelementptr inbounds inrange(-16, 32) (i8, ptr @_ZTVN4llvm7support6detail23provider_format_adapterIjEE, i64 16), ptr %15, align 8, !alias.scope !70 store i32 %.0.copyload.i.i.i, ptr %16, align 8, !alias.scope !70 store ptr %15, ptr %12, align 8, !alias.scope !70 - %41 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostreamlsERKNS_19formatv_object_baseE(ptr noundef nonnull align 8 dereferenceable(48) %40, ptr noundef nonnull align 8 dereferenceable(33) %4) #16 - %42 = load ptr, ptr %1, align 8 - %43 = getelementptr inbounds i8, ptr %42, i64 16 - %44 = load ptr, ptr %43, align 8 - %45 = call noundef i32 %44(ptr noundef nonnull align 8 dereferenceable(280) %1) #16 - %46 = zext i32 %45 to i64 + %40 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostreamlsERKNS_19formatv_object_baseE(ptr noundef nonnull align 8 dereferenceable(48) %39, ptr noundef nonnull align 8 dereferenceable(33) %4) #16 + %41 = load ptr, ptr %1, align 8 + %42 = getelementptr inbounds i8, ptr %41, i64 16 + %43 = load ptr, ptr %42, align 8 + %44 = call noundef i32 %43(ptr noundef nonnull align 8 dereferenceable(280) %1) #16 + %45 = zext i32 %44 to i64 call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.023.029, i64 1) ] %.0.copyload.i.i.i11 = load i32, ptr %.sroa.023.029, align 1 - %47 = load ptr, ptr %1, align 8 - %48 = getelementptr inbounds i8, ptr %47, i64 16 - %49 = load ptr, ptr %48, align 8 - %50 = call noundef i32 %49(ptr noundef nonnull align 8 dereferenceable(280) %1) #16 - %51 = load ptr, ptr %1, align 8 - %52 = getelementptr inbounds i8, ptr %51, i64 56 - %53 = load ptr, ptr %52, align 8 - call void %53(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected") align 8 %5, ptr noundef nonnull align 8 dereferenceable(280) %1, i32 noundef %.0.copyload.i.i.i11, i32 noundef %50) #16 - %54 = load i8, ptr %17, align 8 - %55 = trunc i8 %54 to i1 - %56 = xor i1 %55, true - call void @llvm.assume(i1 %56) + %46 = load ptr, ptr %1, align 8 + %47 = getelementptr inbounds i8, ptr %46, i64 16 + %48 = load ptr, ptr %47, align 8 + %49 = call noundef i32 %48(ptr noundef nonnull align 8 dereferenceable(280) %1) #16 + %50 = load ptr, ptr %1, align 8 + %51 = getelementptr inbounds i8, ptr %50, i64 56 + %52 = load ptr, ptr %51, align 8 + call void %52(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected") align 8 %5, ptr noundef nonnull align 8 dereferenceable(280) %1, i32 noundef %.0.copyload.i.i.i11, i32 noundef %49) #16 %.sroa.0.0.copyload.i = load ptr, ptr %5, align 8 %.sroa.2.0.copyload.i = load i64, ptr %.sroa.2.0..sroa_idx.i, align 8 call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.023.029, i64 1) ] %.0.copyload.i.i.i12 = load i32, ptr %.sroa.023.029, align 1 - %57 = zext i32 %.0.copyload.i.i.i12 to i64 - %58 = load ptr, ptr %1, align 8 - %59 = getelementptr inbounds i8, ptr %58, i64 16 - %60 = load ptr, ptr %59, align 8 - %61 = call noundef i32 %60(ptr noundef nonnull align 8 dereferenceable(280) %1) #16 - %62 = zext i32 %61 to i64 - %63 = mul nuw i64 %62, %57 - %64 = load ptr, ptr %0, align 8 - %65 = load i32, ptr %11, align 4 - %66 = load i32, ptr %18, align 8 - %67 = add nsw i32 %66, %65 + %53 = zext i32 %.0.copyload.i.i.i12 to i64 + %54 = load ptr, ptr %1, align 8 + %55 = getelementptr inbounds i8, ptr %54, i64 16 + %56 = load ptr, ptr %55, align 8 + %57 = call noundef i32 %56(ptr noundef nonnull align 8 dereferenceable(280) %1) #16 + %58 = zext i32 %57 to i64 + %59 = mul nuw i64 %58, %53 + %60 = load ptr, ptr %0, align 8 + %61 = load i32, ptr %11, align 4 + %62 = load i32, ptr %17, align 8 + %63 = add nsw i32 %62, %61 store ptr %.sroa.0.0.copyload.i, ptr %6, align 8, !alias.scope !75 store i64 %.sroa.2.0.copyload.i, ptr %.sroa.26.0..sroa_idx.i.i, align 8, !alias.scope !75 - store i64 %63, ptr %19, align 8, !alias.scope !75 + store i64 %59, ptr %18, align 8, !alias.scope !75 store i8 1, ptr %.sroa.2.0..sroa_idx.i.i, align 8, !alias.scope !75 - store i32 %67, ptr %20, align 8, !alias.scope !75 - store i32 32, ptr %21, align 4, !alias.scope !75 - store i8 4, ptr %22, align 8, !alias.scope !75 - store i8 1, ptr %23, align 1, !alias.scope !75 - store i8 1, ptr %24, align 2, !alias.scope !75 - %68 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostreamlsERKNS_14FormattedBytesE(ptr noundef nonnull align 8 dereferenceable(48) %64, ptr noundef nonnull align 8 dereferenceable(43) %6) #16 - %69 = load ptr, ptr %0, align 8 - %70 = getelementptr inbounds nuw i8, ptr %69, i64 24 - %71 = load ptr, ptr %70, align 8 - %72 = getelementptr inbounds nuw i8, ptr %69, i64 32 - %73 = load ptr, ptr %72, align 8 - %74 = icmp eq ptr %71, %73 - br i1 %74, label %75, label %77 - -75: ; preds = %_ZN4llvm8ExpectedINS_8ArrayRefIhEEED2Ev.exit - %76 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(48) %69, ptr noundef nonnull @.str, i64 noundef 1) #16 + store i32 %63, ptr %19, align 8, !alias.scope !75 + store i32 32, ptr %20, align 4, !alias.scope !75 + store i8 4, ptr %21, align 8, !alias.scope !75 + store i8 1, ptr %22, align 1, !alias.scope !75 + store i8 1, ptr %23, align 2, !alias.scope !75 + %64 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostreamlsERKNS_14FormattedBytesE(ptr noundef nonnull align 8 dereferenceable(48) %60, ptr noundef nonnull align 8 dereferenceable(43) %6) #16 + %65 = load ptr, ptr %0, align 8 + %66 = getelementptr inbounds nuw i8, ptr %65, i64 24 + %67 = load ptr, ptr %66, align 8 + %68 = getelementptr inbounds nuw i8, ptr %65, i64 32 + %69 = load ptr, ptr %68, align 8 + %70 = icmp eq ptr %67, %69 + br i1 %70, label %71, label %73 + +71: ; preds = %_ZN4llvm3pdb11LinePrinter7NewLineEv.exit + %72 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(48) %65, ptr noundef nonnull @.str, i64 noundef 1) #16 br label %_ZN4llvm3pdb11LinePrinter7NewLineEv.exit13 -77: ; preds = %_ZN4llvm8ExpectedINS_8ArrayRefIhEEED2Ev.exit - store i8 10, ptr %73, align 1 - %78 = load ptr, ptr %72, align 8 - %79 = getelementptr inbounds i8, ptr %78, i64 1 - store ptr %79, ptr %72, align 8 +73: ; preds = %_ZN4llvm3pdb11LinePrinter7NewLineEv.exit + store i8 10, ptr %69, align 1 + %74 = load ptr, ptr %68, align 8 + %75 = getelementptr inbounds i8, ptr %74, i64 1 + store ptr %75, ptr %68, align 8 br label %_ZN4llvm3pdb11LinePrinter7NewLineEv.exit13 -_ZN4llvm3pdb11LinePrinter7NewLineEv.exit13: ; preds = %75, %77 - %80 = load ptr, ptr %0, align 8 - %81 = load i32, ptr %11, align 4 - %82 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream6indentEj(ptr noundef nonnull align 8 dereferenceable(48) %80, i32 noundef %81) #16 - %83 = load ptr, ptr %0, align 8 - %84 = getelementptr inbounds nuw i8, ptr %83, i64 24 - %85 = load ptr, ptr %84, align 8 - %86 = getelementptr inbounds nuw i8, ptr %83, i64 32 - %87 = load ptr, ptr %86, align 8 - %88 = icmp eq ptr %85, %87 - br i1 %88, label %89, label %91 - -89: ; preds = %_ZN4llvm3pdb11LinePrinter7NewLineEv.exit13 - %90 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(48) %83, ptr noundef nonnull @.str.2, i64 noundef 1) #16 +_ZN4llvm3pdb11LinePrinter7NewLineEv.exit13: ; preds = %71, %73 + %76 = load ptr, ptr %0, align 8 + %77 = load i32, ptr %11, align 4 + %78 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream6indentEj(ptr noundef nonnull align 8 dereferenceable(48) %76, i32 noundef %77) #16 + %79 = load ptr, ptr %0, align 8 + %80 = getelementptr inbounds nuw i8, ptr %79, i64 24 + %81 = load ptr, ptr %80, align 8 + %82 = getelementptr inbounds nuw i8, ptr %79, i64 32 + %83 = load ptr, ptr %82, align 8 + %84 = icmp eq ptr %81, %83 + br i1 %84, label %85, label %87 + +85: ; preds = %_ZN4llvm3pdb11LinePrinter7NewLineEv.exit13 + %86 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(48) %79, ptr noundef nonnull @.str.2, i64 noundef 1) #16 br label %_ZN4llvm11raw_ostreamlsEPKc.exit -91: ; preds = %_ZN4llvm3pdb11LinePrinter7NewLineEv.exit13 - store i8 41, ptr %87, align 1 - %92 = load ptr, ptr %86, align 8 - %93 = getelementptr inbounds i8, ptr %92, i64 1 - store ptr %93, ptr %86, align 8 +87: ; preds = %_ZN4llvm3pdb11LinePrinter7NewLineEv.exit13 + store i8 41, ptr %83, align 1 + %88 = load ptr, ptr %82, align 8 + %89 = getelementptr inbounds i8, ptr %88, i64 1 + store ptr %89, ptr %82, align 8 br label %_ZN4llvm11raw_ostreamlsEPKc.exit -_ZN4llvm11raw_ostreamlsEPKc.exit: ; preds = %89, %91 - %94 = load ptr, ptr %0, align 8 - %95 = getelementptr inbounds nuw i8, ptr %94, i64 24 - %96 = load ptr, ptr %95, align 8 - %97 = getelementptr inbounds nuw i8, ptr %94, i64 32 - %98 = load ptr, ptr %97, align 8 - %99 = icmp eq ptr %96, %98 - br i1 %99, label %100, label %102 - -100: ; preds = %_ZN4llvm11raw_ostreamlsEPKc.exit - %101 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(48) %94, ptr noundef nonnull @.str, i64 noundef 1) #16 +_ZN4llvm11raw_ostreamlsEPKc.exit: ; preds = %85, %87 + %90 = load ptr, ptr %0, align 8 + %91 = getelementptr inbounds nuw i8, ptr %90, i64 24 + %92 = load ptr, ptr %91, align 8 + %93 = getelementptr inbounds nuw i8, ptr %90, i64 32 + %94 = load ptr, ptr %93, align 8 + %95 = icmp eq ptr %92, %94 + br i1 %95, label %96, label %98 + +96: ; preds = %_ZN4llvm11raw_ostreamlsEPKc.exit + %97 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(48) %90, ptr noundef nonnull @.str, i64 noundef 1) #16 br label %_ZN4llvm3pdb11LinePrinter7NewLineEv.exit14 -102: ; preds = %_ZN4llvm11raw_ostreamlsEPKc.exit - store i8 10, ptr %98, align 1 - %103 = load ptr, ptr %97, align 8 - %104 = getelementptr inbounds i8, ptr %103, i64 1 - store ptr %104, ptr %97, align 8 +98: ; preds = %_ZN4llvm11raw_ostreamlsEPKc.exit + store i8 10, ptr %94, align 1 + %99 = load ptr, ptr %93, align 8 + %100 = getelementptr inbounds i8, ptr %99, i64 1 + store ptr %100, ptr %93, align 8 br label %_ZN4llvm3pdb11LinePrinter7NewLineEv.exit14 -_ZN4llvm3pdb11LinePrinter7NewLineEv.exit14: ; preds = %100, %102 - %105 = load ptr, ptr %0, align 8 - %106 = load i32, ptr %11, align 4 - %107 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream6indentEj(ptr noundef nonnull align 8 dereferenceable(48) %105, i32 noundef %106) #16 - %108 = call i64 @llvm.usub.sat.i64(i64 %.028, i64 %46) - %109 = getelementptr inbounds i8, ptr %.sroa.023.029, i64 4 - %.not.not = icmp ugt i64 %.028, %46 - br i1 %.not.not, label %25, label %._crit_edge, !llvm.loop !78 +_ZN4llvm3pdb11LinePrinter7NewLineEv.exit14: ; preds = %96, %98 + %101 = load ptr, ptr %0, align 8 + %102 = load i32, ptr %11, align 4 + %103 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream6indentEj(ptr noundef nonnull align 8 dereferenceable(48) %101, i32 noundef %102) #16 + %104 = call i64 @llvm.usub.sat.i64(i64 %.028, i64 %45) + %105 = getelementptr inbounds i8, ptr %.sroa.023.029, i64 4 + %.not.not = icmp ugt i64 %.028, %45 + br i1 %.not.not, label %24, label %._crit_edge, !llvm.loop !78 ._crit_edge: ; preds = %_ZN4llvm3pdb11LinePrinter7NewLineEv.exit14, %3 ret void diff --git a/bench/llvm/optimized/MCPseudoProbe.cpp.ll b/bench/llvm/optimized/MCPseudoProbe.cpp.ll index fac5dcedd24..9899ceec8dc 100644 --- a/bench/llvm/optimized/MCPseudoProbe.cpp.ll +++ b/bench/llvm/optimized/MCPseudoProbe.cpp.ll @@ -1935,17 +1935,17 @@ define dso_local noundef zeroext i1 @_ZN4llvm20MCPseudoProbeDecoder21buildGUID2F %10 = getelementptr inbounds i8, ptr %1, i64 %2 %11 = getelementptr inbounds nuw i8, ptr %0, i64 304 store ptr %10, ptr %11, align 8 - %.not.not.not259 = icmp slt i64 %2, 1 - br i1 %.not.not.not259, label %43, label %.lr.ph263 + %.not.not.not265 = icmp slt i64 %2, 1 + br i1 %.not.not.not265, label %43, label %.lr.ph269 -.lr.ph263: ; preds = %3, %_ZN4llvm20MCPseudoProbeDecoder10readStringEj.exit - %.010260 = phi i32 [ %41, %_ZN4llvm20MCPseudoProbeDecoder10readStringEj.exit ], [ 0, %3 ] +.lr.ph269: ; preds = %3, %_ZN4llvm20MCPseudoProbeDecoder10readStringEj.exit + %.010266 = phi i32 [ %41, %_ZN4llvm20MCPseudoProbeDecoder10readStringEj.exit ], [ 0, %3 ] %12 = phi ptr [ %39, %_ZN4llvm20MCPseudoProbeDecoder10readStringEj.exit ], [ %1, %3 ] %13 = getelementptr inbounds i8, ptr %12, i64 8 %14 = icmp ugt ptr %13, %10 br i1 %14, label %"_ZN4llvm4sortIRNS_20GUIDProbeFunctionMapEZNS_20MCPseudoProbeDecoder21buildGUID2FuncDescMapEPKhmE3$_0EEvOT_T0_.exit", label %15 -15: ; preds = %.lr.ph263 +15: ; preds = %.lr.ph269 call void @llvm.assume(i1 true) [ "align"(ptr %12, i64 1) ] store ptr %13, ptr %9, align 8, !noalias !49 %16 = getelementptr inbounds i8, ptr %12, i64 16 @@ -2006,16 +2006,16 @@ _ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i: ; preds = %25, %_ZN4llvm13de _ZN4llvm20MCPseudoProbeDecoder10readStringEj.exit: ; preds = %38 store ptr %39, ptr %9, align 8, !noalias !59 - %41 = add i32 %.010260, 1 + %41 = add i32 %.010266, 1 %.not.not.not.not = icmp ult ptr %39, %10 - br i1 %.not.not.not.not, label %.lr.ph263, label %._crit_edge264 + br i1 %.not.not.not.not, label %.lr.ph269, label %._crit_edge270 -._crit_edge264: ; preds = %_ZN4llvm20MCPseudoProbeDecoder10readStringEj.exit +._crit_edge270: ; preds = %_ZN4llvm20MCPseudoProbeDecoder10readStringEj.exit %42 = zext i32 %41 to i64 br label %43 -43: ; preds = %._crit_edge264, %3 - %.010.lcssa = phi i64 [ %42, %._crit_edge264 ], [ 0, %3 ] +43: ; preds = %._crit_edge270, %3 + %.010.lcssa = phi i64 [ %42, %._crit_edge270 ], [ 0, %3 ] %44 = getelementptr inbounds nuw i8, ptr %0, i64 104 %45 = getelementptr inbounds nuw i8, ptr %0, i64 120 %46 = load ptr, ptr %45, align 8 @@ -2063,7 +2063,7 @@ _ZNSt12_Vector_baseIN4llvm21MCPseudoProbeFuncDescESaIS1_EE13_M_deallocateEPS1_m. br label %_ZNSt6vectorIN4llvm21MCPseudoProbeFuncDescESaIS1_EE7reserveEm.exit _ZNSt6vectorIN4llvm21MCPseudoProbeFuncDescESaIS1_EE7reserveEm.exit: ; preds = %43, %_ZNSt12_Vector_baseIN4llvm21MCPseudoProbeFuncDescESaIS1_EE13_M_deallocateEPS1_m.exit.i - %.val227 = phi ptr [ %47, %43 ], [ %58, %_ZNSt12_Vector_baseIN4llvm21MCPseudoProbeFuncDescESaIS1_EE13_M_deallocateEPS1_m.exit.i ] + %.val231 = phi ptr [ %47, %43 ], [ %58, %_ZNSt12_Vector_baseIN4llvm21MCPseudoProbeFuncDescESaIS1_EE13_M_deallocateEPS1_m.exit.i ] store ptr %1, ptr %9, align 8 store ptr %10, ptr %11, align 8 %64 = icmp sgt i64 %2, 0 @@ -2080,9 +2080,9 @@ _ZNSt6vectorIN4llvm21MCPseudoProbeFuncDescESaIS1_EE7reserveEm.exit: ; preds = %4 70: ; preds = %.lr.ph, %_ZNSt6vectorIN4llvm21MCPseudoProbeFuncDescESaIS1_EE12emplace_backIJRmS5_NS0_9StringRefEEEERS1_DpOT_.exit %71 = phi ptr [ %10, %.lr.ph ], [ %133, %_ZNSt6vectorIN4llvm21MCPseudoProbeFuncDescESaIS1_EE12emplace_backIJRmS5_NS0_9StringRefEEEERS1_DpOT_.exit ] %72 = phi ptr [ %1, %.lr.ph ], [ %132, %_ZNSt6vectorIN4llvm21MCPseudoProbeFuncDescESaIS1_EE12emplace_backIJRmS5_NS0_9StringRefEEEERS1_DpOT_.exit ] - %.sroa.0.0218 = phi ptr [ undef, %.lr.ph ], [ %.sroa.0.1233239, %_ZNSt6vectorIN4llvm21MCPseudoProbeFuncDescESaIS1_EE12emplace_backIJRmS5_NS0_9StringRefEEEERS1_DpOT_.exit ] - %.sroa.499.0214 = phi i32 [ undef, %.lr.ph ], [ %.sroa.499.1176, %_ZNSt6vectorIN4llvm21MCPseudoProbeFuncDescESaIS1_EE12emplace_backIJRmS5_NS0_9StringRefEEEERS1_DpOT_.exit ] - %.sroa.4110.0212 = phi i32 [ undef, %.lr.ph ], [ %.sroa.4110.1156, %_ZNSt6vectorIN4llvm21MCPseudoProbeFuncDescESaIS1_EE12emplace_backIJRmS5_NS0_9StringRefEEEERS1_DpOT_.exit ] + %.sroa.0.0222 = phi ptr [ undef, %.lr.ph ], [ %.sroa.0.1238245, %_ZNSt6vectorIN4llvm21MCPseudoProbeFuncDescESaIS1_EE12emplace_backIJRmS5_NS0_9StringRefEEEERS1_DpOT_.exit ] + %.sroa.499.0216 = phi i32 [ undef, %.lr.ph ], [ %.sroa.499.1176, %_ZNSt6vectorIN4llvm21MCPseudoProbeFuncDescESaIS1_EE12emplace_backIJRmS5_NS0_9StringRefEEEERS1_DpOT_.exit ] + %.sroa.4110.0213 = phi i32 [ undef, %.lr.ph ], [ %.sroa.4110.1156, %_ZNSt6vectorIN4llvm21MCPseudoProbeFuncDescESaIS1_EE12emplace_backIJRmS5_NS0_9StringRefEEEERS1_DpOT_.exit ] %73 = getelementptr inbounds i8, ptr %72, i64 8 %74 = icmp ugt ptr %73, %71 br i1 %74, label %_ZNK4llvm7ErrorOrImE8getErrorEv.exit.thread.i, label %_ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberImEENS_7ErrorOrIT_EEv.exit20 @@ -2099,7 +2099,7 @@ _ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberImEENS_7ErrorOrIT_EEv.exit20: _ZNK4llvm7ErrorOrImE8getErrorEv.exit.thread.i: ; preds = %70, %_ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberImEENS_7ErrorOrIT_EEv.exit20 %76 = phi ptr [ %73, %_ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberImEENS_7ErrorOrIT_EEv.exit20 ], [ %72, %70 ] %.sroa.0109.0160 = phi i64 [ %75, %_ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberImEENS_7ErrorOrIT_EEv.exit20 ], [ 0, %70 ] - %.sroa.4110.1156 = phi i32 [ %.sroa.4110.0.extract.trunc, %_ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberImEENS_7ErrorOrIT_EEv.exit20 ], [ %.sroa.4110.0212, %70 ] + %.sroa.4110.1156 = phi i32 [ %.sroa.4110.0.extract.trunc, %_ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberImEENS_7ErrorOrIT_EEv.exit20 ], [ %.sroa.4110.0213, %70 ] %.sroa.4110.0.insert.ext = zext i32 %.sroa.4110.1156 to i64 %.sroa.4110.0.insert.shift = shl nuw i64 %.sroa.4110.0.insert.ext, 32 %.sroa.0109.0.insert.insert = or disjoint i64 %.sroa.4110.0.insert.shift, %.sroa.0109.0160 @@ -2120,7 +2120,7 @@ _ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberImEENS_7ErrorOrIT_EEv.exit24: _ZNK4llvm7ErrorOrImE8getErrorEv.exit.thread.i25: ; preds = %_ZNK4llvm7ErrorOrImE8getErrorEv.exit.thread.i, %_ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberImEENS_7ErrorOrIT_EEv.exit24 %80 = phi ptr [ %77, %_ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberImEENS_7ErrorOrIT_EEv.exit24 ], [ %76, %_ZNK4llvm7ErrorOrImE8getErrorEv.exit.thread.i ] %.sroa.098.0180 = phi i64 [ %79, %_ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberImEENS_7ErrorOrIT_EEv.exit24 ], [ 0, %_ZNK4llvm7ErrorOrImE8getErrorEv.exit.thread.i ] - %.sroa.499.1176 = phi i32 [ %.sroa.499.0.extract.trunc, %_ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberImEENS_7ErrorOrIT_EEv.exit24 ], [ %.sroa.499.0214, %_ZNK4llvm7ErrorOrImE8getErrorEv.exit.thread.i ] + %.sroa.499.1176 = phi i32 [ %.sroa.499.0.extract.trunc, %_ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberImEENS_7ErrorOrIT_EEv.exit24 ], [ %.sroa.499.0216, %_ZNK4llvm7ErrorOrImE8getErrorEv.exit.thread.i ] %.sroa.499.0.insert.ext = zext i32 %.sroa.499.1176 to i64 %.sroa.499.0.insert.shift = shl nuw i64 %.sroa.499.0.insert.ext, 32 %.sroa.098.0.insert.insert = or disjoint i64 %.sroa.499.0.insert.shift, %.sroa.098.0180 @@ -2191,22 +2191,22 @@ _ZN4llvm20MCPseudoProbeDecoder10readStringEj.exit62: ; preds = %_ZNK4llvm7ErrorO br i1 %106, label %_ZNK4llvm9StringRef4copyINS_20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096ELm128EEEEES0_RT_.exit, label %111 _ZN4llvm17errorOrToExpectedINS_9StringRefEEENS_8ExpectedIT_EEONS_7ErrorOrIS3_EE.exit.thread: ; preds = %_ZNK4llvm7ErrorOrIjE8getErrorEv.exit.thread.i - %107 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3_V215system_categoryEv() #23 - %108 = ptrtoint ptr %107 to i64 - %109 = ptrtoint ptr %.sroa.0.0218 to i64 - %.sroa.0.0.insert.mask = and i64 %109, -4294967296 - %110 = inttoptr i64 %.sroa.0.0.insert.mask to ptr + %107 = ptrtoint ptr %.sroa.0.0222 to i64 + %.sroa.0.0.insert.mask = and i64 %107, -4294967296 + %108 = inttoptr i64 %.sroa.0.0.insert.mask to ptr + %109 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3_V215system_categoryEv() #23 + %110 = ptrtoint ptr %109 to i64 br label %111 111: ; preds = %_ZN4llvm17errorOrToExpectedINS_9StringRefEEENS_8ExpectedIT_EEONS_7ErrorOrIS3_EE.exit.thread, %_ZN4llvm20MCPseudoProbeDecoder10readStringEj.exit62 - %.sroa.080.0242 = phi ptr [ %110, %_ZN4llvm17errorOrToExpectedINS_9StringRefEEENS_8ExpectedIT_EEONS_7ErrorOrIS3_EE.exit.thread ], [ %103, %_ZN4llvm20MCPseudoProbeDecoder10readStringEj.exit62 ] - %.sroa.5.1240 = phi i64 [ %108, %_ZN4llvm17errorOrToExpectedINS_9StringRefEEENS_8ExpectedIT_EEONS_7ErrorOrIS3_EE.exit.thread ], [ %.sroa.093.0.insert.ext, %_ZN4llvm20MCPseudoProbeDecoder10readStringEj.exit62 ] + %.sroa.5.1246 = phi i64 [ %110, %_ZN4llvm17errorOrToExpectedINS_9StringRefEEENS_8ExpectedIT_EEONS_7ErrorOrIS3_EE.exit.thread ], [ %.sroa.093.0.insert.ext, %_ZN4llvm20MCPseudoProbeDecoder10readStringEj.exit62 ] + %.sroa.0.1238244 = phi ptr [ %108, %_ZN4llvm17errorOrToExpectedINS_9StringRefEEENS_8ExpectedIT_EEONS_7ErrorOrIS3_EE.exit.thread ], [ %103, %_ZN4llvm20MCPseudoProbeDecoder10readStringEj.exit62 ] %112 = load i64, ptr %66, align 8 - %113 = add i64 %112, %.sroa.5.1240 + %113 = add i64 %112, %.sroa.5.1246 store i64 %113, ptr %66, align 8 %114 = load ptr, ptr %65, align 8 %115 = ptrtoint ptr %114 to i64 - %116 = add i64 %.sroa.5.1240, %115 + %116 = add i64 %.sroa.5.1246, %115 %117 = load ptr, ptr %67, align 8 %118 = ptrtoint ptr %117 to i64 %.not.i.i.i.i.i = icmp ugt i64 %116, %118 @@ -2220,20 +2220,20 @@ _ZN4llvm17errorOrToExpectedINS_9StringRefEEENS_8ExpectedIT_EEONS_7ErrorOrIS3_EE. br label %_ZN4llvm13AllocatorBaseINS_20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096ELm128EEEE8AllocateIcEEPT_m.exit.i .critedge.i.i.i.i.i: ; preds = %111 - %121 = call noundef nonnull ptr @_ZN4llvm20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096ELm128EE12AllocateSlowEmmNS_5AlignE(ptr noundef nonnull align 8 dereferenceable(96) %65, i64 noundef %.sroa.5.1240, i64 noundef %.sroa.5.1240, i8 0) + %121 = call noundef nonnull ptr @_ZN4llvm20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096ELm128EE12AllocateSlowEmmNS_5AlignE(ptr noundef nonnull align 8 dereferenceable(96) %65, i64 noundef %.sroa.5.1246, i64 noundef %.sroa.5.1246, i8 0) br label %_ZN4llvm13AllocatorBaseINS_20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096ELm128EEEE8AllocateIcEEPT_m.exit.i _ZN4llvm13AllocatorBaseINS_20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096ELm128EEEE8AllocateIcEEPT_m.exit.i: ; preds = %119, %.critedge.i.i.i.i.i %.0.i.i.i.i.i = phi ptr [ %114, %119 ], [ %121, %.critedge.i.i.i.i.i ] - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %.0.i.i.i.i.i, ptr align 1 %.sroa.080.0242, i64 %.sroa.5.1240, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %.0.i.i.i.i.i, ptr align 1 %.sroa.0.1238244, i64 %.sroa.5.1246, i1 false) br label %_ZNK4llvm9StringRef4copyINS_20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096ELm128EEEEES0_RT_.exit _ZNK4llvm9StringRef4copyINS_20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096ELm128EEEEES0_RT_.exit: ; preds = %_ZN4llvm20MCPseudoProbeDecoder10readStringEj.exit62, %_ZN4llvm13AllocatorBaseINS_20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096ELm128EEEE8AllocateIcEEPT_m.exit.i - %.sroa.5.1241 = phi i64 [ 0, %_ZN4llvm20MCPseudoProbeDecoder10readStringEj.exit62 ], [ %.sroa.5.1240, %_ZN4llvm13AllocatorBaseINS_20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096ELm128EEEE8AllocateIcEEPT_m.exit.i ] - %.sroa.0.1233239 = phi ptr [ %103, %_ZN4llvm20MCPseudoProbeDecoder10readStringEj.exit62 ], [ %.sroa.080.0242, %_ZN4llvm13AllocatorBaseINS_20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096ELm128EEEE8AllocateIcEEPT_m.exit.i ] + %.sroa.5.1247 = phi i64 [ 0, %_ZN4llvm20MCPseudoProbeDecoder10readStringEj.exit62 ], [ %.sroa.5.1246, %_ZN4llvm13AllocatorBaseINS_20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096ELm128EEEE8AllocateIcEEPT_m.exit.i ] + %.sroa.0.1238245 = phi ptr [ %103, %_ZN4llvm20MCPseudoProbeDecoder10readStringEj.exit62 ], [ %.sroa.0.1238244, %_ZN4llvm13AllocatorBaseINS_20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096ELm128EEEE8AllocateIcEEPT_m.exit.i ] %.sroa.0.0.i = phi ptr [ null, %_ZN4llvm20MCPseudoProbeDecoder10readStringEj.exit62 ], [ %.0.i.i.i.i.i, %_ZN4llvm13AllocatorBaseINS_20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096ELm128EEEE8AllocateIcEEPT_m.exit.i ] store ptr %.sroa.0.0.i, ptr %8, align 8 - store i64 %.sroa.5.1241, ptr %68, align 8 + store i64 %.sroa.5.1247, ptr %68, align 8 %122 = load ptr, ptr %69, align 8 %123 = load ptr, ptr %45, align 8 %.not.i74 = icmp eq ptr %122, %123 @@ -2248,7 +2248,7 @@ _ZNK4llvm9StringRef4copyINS_20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096EL %128 = getelementptr inbounds nuw i8, ptr %122, i64 16 store ptr %.sroa.0.0.i, ptr %128, align 8 %.sroa.2.0..sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %122, i64 24 - store i64 %.sroa.5.1241, ptr %.sroa.2.0..sroa_idx.i.i.i.i, align 8 + store i64 %.sroa.5.1247, ptr %.sroa.2.0..sroa_idx.i.i.i.i, align 8 %129 = load ptr, ptr %69, align 8 %130 = getelementptr inbounds i8, ptr %129, i64 32 store ptr %130, ptr %69, align 8 @@ -2269,7 +2269,7 @@ _ZNSt6vectorIN4llvm21MCPseudoProbeFuncDescESaIS1_EE12emplace_backIJRmS5_NS0_9Str br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %_ZNSt6vectorIN4llvm21MCPseudoProbeFuncDescESaIS1_EE7reserveEm.exit - %.val = phi ptr [ %.val.pre, %._crit_edge.loopexit ], [ %.val227, %_ZNSt6vectorIN4llvm21MCPseudoProbeFuncDescESaIS1_EE7reserveEm.exit ] + %.val = phi ptr [ %.val.pre, %._crit_edge.loopexit ], [ %.val231, %_ZNSt6vectorIN4llvm21MCPseudoProbeFuncDescESaIS1_EE7reserveEm.exit ] %135 = getelementptr inbounds i8, ptr %0, i64 112 %.val13 = load ptr, ptr %135, align 8 %.not.i.i.i.i76 = icmp eq ptr %.val, %.val13 @@ -2432,9 +2432,9 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN4llvm21MCPseudoProbeFuncDes call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) br label %"_ZN4llvm4sortIRNS_20GUIDProbeFunctionMapEZNS_20MCPseudoProbeDecoder21buildGUID2FuncDescMapEPKhmE3$_0EEvOT_T0_.exit" -"_ZN4llvm4sortIRNS_20GUIDProbeFunctionMapEZNS_20MCPseudoProbeDecoder21buildGUID2FuncDescMapEPKhmE3$_0EEvOT_T0_.exit": ; preds = %38, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i, %15, %.lr.ph263, %"_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN4llvm21MCPseudoProbeFuncDescESt6vectorIS3_SaIS3_EEEENS0_5__ops14_Val_comp_iterIZNS2_20MCPseudoProbeDecoder21buildGUID2FuncDescMapEPKhmE3$_0EEEvT_T0_.exit.i16.i.i.i.i.i", %"_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPN4llvm21MCPseudoProbeFuncDescESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZNS2_20MCPseudoProbeDecoder21buildGUID2FuncDescMapEPKhmE3$_0EEEvT_SG_T0_.exit47.i.i.i.i.i", %"_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPN4llvm21MCPseudoProbeFuncDescESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZNS2_20MCPseudoProbeDecoder21buildGUID2FuncDescMapEPKhmE3$_0EEEvT_SG_T0_.exit.i.i.i.i.i", %._crit_edge - %.not.not.not257 = phi i1 [ true, %"_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPN4llvm21MCPseudoProbeFuncDescESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZNS2_20MCPseudoProbeDecoder21buildGUID2FuncDescMapEPKhmE3$_0EEEvT_SG_T0_.exit47.i.i.i.i.i" ], [ true, %"_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPN4llvm21MCPseudoProbeFuncDescESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZNS2_20MCPseudoProbeDecoder21buildGUID2FuncDescMapEPKhmE3$_0EEEvT_SG_T0_.exit.i.i.i.i.i" ], [ true, %._crit_edge ], [ true, %"_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN4llvm21MCPseudoProbeFuncDescESt6vectorIS3_SaIS3_EEEENS0_5__ops14_Val_comp_iterIZNS2_20MCPseudoProbeDecoder21buildGUID2FuncDescMapEPKhmE3$_0EEEvT_T0_.exit.i16.i.i.i.i.i" ], [ false, %.lr.ph263 ], [ false, %15 ], [ false, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i ], [ false, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i ], [ false, %38 ] - ret i1 %.not.not.not257 +"_ZN4llvm4sortIRNS_20GUIDProbeFunctionMapEZNS_20MCPseudoProbeDecoder21buildGUID2FuncDescMapEPKhmE3$_0EEvOT_T0_.exit": ; preds = %38, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i, %15, %.lr.ph269, %"_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN4llvm21MCPseudoProbeFuncDescESt6vectorIS3_SaIS3_EEEENS0_5__ops14_Val_comp_iterIZNS2_20MCPseudoProbeDecoder21buildGUID2FuncDescMapEPKhmE3$_0EEEvT_T0_.exit.i16.i.i.i.i.i", %"_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPN4llvm21MCPseudoProbeFuncDescESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZNS2_20MCPseudoProbeDecoder21buildGUID2FuncDescMapEPKhmE3$_0EEEvT_SG_T0_.exit47.i.i.i.i.i", %"_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPN4llvm21MCPseudoProbeFuncDescESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZNS2_20MCPseudoProbeDecoder21buildGUID2FuncDescMapEPKhmE3$_0EEEvT_SG_T0_.exit.i.i.i.i.i", %._crit_edge + %.not.not.not263 = phi i1 [ true, %"_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPN4llvm21MCPseudoProbeFuncDescESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZNS2_20MCPseudoProbeDecoder21buildGUID2FuncDescMapEPKhmE3$_0EEEvT_SG_T0_.exit47.i.i.i.i.i" ], [ true, %"_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPN4llvm21MCPseudoProbeFuncDescESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZNS2_20MCPseudoProbeDecoder21buildGUID2FuncDescMapEPKhmE3$_0EEEvT_SG_T0_.exit.i.i.i.i.i" ], [ true, %._crit_edge ], [ true, %"_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN4llvm21MCPseudoProbeFuncDescESt6vectorIS3_SaIS3_EEEENS0_5__ops14_Val_comp_iterIZNS2_20MCPseudoProbeDecoder21buildGUID2FuncDescMapEPKhmE3$_0EEEvT_T0_.exit.i16.i.i.i.i.i" ], [ false, %.lr.ph269 ], [ false, %15 ], [ false, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i ], [ false, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i ], [ false, %38 ] + ret i1 %.not.not.not263 } ; Function Attrs: mustprogress nounwind uwtable @@ -3452,16 +3452,16 @@ _ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i: ; preds = %87, %80, %_ZN4llv ._ZNK4llvm7ErrorOrIjE8getErrorEv.exit.thread_crit_edge.i: ; preds = %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i store ptr %98, ptr %7, align 8, !noalias !147 - %.pre484 = ptrtoint ptr %98 to i64 - %.pre485 = sub i64 0, %.pre484 + %.pre486 = ptrtoint ptr %98 to i64 + %.pre487 = sub i64 0, %.pre486 br label %_ZN4llvm8ExpectedIjED2Ev.exit _ZN4llvm8ExpectedIjED2Ev.exit: ; preds = %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i, %._ZNK4llvm7ErrorOrIjE8getErrorEv.exit.thread_crit_edge.i - %.pre-phi486 = phi i64 [ %79, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i ], [ %79, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i ], [ %.pre485, %._ZNK4llvm7ErrorOrIjE8getErrorEv.exit.thread_crit_edge.i ] - %.pre-phi = phi i64 [ %78, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i ], [ %78, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i ], [ %.pre484, %._ZNK4llvm7ErrorOrIjE8getErrorEv.exit.thread_crit_edge.i ] + %.pre-phi488 = phi i64 [ %79, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i ], [ %79, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i ], [ %.pre487, %._ZNK4llvm7ErrorOrIjE8getErrorEv.exit.thread_crit_edge.i ] + %.pre-phi = phi i64 [ %78, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i ], [ %78, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i ], [ %.pre486, %._ZNK4llvm7ErrorOrIjE8getErrorEv.exit.thread_crit_edge.i ] %101 = phi ptr [ %77, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i ], [ %77, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i ], [ %98, %._ZNK4llvm7ErrorOrIjE8getErrorEv.exit.thread_crit_edge.i ] %.sroa.0283.0.insert.ext = phi i64 [ 0, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i ], [ 0, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i ], [ %.128.i6.i, %._ZNK4llvm7ErrorOrIjE8getErrorEv.exit.thread_crit_edge.i ] - %scevgep.i.i56 = getelementptr i8, ptr %101, i64 %.pre-phi486 + %scevgep.i.i56 = getelementptr i8, ptr %101, i64 %.pre-phi488 br label %102 102: ; preds = %111, %_ZN4llvm8ExpectedIjED2Ev.exit @@ -3516,8 +3516,8 @@ _ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i61: ; preds = %109, %102, %_ZN _ZN4llvm8ExpectedIjED2Ev.exit84: ; preds = %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i61, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i60, %._ZNK4llvm7ErrorOrIjE8getErrorEv.exit.thread_crit_edge.i71 %.sroa.0272.0.insert.ext = phi i32 [ %123, %._ZNK4llvm7ErrorOrIjE8getErrorEv.exit.thread_crit_edge.i71 ], [ 0, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i60 ], [ 0, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i61 ] - %.not461 = icmp eq i64 %.sroa.0283.0.insert.ext, 0 - br i1 %.not461, label %._crit_edge, label %.lr.ph + %.not463 = icmp eq i64 %.sroa.0283.0.insert.ext, 0 + br i1 %.not463, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %_ZN4llvm8ExpectedIjED2Ev.exit84 %124 = getelementptr inbounds nuw i8, ptr %4, i64 16 @@ -3528,11 +3528,11 @@ _ZN4llvm8ExpectedIjED2Ev.exit84: ; preds = %_ZN4llvm13decodeULE br label %128 128: ; preds = %.lr.ph, %297 - %.035456 = phi i32 [ 0, %.lr.ph ], [ %.1, %297 ] - %.036455 = phi i64 [ 0, %.lr.ph ], [ %298, %297 ] - %.sroa.4212.0451 = phi i32 [ undef, %.lr.ph ], [ %.sroa.4212.1, %297 ] - %.sroa.4223.0448 = phi i32 [ undef, %.lr.ph ], [ %.sroa.4223.1, %297 ] - %.sroa.0248.0444 = phi i64 [ undef, %.lr.ph ], [ %.sroa.0248.0.insert.insert, %297 ] + %.035458 = phi i32 [ 0, %.lr.ph ], [ %.1, %297 ] + %.036457 = phi i64 [ 0, %.lr.ph ], [ %298, %297 ] + %.sroa.4212.0453 = phi i32 [ undef, %.lr.ph ], [ %.sroa.4212.1, %297 ] + %.sroa.4223.0450 = phi i32 [ undef, %.lr.ph ], [ %.sroa.4223.1, %297 ] + %.sroa.0248.0446 = phi i64 [ undef, %.lr.ph ], [ %.sroa.0248.0.insert.insert, %297 ] %129 = load ptr, ptr %7, align 8, !noalias !153 %130 = ptrtoint ptr %129 to i64 %131 = sub i64 0, %130 @@ -3571,16 +3571,16 @@ _ZN4llvm8ExpectedIjED2Ev.exit84: ; preds = %_ZN4llvm13decodeULE _ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i89: ; preds = %141 %148 = icmp ugt i64 %144, 4294967295 - %.pre483 = load ptr, ptr %10, align 8, !noalias !153 + %.pre485 = load ptr, ptr %10, align 8, !noalias !153 br i1 %148, label %_ZNK4llvm7ErrorOrIjE8getErrorEv.exit.thread.i102, label %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i90 _ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i90.loopexit: ; preds = %132, %139 %.pn.in.i91.ph = phi ptr [ %scevgep.i.i85, %132 ], [ %.0.i.i88, %139 ] - %.pre482 = load ptr, ptr %10, align 8, !noalias !153 + %.pre484 = load ptr, ptr %10, align 8, !noalias !153 br label %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i90 _ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i90: ; preds = %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i90.loopexit, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i89 - %149 = phi ptr [ %.pre483, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i89 ], [ %.pre482, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i90.loopexit ] + %149 = phi ptr [ %.pre485, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i89 ], [ %.pre484, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i90.loopexit ] %.pn.in.i91 = phi ptr [ %146, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i89 ], [ %.pn.in.i91.ph, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i90.loopexit ] %.128.i6.i92 = phi i64 [ %144, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i89 ], [ 0, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i90.loopexit ] %.pn.i93 = ptrtoint ptr %.pn.in.i91 to i64 @@ -3596,23 +3596,23 @@ _ZN4llvm20MCPseudoProbeDecoder18readUnsignedNumberIjEENS_7ErrorOrIT_EEv.exit99: br label %_ZNK4llvm7ErrorOrIjE8getErrorEv.exit.thread.i102 _ZNK4llvm7ErrorOrIjE8getErrorEv.exit.thread.i102: ; preds = %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i90, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i89, %_ZN4llvm20MCPseudoProbeDecoder18readUnsignedNumberIjEENS_7ErrorOrIT_EEv.exit99 - %154 = phi ptr [ %149, %_ZN4llvm20MCPseudoProbeDecoder18readUnsignedNumberIjEENS_7ErrorOrIT_EEv.exit99 ], [ %149, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i90 ], [ %.pre483, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i89 ] + %154 = phi ptr [ %149, %_ZN4llvm20MCPseudoProbeDecoder18readUnsignedNumberIjEENS_7ErrorOrIT_EEv.exit99 ], [ %149, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i90 ], [ %.pre485, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i89 ] %155 = phi ptr [ %151, %_ZN4llvm20MCPseudoProbeDecoder18readUnsignedNumberIjEENS_7ErrorOrIT_EEv.exit99 ], [ %129, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i90 ], [ %129, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i89 ] %.sroa.0259.0.insert.ext = phi i32 [ %153, %_ZN4llvm20MCPseudoProbeDecoder18readUnsignedNumberIjEENS_7ErrorOrIT_EEv.exit99 ], [ 0, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i90 ], [ 0, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i89 ] %156 = getelementptr inbounds i8, ptr %155, i64 1 %157 = icmp ugt ptr %156, %154 - br i1 %157, label %_ZN4llvm8ExpectedIhED2Ev.exit, label %_ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberIhEENS_7ErrorOrIT_EEv.exit + br i1 %157, label %_ZN4llvm17errorOrToExpectedIhEENS_8ExpectedIT_EEONS_7ErrorOrIS2_EE.exit, label %_ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberIhEENS_7ErrorOrIT_EEv.exit _ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberIhEENS_7ErrorOrIT_EEv.exit: ; preds = %_ZNK4llvm7ErrorOrIjE8getErrorEv.exit.thread.i102 call void @llvm.assume(i1 true) [ "align"(ptr %155, i64 1) ] %.0.copyload.i.i.i.i114 = load i8, ptr %155, align 1, !noalias !156 store ptr %156, ptr %7, align 8, !noalias !156 %158 = zext i8 %.0.copyload.i.i.i.i114 to i64 - br label %_ZN4llvm8ExpectedIhED2Ev.exit + br label %_ZN4llvm17errorOrToExpectedIhEENS_8ExpectedIT_EEONS_7ErrorOrIS2_EE.exit -_ZN4llvm8ExpectedIhED2Ev.exit: ; preds = %_ZNK4llvm7ErrorOrIjE8getErrorEv.exit.thread.i102, %_ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberIhEENS_7ErrorOrIT_EEv.exit +_ZN4llvm17errorOrToExpectedIhEENS_8ExpectedIT_EEONS_7ErrorOrIS2_EE.exit: ; preds = %_ZNK4llvm7ErrorOrIjE8getErrorEv.exit.thread.i102, %_ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberIhEENS_7ErrorOrIT_EEv.exit %.sroa.0248.0.insert.ext = phi i64 [ %158, %_ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberIhEENS_7ErrorOrIT_EEv.exit ], [ 0, %_ZNK4llvm7ErrorOrIjE8getErrorEv.exit.thread.i102 ] - %.sroa.0248.0.insert.mask = and i64 %.sroa.0248.0444, -256 + %.sroa.0248.0.insert.mask = and i64 %.sroa.0248.0446, -256 %.sroa.0248.0.insert.insert = or disjoint i64 %.sroa.0248.0.insert.mask, %.sroa.0248.0.insert.ext %.sroa.0248.0.extract.trunc = trunc nuw i64 %.sroa.0248.0.insert.ext to i8 %159 = and i8 %.sroa.0248.0.extract.trunc, 15 @@ -3622,7 +3622,7 @@ _ZN4llvm8ExpectedIhED2Ev.exit: ; preds = %_ZNK4llvm7ErrorOrIj %162 = load ptr, ptr %7, align 8, !noalias !137 br i1 %.not43, label %196, label %163 -163: ; preds = %_ZN4llvm8ExpectedIhED2Ev.exit +163: ; preds = %_ZN4llvm17errorOrToExpectedIhEENS_8ExpectedIT_EEONS_7ErrorOrIS2_EE.exit %164 = ptrtoint ptr %162 to i64 br label %165 @@ -3698,7 +3698,7 @@ _ZN4llvm20MCPseudoProbeDecoder16readSignedNumberIlEENS_7ErrorOrIT_EEv.exit: ; pr _ZNK4llvm7ErrorOrIlE8getErrorEv.exit.thread.i: ; preds = %.loopexit.i, %_ZN4llvm20MCPseudoProbeDecoder16readSignedNumberIlEENS_7ErrorOrIT_EEv.exit %193 = phi ptr [ %189, %_ZN4llvm20MCPseudoProbeDecoder16readSignedNumberIlEENS_7ErrorOrIT_EEv.exit ], [ %162, %.loopexit.i ] %.sroa.0222.0379 = phi i64 [ %192, %_ZN4llvm20MCPseudoProbeDecoder16readSignedNumberIlEENS_7ErrorOrIT_EEv.exit ], [ 0, %.loopexit.i ] - %.sroa.4223.2375 = phi i32 [ %.sroa.4223.0.extract.trunc, %_ZN4llvm20MCPseudoProbeDecoder16readSignedNumberIlEENS_7ErrorOrIT_EEv.exit ], [ %.sroa.4223.0448, %.loopexit.i ] + %.sroa.4223.2375 = phi i32 [ %.sroa.4223.0.extract.trunc, %_ZN4llvm20MCPseudoProbeDecoder16readSignedNumberIlEENS_7ErrorOrIT_EEv.exit ], [ %.sroa.4223.0450, %.loopexit.i ] %.sroa.4223.0.insert.ext = zext i32 %.sroa.4223.2375 to i64 %.sroa.4223.0.insert.shift = shl nuw i64 %.sroa.4223.0.insert.ext, 32 %.sroa.0222.0.insert.insert = or disjoint i64 %.sroa.4223.0.insert.shift, %.sroa.0222.0379 @@ -3706,7 +3706,7 @@ _ZNK4llvm7ErrorOrIlE8getErrorEv.exit.thread.i: ; preds = %.loopexit.i, %_ZN4l %195 = add i64 %.sroa.0222.0.insert.insert, %194 br label %_ZNK4llvm12DenseMapBaseINS_8DenseMapImmNS_12DenseMapInfoImvEENS_6detail12DenseMapPairImmEEEEmmS3_S6_E6lookupERKm.exit157.thread -196: ; preds = %_ZN4llvm8ExpectedIhED2Ev.exit +196: ; preds = %_ZN4llvm17errorOrToExpectedIhEENS_8ExpectedIT_EEONS_7ErrorOrIS2_EE.exit %197 = getelementptr inbounds i8, ptr %162, i64 8 %198 = load ptr, ptr %10, align 8, !noalias !162 %199 = icmp ugt ptr %197, %198 @@ -3724,7 +3724,7 @@ _ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberIlEENS_7ErrorOrIT_EEv.exit: ; _ZNK4llvm7ErrorOrIlE8getErrorEv.exit.thread.i137: ; preds = %196, %_ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberIlEENS_7ErrorOrIT_EEv.exit %201 = phi ptr [ %197, %_ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberIlEENS_7ErrorOrIT_EEv.exit ], [ %162, %196 ] %.sroa.0211.0399 = phi i64 [ %200, %_ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberIlEENS_7ErrorOrIT_EEv.exit ], [ 0, %196 ] - %.sroa.4212.2395 = phi i32 [ %.sroa.4212.0.extract.trunc, %_ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberIlEENS_7ErrorOrIT_EEv.exit ], [ %.sroa.4212.0451, %196 ] + %.sroa.4212.2395 = phi i32 [ %.sroa.4212.0.extract.trunc, %_ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberIlEENS_7ErrorOrIT_EEv.exit ], [ %.sroa.4212.0453, %196 ] %.sroa.4212.0.insert.ext = zext i32 %.sroa.4212.2395 to i64 %.sroa.4212.0.insert.shift = shl nuw i64 %.sroa.4212.0.insert.ext, 32 %.sroa.0211.0.insert.insert = or disjoint i64 %.sroa.4212.0.insert.shift, %.sroa.0211.0399 @@ -3784,8 +3784,8 @@ _ZNK4llvm12DenseMapBaseINS_8DenseMapImmNS_12DenseMapInfoImvEENS_6detail12DenseMa %230 = phi ptr [ %198, %229 ], [ %190, %_ZNK4llvm7ErrorOrIlE8getErrorEv.exit.thread.i ], [ %198, %203 ], [ %198, %_ZNK4llvm12DenseMapBaseINS_8DenseMapImmNS_12DenseMapInfoImvEENS_6detail12DenseMapPairImmEEEEmmS3_S6_E6lookupERKm.exit157 ], [ %198, %.lr.ph.i.i.i151 ] %231 = phi ptr [ %201, %229 ], [ %193, %_ZNK4llvm7ErrorOrIlE8getErrorEv.exit.thread.i ], [ %201, %203 ], [ %201, %_ZNK4llvm12DenseMapBaseINS_8DenseMapImmNS_12DenseMapInfoImvEENS_6detail12DenseMapPairImmEEEEmmS3_S6_E6lookupERKm.exit157 ], [ %201, %.lr.ph.i.i.i151 ] %.0323 = phi i64 [ %.sroa.0211.0.insert.insert, %229 ], [ %195, %_ZNK4llvm7ErrorOrIlE8getErrorEv.exit.thread.i ], [ %.sroa.0211.0.insert.insert, %203 ], [ %spec.select, %_ZNK4llvm12DenseMapBaseINS_8DenseMapImmNS_12DenseMapInfoImvEENS_6detail12DenseMapPairImmEEEEmmS3_S6_E6lookupERKm.exit157 ], [ %.sroa.0211.0.insert.insert, %.lr.ph.i.i.i151 ] - %.sroa.4223.1 = phi i32 [ %.sroa.4223.0448, %229 ], [ %.sroa.4223.2375, %_ZNK4llvm7ErrorOrIlE8getErrorEv.exit.thread.i ], [ %.sroa.4223.0448, %203 ], [ %.sroa.4223.0448, %_ZNK4llvm12DenseMapBaseINS_8DenseMapImmNS_12DenseMapInfoImvEENS_6detail12DenseMapPairImmEEEEmmS3_S6_E6lookupERKm.exit157 ], [ %.sroa.4223.0448, %.lr.ph.i.i.i151 ] - %.sroa.4212.1 = phi i32 [ %.sroa.4212.2395, %229 ], [ %.sroa.4212.0451, %_ZNK4llvm7ErrorOrIlE8getErrorEv.exit.thread.i ], [ %.sroa.4212.2395, %203 ], [ %.sroa.4212.2395, %_ZNK4llvm12DenseMapBaseINS_8DenseMapImmNS_12DenseMapInfoImvEENS_6detail12DenseMapPairImmEEEEmmS3_S6_E6lookupERKm.exit157 ], [ %.sroa.4212.2395, %.lr.ph.i.i.i151 ] + %.sroa.4223.1 = phi i32 [ %.sroa.4223.0450, %229 ], [ %.sroa.4223.2375, %_ZNK4llvm7ErrorOrIlE8getErrorEv.exit.thread.i ], [ %.sroa.4223.0450, %203 ], [ %.sroa.4223.0450, %_ZNK4llvm12DenseMapBaseINS_8DenseMapImmNS_12DenseMapInfoImvEENS_6detail12DenseMapPairImmEEEEmmS3_S6_E6lookupERKm.exit157 ], [ %.sroa.4223.0450, %.lr.ph.i.i.i151 ] + %.sroa.4212.1 = phi i32 [ %.sroa.4212.2395, %229 ], [ %.sroa.4212.0453, %_ZNK4llvm7ErrorOrIlE8getErrorEv.exit.thread.i ], [ %.sroa.4212.2395, %203 ], [ %.sroa.4212.2395, %_ZNK4llvm12DenseMapBaseINS_8DenseMapImmNS_12DenseMapInfoImvEENS_6detail12DenseMapPairImmEEEEmmS3_S6_E6lookupERKm.exit157 ], [ %.sroa.4212.2395, %.lr.ph.i.i.i151 ] %.not425 = icmp samesign ult i8 %161, 4 br i1 %.not425, label %_ZN4llvm8ExpectedIjED2Ev.exit186, label %232 @@ -3945,13 +3945,13 @@ _ZNSt6vectorIN4llvm20MCDecodedPseudoProbeESaIS1_EE17_M_realloc_insertIJRmRjNS0_1 br label %_ZNSt6vectorIN4llvm20MCDecodedPseudoProbeESaIS1_EE12emplace_backIJRmRjNS0_15PseudoProbeTypeERhS6_RPNS0_30MCDecodedPseudoProbeInlineTreeEEEERS1_DpOT_.exit _ZNSt6vectorIN4llvm20MCDecodedPseudoProbeESaIS1_EE12emplace_backIJRmRjNS0_15PseudoProbeTypeERhS6_RPNS0_30MCDecodedPseudoProbeInlineTreeEEEERS1_DpOT_.exit: ; preds = %261, %_ZNSt6vectorIN4llvm20MCDecodedPseudoProbeESaIS1_EE17_M_realloc_insertIJRmRjNS0_15PseudoProbeTypeERhS6_RPNS0_30MCDecodedPseudoProbeInlineTreeEEEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit - %296 = add i32 %.035456, 1 + %296 = add i32 %.035458, 1 br label %297 297: ; preds = %_ZNSt6vectorIN4llvm20MCDecodedPseudoProbeESaIS1_EE12emplace_backIJRmRjNS0_15PseudoProbeTypeERhS6_RPNS0_30MCDecodedPseudoProbeInlineTreeEEEERS1_DpOT_.exit, %_ZN4llvm8ExpectedIjED2Ev.exit186 - %.1 = phi i32 [ %296, %_ZNSt6vectorIN4llvm20MCDecodedPseudoProbeESaIS1_EE12emplace_backIJRmRjNS0_15PseudoProbeTypeERhS6_RPNS0_30MCDecodedPseudoProbeInlineTreeEEEERS1_DpOT_.exit ], [ %.035456, %_ZN4llvm8ExpectedIjED2Ev.exit186 ] + %.1 = phi i32 [ %296, %_ZNSt6vectorIN4llvm20MCDecodedPseudoProbeESaIS1_EE12emplace_backIJRmRjNS0_15PseudoProbeTypeERhS6_RPNS0_30MCDecodedPseudoProbeInlineTreeEEEERS1_DpOT_.exit ], [ %.035458, %_ZN4llvm8ExpectedIjED2Ev.exit186 ] store i64 %.0323, ptr %2, align 8 - %298 = add nuw nsw i64 %.036455, 1 + %298 = add nuw nsw i64 %.036457, 1 %exitcond.not = icmp eq i64 %298, %.sroa.0283.0.insert.ext br i1 %exitcond.not, label %._crit_edge.loopexit, label %128, !llvm.loop !172 @@ -3995,9 +3995,9 @@ _ZNSt6vectorIN4llvm20MCDecodedPseudoProbeESaIS1_EE12emplace_backIJRmRjNS0_15Pseu 322: ; preds = %300 tail call void @_ZNSt6vectorIN4llvm30MCDecodedPseudoProbeInlineTreeESaIS1_EE17_M_default_appendEm(ptr noundef nonnull align 8 dereferenceable(24) %311, i64 noundef %319) - %.pre479 = load ptr, ptr %311, align 8 - %.pre480 = load ptr, ptr %312, align 8 - %.pre487 = ptrtoint ptr %.pre479 to i64 + %.pre481 = load ptr, ptr %311, align 8 + %.pre482 = load ptr, ptr %312, align 8 + %.pre489 = ptrtoint ptr %.pre481 to i64 br label %_ZNSt6vectorIN4llvm30MCDecodedPseudoProbeInlineTreeESaIS1_EE6resizeEm.exit 323: ; preds = %300 @@ -4014,11 +4014,11 @@ _ZNSt6vectorIN4llvm20MCDecodedPseudoProbeESaIS1_EE12emplace_backIJRmRjNS0_15Pseu br label %_ZNSt6vectorIN4llvm30MCDecodedPseudoProbeInlineTreeESaIS1_EE6resizeEm.exit _ZNSt6vectorIN4llvm30MCDecodedPseudoProbeInlineTreeESaIS1_EE6resizeEm.exit: ; preds = %322, %323, %325, %327 - %.pre-phi488 = phi i64 [ %.pre487, %322 ], [ %316, %323 ], [ %316, %325 ], [ %316, %327 ] - %328 = phi ptr [ %.pre480, %322 ], [ %313, %323 ], [ %313, %325 ], [ %326, %327 ] - %329 = phi ptr [ %.pre479, %322 ], [ %314, %323 ], [ %314, %325 ], [ %314, %327 ] + %.pre-phi490 = phi i64 [ %.pre489, %322 ], [ %316, %323 ], [ %316, %325 ], [ %316, %327 ] + %328 = phi ptr [ %.pre482, %322 ], [ %313, %323 ], [ %313, %325 ], [ %326, %327 ] + %329 = phi ptr [ %.pre481, %322 ], [ %314, %323 ], [ %314, %325 ], [ %314, %327 ] %330 = ptrtoint ptr %328 to i64 - %331 = sub i64 %330, %.pre-phi488 + %331 = sub i64 %330, %.pre-phi490 %332 = sdiv exact i64 %331, 48 %.sroa.0.0.copyload.pn.idx.i192 = tail call i64 @llvm.usub.sat.i64(i64 %332, i64 %319) %.sroa.0.0.copyload.pn.i193 = getelementptr inbounds %"class.llvm::MCDecodedPseudoProbeInlineTree", ptr %329, i64 %.sroa.0.0.copyload.pn.idx.i192 @@ -4029,17 +4029,17 @@ _ZNSt6vectorIN4llvm30MCDecodedPseudoProbeInlineTreeESaIS1_EE6resizeEm.exit: ; pr br label %333 333: ; preds = %_ZNSt6vectorIN4llvm30MCDecodedPseudoProbeInlineTreeESaIS1_EE6resizeEm.exit, %._crit_edge - %.not462 = icmp eq i32 %.sroa.0272.0.insert.ext, 0 - br i1 %.not462, label %._crit_edge460, label %.lr.ph459 + %.not464 = icmp eq i32 %.sroa.0272.0.insert.ext, 0 + br i1 %.not464, label %._crit_edge462, label %.lr.ph461 -.lr.ph459: ; preds = %333, %.lr.ph459 - %.0457 = phi i32 [ %335, %.lr.ph459 ], [ 0, %333 ] - %334 = tail call noundef zeroext i1 @_ZN4llvm20MCPseudoProbeDecoder21buildAddress2ProbeMapILb0EEEbPNS_30MCDecodedPseudoProbeInlineTreeERmRKNS_8DenseSetImNS_12DenseMapInfoImvEEEERKNS_8DenseMapImmS7_NS_6detail12DenseMapPairImmEEEEj(ptr noundef nonnull align 8 dereferenceable(313) %0, ptr noundef %.1321, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(20) %4, i32 noundef %.0457) - %335 = add nuw i32 %.0457, 1 - %exitcond478.not = icmp eq i32 %335, %.sroa.0272.0.insert.ext - br i1 %exitcond478.not, label %._crit_edge460, label %.lr.ph459, !llvm.loop !173 +.lr.ph461: ; preds = %333, %.lr.ph461 + %.0459 = phi i32 [ %335, %.lr.ph461 ], [ 0, %333 ] + %334 = tail call noundef zeroext i1 @_ZN4llvm20MCPseudoProbeDecoder21buildAddress2ProbeMapILb0EEEbPNS_30MCDecodedPseudoProbeInlineTreeERmRKNS_8DenseSetImNS_12DenseMapInfoImvEEEERKNS_8DenseMapImmS7_NS_6detail12DenseMapPairImmEEEEj(ptr noundef nonnull align 8 dereferenceable(313) %0, ptr noundef %.1321, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(20) %4, i32 noundef %.0459) + %335 = add nuw i32 %.0459, 1 + %exitcond480.not = icmp eq i32 %335, %.sroa.0272.0.insert.ext + br i1 %exitcond480.not, label %._crit_edge462, label %.lr.ph461, !llvm.loop !173 -._crit_edge460: ; preds = %.lr.ph459, %333 +._crit_edge462: ; preds = %.lr.ph461, %333 %336 = icmp ne ptr %.1321, null ret i1 %336 } @@ -7903,11 +7903,11 @@ _ZN4llvm8ExpectedImED2Ev.exit: ; preds = %_ZN4llvm8ExpectedIj store i32 %.sroa.0324.0.insert.ext, ptr %.sroa.5305.0..sroa_idx, align 4 %44 = load ptr, ptr %1, align 8 %45 = getelementptr inbounds %"class.llvm::MCDecodedPseudoProbeInlineTree", ptr %44, i64 %41 - %.pre497 = load ptr, ptr %7, align 8, !noalias !263 + %.pre499 = load ptr, ptr %7, align 8, !noalias !263 br label %46 46: ; preds = %40, %_ZN4llvm8ExpectedImED2Ev.exit - %47 = phi ptr [ %39, %_ZN4llvm8ExpectedImED2Ev.exit ], [ %.pre497, %40 ] + %47 = phi ptr [ %39, %_ZN4llvm8ExpectedImED2Ev.exit ], [ %.pre499, %40 ] %.0340 = phi ptr [ null, %_ZN4llvm8ExpectedImED2Ev.exit ], [ %45, %40 ] %48 = ptrtoint ptr %47 to i64 %49 = sub i64 0, %48 @@ -7961,16 +7961,16 @@ _ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i51: ; preds = %57, %50, %_ZN4l ._ZNK4llvm7ErrorOrIjE8getErrorEv.exit.thread_crit_edge.i61: ; preds = %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i51 store ptr %68, ptr %7, align 8, !noalias !263 - %.pre504 = ptrtoint ptr %68 to i64 - %.pre505 = sub i64 0, %.pre504 + %.pre506 = ptrtoint ptr %68 to i64 + %.pre507 = sub i64 0, %.pre506 br label %_ZN4llvm8ExpectedIjED2Ev.exit74 _ZN4llvm8ExpectedIjED2Ev.exit74: ; preds = %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i51, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i50, %._ZNK4llvm7ErrorOrIjE8getErrorEv.exit.thread_crit_edge.i61 - %.pre-phi506 = phi i64 [ %49, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i51 ], [ %49, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i50 ], [ %.pre505, %._ZNK4llvm7ErrorOrIjE8getErrorEv.exit.thread_crit_edge.i61 ] - %.pre-phi = phi i64 [ %48, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i51 ], [ %48, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i50 ], [ %.pre504, %._ZNK4llvm7ErrorOrIjE8getErrorEv.exit.thread_crit_edge.i61 ] + %.pre-phi508 = phi i64 [ %49, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i51 ], [ %49, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i50 ], [ %.pre507, %._ZNK4llvm7ErrorOrIjE8getErrorEv.exit.thread_crit_edge.i61 ] + %.pre-phi = phi i64 [ %48, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i51 ], [ %48, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i50 ], [ %.pre506, %._ZNK4llvm7ErrorOrIjE8getErrorEv.exit.thread_crit_edge.i61 ] %71 = phi ptr [ %47, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i51 ], [ %47, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i50 ], [ %68, %._ZNK4llvm7ErrorOrIjE8getErrorEv.exit.thread_crit_edge.i61 ] %.sroa.0294.0.insert.ext = phi i64 [ 0, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i51 ], [ 0, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i50 ], [ %.128.i6.i53, %._ZNK4llvm7ErrorOrIjE8getErrorEv.exit.thread_crit_edge.i61 ] - %scevgep.i.i75 = getelementptr i8, ptr %71, i64 %.pre-phi506 + %scevgep.i.i75 = getelementptr i8, ptr %71, i64 %.pre-phi508 br label %72 72: ; preds = %81, %_ZN4llvm8ExpectedIjED2Ev.exit74 @@ -8025,8 +8025,8 @@ _ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i80: ; preds = %79, %72, %_ZN4l _ZN4llvm8ExpectedIjED2Ev.exit103: ; preds = %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i80, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i79, %._ZNK4llvm7ErrorOrIjE8getErrorEv.exit.thread_crit_edge.i90 %.sroa.0283.0.insert.ext = phi i32 [ %93, %._ZNK4llvm7ErrorOrIjE8getErrorEv.exit.thread_crit_edge.i90 ], [ 0, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i79 ], [ 0, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i80 ] - %.not479 = icmp eq i64 %.sroa.0294.0.insert.ext, 0 - br i1 %.not479, label %._crit_edge, label %.lr.ph + %.not481 = icmp eq i64 %.sroa.0294.0.insert.ext, 0 + br i1 %.not481, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %_ZN4llvm8ExpectedIjED2Ev.exit103 %94 = getelementptr inbounds nuw i8, ptr %4, i64 16 @@ -8037,11 +8037,11 @@ _ZN4llvm8ExpectedIjED2Ev.exit103: ; preds = %_ZN4llvm13decodeULE br label %98 98: ; preds = %.lr.ph, %267 - %.028474 = phi i32 [ 0, %.lr.ph ], [ %.1, %267 ] - %.029473 = phi i64 [ 0, %.lr.ph ], [ %268, %267 ] - %.sroa.4223.0469 = phi i32 [ undef, %.lr.ph ], [ %.sroa.4223.1, %267 ] - %.sroa.4234.0466 = phi i32 [ undef, %.lr.ph ], [ %.sroa.4234.1, %267 ] - %.sroa.0259.0462 = phi i64 [ undef, %.lr.ph ], [ %.sroa.0259.0.insert.insert, %267 ] + %.028476 = phi i32 [ 0, %.lr.ph ], [ %.1, %267 ] + %.029475 = phi i64 [ 0, %.lr.ph ], [ %268, %267 ] + %.sroa.4223.0471 = phi i32 [ undef, %.lr.ph ], [ %.sroa.4223.1, %267 ] + %.sroa.4234.0468 = phi i32 [ undef, %.lr.ph ], [ %.sroa.4234.1, %267 ] + %.sroa.0259.0464 = phi i64 [ undef, %.lr.ph ], [ %.sroa.0259.0.insert.insert, %267 ] %99 = load ptr, ptr %7, align 8, !noalias !269 %100 = ptrtoint ptr %99 to i64 %101 = sub i64 0, %100 @@ -8080,16 +8080,16 @@ _ZN4llvm8ExpectedIjED2Ev.exit103: ; preds = %_ZN4llvm13decodeULE _ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i108: ; preds = %111 %118 = icmp ugt i64 %114, 4294967295 - %.pre503 = load ptr, ptr %37, align 8, !noalias !269 + %.pre505 = load ptr, ptr %37, align 8, !noalias !269 br i1 %118, label %_ZNK4llvm7ErrorOrIjE8getErrorEv.exit.thread.i121, label %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i109 _ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i109.loopexit: ; preds = %102, %109 %.pn.in.i110.ph = phi ptr [ %scevgep.i.i104, %102 ], [ %.0.i.i107, %109 ] - %.pre502 = load ptr, ptr %37, align 8, !noalias !269 + %.pre504 = load ptr, ptr %37, align 8, !noalias !269 br label %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i109 _ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i109: ; preds = %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i109.loopexit, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i108 - %119 = phi ptr [ %.pre503, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i108 ], [ %.pre502, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i109.loopexit ] + %119 = phi ptr [ %.pre505, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i108 ], [ %.pre504, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i109.loopexit ] %.pn.in.i110 = phi ptr [ %116, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i108 ], [ %.pn.in.i110.ph, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i109.loopexit ] %.128.i6.i111 = phi i64 [ %114, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i108 ], [ 0, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i109.loopexit ] %.pn.i112 = ptrtoint ptr %.pn.in.i110 to i64 @@ -8105,23 +8105,23 @@ _ZN4llvm20MCPseudoProbeDecoder18readUnsignedNumberIjEENS_7ErrorOrIT_EEv.exit118: br label %_ZNK4llvm7ErrorOrIjE8getErrorEv.exit.thread.i121 _ZNK4llvm7ErrorOrIjE8getErrorEv.exit.thread.i121: ; preds = %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i109, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i108, %_ZN4llvm20MCPseudoProbeDecoder18readUnsignedNumberIjEENS_7ErrorOrIT_EEv.exit118 - %124 = phi ptr [ %119, %_ZN4llvm20MCPseudoProbeDecoder18readUnsignedNumberIjEENS_7ErrorOrIT_EEv.exit118 ], [ %119, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i109 ], [ %.pre503, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i108 ] + %124 = phi ptr [ %119, %_ZN4llvm20MCPseudoProbeDecoder18readUnsignedNumberIjEENS_7ErrorOrIT_EEv.exit118 ], [ %119, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i109 ], [ %.pre505, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i108 ] %125 = phi ptr [ %121, %_ZN4llvm20MCPseudoProbeDecoder18readUnsignedNumberIjEENS_7ErrorOrIT_EEv.exit118 ], [ %99, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i109 ], [ %99, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i108 ] %.sroa.0270.0.insert.ext = phi i32 [ %123, %_ZN4llvm20MCPseudoProbeDecoder18readUnsignedNumberIjEENS_7ErrorOrIT_EEv.exit118 ], [ 0, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.thread.i109 ], [ 0, %_ZN4llvm13decodeULEB128EPKhPjS1_PPKc.exit.i108 ] %126 = getelementptr inbounds i8, ptr %125, i64 1 %127 = icmp ugt ptr %126, %124 - br i1 %127, label %_ZN4llvm8ExpectedIhED2Ev.exit, label %_ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberIhEENS_7ErrorOrIT_EEv.exit + br i1 %127, label %_ZN4llvm17errorOrToExpectedIhEENS_8ExpectedIT_EEONS_7ErrorOrIS2_EE.exit, label %_ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberIhEENS_7ErrorOrIT_EEv.exit _ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberIhEENS_7ErrorOrIT_EEv.exit: ; preds = %_ZNK4llvm7ErrorOrIjE8getErrorEv.exit.thread.i121 call void @llvm.assume(i1 true) [ "align"(ptr %125, i64 1) ] %.0.copyload.i.i.i.i133 = load i8, ptr %125, align 1, !noalias !272 store ptr %126, ptr %7, align 8, !noalias !272 %128 = zext i8 %.0.copyload.i.i.i.i133 to i64 - br label %_ZN4llvm8ExpectedIhED2Ev.exit + br label %_ZN4llvm17errorOrToExpectedIhEENS_8ExpectedIT_EEONS_7ErrorOrIS2_EE.exit -_ZN4llvm8ExpectedIhED2Ev.exit: ; preds = %_ZNK4llvm7ErrorOrIjE8getErrorEv.exit.thread.i121, %_ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberIhEENS_7ErrorOrIT_EEv.exit +_ZN4llvm17errorOrToExpectedIhEENS_8ExpectedIT_EEONS_7ErrorOrIS2_EE.exit: ; preds = %_ZNK4llvm7ErrorOrIjE8getErrorEv.exit.thread.i121, %_ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberIhEENS_7ErrorOrIT_EEv.exit %.sroa.0259.0.insert.ext = phi i64 [ %128, %_ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberIhEENS_7ErrorOrIT_EEv.exit ], [ 0, %_ZNK4llvm7ErrorOrIjE8getErrorEv.exit.thread.i121 ] - %.sroa.0259.0.insert.mask = and i64 %.sroa.0259.0462, -256 + %.sroa.0259.0.insert.mask = and i64 %.sroa.0259.0464, -256 %.sroa.0259.0.insert.insert = or disjoint i64 %.sroa.0259.0.insert.mask, %.sroa.0259.0.insert.ext %.sroa.0259.0.extract.trunc = trunc nuw i64 %.sroa.0259.0.insert.ext to i8 %129 = and i8 %.sroa.0259.0.extract.trunc, 15 @@ -8131,7 +8131,7 @@ _ZN4llvm8ExpectedIhED2Ev.exit: ; preds = %_ZNK4llvm7ErrorOrIj %132 = load ptr, ptr %7, align 8, !noalias !137 br i1 %.not33, label %166, label %133 -133: ; preds = %_ZN4llvm8ExpectedIhED2Ev.exit +133: ; preds = %_ZN4llvm17errorOrToExpectedIhEENS_8ExpectedIT_EEONS_7ErrorOrIS2_EE.exit %134 = ptrtoint ptr %132 to i64 br label %135 @@ -8207,7 +8207,7 @@ _ZN4llvm20MCPseudoProbeDecoder16readSignedNumberIlEENS_7ErrorOrIT_EEv.exit: ; pr _ZNK4llvm7ErrorOrIlE8getErrorEv.exit.thread.i: ; preds = %.loopexit.i, %_ZN4llvm20MCPseudoProbeDecoder16readSignedNumberIlEENS_7ErrorOrIT_EEv.exit %163 = phi ptr [ %159, %_ZN4llvm20MCPseudoProbeDecoder16readSignedNumberIlEENS_7ErrorOrIT_EEv.exit ], [ %132, %.loopexit.i ] %.sroa.0233.0395 = phi i64 [ %162, %_ZN4llvm20MCPseudoProbeDecoder16readSignedNumberIlEENS_7ErrorOrIT_EEv.exit ], [ 0, %.loopexit.i ] - %.sroa.4234.2391 = phi i32 [ %.sroa.4234.0.extract.trunc, %_ZN4llvm20MCPseudoProbeDecoder16readSignedNumberIlEENS_7ErrorOrIT_EEv.exit ], [ %.sroa.4234.0466, %.loopexit.i ] + %.sroa.4234.2391 = phi i32 [ %.sroa.4234.0.extract.trunc, %_ZN4llvm20MCPseudoProbeDecoder16readSignedNumberIlEENS_7ErrorOrIT_EEv.exit ], [ %.sroa.4234.0468, %.loopexit.i ] %.sroa.4234.0.insert.ext = zext i32 %.sroa.4234.2391 to i64 %.sroa.4234.0.insert.shift = shl nuw i64 %.sroa.4234.0.insert.ext, 32 %.sroa.0233.0.insert.insert = or disjoint i64 %.sroa.4234.0.insert.shift, %.sroa.0233.0395 @@ -8215,7 +8215,7 @@ _ZNK4llvm7ErrorOrIlE8getErrorEv.exit.thread.i: ; preds = %.loopexit.i, %_ZN4l %165 = add i64 %.sroa.0233.0.insert.insert, %164 br label %_ZNK4llvm12DenseMapBaseINS_8DenseMapImmNS_12DenseMapInfoImvEENS_6detail12DenseMapPairImmEEEEmmS3_S6_E6lookupERKm.exit.thread -166: ; preds = %_ZN4llvm8ExpectedIhED2Ev.exit +166: ; preds = %_ZN4llvm17errorOrToExpectedIhEENS_8ExpectedIT_EEONS_7ErrorOrIS2_EE.exit %167 = getelementptr inbounds i8, ptr %132, i64 8 %168 = load ptr, ptr %37, align 8, !noalias !278 %169 = icmp ugt ptr %167, %168 @@ -8233,7 +8233,7 @@ _ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberIlEENS_7ErrorOrIT_EEv.exit: ; _ZNK4llvm7ErrorOrIlE8getErrorEv.exit.thread.i156: ; preds = %166, %_ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberIlEENS_7ErrorOrIT_EEv.exit %171 = phi ptr [ %167, %_ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberIlEENS_7ErrorOrIT_EEv.exit ], [ %132, %166 ] %.sroa.0222.0415 = phi i64 [ %170, %_ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberIlEENS_7ErrorOrIT_EEv.exit ], [ 0, %166 ] - %.sroa.4223.2411 = phi i32 [ %.sroa.4223.0.extract.trunc, %_ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberIlEENS_7ErrorOrIT_EEv.exit ], [ %.sroa.4223.0469, %166 ] + %.sroa.4223.2411 = phi i32 [ %.sroa.4223.0.extract.trunc, %_ZN4llvm20MCPseudoProbeDecoder19readUnencodedNumberIlEENS_7ErrorOrIT_EEv.exit ], [ %.sroa.4223.0471, %166 ] %.sroa.4223.0.insert.ext = zext i32 %.sroa.4223.2411 to i64 %.sroa.4223.0.insert.shift = shl nuw i64 %.sroa.4223.0.insert.ext, 32 %.sroa.0222.0.insert.insert = or disjoint i64 %.sroa.4223.0.insert.shift, %.sroa.0222.0415 @@ -8293,8 +8293,8 @@ _ZNK4llvm12DenseMapBaseINS_8DenseMapImmNS_12DenseMapInfoImvEENS_6detail12DenseMa %200 = phi ptr [ %168, %199 ], [ %160, %_ZNK4llvm7ErrorOrIlE8getErrorEv.exit.thread.i ], [ %168, %173 ], [ %168, %_ZNK4llvm12DenseMapBaseINS_8DenseMapImmNS_12DenseMapInfoImvEENS_6detail12DenseMapPairImmEEEEmmS3_S6_E6lookupERKm.exit ], [ %168, %.lr.ph.i.i.i ] %201 = phi ptr [ %171, %199 ], [ %163, %_ZNK4llvm7ErrorOrIlE8getErrorEv.exit.thread.i ], [ %171, %173 ], [ %171, %_ZNK4llvm12DenseMapBaseINS_8DenseMapImmNS_12DenseMapInfoImvEENS_6detail12DenseMapPairImmEEEEmmS3_S6_E6lookupERKm.exit ], [ %171, %.lr.ph.i.i.i ] %.0342 = phi i64 [ %.sroa.0222.0.insert.insert, %199 ], [ %165, %_ZNK4llvm7ErrorOrIlE8getErrorEv.exit.thread.i ], [ %.sroa.0222.0.insert.insert, %173 ], [ %spec.select, %_ZNK4llvm12DenseMapBaseINS_8DenseMapImmNS_12DenseMapInfoImvEENS_6detail12DenseMapPairImmEEEEmmS3_S6_E6lookupERKm.exit ], [ %.sroa.0222.0.insert.insert, %.lr.ph.i.i.i ] - %.sroa.4234.1 = phi i32 [ %.sroa.4234.0466, %199 ], [ %.sroa.4234.2391, %_ZNK4llvm7ErrorOrIlE8getErrorEv.exit.thread.i ], [ %.sroa.4234.0466, %173 ], [ %.sroa.4234.0466, %_ZNK4llvm12DenseMapBaseINS_8DenseMapImmNS_12DenseMapInfoImvEENS_6detail12DenseMapPairImmEEEEmmS3_S6_E6lookupERKm.exit ], [ %.sroa.4234.0466, %.lr.ph.i.i.i ] - %.sroa.4223.1 = phi i32 [ %.sroa.4223.2411, %199 ], [ %.sroa.4223.0469, %_ZNK4llvm7ErrorOrIlE8getErrorEv.exit.thread.i ], [ %.sroa.4223.2411, %173 ], [ %.sroa.4223.2411, %_ZNK4llvm12DenseMapBaseINS_8DenseMapImmNS_12DenseMapInfoImvEENS_6detail12DenseMapPairImmEEEEmmS3_S6_E6lookupERKm.exit ], [ %.sroa.4223.2411, %.lr.ph.i.i.i ] + %.sroa.4234.1 = phi i32 [ %.sroa.4234.0468, %199 ], [ %.sroa.4234.2391, %_ZNK4llvm7ErrorOrIlE8getErrorEv.exit.thread.i ], [ %.sroa.4234.0468, %173 ], [ %.sroa.4234.0468, %_ZNK4llvm12DenseMapBaseINS_8DenseMapImmNS_12DenseMapInfoImvEENS_6detail12DenseMapPairImmEEEEmmS3_S6_E6lookupERKm.exit ], [ %.sroa.4234.0468, %.lr.ph.i.i.i ] + %.sroa.4223.1 = phi i32 [ %.sroa.4223.2411, %199 ], [ %.sroa.4223.0471, %_ZNK4llvm7ErrorOrIlE8getErrorEv.exit.thread.i ], [ %.sroa.4223.2411, %173 ], [ %.sroa.4223.2411, %_ZNK4llvm12DenseMapBaseINS_8DenseMapImmNS_12DenseMapInfoImvEENS_6detail12DenseMapPairImmEEEEmmS3_S6_E6lookupERKm.exit ], [ %.sroa.4223.2411, %.lr.ph.i.i.i ] %.not443 = icmp samesign ult i8 %131, 4 br i1 %.not443, label %_ZN4llvm8ExpectedIjED2Ev.exit197, label %202 @@ -8454,13 +8454,13 @@ _ZNSt6vectorIN4llvm20MCDecodedPseudoProbeESaIS1_EE17_M_realloc_insertIJRmRjNS0_1 br label %_ZNSt6vectorIN4llvm20MCDecodedPseudoProbeESaIS1_EE12emplace_backIJRmRjNS0_15PseudoProbeTypeERhS6_RPNS0_30MCDecodedPseudoProbeInlineTreeEEEERS1_DpOT_.exit _ZNSt6vectorIN4llvm20MCDecodedPseudoProbeESaIS1_EE12emplace_backIJRmRjNS0_15PseudoProbeTypeERhS6_RPNS0_30MCDecodedPseudoProbeInlineTreeEEEERS1_DpOT_.exit: ; preds = %231, %_ZNSt6vectorIN4llvm20MCDecodedPseudoProbeESaIS1_EE17_M_realloc_insertIJRmRjNS0_15PseudoProbeTypeERhS6_RPNS0_30MCDecodedPseudoProbeInlineTreeEEEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit - %266 = add i32 %.028474, 1 + %266 = add i32 %.028476, 1 br label %267 267: ; preds = %_ZNSt6vectorIN4llvm20MCDecodedPseudoProbeESaIS1_EE12emplace_backIJRmRjNS0_15PseudoProbeTypeERhS6_RPNS0_30MCDecodedPseudoProbeInlineTreeEEEERS1_DpOT_.exit, %_ZN4llvm8ExpectedIjED2Ev.exit197 - %.1 = phi i32 [ %266, %_ZNSt6vectorIN4llvm20MCDecodedPseudoProbeESaIS1_EE12emplace_backIJRmRjNS0_15PseudoProbeTypeERhS6_RPNS0_30MCDecodedPseudoProbeInlineTreeEEEERS1_DpOT_.exit ], [ %.028474, %_ZN4llvm8ExpectedIjED2Ev.exit197 ] + %.1 = phi i32 [ %266, %_ZNSt6vectorIN4llvm20MCDecodedPseudoProbeESaIS1_EE12emplace_backIJRmRjNS0_15PseudoProbeTypeERhS6_RPNS0_30MCDecodedPseudoProbeInlineTreeEEEERS1_DpOT_.exit ], [ %.028476, %_ZN4llvm8ExpectedIjED2Ev.exit197 ] store i64 %.0342, ptr %2, align 8 - %268 = add nuw nsw i64 %.029473, 1 + %268 = add nuw nsw i64 %.029475, 1 %exitcond.not = icmp eq i64 %268, %.sroa.0294.0.insert.ext br i1 %exitcond.not, label %._crit_edge.loopexit, label %98, !llvm.loop !288 @@ -8504,9 +8504,9 @@ _ZNSt6vectorIN4llvm20MCDecodedPseudoProbeESaIS1_EE12emplace_backIJRmRjNS0_15Pseu 292: ; preds = %270 tail call void @_ZNSt6vectorIN4llvm30MCDecodedPseudoProbeInlineTreeESaIS1_EE17_M_default_appendEm(ptr noundef nonnull align 8 dereferenceable(24) %281, i64 noundef %289) - %.pre499 = load ptr, ptr %281, align 8 - %.pre500 = load ptr, ptr %282, align 8 - %.pre507 = ptrtoint ptr %.pre499 to i64 + %.pre501 = load ptr, ptr %281, align 8 + %.pre502 = load ptr, ptr %282, align 8 + %.pre509 = ptrtoint ptr %.pre501 to i64 br label %_ZNSt6vectorIN4llvm30MCDecodedPseudoProbeInlineTreeESaIS1_EE6resizeEm.exit 293: ; preds = %270 @@ -8523,11 +8523,11 @@ _ZNSt6vectorIN4llvm20MCDecodedPseudoProbeESaIS1_EE12emplace_backIJRmRjNS0_15Pseu br label %_ZNSt6vectorIN4llvm30MCDecodedPseudoProbeInlineTreeESaIS1_EE6resizeEm.exit _ZNSt6vectorIN4llvm30MCDecodedPseudoProbeInlineTreeESaIS1_EE6resizeEm.exit: ; preds = %292, %293, %295, %297 - %.pre-phi508 = phi i64 [ %.pre507, %292 ], [ %286, %293 ], [ %286, %295 ], [ %286, %297 ] - %298 = phi ptr [ %.pre500, %292 ], [ %283, %293 ], [ %283, %295 ], [ %296, %297 ] - %299 = phi ptr [ %.pre499, %292 ], [ %284, %293 ], [ %284, %295 ], [ %284, %297 ] + %.pre-phi510 = phi i64 [ %.pre509, %292 ], [ %286, %293 ], [ %286, %295 ], [ %286, %297 ] + %298 = phi ptr [ %.pre502, %292 ], [ %283, %293 ], [ %283, %295 ], [ %296, %297 ] + %299 = phi ptr [ %.pre501, %292 ], [ %284, %293 ], [ %284, %295 ], [ %284, %297 ] %300 = ptrtoint ptr %298 to i64 - %301 = sub i64 %300, %.pre-phi508 + %301 = sub i64 %300, %.pre-phi510 %302 = sdiv exact i64 %301, 48 %.sroa.0.0.copyload.pn.idx.i203 = tail call i64 @llvm.usub.sat.i64(i64 %302, i64 %289) %.sroa.0.0.copyload.pn.i204 = getelementptr inbounds %"class.llvm::MCDecodedPseudoProbeInlineTree", ptr %299, i64 %.sroa.0.0.copyload.pn.idx.i203 @@ -8538,17 +8538,17 @@ _ZNSt6vectorIN4llvm30MCDecodedPseudoProbeInlineTreeESaIS1_EE6resizeEm.exit: ; pr br label %303 303: ; preds = %_ZNSt6vectorIN4llvm30MCDecodedPseudoProbeInlineTreeESaIS1_EE6resizeEm.exit, %._crit_edge - %.not480 = icmp eq i32 %.sroa.0283.0.insert.ext, 0 - br i1 %.not480, label %._crit_edge478, label %.lr.ph477 + %.not482 = icmp eq i32 %.sroa.0283.0.insert.ext, 0 + br i1 %.not482, label %._crit_edge480, label %.lr.ph479 -.lr.ph477: ; preds = %303, %.lr.ph477 - %.0475 = phi i32 [ %305, %.lr.ph477 ], [ 0, %303 ] - %304 = tail call noundef zeroext i1 @_ZN4llvm20MCPseudoProbeDecoder21buildAddress2ProbeMapILb0EEEbPNS_30MCDecodedPseudoProbeInlineTreeERmRKNS_8DenseSetImNS_12DenseMapInfoImvEEEERKNS_8DenseMapImmS7_NS_6detail12DenseMapPairImmEEEEj(ptr noundef nonnull align 8 dereferenceable(313) %0, ptr noundef %.0340, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(20) %4, i32 noundef %.0475) - %305 = add nuw i32 %.0475, 1 - %exitcond496.not = icmp eq i32 %305, %.sroa.0283.0.insert.ext - br i1 %exitcond496.not, label %._crit_edge478, label %.lr.ph477, !llvm.loop !289 +.lr.ph479: ; preds = %303, %.lr.ph479 + %.0477 = phi i32 [ %305, %.lr.ph479 ], [ 0, %303 ] + %304 = tail call noundef zeroext i1 @_ZN4llvm20MCPseudoProbeDecoder21buildAddress2ProbeMapILb0EEEbPNS_30MCDecodedPseudoProbeInlineTreeERmRKNS_8DenseSetImNS_12DenseMapInfoImvEEEERKNS_8DenseMapImmS7_NS_6detail12DenseMapPairImmEEEEj(ptr noundef nonnull align 8 dereferenceable(313) %0, ptr noundef %.0340, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(20) %4, i32 noundef %.0477) + %305 = add nuw i32 %.0477, 1 + %exitcond498.not = icmp eq i32 %305, %.sroa.0283.0.insert.ext + br i1 %exitcond498.not, label %._crit_edge480, label %.lr.ph479, !llvm.loop !289 -._crit_edge478: ; preds = %.lr.ph477, %303 +._crit_edge480: ; preds = %.lr.ph479, %303 %306 = icmp ne ptr %.0340, null ret i1 %306 } diff --git a/bench/llvm/optimized/MachOObjectFile.cpp.ll b/bench/llvm/optimized/MachOObjectFile.cpp.ll index 1be64b49e24..e53f76b4a65 100644 --- a/bench/llvm/optimized/MachOObjectFile.cpp.ll +++ b/bench/llvm/optimized/MachOObjectFile.cpp.ll @@ -16124,43 +16124,38 @@ _ZN4llvm8ExpectedIjED2Ev.exit: %4 = getelementptr inbounds i8, ptr %3, i64 40 %5 = load ptr, ptr %4, align 8 call void %5(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected.35") align 8 %2, ptr noundef nonnull align 8 dereferenceable(360) %0, i64 %1) #29 - %6 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %7 = load i8, ptr %6, align 8 - %8 = trunc i8 %7 to i1 - %9 = xor i1 %8, true - call void @llvm.assume(i1 %9) - %10 = load i32, ptr %2, align 8 - %11 = and i32 %10, 16 - %.not = icmp eq i32 %11, 0 - br i1 %.not, label %32, label %12 - -12: ; preds = %_ZN4llvm8ExpectedIjED2Ev.exit - %13 = inttoptr i64 %1 to ptr - %14 = call { ptr, i64 } @_ZNK4llvm6object6Binary7getDataEv(ptr noundef nonnull align 8 dereferenceable(360) %0) #29 - %15 = extractvalue { ptr, i64 } %14, 0 - %16 = icmp ugt ptr %15, %13 - br i1 %16, label %.critedge.i.i, label %17 + %6 = load i32, ptr %2, align 8 + %7 = and i32 %6, 16 + %.not = icmp eq i32 %7, 0 + br i1 %.not, label %28, label %8 + +8: ; preds = %_ZN4llvm8ExpectedIjED2Ev.exit + %9 = inttoptr i64 %1 to ptr + %10 = call { ptr, i64 } @_ZNK4llvm6object6Binary7getDataEv(ptr noundef nonnull align 8 dereferenceable(360) %0) #29 + %11 = extractvalue { ptr, i64 } %10, 0 + %12 = icmp ugt ptr %11, %9 + br i1 %12, label %.critedge.i.i, label %13 -17: ; preds = %12 - %18 = getelementptr inbounds i8, ptr %13, i64 8 - %19 = call { ptr, i64 } @_ZNK4llvm6object6Binary7getDataEv(ptr noundef nonnull align 8 dereferenceable(360) %0) #29 - %20 = extractvalue { ptr, i64 } %19, 0 - %21 = extractvalue { ptr, i64 } %19, 1 - %22 = getelementptr inbounds i8, ptr %20, i64 %21 - %23 = icmp ugt ptr %18, %22 - br i1 %23, label %.critedge.i.i, label %24 +13: ; preds = %8 + %14 = getelementptr inbounds i8, ptr %9, i64 8 + %15 = call { ptr, i64 } @_ZNK4llvm6object6Binary7getDataEv(ptr noundef nonnull align 8 dereferenceable(360) %0) #29 + %16 = extractvalue { ptr, i64 } %15, 0 + %17 = extractvalue { ptr, i64 } %15, 1 + %18 = getelementptr inbounds i8, ptr %16, i64 %17 + %19 = icmp ugt ptr %14, %18 + br i1 %19, label %.critedge.i.i, label %20 -.critedge.i.i: ; preds = %17, %12 +.critedge.i.i: ; preds = %13, %8 call void @_ZN4llvm18report_fatal_errorEPKcb(ptr noundef nonnull @.str.472, i1 noundef zeroext true) #31 unreachable -24: ; preds = %17 - %25 = load i64, ptr %13, align 1 - %.sroa.410.0.extract.shift.i.i = lshr i64 %25, 48 +20: ; preds = %13 + %21 = load i64, ptr %9, align 1 + %.sroa.410.0.extract.shift.i.i = lshr i64 %21, 48 %.sroa.410.0.extract.trunc.i.i = trunc nuw i64 %.sroa.410.0.extract.shift.i.i to i16 - %26 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %27 = load i32, ptr %26, align 8 - switch i32 %27, label %_ZL23getSymbolTableEntryBaseRKN4llvm6object15MachOObjectFileENS0_11DataRefImplE.exit [ + %22 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %23 = load i32, ptr %22, align 8 + switch i32 %23, label %_ZL23getSymbolTableEntryBaseRKN4llvm6object15MachOObjectFileENS0_11DataRefImplE.exit [ i32 14, label %_ZNK4llvm6object6Binary14isLittleEndianEv.exit.i.i i32 16, label %_ZNK4llvm6object6Binary14isLittleEndianEv.exit.i.i i32 18, label %_ZNK4llvm6object6Binary14isLittleEndianEv.exit.i.i @@ -16169,20 +16164,20 @@ _ZN4llvm8ExpectedIjED2Ev.exit: i32 12, label %_ZNK4llvm6object6Binary14isLittleEndianEv.exit.i.i ] -_ZNK4llvm6object6Binary14isLittleEndianEv.exit.i.i: ; preds = %24, %24, %24, %24, %24, %24 +_ZNK4llvm6object6Binary14isLittleEndianEv.exit.i.i: ; preds = %20, %20, %20, %20, %20, %20 %rev.i.i.i.i.i.i = call noundef i16 @llvm.bswap.i16(i16 %.sroa.410.0.extract.trunc.i.i) br label %_ZL23getSymbolTableEntryBaseRKN4llvm6object15MachOObjectFileENS0_11DataRefImplE.exit -_ZL23getSymbolTableEntryBaseRKN4llvm6object15MachOObjectFileENS0_11DataRefImplE.exit: ; preds = %24, %_ZNK4llvm6object6Binary14isLittleEndianEv.exit.i.i - %.sroa.410.0.i.i = phi i16 [ %rev.i.i.i.i.i.i, %_ZNK4llvm6object6Binary14isLittleEndianEv.exit.i.i ], [ %.sroa.410.0.extract.trunc.i.i, %24 ] - %28 = lshr i16 %.sroa.410.0.i.i, 8 - %29 = and i16 %28, 15 - %30 = zext nneg i16 %29 to i32 - %31 = shl nuw nsw i32 1, %30 - br label %32 +_ZL23getSymbolTableEntryBaseRKN4llvm6object15MachOObjectFileENS0_11DataRefImplE.exit: ; preds = %20, %_ZNK4llvm6object6Binary14isLittleEndianEv.exit.i.i + %.sroa.410.0.i.i = phi i16 [ %rev.i.i.i.i.i.i, %_ZNK4llvm6object6Binary14isLittleEndianEv.exit.i.i ], [ %.sroa.410.0.extract.trunc.i.i, %20 ] + %24 = lshr i16 %.sroa.410.0.i.i, 8 + %25 = and i16 %24, 15 + %26 = zext nneg i16 %25 to i32 + %27 = shl nuw nsw i32 1, %26 + br label %28 -32: ; preds = %_ZN4llvm8ExpectedIjED2Ev.exit, %_ZL23getSymbolTableEntryBaseRKN4llvm6object15MachOObjectFileENS0_11DataRefImplE.exit - %.0 = phi i32 [ %31, %_ZL23getSymbolTableEntryBaseRKN4llvm6object15MachOObjectFileENS0_11DataRefImplE.exit ], [ 0, %_ZN4llvm8ExpectedIjED2Ev.exit ] +28: ; preds = %_ZN4llvm8ExpectedIjED2Ev.exit, %_ZL23getSymbolTableEntryBaseRKN4llvm6object15MachOObjectFileENS0_11DataRefImplE.exit + %.0 = phi i32 [ %27, %_ZL23getSymbolTableEntryBaseRKN4llvm6object15MachOObjectFileENS0_11DataRefImplE.exit ], [ 0, %_ZN4llvm8ExpectedIjED2Ev.exit ] ret i32 %.0 } diff --git a/bench/llvm/optimized/MasmParser.cpp.ll b/bench/llvm/optimized/MasmParser.cpp.ll index f5e9f629efe..eb931aabffb 100644 --- a/bench/llvm/optimized/MasmParser.cpp.ll +++ b/bench/llvm/optimized/MasmParser.cpp.ll @@ -11389,7 +11389,7 @@ _ZNK4llvm9StringRef18equals_insensitiveES0_.exit344: ; preds = %_ZN4llvm8AsmToke %.sroa.2111.0.copyload = load i64, ptr %.sroa.2111.0..sroa_idx, align 8 %.sroa.0109.0.copyload = load ptr, ptr %34, align 8 %1150 = call fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_110MasmParser18parseDirectiveEndsEN4llvm9StringRefENS1_5SMLocE(ptr noundef nonnull align 8 dereferenceable(1144) %0, ptr %.sroa.0110.0.copyload, i64 %.sroa.2111.0.copyload, ptr %.sroa.0109.0.copyload) - br label %1480 + br label %1476 _ZNK4llvm9StringRef18equals_insensitiveES0_.exit344.thread: ; preds = %_ZN4llvm8AsmTokenC2ERKS0_.exit338, %1141, %_ZNK4llvm9StringRef18equals_insensitiveES0_.exit344 %1151 = getelementptr inbounds nuw i8, ptr %0, i64 448 @@ -11415,7 +11415,7 @@ _ZNK4llvm9StringRef18equals_insensitiveES0_.exit344.thread: ; preds = %_ZN4llvm8 %.sroa.0105.0.copyload = load ptr, ptr %52, align 8 %.sroa.2106.0.copyload = load i64, ptr %1126, align 8 %1165 = call noundef zeroext i1 %1157(ptr noundef nonnull %1155, ptr %.sroa.0105.0.copyload, i64 %.sroa.2106.0.copyload, ptr %1127) #24 - br label %1480 + br label %1476 1166: ; preds = %_ZNK4llvm9StringRef18equals_insensitiveES0_.exit344.thread call void @_ZNK4llvm9StringRef5lowerB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %55, ptr noundef nonnull align 8 dereferenceable(16) %52) #24 @@ -11474,7 +11474,7 @@ _ZNK4llvm9StringRef18equals_insensitiveES0_.exit344.thread: ; preds = %_ZN4llvm8 %.sroa.098.0.copyload = load ptr, ptr %34, align 8 %1181 = ptrtoint ptr %.sroa.098.0.copyload to i64 %1182 = call fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_110MasmParser20parseDirectiveEquateEN4llvm9StringRefES2_NS0_13DirectiveKindENS1_5SMLocE(ptr noundef nonnull align 8 dereferenceable(1144) %0, ptr %.sroa.0101.0.copyload, i64 %.sroa.2102.0.copyload, ptr %.sroa.099.0.copyload, i64 %.sroa.2100.0.copyload, i32 noundef %1175, i64 %1181) - br label %1480 + br label %1476 1183: ; preds = %1173 %1184 = load i32, ptr %53, align 8 @@ -11508,7 +11508,7 @@ _ZNK4llvm9StringRef18equals_insensitiveES0_.exit350: ; preds = %1186 %.sroa.295.0..sroa_idx = getelementptr inbounds i8, ptr %35, i64 8 %.sroa.295.0.copyload = load i64, ptr %.sroa.295.0..sroa_idx, align 8 %1196 = call fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_110MasmParser24parseDirectiveNamedValueEN4llvm9StringRefEjS2_NS1_5SMLocE(ptr noundef nonnull align 8 dereferenceable(1144) %0, ptr %.sroa.096.0.copyload, i64 %.sroa.297.0.copyload, i32 noundef 1, ptr %.sroa.094.0.copyload, i64 %.sroa.295.0.copyload) - br label %1480 + br label %1476 1197: ; preds = %1173 %1198 = load i32, ptr %53, align 8 @@ -11542,7 +11542,7 @@ _ZNK4llvm9StringRef18equals_insensitiveES0_.exit356: ; preds = %1200 %.sroa.290.0..sroa_idx = getelementptr inbounds i8, ptr %35, i64 8 %.sroa.290.0.copyload = load i64, ptr %.sroa.290.0..sroa_idx, align 8 %1210 = call fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_110MasmParser24parseDirectiveNamedValueEN4llvm9StringRefEjS2_NS1_5SMLocE(ptr noundef nonnull align 8 dereferenceable(1144) %0, ptr %.sroa.091.0.copyload, i64 %.sroa.292.0.copyload, i32 noundef 2, ptr %.sroa.089.0.copyload, i64 %.sroa.290.0.copyload) - br label %1480 + br label %1476 1211: ; preds = %1173 %1212 = load i32, ptr %53, align 8 @@ -11576,7 +11576,7 @@ _ZNK4llvm9StringRef18equals_insensitiveES0_.exit362: ; preds = %1214 %.sroa.285.0..sroa_idx = getelementptr inbounds i8, ptr %35, i64 8 %.sroa.285.0.copyload = load i64, ptr %.sroa.285.0..sroa_idx, align 8 %1224 = call fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_110MasmParser24parseDirectiveNamedValueEN4llvm9StringRefEjS2_NS1_5SMLocE(ptr noundef nonnull align 8 dereferenceable(1144) %0, ptr %.sroa.086.0.copyload, i64 %.sroa.287.0.copyload, i32 noundef 4, ptr %.sroa.084.0.copyload, i64 %.sroa.285.0.copyload) - br label %1480 + br label %1476 1225: ; preds = %1173 %1226 = load i32, ptr %53, align 8 @@ -11610,7 +11610,7 @@ _ZNK4llvm9StringRef18equals_insensitiveES0_.exit368: ; preds = %1228 %.sroa.280.0..sroa_idx = getelementptr inbounds i8, ptr %35, i64 8 %.sroa.280.0.copyload = load i64, ptr %.sroa.280.0..sroa_idx, align 8 %1238 = call fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_110MasmParser24parseDirectiveNamedValueEN4llvm9StringRefEjS2_NS1_5SMLocE(ptr noundef nonnull align 8 dereferenceable(1144) %0, ptr %.sroa.081.0.copyload, i64 %.sroa.282.0.copyload, i32 noundef 6, ptr %.sroa.079.0.copyload, i64 %.sroa.280.0.copyload) - br label %1480 + br label %1476 1239: ; preds = %1173 %1240 = load i32, ptr %53, align 8 @@ -11644,7 +11644,7 @@ _ZNK4llvm9StringRef18equals_insensitiveES0_.exit374: ; preds = %1242 %.sroa.275.0..sroa_idx = getelementptr inbounds i8, ptr %35, i64 8 %.sroa.275.0.copyload = load i64, ptr %.sroa.275.0..sroa_idx, align 8 %1252 = call fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_110MasmParser24parseDirectiveNamedValueEN4llvm9StringRefEjS2_NS1_5SMLocE(ptr noundef nonnull align 8 dereferenceable(1144) %0, ptr %.sroa.076.0.copyload, i64 %.sroa.277.0.copyload, i32 noundef 8, ptr %.sroa.074.0.copyload, i64 %.sroa.275.0.copyload) - br label %1480 + br label %1476 1253: ; preds = %1173 %1254 = load ptr, ptr %0, align 8 @@ -11655,7 +11655,7 @@ _ZNK4llvm9StringRef18equals_insensitiveES0_.exit374: ; preds = %1242 %.sroa.272.0.copyload = load i64, ptr %1126, align 8 %1258 = tail call noundef nonnull align 1 ptr @_ZN4llvm11APFloatBase10IEEEsingleEv() #27 %1259 = call fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_110MasmParser28parseDirectiveNamedRealValueEN4llvm9StringRefERKNS1_12fltSemanticsEjS2_NS1_5SMLocE(ptr noundef nonnull align 8 dereferenceable(1144) %0, ptr %.sroa.071.0.copyload, i64 %.sroa.272.0.copyload, ptr noundef nonnull align 1 %1258, i32 noundef 4, ptr noundef nonnull byval(%"class.llvm::StringRef") align 8 %35) - br label %1480 + br label %1476 1260: ; preds = %1173 %1261 = load ptr, ptr %0, align 8 @@ -11666,7 +11666,7 @@ _ZNK4llvm9StringRef18equals_insensitiveES0_.exit374: ; preds = %1242 %.sroa.269.0.copyload = load i64, ptr %1126, align 8 %1265 = tail call noundef nonnull align 1 ptr @_ZN4llvm11APFloatBase10IEEEdoubleEv() #27 %1266 = call fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_110MasmParser28parseDirectiveNamedRealValueEN4llvm9StringRefERKNS1_12fltSemanticsEjS2_NS1_5SMLocE(ptr noundef nonnull align 8 dereferenceable(1144) %0, ptr %.sroa.068.0.copyload, i64 %.sroa.269.0.copyload, ptr noundef nonnull align 1 %1265, i32 noundef 8, ptr noundef nonnull byval(%"class.llvm::StringRef") align 8 %35) - br label %1480 + br label %1476 1267: ; preds = %1173 %1268 = load ptr, ptr %0, align 8 @@ -11677,7 +11677,7 @@ _ZNK4llvm9StringRef18equals_insensitiveES0_.exit374: ; preds = %1242 %.sroa.266.0.copyload = load i64, ptr %1126, align 8 %1272 = tail call noundef nonnull align 1 ptr @_ZN4llvm11APFloatBase17x87DoubleExtendedEv() #27 %1273 = call fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_110MasmParser28parseDirectiveNamedRealValueEN4llvm9StringRefERKNS1_12fltSemanticsEjS2_NS1_5SMLocE(ptr noundef nonnull align 8 dereferenceable(1144) %0, ptr %.sroa.065.0.copyload, i64 %.sroa.266.0.copyload, ptr noundef nonnull align 1 %1272, i32 noundef 10, ptr noundef nonnull byval(%"class.llvm::StringRef") align 8 %35) - br label %1480 + br label %1476 1274: ; preds = %1173, %1173 %1275 = load ptr, ptr %0, align 8 @@ -11690,7 +11690,7 @@ _ZNK4llvm9StringRef18equals_insensitiveES0_.exit374: ; preds = %1242 %.sroa.261.0..sroa_idx = getelementptr inbounds i8, ptr %35, i64 8 %.sroa.261.0.copyload = load i64, ptr %.sroa.261.0..sroa_idx, align 8 %1279 = call fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_110MasmParser20parseDirectiveStructEN4llvm9StringRefENS0_13DirectiveKindES2_NS1_5SMLocE(ptr noundef nonnull align 8 dereferenceable(1144) %0, ptr %.sroa.062.0.copyload, i64 %.sroa.263.0.copyload, i32 noundef %1175, ptr %.sroa.060.0.copyload, i64 %.sroa.261.0.copyload) - br label %1480 + br label %1476 1280: ; preds = %1173 %1281 = load ptr, ptr %0, align 8 @@ -11702,7 +11702,7 @@ _ZNK4llvm9StringRef18equals_insensitiveES0_.exit374: ; preds = %1242 %.sroa.258.0.copyload = load i64, ptr %.sroa.258.0..sroa_idx, align 8 %.sroa.056.0.copyload = load ptr, ptr %34, align 8 %1285 = call fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_110MasmParser18parseDirectiveEndsEN4llvm9StringRefENS1_5SMLocE(ptr noundef nonnull align 8 dereferenceable(1144) %0, ptr %.sroa.057.0.copyload, i64 %.sroa.258.0.copyload, ptr %.sroa.056.0.copyload) - br label %1480 + br label %1476 1286: ; preds = %1173 %1287 = load ptr, ptr %0, align 8 @@ -11714,7 +11714,7 @@ _ZNK4llvm9StringRef18equals_insensitiveES0_.exit374: ; preds = %1242 %.sroa.255.0.copyload = load i64, ptr %.sroa.255.0..sroa_idx, align 8 %.sroa.053.0.copyload = load ptr, ptr %34, align 8 %1291 = call fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_110MasmParser19parseDirectiveMacroEN4llvm9StringRefENS1_5SMLocE(ptr noundef nonnull align 8 dereferenceable(1144) %0, ptr %.sroa.054.0.copyload, i64 %.sroa.255.0.copyload, ptr %.sroa.053.0.copyload) - br label %1480 + br label %1476 .thread522: ; preds = %1166, %_ZNK4llvm9StringRef18equals_insensitiveES0_.exit374, %_ZNK4llvm9StringRef18equals_insensitiveES0_.exit368, %_ZNK4llvm9StringRef18equals_insensitiveES0_.exit362, %_ZNK4llvm9StringRef18equals_insensitiveES0_.exit356, %_ZNK4llvm9StringRef18equals_insensitiveES0_.exit350, %1173 call void @_ZNK4llvm9StringRef5lowerB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %61, ptr noundef nonnull align 8 dereferenceable(16) %52) #24 @@ -11739,7 +11739,7 @@ _ZNK4llvm9StringRef18equals_insensitiveES0_.exit374: ; preds = %1242 %.sroa.051.0.copyload = load ptr, ptr %52, align 8 %.sroa.252.0.copyload = load i64, ptr %1126, align 8 %1303 = call fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_110MasmParser30parseDirectiveNamedStructValueERKNS_10StructInfoEN4llvm9StringRefENS4_5SMLocES5_(ptr noundef nonnull align 8 dereferenceable(1144) %0, ptr noundef nonnull align 8 dereferenceable(88) %1302, ptr %.sroa.051.0.copyload, i64 %.sroa.252.0.copyload, ptr noundef nonnull byval(%"class.llvm::StringRef") align 8 %35) - br label %1480 + br label %1476 1304: ; preds = %.thread522 %1305 = getelementptr inbounds nuw i8, ptr %0, i64 1061 @@ -11780,7 +11780,7 @@ _ZN4llvmeqENS_9StringRefES0_.exit390: ; preds = %_ZN4llvmeqENS_9Stri _ZN4llvmeqENS_9StringRefES0_.exit378.thread: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit390, %_ZN4llvmeqENS_9StringRefES0_.exit386, %_ZN4llvmeqENS_9StringRefES0_.exit382, %_ZN4llvmeqENS_9StringRefES0_.exit378 %.sroa.041.0.copyload = load ptr, ptr %34, align 8 %1313 = call fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_110MasmParser20parseDirectiveMSEmitEN4llvm5SMLocERNS_18ParseStatementInfoEm(ptr noundef nonnull align 8 dereferenceable(1144) %0, ptr %.sroa.041.0.copyload, ptr noundef nonnull align 8 dereferenceable(136) %1, i64 noundef %.sroa.249.0.copyload) - br label %1480 + br label %1476 _ZN4llvmeqENS_9StringRefES0_.exit394: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit386 %bcmp.i393 = call i32 @bcmp(ptr noundef nonnull dereferenceable(5) %.sroa.048.0.copyload, ptr noundef nonnull dereferenceable(5) @.str.16, i64 5) @@ -11795,7 +11795,7 @@ _ZN4llvmeqENS_9StringRefES0_.exit398: ; preds = %_ZN4llvmeqENS_9Stri _ZN4llvmeqENS_9StringRefES0_.exit394.thread: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit398, %_ZN4llvmeqENS_9StringRefES0_.exit394 %.sroa.036.0.copyload = load ptr, ptr %34, align 8 %1316 = call fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_110MasmParser21parseDirectiveMSAlignEN4llvm5SMLocERNS_18ParseStatementInfoE(ptr noundef nonnull align 8 dereferenceable(1144) %0, ptr %.sroa.036.0.copyload, ptr noundef nonnull align 8 dereferenceable(136) %1) - br label %1480 + br label %1476 _ZN4llvmeqENS_9StringRefES0_.exit402: ; preds = %1308 %bcmp.i401 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %.sroa.048.0.copyload, ptr noundef nonnull dereferenceable(4) @.str.17, i64 4) @@ -11820,7 +11820,7 @@ _ZN4llvmeqENS_9StringRefES0_.exit406.thread548: ; preds = %1308, %_ZN4llvmeqEN %1323 = getelementptr inbounds i8, ptr %1322, i64 264 %1324 = load ptr, ptr %1323, align 8 %1325 = call noundef zeroext i1 %1324(ptr noundef nonnull align 8 dereferenceable(1144) %0) #24 - br i1 %1325, label %1480, label %1326 + br i1 %1325, label %1476, label %1326 1326: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit406.thread548 call void @_ZNK4llvm9StringRef5lowerB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %64, ptr noundef nonnull align 8 dereferenceable(16) %35) #24 @@ -11949,7 +11949,7 @@ _ZN4llvm8AsmTokenD2Ev.exit408: ; preds = %_ZN4llvm8AsmTokenC2 %1386 = call noundef zeroext i1 @_ZNK4llvm15SmallVectorBaseIjE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %1385) #24 %1387 = xor i1 %1386, true %brmerge = or i1 %1342, %1387 - br i1 %brmerge, label %1479, label %1388 + br i1 %brmerge, label %1475, label %1388 1388: ; preds = %1384 %1389 = call fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_110MasmParser26enabledGenDwarfForAssemblyEv(ptr noundef nonnull align 8 dereferenceable(1144) %0) @@ -12005,7 +12005,7 @@ _ZN4llvm8AsmTokenD2Ev.exit408: ; preds = %_ZN4llvm8AsmTokenC2 %1421 = getelementptr inbounds i8, ptr %0, i64 768 %1422 = load i64, ptr %1421, align 8 %1423 = icmp eq i64 %1422, 0 - br i1 %1423, label %1454, label %1424 + br i1 %1423, label %1450, label %1424 1424: ; preds = %1420 %1425 = getelementptr inbounds nuw i8, ptr %0, i64 760 @@ -12030,127 +12030,122 @@ _ZN4llvm8AsmTokenD2Ev.exit408: ; preds = %_ZN4llvm8AsmTokenC2 %1431 = getelementptr inbounds i8, ptr %1430, i64 688 %1432 = load ptr, ptr %1431, align 8 call void %1432(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected.571") align 8 %4, ptr noundef nonnull align 8 dereferenceable(288) %1429, i32 noundef 0, ptr null, i64 0, ptr noundef nonnull byval(%"class.llvm::StringRef") align 8 %5, ptr noundef nonnull byval(%"class.std::optional.357") align 8 %7, ptr noundef nonnull byval(%"class.std::optional.364") align 8 %6, i32 noundef 0) #24 - %1433 = getelementptr inbounds nuw i8, ptr %4, i64 8 - %1434 = load i8, ptr %1433, align 8 - %1435 = trunc i8 %1434 to i1 - %1436 = xor i1 %1435, true - call void @llvm.assume(i1 %1436) - %1437 = load i32, ptr %4, align 8 + %1433 = load i32, ptr %4, align 8 call void @llvm.lifetime.end.p0(i64 17, ptr nonnull %7) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) - %1438 = load ptr, ptr %0, align 8 - %1439 = getelementptr inbounds i8, ptr %1438, i64 48 - %1440 = load ptr, ptr %1439, align 8 - %1441 = call noundef nonnull align 8 dereferenceable(2432) ptr %1440(ptr noundef nonnull align 8 dereferenceable(1144) %0) #24 - %1442 = getelementptr inbounds nuw i8, ptr %1441, i64 1780 - store i32 %1437, ptr %1442, align 4 - %1443 = load ptr, ptr %1409, align 8 - %1444 = getelementptr inbounds nuw i8, ptr %0, i64 784 - %.sroa.016.0.copyload = load ptr, ptr %1444, align 8 - %1445 = getelementptr inbounds nuw i8, ptr %0, i64 792 - %1446 = load i32, ptr %1445, align 8 - %1447 = call i64 @_ZNK4llvm9SourceMgr16getLineAndColumnENS_5SMLocEj(ptr noundef nonnull align 8 dereferenceable(64) %1443, ptr %.sroa.016.0.copyload, i32 noundef %1446) #24 - %.sroa.01.0.extract.trunc.i412 = trunc i64 %1447 to i32 - %1448 = getelementptr inbounds nuw i8, ptr %0, i64 776 - %1449 = load i64, ptr %1448, align 8 - %1450 = trunc i64 %1449 to i32 - %1451 = xor i32 %.sroa.01.0.extract.trunc.i412, -1 - %1452 = add i32 %1451, %.0264 - %1453 = add i32 %1452, %1450 - br label %1454 - -1454: ; preds = %1424, %1420 - %.1265 = phi i32 [ %.0264, %1420 ], [ %1453, %1424 ] + %1434 = load ptr, ptr %0, align 8 + %1435 = getelementptr inbounds i8, ptr %1434, i64 48 + %1436 = load ptr, ptr %1435, align 8 + %1437 = call noundef nonnull align 8 dereferenceable(2432) ptr %1436(ptr noundef nonnull align 8 dereferenceable(1144) %0) #24 + %1438 = getelementptr inbounds nuw i8, ptr %1437, i64 1780 + store i32 %1433, ptr %1438, align 4 + %1439 = load ptr, ptr %1409, align 8 + %1440 = getelementptr inbounds nuw i8, ptr %0, i64 784 + %.sroa.016.0.copyload = load ptr, ptr %1440, align 8 + %1441 = getelementptr inbounds nuw i8, ptr %0, i64 792 + %1442 = load i32, ptr %1441, align 8 + %1443 = call i64 @_ZNK4llvm9SourceMgr16getLineAndColumnENS_5SMLocEj(ptr noundef nonnull align 8 dereferenceable(64) %1439, ptr %.sroa.016.0.copyload, i32 noundef %1442) #24 + %.sroa.01.0.extract.trunc.i412 = trunc i64 %1443 to i32 + %1444 = getelementptr inbounds nuw i8, ptr %0, i64 776 + %1445 = load i64, ptr %1444, align 8 + %1446 = trunc i64 %1445 to i32 + %1447 = xor i32 %.sroa.01.0.extract.trunc.i412, -1 + %1448 = add i32 %1447, %.0264 + %1449 = add i32 %1448, %1446 + br label %1450 + +1450: ; preds = %1424, %1420 + %.1265 = phi i32 [ %.0264, %1420 ], [ %1449, %1424 ] + %1451 = load ptr, ptr %0, align 8 + %1452 = getelementptr inbounds i8, ptr %1451, i64 56 + %1453 = load ptr, ptr %1452, align 8 + %1454 = call noundef nonnull align 8 dereferenceable(288) ptr %1453(ptr noundef nonnull align 8 dereferenceable(1144) %0) #24 %1455 = load ptr, ptr %0, align 8 - %1456 = getelementptr inbounds i8, ptr %1455, i64 56 + %1456 = getelementptr inbounds i8, ptr %1455, i64 48 %1457 = load ptr, ptr %1456, align 8 - %1458 = call noundef nonnull align 8 dereferenceable(288) ptr %1457(ptr noundef nonnull align 8 dereferenceable(1144) %0) #24 - %1459 = load ptr, ptr %0, align 8 - %1460 = getelementptr inbounds i8, ptr %1459, i64 48 - %1461 = load ptr, ptr %1460, align 8 - %1462 = call noundef nonnull align 8 dereferenceable(2432) ptr %1461(ptr noundef nonnull align 8 dereferenceable(1144) %0) #24 - %1463 = getelementptr inbounds nuw i8, ptr %1462, i64 1780 - %1464 = load i32, ptr %1463, align 4 + %1458 = call noundef nonnull align 8 dereferenceable(2432) ptr %1457(ptr noundef nonnull align 8 dereferenceable(1144) %0) #24 + %1459 = getelementptr inbounds nuw i8, ptr %1458, i64 1780 + %1460 = load i32, ptr %1459, align 4 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %71, i8 0, i64 16, i1 false) - %1465 = load ptr, ptr %1458, align 8 - %1466 = getelementptr inbounds i8, ptr %1465, i64 720 - %1467 = load ptr, ptr %1466, align 8 - call void %1467(ptr noundef nonnull align 8 dereferenceable(288) %1458, i32 noundef %1464, i32 noundef %.1265, i32 noundef 0, i32 noundef 1, i32 noundef 0, i32 noundef 0, ptr noundef nonnull byval(%"class.llvm::StringRef") align 8 %71) #24 + %1461 = load ptr, ptr %1454, align 8 + %1462 = getelementptr inbounds i8, ptr %1461, i64 720 + %1463 = load ptr, ptr %1462, align 8 + call void %1463(ptr noundef nonnull align 8 dereferenceable(288) %1454, i32 noundef %1460, i32 noundef %.1265, i32 noundef 0, i32 noundef 1, i32 noundef 0, i32 noundef 0, ptr noundef nonnull byval(%"class.llvm::StringRef") align 8 %71) #24 br label %.critedge15 -.critedge15: ; preds = %1390, %1454, %1388 - %1468 = load ptr, ptr %1128, align 8 +.critedge15: ; preds = %1390, %1450, %1388 + %1464 = load ptr, ptr %1128, align 8 %.sroa.0.0.copyload = load ptr, ptr %34, align 8 - %1469 = getelementptr inbounds nuw i8, ptr %1, i64 80 - %1470 = getelementptr inbounds nuw i8, ptr %0, i64 232 - %1471 = load ptr, ptr %1470, align 8 - %1472 = getelementptr inbounds nuw i8, ptr %1468, i64 64 - %1473 = load i8, ptr %1472, align 8 - %1474 = trunc i8 %1473 to i1 - %1475 = load ptr, ptr %1468, align 8 - %1476 = getelementptr inbounds i8, ptr %1475, i64 80 - %1477 = load ptr, ptr %1476, align 8 - %1478 = call noundef zeroext i1 %1477(ptr noundef nonnull align 8 dereferenceable(304) %1468, ptr %.sroa.0.0.copyload, ptr noundef nonnull align 4 dereferenceable(4) %1469, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(288) %1471, ptr noundef nonnull align 8 dereferenceable(8) %72, i1 noundef zeroext %1474) #24 - br label %1479 - -1479: ; preds = %.critedge15, %1384 - %.3 = phi i1 [ true, %1384 ], [ %1478, %.critedge15 ] + %1465 = getelementptr inbounds nuw i8, ptr %1, i64 80 + %1466 = getelementptr inbounds nuw i8, ptr %0, i64 232 + %1467 = load ptr, ptr %1466, align 8 + %1468 = getelementptr inbounds nuw i8, ptr %1464, i64 64 + %1469 = load i8, ptr %1468, align 8 + %1470 = trunc i8 %1469 to i1 + %1471 = load ptr, ptr %1464, align 8 + %1472 = getelementptr inbounds i8, ptr %1471, i64 80 + %1473 = load ptr, ptr %1472, align 8 + %1474 = call noundef zeroext i1 %1473(ptr noundef nonnull align 8 dereferenceable(304) %1464, ptr %.sroa.0.0.copyload, ptr noundef nonnull align 4 dereferenceable(4) %1465, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(288) %1467, ptr noundef nonnull align 8 dereferenceable(8) %72, i1 noundef zeroext %1470) #24 + br label %1475 + +1475: ; preds = %.critedge15, %1384 + %.3 = phi i1 [ true, %1384 ], [ %1474, %.critedge15 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #24 - br label %1480 + br label %1476 -1480: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit406.thread548, %1479, %_ZN4llvmeqENS_9StringRefES0_.exit394.thread, %_ZN4llvmeqENS_9StringRefES0_.exit378.thread, %1297, %1286, %1280, %1274, %1267, %1260, %1253, %.critedge13, %.critedge11, %.critedge9, %.critedge7, %.critedge5, %1176, %1156, %1145 - %.2 = phi i1 [ %1150, %1145 ], [ %1165, %1156 ], [ %1303, %1297 ], [ %1313, %_ZN4llvmeqENS_9StringRefES0_.exit378.thread ], [ %1316, %_ZN4llvmeqENS_9StringRefES0_.exit394.thread ], [ %.3, %1479 ], [ %1291, %1286 ], [ %1285, %1280 ], [ %1279, %1274 ], [ %1273, %1267 ], [ %1266, %1260 ], [ %1259, %1253 ], [ %1252, %.critedge13 ], [ %1238, %.critedge11 ], [ %1224, %.critedge9 ], [ %1210, %.critedge7 ], [ %1196, %.critedge5 ], [ %1182, %1176 ], [ true, %_ZN4llvmeqENS_9StringRefES0_.exit406.thread548 ] - %1481 = getelementptr inbounds nuw i8, ptr %53, i64 32 - %1482 = load i32, ptr %1481, align 8 - %1483 = icmp ugt i32 %1482, 64 - br i1 %1483, label %1484, label %_ZN4llvm8AsmTokenD2Ev.exit413 +1476: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit406.thread548, %1475, %_ZN4llvmeqENS_9StringRefES0_.exit394.thread, %_ZN4llvmeqENS_9StringRefES0_.exit378.thread, %1297, %1286, %1280, %1274, %1267, %1260, %1253, %.critedge13, %.critedge11, %.critedge9, %.critedge7, %.critedge5, %1176, %1156, %1145 + %.2 = phi i1 [ %1150, %1145 ], [ %1165, %1156 ], [ %1303, %1297 ], [ %1313, %_ZN4llvmeqENS_9StringRefES0_.exit378.thread ], [ %1316, %_ZN4llvmeqENS_9StringRefES0_.exit394.thread ], [ %.3, %1475 ], [ %1291, %1286 ], [ %1285, %1280 ], [ %1279, %1274 ], [ %1273, %1267 ], [ %1266, %1260 ], [ %1259, %1253 ], [ %1252, %.critedge13 ], [ %1238, %.critedge11 ], [ %1224, %.critedge9 ], [ %1210, %.critedge7 ], [ %1196, %.critedge5 ], [ %1182, %1176 ], [ true, %_ZN4llvmeqENS_9StringRefES0_.exit406.thread548 ] + %1477 = getelementptr inbounds nuw i8, ptr %53, i64 32 + %1478 = load i32, ptr %1477, align 8 + %1479 = icmp ugt i32 %1478, 64 + br i1 %1479, label %1480, label %_ZN4llvm8AsmTokenD2Ev.exit413 -1484: ; preds = %1480 - %1485 = getelementptr inbounds nuw i8, ptr %53, i64 24 - %1486 = load ptr, ptr %1485, align 8 - %1487 = icmp eq ptr %1486, null - br i1 %1487, label %_ZN4llvm8AsmTokenD2Ev.exit413, label %1488 +1480: ; preds = %1476 + %1481 = getelementptr inbounds nuw i8, ptr %53, i64 24 + %1482 = load ptr, ptr %1481, align 8 + %1483 = icmp eq ptr %1482, null + br i1 %1483, label %_ZN4llvm8AsmTokenD2Ev.exit413, label %1484 -1488: ; preds = %1484 - call void @_ZdaPv(ptr noundef nonnull %1486) #26 +1484: ; preds = %1480 + call void @_ZdaPv(ptr noundef nonnull %1482) #26 br label %_ZN4llvm8AsmTokenD2Ev.exit413 -_ZN4llvm8AsmTokenD2Ev.exit413: ; preds = %1480, %1484, %1488 - %1489 = load i32, ptr %1118, align 8 - %1490 = icmp ugt i32 %1489, 64 - br i1 %1490, label %1491, label %_ZN12_GLOBAL__N_110MasmParser31parseCppHashLineFilenameCommentEN4llvm5SMLocE.exit +_ZN4llvm8AsmTokenD2Ev.exit413: ; preds = %1476, %1480, %1484 + %1485 = load i32, ptr %1118, align 8 + %1486 = icmp ugt i32 %1485, 64 + br i1 %1486, label %1487, label %_ZN12_GLOBAL__N_110MasmParser31parseCppHashLineFilenameCommentEN4llvm5SMLocE.exit -1491: ; preds = %_ZN4llvm8AsmTokenD2Ev.exit413 - %1492 = load ptr, ptr %1116, align 8 - %1493 = icmp eq ptr %1492, null - br i1 %1493, label %_ZN12_GLOBAL__N_110MasmParser31parseCppHashLineFilenameCommentEN4llvm5SMLocE.exit, label %1494 +1487: ; preds = %_ZN4llvm8AsmTokenD2Ev.exit413 + %1488 = load ptr, ptr %1116, align 8 + %1489 = icmp eq ptr %1488, null + br i1 %1489, label %_ZN12_GLOBAL__N_110MasmParser31parseCppHashLineFilenameCommentEN4llvm5SMLocE.exit, label %1490 -1494: ; preds = %1491 - call void @_ZdaPv(ptr noundef nonnull %1492) #26 +1490: ; preds = %1487 + call void @_ZdaPv(ptr noundef nonnull %1488) #26 br label %_ZN12_GLOBAL__N_110MasmParser31parseCppHashLineFilenameCommentEN4llvm5SMLocE.exit _ZN12_GLOBAL__N_110MasmParser31parseCppHashLineFilenameCommentEN4llvm5SMLocE.exit.fold.split: ; preds = %_ZN4llvm8AsmTokenD2Ev.exit337 br label %_ZN12_GLOBAL__N_110MasmParser31parseCppHashLineFilenameCommentEN4llvm5SMLocE.exit -_ZN12_GLOBAL__N_110MasmParser31parseCppHashLineFilenameCommentEN4llvm5SMLocE.exit: ; preds = %_ZN4llvm8AsmTokenD2Ev.exit337, %_ZN12_GLOBAL__N_110MasmParser31parseCppHashLineFilenameCommentEN4llvm5SMLocE.exit.fold.split, %1494, %1491, %_ZN4llvm8AsmTokenD2Ev.exit413, %607, %573, %880, %715, %1111, %1099, %1098, %1096, %1094, %1092, %1090, %1088, %1086, %1084, %1082, %1080, %1078, %1076, %1074, %1072, %1070, %1066, %1062, %1054, %1052, %1050, %1048, %1046, %1044, %1042, %1040, %1032, %1024, %1022, %1020, %1018, %1016, %1014, %1012, %1010, %1008, %1003, %1001, %999, %997, %995, %987, %979, %977, %975, %973, %971, %969, %967, %965, %963, %959, %957, %955, %953, %951, %949, %947, %945, %943, %941, %939, %937, %935, %933, %931, %929, %927, %925, %922, %919, %916, %914, %912, %910, %908, %906, %904, %902, %877, %870, %841, %819, %_ZN4llvmeqENS_9StringRefES0_.exit.thread, %700, %694, %692, %690, %688, %686, %684, %682, %680, %678, %676, %674, %672, %670, %668, %666, %664, %662, %660, %658, %656, %633, %_ZNK4llvm9StringRef11starts_withES0_.exit.thread515 - %.1 = phi i1 [ false, %700 ], [ %728, %_ZN4llvmeqENS_9StringRefES0_.exit.thread ], [ false, %819 ], [ %845, %841 ], [ %871, %870 ], [ %879, %877 ], [ %1102, %1099 ], [ false, %1098 ], [ %1097, %1096 ], [ %1095, %1094 ], [ %1093, %1092 ], [ %1091, %1090 ], [ %1089, %1088 ], [ %1087, %1086 ], [ %1085, %1084 ], [ %1083, %1082 ], [ %1081, %1080 ], [ %1079, %1078 ], [ %1077, %1076 ], [ %1075, %1074 ], [ %1073, %1072 ], [ %1071, %1070 ], [ %1069, %1066 ], [ %1065, %1062 ], [ false, %1054 ], [ %1053, %1052 ], [ %1051, %1050 ], [ %1049, %1048 ], [ %1047, %1046 ], [ %1045, %1044 ], [ %1043, %1042 ], [ %1041, %1040 ], [ false, %1032 ], [ false, %1024 ], [ %1023, %1022 ], [ %1021, %1020 ], [ %1019, %1018 ], [ %1017, %1016 ], [ %1015, %1014 ], [ %1013, %1012 ], [ %1011, %1010 ], [ %1009, %1008 ], [ false, %1003 ], [ %1002, %1001 ], [ %1000, %999 ], [ %998, %997 ], [ %996, %995 ], [ false, %987 ], [ false, %979 ], [ %978, %977 ], [ %976, %975 ], [ %974, %973 ], [ %972, %971 ], [ %970, %969 ], [ %968, %967 ], [ %966, %965 ], [ %964, %963 ], [ %962, %959 ], [ %958, %957 ], [ %956, %955 ], [ %954, %953 ], [ %952, %951 ], [ %950, %949 ], [ %948, %947 ], [ %946, %945 ], [ %944, %943 ], [ %942, %941 ], [ %940, %939 ], [ %938, %937 ], [ %936, %935 ], [ %934, %933 ], [ %932, %931 ], [ %930, %929 ], [ %928, %927 ], [ %926, %925 ], [ %924, %922 ], [ %921, %919 ], [ %918, %916 ], [ %915, %914 ], [ %913, %912 ], [ %911, %910 ], [ %909, %908 ], [ %907, %906 ], [ %905, %904 ], [ %903, %902 ], [ %1113, %1111 ], [ %695, %694 ], [ %693, %692 ], [ %691, %690 ], [ %689, %688 ], [ %687, %686 ], [ %685, %684 ], [ %683, %682 ], [ %681, %680 ], [ %679, %678 ], [ %677, %676 ], [ %675, %674 ], [ %673, %672 ], [ %671, %670 ], [ %669, %668 ], [ %667, %666 ], [ %665, %664 ], [ %663, %662 ], [ %661, %660 ], [ %659, %658 ], [ %657, %656 ], [ %626, %_ZNK4llvm9StringRef11starts_withES0_.exit.thread515 ], [ %640, %633 ], [ true, %715 ], [ false, %880 ], [ true, %_ZN4llvm8AsmTokenD2Ev.exit337 ], [ false, %573 ], [ false, %607 ], [ %.2, %_ZN4llvm8AsmTokenD2Ev.exit413 ], [ %.2, %1491 ], [ %.2, %1494 ], [ false, %_ZN12_GLOBAL__N_110MasmParser31parseCppHashLineFilenameCommentEN4llvm5SMLocE.exit.fold.split ] - %1495 = load i32, ptr %563, align 8 - %1496 = icmp ugt i32 %1495, 64 - br i1 %1496, label %1497, label %.critedge2 +_ZN12_GLOBAL__N_110MasmParser31parseCppHashLineFilenameCommentEN4llvm5SMLocE.exit: ; preds = %_ZN4llvm8AsmTokenD2Ev.exit337, %_ZN12_GLOBAL__N_110MasmParser31parseCppHashLineFilenameCommentEN4llvm5SMLocE.exit.fold.split, %1490, %1487, %_ZN4llvm8AsmTokenD2Ev.exit413, %607, %573, %880, %715, %1111, %1099, %1098, %1096, %1094, %1092, %1090, %1088, %1086, %1084, %1082, %1080, %1078, %1076, %1074, %1072, %1070, %1066, %1062, %1054, %1052, %1050, %1048, %1046, %1044, %1042, %1040, %1032, %1024, %1022, %1020, %1018, %1016, %1014, %1012, %1010, %1008, %1003, %1001, %999, %997, %995, %987, %979, %977, %975, %973, %971, %969, %967, %965, %963, %959, %957, %955, %953, %951, %949, %947, %945, %943, %941, %939, %937, %935, %933, %931, %929, %927, %925, %922, %919, %916, %914, %912, %910, %908, %906, %904, %902, %877, %870, %841, %819, %_ZN4llvmeqENS_9StringRefES0_.exit.thread, %700, %694, %692, %690, %688, %686, %684, %682, %680, %678, %676, %674, %672, %670, %668, %666, %664, %662, %660, %658, %656, %633, %_ZNK4llvm9StringRef11starts_withES0_.exit.thread515 + %.1 = phi i1 [ false, %700 ], [ %728, %_ZN4llvmeqENS_9StringRefES0_.exit.thread ], [ false, %819 ], [ %845, %841 ], [ %871, %870 ], [ %879, %877 ], [ %1102, %1099 ], [ false, %1098 ], [ %1097, %1096 ], [ %1095, %1094 ], [ %1093, %1092 ], [ %1091, %1090 ], [ %1089, %1088 ], [ %1087, %1086 ], [ %1085, %1084 ], [ %1083, %1082 ], [ %1081, %1080 ], [ %1079, %1078 ], [ %1077, %1076 ], [ %1075, %1074 ], [ %1073, %1072 ], [ %1071, %1070 ], [ %1069, %1066 ], [ %1065, %1062 ], [ false, %1054 ], [ %1053, %1052 ], [ %1051, %1050 ], [ %1049, %1048 ], [ %1047, %1046 ], [ %1045, %1044 ], [ %1043, %1042 ], [ %1041, %1040 ], [ false, %1032 ], [ false, %1024 ], [ %1023, %1022 ], [ %1021, %1020 ], [ %1019, %1018 ], [ %1017, %1016 ], [ %1015, %1014 ], [ %1013, %1012 ], [ %1011, %1010 ], [ %1009, %1008 ], [ false, %1003 ], [ %1002, %1001 ], [ %1000, %999 ], [ %998, %997 ], [ %996, %995 ], [ false, %987 ], [ false, %979 ], [ %978, %977 ], [ %976, %975 ], [ %974, %973 ], [ %972, %971 ], [ %970, %969 ], [ %968, %967 ], [ %966, %965 ], [ %964, %963 ], [ %962, %959 ], [ %958, %957 ], [ %956, %955 ], [ %954, %953 ], [ %952, %951 ], [ %950, %949 ], [ %948, %947 ], [ %946, %945 ], [ %944, %943 ], [ %942, %941 ], [ %940, %939 ], [ %938, %937 ], [ %936, %935 ], [ %934, %933 ], [ %932, %931 ], [ %930, %929 ], [ %928, %927 ], [ %926, %925 ], [ %924, %922 ], [ %921, %919 ], [ %918, %916 ], [ %915, %914 ], [ %913, %912 ], [ %911, %910 ], [ %909, %908 ], [ %907, %906 ], [ %905, %904 ], [ %903, %902 ], [ %1113, %1111 ], [ %695, %694 ], [ %693, %692 ], [ %691, %690 ], [ %689, %688 ], [ %687, %686 ], [ %685, %684 ], [ %683, %682 ], [ %681, %680 ], [ %679, %678 ], [ %677, %676 ], [ %675, %674 ], [ %673, %672 ], [ %671, %670 ], [ %669, %668 ], [ %667, %666 ], [ %665, %664 ], [ %663, %662 ], [ %661, %660 ], [ %659, %658 ], [ %657, %656 ], [ %626, %_ZNK4llvm9StringRef11starts_withES0_.exit.thread515 ], [ %640, %633 ], [ true, %715 ], [ false, %880 ], [ true, %_ZN4llvm8AsmTokenD2Ev.exit337 ], [ false, %573 ], [ false, %607 ], [ %.2, %_ZN4llvm8AsmTokenD2Ev.exit413 ], [ %.2, %1487 ], [ %.2, %1490 ], [ false, %_ZN12_GLOBAL__N_110MasmParser31parseCppHashLineFilenameCommentEN4llvm5SMLocE.exit.fold.split ] + %1491 = load i32, ptr %563, align 8 + %1492 = icmp ugt i32 %1491, 64 + br i1 %1492, label %1493, label %.critedge2 -1497: ; preds = %_ZN12_GLOBAL__N_110MasmParser31parseCppHashLineFilenameCommentEN4llvm5SMLocE.exit - %1498 = load ptr, ptr %561, align 8 - %1499 = icmp eq ptr %1498, null - br i1 %1499, label %.critedge2, label %1500 +1493: ; preds = %_ZN12_GLOBAL__N_110MasmParser31parseCppHashLineFilenameCommentEN4llvm5SMLocE.exit + %1494 = load ptr, ptr %561, align 8 + %1495 = icmp eq ptr %1494, null + br i1 %1495, label %.critedge2, label %1496 -1500: ; preds = %1497 - call void @_ZdaPv(ptr noundef nonnull %1498) #26 +1496: ; preds = %1493 + call void @_ZdaPv(ptr noundef nonnull %1494) #26 br label %.critedge2 -.critedge2: ; preds = %1500, %1497, %_ZN12_GLOBAL__N_110MasmParser31parseCppHashLineFilenameCommentEN4llvm5SMLocE.exit, %_ZN12_GLOBAL__N_110MasmParser15expandStatementEN4llvm5SMLocE.exit, %110, %100 - %.0 = phi i1 [ false, %100 ], [ true, %110 ], [ true, %_ZN12_GLOBAL__N_110MasmParser15expandStatementEN4llvm5SMLocE.exit ], [ %.1, %_ZN12_GLOBAL__N_110MasmParser31parseCppHashLineFilenameCommentEN4llvm5SMLocE.exit ], [ %.1, %1497 ], [ %.1, %1500 ] +.critedge2: ; preds = %1496, %1493, %_ZN12_GLOBAL__N_110MasmParser31parseCppHashLineFilenameCommentEN4llvm5SMLocE.exit, %_ZN12_GLOBAL__N_110MasmParser15expandStatementEN4llvm5SMLocE.exit, %110, %100 + %.0 = phi i1 [ false, %100 ], [ true, %110 ], [ true, %_ZN12_GLOBAL__N_110MasmParser15expandStatementEN4llvm5SMLocE.exit ], [ %.1, %_ZN12_GLOBAL__N_110MasmParser31parseCppHashLineFilenameCommentEN4llvm5SMLocE.exit ], [ %.1, %1493 ], [ %.1, %1496 ] ret i1 %.0 } @@ -14308,7 +14303,7 @@ define internal fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_110MasmParser26enable %17 = getelementptr inbounds nuw i8, ptr %16, i64 1777 %18 = load i8, ptr %17, align 1 %19 = trunc i8 %18 to i1 - br i1 %19, label %20, label %98 + br i1 %19, label %20, label %94 20: ; preds = %1 %21 = load ptr, ptr %0, align 8 @@ -14318,7 +14313,7 @@ define internal fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_110MasmParser26enable %25 = getelementptr inbounds nuw i8, ptr %24, i64 1780 %26 = load i32, ptr %25, align 4 %27 = icmp eq i32 %26, 0 - br i1 %27, label %28, label %98 + br i1 %27, label %28, label %94 28: ; preds = %20 %29 = getelementptr inbounds i8, ptr %0, i64 808 @@ -14467,20 +14462,15 @@ _ZN4llvm9MCContext19getMCDwarfLineTableEj.exit: ; preds = %65, %.critedge.i.i %90 = getelementptr inbounds i8, ptr %89, i64 688 %91 = load ptr, ptr %90, align 8 call void %91(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected.571") align 8 %2, ptr noundef nonnull align 8 dereferenceable(288) %77, i32 noundef 0, ptr %83, i64 %84, ptr noundef nonnull byval(%"class.llvm::StringRef") align 8 %3, ptr noundef nonnull byval(%"class.std::optional.357") align 8 %4, ptr noundef nonnull byval(%"class.std::optional.364") align 8 %88, i32 noundef 0) #24 - %92 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %93 = load i8, ptr %92, align 8 - %94 = trunc i8 %93 to i1 - %95 = xor i1 %94, true - call void @llvm.assume(i1 %95) - %96 = load i32, ptr %2, align 8 + %92 = load i32, ptr %2, align 8 call void @llvm.lifetime.end.p0(i64 17, ptr nonnull %4) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) - %97 = getelementptr inbounds nuw i8, ptr %73, i64 1780 - store i32 %96, ptr %97, align 4 - br label %98 + %93 = getelementptr inbounds nuw i8, ptr %73, i64 1780 + store i32 %92, ptr %93, align 4 + br label %94 -98: ; preds = %20, %_ZN4llvm9MCContext19getMCDwarfLineTableEj.exit, %1 +94: ; preds = %20, %_ZN4llvm9MCContext19getMCDwarfLineTableEj.exit, %1 ret i1 %19 } diff --git a/bench/llvm/optimized/NativeEnumGlobals.cpp.ll b/bench/llvm/optimized/NativeEnumGlobals.cpp.ll index 6973003d9a7..c8a97a8d203 100644 --- a/bench/llvm/optimized/NativeEnumGlobals.cpp.ll +++ b/bench/llvm/optimized/NativeEnumGlobals.cpp.ll @@ -68,7 +68,7 @@ $_ZNSt6vectorISt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS2_EESaIS5 ; Function Attrs: mustprogress nounwind uwtable define dso_local void @_ZN4llvm3pdb17NativeEnumGlobalsC2ERNS0_13NativeSessionESt6vectorINS_8codeview10SymbolKindESaIS6_EE(ptr nocapture noundef nonnull align 8 dereferenceable(48) initializes((0, 36), (40, 48)) %0, ptr noundef nonnull align 8 dereferenceable(584) %1, ptr nocapture noundef readonly %2) unnamed_addr #0 align 2 { -_ZN4llvm8ExpectedIRNS_3pdb12SymbolStreamEED2Ev.exit: +_ZN4llvm8ExpectedIRNS_3pdb13GlobalsStreamEED2Ev.exit: %3 = alloca %"class.llvm::Error", align 8 %4 = alloca %"class.llvm::Error", align 8 %5 = alloca %class.anon, align 1 @@ -86,472 +86,462 @@ _ZN4llvm8ExpectedIRNS_3pdb12SymbolStreamEED2Ev.exit: %14 = getelementptr inbounds nuw i8, ptr %1, i64 8 %15 = load ptr, ptr %14, align 8 call void @_ZN4llvm3pdb7PDBFile19getPDBGlobalsStreamEv(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected") align 8 %8, ptr noundef nonnull align 8 dereferenceable(280) %15) #13 - %16 = getelementptr inbounds nuw i8, ptr %8, i64 8 - %17 = load i8, ptr %16, align 8 - %18 = trunc i8 %17 to i1 - %19 = xor i1 %18, true - call void @llvm.assume(i1 %19) - %20 = load ptr, ptr %8, align 8 - %21 = load ptr, ptr %13, align 8 - %22 = getelementptr inbounds nuw i8, ptr %21, i64 8 - %23 = load ptr, ptr %22, align 8 - call void @_ZN4llvm3pdb7PDBFile18getPDBSymbolStreamEv(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected.144") align 8 %9, ptr noundef nonnull align 8 dereferenceable(280) %23) #13 - %24 = getelementptr inbounds nuw i8, ptr %9, i64 8 - %25 = load i8, ptr %24, align 8 - %26 = trunc i8 %25 to i1 - %27 = xor i1 %26, true - call void @llvm.assume(i1 %27) - %28 = load ptr, ptr %9, align 8 - call void @_ZNK4llvm3pdb12GSIHashTable5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.llvm::pdb::GSIHashIterator") align 8 %10, ptr noundef nonnull align 8 dereferenceable(16540) %20) - call void @_ZNK4llvm3pdb12GSIHashTable3endEv(ptr dead_on_unwind nonnull writable sret(%"class.llvm::pdb::GSIHashIterator") align 8 %11, ptr noundef nonnull align 8 dereferenceable(16540) %20) - %29 = getelementptr inbounds nuw i8, ptr %10, i64 48 - %30 = getelementptr inbounds nuw i8, ptr %11, i64 48 - %31 = getelementptr inbounds nuw i8, ptr %10, i64 16 - %32 = getelementptr inbounds nuw i8, ptr %11, i64 16 - %33 = getelementptr inbounds nuw i8, ptr %10, i64 24 - %34 = getelementptr inbounds nuw i8, ptr %11, i64 24 - %35 = getelementptr inbounds nuw i8, ptr %10, i64 40 - %36 = getelementptr inbounds nuw i8, ptr %11, i64 40 - %37 = getelementptr inbounds nuw i8, ptr %11, i64 32 - %38 = getelementptr inbounds nuw i8, ptr %10, i64 32 - %39 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %40 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %41 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %.pre = load i32, ptr %29, align 8 - br label %42 - -42: ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit, %_ZN4llvm8ExpectedIRNS_3pdb12SymbolStreamEED2Ev.exit - %43 = phi i32 [ %231, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit ], [ %.pre, %_ZN4llvm8ExpectedIRNS_3pdb12SymbolStreamEED2Ev.exit ] - %44 = load i32, ptr %30, align 8 - %45 = icmp eq i32 %43, %44 - br i1 %45, label %46, label %_ZNK4llvm20iterator_facade_baseINS_3pdb15GSIHashIteratorESt26random_access_iterator_tagKjlPS4_RS4_EneERKS2_.exit.thread + %16 = load ptr, ptr %8, align 8 + %17 = load ptr, ptr %13, align 8 + %18 = getelementptr inbounds nuw i8, ptr %17, i64 8 + %19 = load ptr, ptr %18, align 8 + call void @_ZN4llvm3pdb7PDBFile18getPDBSymbolStreamEv(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected.144") align 8 %9, ptr noundef nonnull align 8 dereferenceable(280) %19) #13 + %20 = load ptr, ptr %9, align 8 + call void @_ZNK4llvm3pdb12GSIHashTable5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.llvm::pdb::GSIHashIterator") align 8 %10, ptr noundef nonnull align 8 dereferenceable(16540) %16) + call void @_ZNK4llvm3pdb12GSIHashTable3endEv(ptr dead_on_unwind nonnull writable sret(%"class.llvm::pdb::GSIHashIterator") align 8 %11, ptr noundef nonnull align 8 dereferenceable(16540) %16) + %21 = getelementptr inbounds nuw i8, ptr %10, i64 48 + %22 = getelementptr inbounds nuw i8, ptr %11, i64 48 + %23 = getelementptr inbounds nuw i8, ptr %10, i64 16 + %24 = getelementptr inbounds nuw i8, ptr %11, i64 16 + %25 = getelementptr inbounds nuw i8, ptr %10, i64 24 + %26 = getelementptr inbounds nuw i8, ptr %11, i64 24 + %27 = getelementptr inbounds nuw i8, ptr %10, i64 40 + %28 = getelementptr inbounds nuw i8, ptr %11, i64 40 + %29 = getelementptr inbounds nuw i8, ptr %11, i64 32 + %30 = getelementptr inbounds nuw i8, ptr %10, i64 32 + %31 = getelementptr inbounds nuw i8, ptr %2, i64 8 + %32 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %33 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %.pre = load i32, ptr %21, align 8 + br label %34 -46: ; preds = %42 - %47 = load ptr, ptr %31, align 8 - %48 = load ptr, ptr %32, align 8 - %.not.i.i.i.i.i = icmp eq ptr %47, %48 - br i1 %.not.i.i.i.i.i, label %49, label %_ZNK4llvm20iterator_facade_baseINS_3pdb15GSIHashIteratorESt26random_access_iterator_tagKjlPS4_RS4_EneERKS2_.exit.thread - -49: ; preds = %46 - %50 = load i64, ptr %33, align 8 - %51 = load i64, ptr %34, align 8 - %.not7.i.i.i.i.i = icmp eq i64 %50, %51 - br i1 %.not7.i.i.i.i.i, label %52, label %_ZNK4llvm20iterator_facade_baseINS_3pdb15GSIHashIteratorESt26random_access_iterator_tagKjlPS4_RS4_EneERKS2_.exit.thread - -52: ; preds = %49 - %53 = load i8, ptr %35, align 8 - %54 = trunc i8 %53 to i1 - %55 = load i8, ptr %36, align 8 - %56 = xor i8 %55, %53 - %57 = trunc i8 %56 to i1 - %.not.i.i.i.i.i.i = xor i1 %54, true - %brmerge.i.i.i.i.i.i = or i1 %.not.i.i.i.i.i.i, %57 - br i1 %brmerge.i.i.i.i.i.i, label %_ZNK4llvm20iterator_facade_baseINS_3pdb15GSIHashIteratorESt26random_access_iterator_tagKjlPS4_RS4_EneERKS2_.exit, label %58 - -58: ; preds = %52 - %59 = load i64, ptr %38, align 8 - %60 = load i64, ptr %37, align 8 - %.not = icmp eq i64 %59, %60 - br i1 %.not, label %61, label %_ZNK4llvm20iterator_facade_baseINS_3pdb15GSIHashIteratorESt26random_access_iterator_tagKjlPS4_RS4_EneERKS2_.exit.thread - -_ZNK4llvm20iterator_facade_baseINS_3pdb15GSIHashIteratorESt26random_access_iterator_tagKjlPS4_RS4_EneERKS2_.exit: ; preds = %52 - br i1 %57, label %_ZNK4llvm20iterator_facade_baseINS_3pdb15GSIHashIteratorESt26random_access_iterator_tagKjlPS4_RS4_EneERKS2_.exit.thread, label %61 - -61: ; preds = %58, %_ZNK4llvm20iterator_facade_baseINS_3pdb15GSIHashIteratorESt26random_access_iterator_tagKjlPS4_RS4_EneERKS2_.exit - %62 = getelementptr inbounds nuw i8, ptr %11, i64 8 - %63 = load ptr, ptr %62, align 8 - %.not.i.i.i.i.i.i.i.i.i = icmp eq ptr %63, null - br i1 %.not.i.i.i.i.i.i.i.i.i, label %_ZN4llvm3pdb15GSIHashIteratorD2Ev.exit, label %64 - -64: ; preds = %61 - %65 = getelementptr inbounds nuw i8, ptr %63, i64 8 - %66 = load atomic i64, ptr %65 acquire, align 8 - %67 = icmp eq i64 %66, 4294967297 - %68 = trunc i64 %66 to i32 - br i1 %67, label %69, label %74 - -69: ; preds = %64 - store i32 0, ptr %65, align 8 - %70 = getelementptr inbounds nuw i8, ptr %63, i64 12 - store i32 0, ptr %70, align 4 - %71 = load ptr, ptr %63, align 8 - %72 = getelementptr inbounds i8, ptr %71, i64 16 - %73 = load ptr, ptr %72, align 8 - call void %73(ptr noundef nonnull align 8 dereferenceable(16) %63) #13 +34: ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit, %_ZN4llvm8ExpectedIRNS_3pdb13GlobalsStreamEED2Ev.exit + %35 = phi i32 [ %223, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit ], [ %.pre, %_ZN4llvm8ExpectedIRNS_3pdb13GlobalsStreamEED2Ev.exit ] + %36 = load i32, ptr %22, align 8 + %37 = icmp eq i32 %35, %36 + br i1 %37, label %38, label %_ZNK4llvm20iterator_facade_baseINS_3pdb15GSIHashIteratorESt26random_access_iterator_tagKjlPS4_RS4_EneERKS2_.exit.thread + +38: ; preds = %34 + %39 = load ptr, ptr %23, align 8 + %40 = load ptr, ptr %24, align 8 + %.not.i.i.i.i.i = icmp eq ptr %39, %40 + br i1 %.not.i.i.i.i.i, label %41, label %_ZNK4llvm20iterator_facade_baseINS_3pdb15GSIHashIteratorESt26random_access_iterator_tagKjlPS4_RS4_EneERKS2_.exit.thread + +41: ; preds = %38 + %42 = load i64, ptr %25, align 8 + %43 = load i64, ptr %26, align 8 + %.not7.i.i.i.i.i = icmp eq i64 %42, %43 + br i1 %.not7.i.i.i.i.i, label %44, label %_ZNK4llvm20iterator_facade_baseINS_3pdb15GSIHashIteratorESt26random_access_iterator_tagKjlPS4_RS4_EneERKS2_.exit.thread + +44: ; preds = %41 + %45 = load i8, ptr %27, align 8 + %46 = trunc i8 %45 to i1 + %47 = load i8, ptr %28, align 8 + %48 = xor i8 %47, %45 + %49 = trunc i8 %48 to i1 + %.not.i.i.i.i.i.i = xor i1 %46, true + %brmerge.i.i.i.i.i.i = or i1 %.not.i.i.i.i.i.i, %49 + br i1 %brmerge.i.i.i.i.i.i, label %_ZNK4llvm20iterator_facade_baseINS_3pdb15GSIHashIteratorESt26random_access_iterator_tagKjlPS4_RS4_EneERKS2_.exit, label %50 + +50: ; preds = %44 + %51 = load i64, ptr %30, align 8 + %52 = load i64, ptr %29, align 8 + %.not = icmp eq i64 %51, %52 + br i1 %.not, label %53, label %_ZNK4llvm20iterator_facade_baseINS_3pdb15GSIHashIteratorESt26random_access_iterator_tagKjlPS4_RS4_EneERKS2_.exit.thread + +_ZNK4llvm20iterator_facade_baseINS_3pdb15GSIHashIteratorESt26random_access_iterator_tagKjlPS4_RS4_EneERKS2_.exit: ; preds = %44 + br i1 %49, label %_ZNK4llvm20iterator_facade_baseINS_3pdb15GSIHashIteratorESt26random_access_iterator_tagKjlPS4_RS4_EneERKS2_.exit.thread, label %53 + +53: ; preds = %50, %_ZNK4llvm20iterator_facade_baseINS_3pdb15GSIHashIteratorESt26random_access_iterator_tagKjlPS4_RS4_EneERKS2_.exit + %54 = getelementptr inbounds nuw i8, ptr %11, i64 8 + %55 = load ptr, ptr %54, align 8 + %.not.i.i.i.i.i.i.i.i.i = icmp eq ptr %55, null + br i1 %.not.i.i.i.i.i.i.i.i.i, label %_ZN4llvm3pdb15GSIHashIteratorD2Ev.exit, label %56 + +56: ; preds = %53 + %57 = getelementptr inbounds nuw i8, ptr %55, i64 8 + %58 = load atomic i64, ptr %57 acquire, align 8 + %59 = icmp eq i64 %58, 4294967297 + %60 = trunc i64 %58 to i32 + br i1 %59, label %61, label %66 + +61: ; preds = %56 + store i32 0, ptr %57, align 8 + %62 = getelementptr inbounds nuw i8, ptr %55, i64 12 + store i32 0, ptr %62, align 4 + %63 = load ptr, ptr %55, align 8 + %64 = getelementptr inbounds i8, ptr %63, i64 16 + %65 = load ptr, ptr %64, align 8 + call void %65(ptr noundef nonnull align 8 dereferenceable(16) %55) #13 br label %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv.exit.sink.split.i.i.i.i.i.i.i.i.i.i -74: ; preds = %64 - %75 = load i8, ptr @__libc_single_threaded, align 1 - %.not.i.i.i.i.i.i.i.i.i.i = icmp eq i8 %75, 0 - br i1 %.not.i.i.i.i.i.i.i.i.i.i, label %78, label %76 - -76: ; preds = %74 - %77 = add nsw i32 %68, -1 - store i32 %77, ptr %65, align 4 - br label %80 - -78: ; preds = %74 - %79 = atomicrmw volatile add ptr %65, i32 -1 acq_rel, align 4 - br label %80 - -80: ; preds = %78, %76 - %.0.i.i.i.i.i.i.i.i.i.i = phi i32 [ %68, %76 ], [ %79, %78 ] - %81 = icmp eq i32 %.0.i.i.i.i.i.i.i.i.i.i, 1 - br i1 %81, label %82, label %_ZN4llvm3pdb15GSIHashIteratorD2Ev.exit - -82: ; preds = %80 - %83 = load ptr, ptr %63, align 8 - %84 = getelementptr inbounds i8, ptr %83, i64 16 - %85 = load ptr, ptr %84, align 8 - call void %85(ptr noundef nonnull align 8 dereferenceable(16) %63) #13 - %86 = getelementptr inbounds nuw i8, ptr %63, i64 12 - %87 = load i8, ptr @__libc_single_threaded, align 1 - %.not.i.i.i.i.i.i.i.i.i.i.i.i = icmp eq i8 %87, 0 - br i1 %.not.i.i.i.i.i.i.i.i.i.i.i.i, label %91, label %88 - -88: ; preds = %82 - %89 = load i32, ptr %86, align 4 - %90 = add nsw i32 %89, -1 - store i32 %90, ptr %86, align 4 - br label %93 - -91: ; preds = %82 - %92 = atomicrmw volatile add ptr %86, i32 -1 acq_rel, align 4 - br label %93 - -93: ; preds = %91, %88 - %.0.i.i.i.i.i.i.i.i.i.i.i.i = phi i32 [ %89, %88 ], [ %92, %91 ] - %94 = icmp eq i32 %.0.i.i.i.i.i.i.i.i.i.i.i.i, 1 - br i1 %94, label %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv.exit.sink.split.i.i.i.i.i.i.i.i.i.i, label %_ZN4llvm3pdb15GSIHashIteratorD2Ev.exit - -_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv.exit.sink.split.i.i.i.i.i.i.i.i.i.i: ; preds = %93, %69 - %95 = load ptr, ptr %63, align 8 - %96 = getelementptr inbounds i8, ptr %95, i64 24 - %97 = load ptr, ptr %96, align 8 - call void %97(ptr noundef nonnull align 8 dereferenceable(16) %63) #13 +66: ; preds = %56 + %67 = load i8, ptr @__libc_single_threaded, align 1 + %.not.i.i.i.i.i.i.i.i.i.i = icmp eq i8 %67, 0 + br i1 %.not.i.i.i.i.i.i.i.i.i.i, label %70, label %68 + +68: ; preds = %66 + %69 = add nsw i32 %60, -1 + store i32 %69, ptr %57, align 4 + br label %72 + +70: ; preds = %66 + %71 = atomicrmw volatile add ptr %57, i32 -1 acq_rel, align 4 + br label %72 + +72: ; preds = %70, %68 + %.0.i.i.i.i.i.i.i.i.i.i = phi i32 [ %60, %68 ], [ %71, %70 ] + %73 = icmp eq i32 %.0.i.i.i.i.i.i.i.i.i.i, 1 + br i1 %73, label %74, label %_ZN4llvm3pdb15GSIHashIteratorD2Ev.exit + +74: ; preds = %72 + %75 = load ptr, ptr %55, align 8 + %76 = getelementptr inbounds i8, ptr %75, i64 16 + %77 = load ptr, ptr %76, align 8 + call void %77(ptr noundef nonnull align 8 dereferenceable(16) %55) #13 + %78 = getelementptr inbounds nuw i8, ptr %55, i64 12 + %79 = load i8, ptr @__libc_single_threaded, align 1 + %.not.i.i.i.i.i.i.i.i.i.i.i.i = icmp eq i8 %79, 0 + br i1 %.not.i.i.i.i.i.i.i.i.i.i.i.i, label %83, label %80 + +80: ; preds = %74 + %81 = load i32, ptr %78, align 4 + %82 = add nsw i32 %81, -1 + store i32 %82, ptr %78, align 4 + br label %85 + +83: ; preds = %74 + %84 = atomicrmw volatile add ptr %78, i32 -1 acq_rel, align 4 + br label %85 + +85: ; preds = %83, %80 + %.0.i.i.i.i.i.i.i.i.i.i.i.i = phi i32 [ %81, %80 ], [ %84, %83 ] + %86 = icmp eq i32 %.0.i.i.i.i.i.i.i.i.i.i.i.i, 1 + br i1 %86, label %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv.exit.sink.split.i.i.i.i.i.i.i.i.i.i, label %_ZN4llvm3pdb15GSIHashIteratorD2Ev.exit + +_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv.exit.sink.split.i.i.i.i.i.i.i.i.i.i: ; preds = %85, %61 + %87 = load ptr, ptr %55, align 8 + %88 = getelementptr inbounds i8, ptr %87, i64 24 + %89 = load ptr, ptr %88, align 8 + call void %89(ptr noundef nonnull align 8 dereferenceable(16) %55) #13 br label %_ZN4llvm3pdb15GSIHashIteratorD2Ev.exit -_ZN4llvm3pdb15GSIHashIteratorD2Ev.exit: ; preds = %61, %80, %93, %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv.exit.sink.split.i.i.i.i.i.i.i.i.i.i - %98 = getelementptr inbounds nuw i8, ptr %10, i64 8 - %99 = load ptr, ptr %98, align 8 - %.not.i.i.i.i.i.i.i.i.i9 = icmp eq ptr %99, null - br i1 %.not.i.i.i.i.i.i.i.i.i9, label %_ZN4llvm3pdb15GSIHashIteratorD2Ev.exit15, label %100 - -100: ; preds = %_ZN4llvm3pdb15GSIHashIteratorD2Ev.exit - %101 = getelementptr inbounds nuw i8, ptr %99, i64 8 - %102 = load atomic i64, ptr %101 acquire, align 8 - %103 = icmp eq i64 %102, 4294967297 - %104 = trunc i64 %102 to i32 - br i1 %103, label %105, label %110 - -105: ; preds = %100 - store i32 0, ptr %101, align 8 - %106 = getelementptr inbounds nuw i8, ptr %99, i64 12 - store i32 0, ptr %106, align 4 - %107 = load ptr, ptr %99, align 8 - %108 = getelementptr inbounds i8, ptr %107, i64 16 - %109 = load ptr, ptr %108, align 8 - call void %109(ptr noundef nonnull align 8 dereferenceable(16) %99) #13 +_ZN4llvm3pdb15GSIHashIteratorD2Ev.exit: ; preds = %53, %72, %85, %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv.exit.sink.split.i.i.i.i.i.i.i.i.i.i + %90 = getelementptr inbounds nuw i8, ptr %10, i64 8 + %91 = load ptr, ptr %90, align 8 + %.not.i.i.i.i.i.i.i.i.i9 = icmp eq ptr %91, null + br i1 %.not.i.i.i.i.i.i.i.i.i9, label %_ZN4llvm3pdb15GSIHashIteratorD2Ev.exit15, label %92 + +92: ; preds = %_ZN4llvm3pdb15GSIHashIteratorD2Ev.exit + %93 = getelementptr inbounds nuw i8, ptr %91, i64 8 + %94 = load atomic i64, ptr %93 acquire, align 8 + %95 = icmp eq i64 %94, 4294967297 + %96 = trunc i64 %94 to i32 + br i1 %95, label %97, label %102 + +97: ; preds = %92 + store i32 0, ptr %93, align 8 + %98 = getelementptr inbounds nuw i8, ptr %91, i64 12 + store i32 0, ptr %98, align 4 + %99 = load ptr, ptr %91, align 8 + %100 = getelementptr inbounds i8, ptr %99, i64 16 + %101 = load ptr, ptr %100, align 8 + call void %101(ptr noundef nonnull align 8 dereferenceable(16) %91) #13 br label %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv.exit.sink.split.i.i.i.i.i.i.i.i.i.i14 -110: ; preds = %100 - %111 = load i8, ptr @__libc_single_threaded, align 1 - %.not.i.i.i.i.i.i.i.i.i.i10 = icmp eq i8 %111, 0 - br i1 %.not.i.i.i.i.i.i.i.i.i.i10, label %114, label %112 - -112: ; preds = %110 - %113 = add nsw i32 %104, -1 - store i32 %113, ptr %101, align 4 - br label %116 - -114: ; preds = %110 - %115 = atomicrmw volatile add ptr %101, i32 -1 acq_rel, align 4 - br label %116 - -116: ; preds = %114, %112 - %.0.i.i.i.i.i.i.i.i.i.i11 = phi i32 [ %104, %112 ], [ %115, %114 ] - %117 = icmp eq i32 %.0.i.i.i.i.i.i.i.i.i.i11, 1 - br i1 %117, label %118, label %_ZN4llvm3pdb15GSIHashIteratorD2Ev.exit15 - -118: ; preds = %116 - %119 = load ptr, ptr %99, align 8 - %120 = getelementptr inbounds i8, ptr %119, i64 16 - %121 = load ptr, ptr %120, align 8 - call void %121(ptr noundef nonnull align 8 dereferenceable(16) %99) #13 - %122 = getelementptr inbounds nuw i8, ptr %99, i64 12 - %123 = load i8, ptr @__libc_single_threaded, align 1 - %.not.i.i.i.i.i.i.i.i.i.i.i.i12 = icmp eq i8 %123, 0 - br i1 %.not.i.i.i.i.i.i.i.i.i.i.i.i12, label %127, label %124 - -124: ; preds = %118 - %125 = load i32, ptr %122, align 4 - %126 = add nsw i32 %125, -1 - store i32 %126, ptr %122, align 4 - br label %129 - -127: ; preds = %118 - %128 = atomicrmw volatile add ptr %122, i32 -1 acq_rel, align 4 - br label %129 - -129: ; preds = %127, %124 - %.0.i.i.i.i.i.i.i.i.i.i.i.i13 = phi i32 [ %125, %124 ], [ %128, %127 ] - %130 = icmp eq i32 %.0.i.i.i.i.i.i.i.i.i.i.i.i13, 1 - br i1 %130, label %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv.exit.sink.split.i.i.i.i.i.i.i.i.i.i14, label %_ZN4llvm3pdb15GSIHashIteratorD2Ev.exit15 - -_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv.exit.sink.split.i.i.i.i.i.i.i.i.i.i14: ; preds = %129, %105 - %131 = load ptr, ptr %99, align 8 - %132 = getelementptr inbounds i8, ptr %131, i64 24 - %133 = load ptr, ptr %132, align 8 - call void %133(ptr noundef nonnull align 8 dereferenceable(16) %99) #13 +102: ; preds = %92 + %103 = load i8, ptr @__libc_single_threaded, align 1 + %.not.i.i.i.i.i.i.i.i.i.i10 = icmp eq i8 %103, 0 + br i1 %.not.i.i.i.i.i.i.i.i.i.i10, label %106, label %104 + +104: ; preds = %102 + %105 = add nsw i32 %96, -1 + store i32 %105, ptr %93, align 4 + br label %108 + +106: ; preds = %102 + %107 = atomicrmw volatile add ptr %93, i32 -1 acq_rel, align 4 + br label %108 + +108: ; preds = %106, %104 + %.0.i.i.i.i.i.i.i.i.i.i11 = phi i32 [ %96, %104 ], [ %107, %106 ] + %109 = icmp eq i32 %.0.i.i.i.i.i.i.i.i.i.i11, 1 + br i1 %109, label %110, label %_ZN4llvm3pdb15GSIHashIteratorD2Ev.exit15 + +110: ; preds = %108 + %111 = load ptr, ptr %91, align 8 + %112 = getelementptr inbounds i8, ptr %111, i64 16 + %113 = load ptr, ptr %112, align 8 + call void %113(ptr noundef nonnull align 8 dereferenceable(16) %91) #13 + %114 = getelementptr inbounds nuw i8, ptr %91, i64 12 + %115 = load i8, ptr @__libc_single_threaded, align 1 + %.not.i.i.i.i.i.i.i.i.i.i.i.i12 = icmp eq i8 %115, 0 + br i1 %.not.i.i.i.i.i.i.i.i.i.i.i.i12, label %119, label %116 + +116: ; preds = %110 + %117 = load i32, ptr %114, align 4 + %118 = add nsw i32 %117, -1 + store i32 %118, ptr %114, align 4 + br label %121 + +119: ; preds = %110 + %120 = atomicrmw volatile add ptr %114, i32 -1 acq_rel, align 4 + br label %121 + +121: ; preds = %119, %116 + %.0.i.i.i.i.i.i.i.i.i.i.i.i13 = phi i32 [ %117, %116 ], [ %120, %119 ] + %122 = icmp eq i32 %.0.i.i.i.i.i.i.i.i.i.i.i.i13, 1 + br i1 %122, label %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv.exit.sink.split.i.i.i.i.i.i.i.i.i.i14, label %_ZN4llvm3pdb15GSIHashIteratorD2Ev.exit15 + +_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv.exit.sink.split.i.i.i.i.i.i.i.i.i.i14: ; preds = %121, %97 + %123 = load ptr, ptr %91, align 8 + %124 = getelementptr inbounds i8, ptr %123, i64 24 + %125 = load ptr, ptr %124, align 8 + call void %125(ptr noundef nonnull align 8 dereferenceable(16) %91) #13 br label %_ZN4llvm3pdb15GSIHashIteratorD2Ev.exit15 -_ZN4llvm3pdb15GSIHashIteratorD2Ev.exit15: ; preds = %_ZN4llvm3pdb15GSIHashIteratorD2Ev.exit, %116, %129, %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv.exit.sink.split.i.i.i.i.i.i.i.i.i.i14 +_ZN4llvm3pdb15GSIHashIteratorD2Ev.exit15: ; preds = %_ZN4llvm3pdb15GSIHashIteratorD2Ev.exit, %108, %121, %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv.exit.sink.split.i.i.i.i.i.i.i.i.i.i14 ret void -_ZNK4llvm20iterator_facade_baseINS_3pdb15GSIHashIteratorESt26random_access_iterator_tagKjlPS4_RS4_EneERKS2_.exit.thread: ; preds = %49, %46, %42, %58, %_ZNK4llvm20iterator_facade_baseINS_3pdb15GSIHashIteratorESt26random_access_iterator_tagKjlPS4_RS4_EneERKS2_.exit +_ZNK4llvm20iterator_facade_baseINS_3pdb15GSIHashIteratorESt26random_access_iterator_tagKjlPS4_RS4_EneERKS2_.exit.thread: ; preds = %41, %38, %34, %50, %_ZNK4llvm20iterator_facade_baseINS_3pdb15GSIHashIteratorESt26random_access_iterator_tagKjlPS4_RS4_EneERKS2_.exit call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) - %134 = shl i32 %43, 3 + %126 = shl i32 %35, 3 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %6, i8 0, i64 16, i1 false) - %135 = zext i32 %134 to i64 - call void @_ZNK4llvm15BinaryStreamRef9readBytesEmmRNS_8ArrayRefIhEE(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Error") align 8 %7, ptr noundef nonnull align 8 dereferenceable(56) %10, i64 noundef %135, i64 noundef 8, ptr noundef nonnull align 8 dereferenceable(16) %6) #13 - %136 = load ptr, ptr %7, align 8 - %.not.i.i.i.i = icmp eq ptr %136, null - br i1 %.not.i.i.i.i, label %_ZNK4llvm3pdb15GSIHashIteratordeEv.exit, label %137 + %127 = zext i32 %126 to i64 + call void @_ZNK4llvm15BinaryStreamRef9readBytesEmmRNS_8ArrayRefIhEE(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Error") align 8 %7, ptr noundef nonnull align 8 dereferenceable(56) %10, i64 noundef %127, i64 noundef 8, ptr noundef nonnull align 8 dereferenceable(16) %6) #13 + %128 = load ptr, ptr %7, align 8 + %.not.i.i.i.i = icmp eq ptr %128, null + br i1 %.not.i.i.i.i, label %_ZNK4llvm3pdb15GSIHashIteratordeEv.exit, label %129 -137: ; preds = %_ZNK4llvm20iterator_facade_baseINS_3pdb15GSIHashIteratorESt26random_access_iterator_tagKjlPS4_RS4_EneERKS2_.exit.thread +129: ; preds = %_ZNK4llvm20iterator_facade_baseINS_3pdb15GSIHashIteratorESt26random_access_iterator_tagKjlPS4_RS4_EneERKS2_.exit.thread store ptr null, ptr %7, align 8 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) - store ptr %136, ptr %4, align 8 + store ptr %128, ptr %4, align 8 call void @_ZN4llvm12handleErrorsIJZNS_12consumeErrorENS_5ErrorEEUlRKNS_13ErrorInfoBaseEE_EEES1_S1_DpOT_(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Error") align 8 %3, ptr noundef nonnull %4, ptr noundef nonnull align 1 dereferenceable(1) %5) - %138 = load ptr, ptr %3, align 8 - %.not.i.i.i.i.i.i.i = icmp eq ptr %138, null + %130 = load ptr, ptr %3, align 8 + %.not.i.i.i.i.i.i.i = icmp eq ptr %130, null call void @llvm.assume(i1 %.not.i.i.i.i.i.i.i) - %139 = load ptr, ptr %4, align 8 - %140 = icmp eq ptr %139, null - br i1 %140, label %145, label %141 - -141: ; preds = %137 - %142 = load ptr, ptr %139, align 8 - %143 = getelementptr inbounds i8, ptr %142, i64 8 - %144 = load ptr, ptr %143, align 8 - call void %144(ptr noundef nonnull align 8 dereferenceable(8) %139) #13 - br label %145 - -145: ; preds = %141, %137 + %131 = load ptr, ptr %4, align 8 + %132 = icmp eq ptr %131, null + br i1 %132, label %137, label %133 + +133: ; preds = %129 + %134 = load ptr, ptr %131, align 8 + %135 = getelementptr inbounds i8, ptr %134, i64 8 + %136 = load ptr, ptr %135, align 8 + call void %136(ptr noundef nonnull align 8 dereferenceable(8) %131) #13 + br label %137 + +137: ; preds = %133, %129 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) %.pr.i.i.i.i = load ptr, ptr %7, align 8 - %146 = icmp eq ptr %.pr.i.i.i.i, null - br i1 %146, label %_ZNK4llvm3pdb15GSIHashIteratordeEv.exit, label %147 - -147: ; preds = %145 - %148 = load ptr, ptr %.pr.i.i.i.i, align 8 - %149 = getelementptr inbounds i8, ptr %148, i64 8 - %150 = load ptr, ptr %149, align 8 - call void %150(ptr noundef nonnull align 8 dereferenceable(8) %.pr.i.i.i.i) #13 + %138 = icmp eq ptr %.pr.i.i.i.i, null + br i1 %138, label %_ZNK4llvm3pdb15GSIHashIteratordeEv.exit, label %139 + +139: ; preds = %137 + %140 = load ptr, ptr %.pr.i.i.i.i, align 8 + %141 = getelementptr inbounds i8, ptr %140, i64 8 + %142 = load ptr, ptr %141, align 8 + call void %142(ptr noundef nonnull align 8 dereferenceable(8) %.pr.i.i.i.i) #13 br label %_ZNK4llvm3pdb15GSIHashIteratordeEv.exit -_ZNK4llvm3pdb15GSIHashIteratordeEv.exit: ; preds = %_ZNK4llvm20iterator_facade_baseINS_3pdb15GSIHashIteratorESt26random_access_iterator_tagKjlPS4_RS4_EneERKS2_.exit.thread, %145, %147 - %151 = load ptr, ptr %6, align 8 +_ZNK4llvm3pdb15GSIHashIteratordeEv.exit: ; preds = %_ZNK4llvm20iterator_facade_baseINS_3pdb15GSIHashIteratorESt26random_access_iterator_tagKjlPS4_RS4_EneERKS2_.exit.thread, %137, %139 + %143 = load ptr, ptr %6, align 8 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) - call void @llvm.assume(i1 true) [ "align"(ptr %151, i64 1) ] - %.0.copyload.i.i.i.i = load i32, ptr %151, align 1 - %152 = add i32 %.0.copyload.i.i.i.i, -1 - %153 = call { ptr, i64 } @_ZNK4llvm3pdb12SymbolStream10readRecordEj(ptr noundef nonnull align 8 dereferenceable(64) %28, i32 noundef %152) #13 - %154 = extractvalue { ptr, i64 } %153, 1 - %155 = icmp ult i64 %154, 4 - br i1 %155, label %_ZNK4llvm8codeview8CVRecordINS0_10SymbolKindEE4kindEv.exit, label %156 - -156: ; preds = %_ZNK4llvm3pdb15GSIHashIteratordeEv.exit - %157 = extractvalue { ptr, i64 } %153, 0 - %158 = getelementptr inbounds nuw i8, ptr %157, i64 2 - call void @llvm.assume(i1 true) [ "align"(ptr %158, i64 1) ] - %.0.copyload.i.i.i.i16 = load i16, ptr %158, align 1 + call void @llvm.assume(i1 true) [ "align"(ptr %143, i64 1) ] + %.0.copyload.i.i.i.i = load i32, ptr %143, align 1 + %144 = add i32 %.0.copyload.i.i.i.i, -1 + %145 = call { ptr, i64 } @_ZNK4llvm3pdb12SymbolStream10readRecordEj(ptr noundef nonnull align 8 dereferenceable(64) %20, i32 noundef %144) #13 + %146 = extractvalue { ptr, i64 } %145, 1 + %147 = icmp ult i64 %146, 4 + br i1 %147, label %_ZNK4llvm8codeview8CVRecordINS0_10SymbolKindEE4kindEv.exit, label %148 + +148: ; preds = %_ZNK4llvm3pdb15GSIHashIteratordeEv.exit + %149 = extractvalue { ptr, i64 } %145, 0 + %150 = getelementptr inbounds nuw i8, ptr %149, i64 2 + call void @llvm.assume(i1 true) [ "align"(ptr %150, i64 1) ] + %.0.copyload.i.i.i.i16 = load i16, ptr %150, align 1 br label %_ZNK4llvm8codeview8CVRecordINS0_10SymbolKindEE4kindEv.exit -_ZNK4llvm8codeview8CVRecordINS0_10SymbolKindEE4kindEv.exit: ; preds = %_ZNK4llvm3pdb15GSIHashIteratordeEv.exit, %156 - %.0.i = phi i16 [ %.0.copyload.i.i.i.i16, %156 ], [ 0, %_ZNK4llvm3pdb15GSIHashIteratordeEv.exit ] - %159 = load ptr, ptr %2, align 8 - %160 = load ptr, ptr %39, align 8 - %161 = ptrtoint ptr %160 to i64 - %162 = ptrtoint ptr %159 to i64 - %163 = sub i64 %161, %162 - %164 = ashr i64 %163, 3 - %165 = icmp sgt i64 %164, 0 - br i1 %165, label %.lr.ph.i.i.i.i, label %._crit_edge.i.i.i.i +_ZNK4llvm8codeview8CVRecordINS0_10SymbolKindEE4kindEv.exit: ; preds = %_ZNK4llvm3pdb15GSIHashIteratordeEv.exit, %148 + %.0.i = phi i16 [ %.0.copyload.i.i.i.i16, %148 ], [ 0, %_ZNK4llvm3pdb15GSIHashIteratordeEv.exit ] + %151 = load ptr, ptr %2, align 8 + %152 = load ptr, ptr %31, align 8 + %153 = ptrtoint ptr %152 to i64 + %154 = ptrtoint ptr %151 to i64 + %155 = sub i64 %153, %154 + %156 = ashr i64 %155, 3 + %157 = icmp sgt i64 %156, 0 + br i1 %157, label %.lr.ph.i.i.i.i, label %._crit_edge.i.i.i.i .lr.ph.i.i.i.i: ; preds = %_ZNK4llvm8codeview8CVRecordINS0_10SymbolKindEE4kindEv.exit - %166 = and i64 %163, -8 - %scevgep.i.i.i.i = getelementptr i8, ptr %159, i64 %166 - br label %167 - -167: ; preds = %182, %.lr.ph.i.i.i.i - %.052.i.i.i.i = phi i64 [ %164, %.lr.ph.i.i.i.i ], [ %184, %182 ] - %.sroa.032.051.i.i.i.i = phi ptr [ %159, %.lr.ph.i.i.i.i ], [ %183, %182 ] - %168 = load i16, ptr %.sroa.032.051.i.i.i.i, align 2 + %158 = and i64 %155, -8 + %scevgep.i.i.i.i = getelementptr i8, ptr %151, i64 %158 + br label %159 + +159: ; preds = %174, %.lr.ph.i.i.i.i + %.052.i.i.i.i = phi i64 [ %156, %.lr.ph.i.i.i.i ], [ %176, %174 ] + %.sroa.032.051.i.i.i.i = phi ptr [ %151, %.lr.ph.i.i.i.i ], [ %175, %174 ] + %160 = load i16, ptr %.sroa.032.051.i.i.i.i, align 2 + %161 = icmp eq i16 %160, %.0.i + br i1 %161, label %_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit, label %162 + +162: ; preds = %159 + %163 = getelementptr inbounds i8, ptr %.sroa.032.051.i.i.i.i, i64 2 + %164 = load i16, ptr %163, align 2 + %165 = icmp eq i16 %164, %.0.i + br i1 %165, label %_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit.loopexit.split.loop.exit, label %166 + +166: ; preds = %162 + %167 = getelementptr inbounds i8, ptr %.sroa.032.051.i.i.i.i, i64 4 + %168 = load i16, ptr %167, align 2 %169 = icmp eq i16 %168, %.0.i - br i1 %169, label %_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit, label %170 + br i1 %169, label %_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit.loopexit.split.loop.exit36, label %170 -170: ; preds = %167 - %171 = getelementptr inbounds i8, ptr %.sroa.032.051.i.i.i.i, i64 2 +170: ; preds = %166 + %171 = getelementptr inbounds i8, ptr %.sroa.032.051.i.i.i.i, i64 6 %172 = load i16, ptr %171, align 2 %173 = icmp eq i16 %172, %.0.i - br i1 %173, label %_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit.loopexit.split.loop.exit, label %174 + br i1 %173, label %_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit.loopexit.split.loop.exit38, label %174 174: ; preds = %170 - %175 = getelementptr inbounds i8, ptr %.sroa.032.051.i.i.i.i, i64 4 - %176 = load i16, ptr %175, align 2 - %177 = icmp eq i16 %176, %.0.i - br i1 %177, label %_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit.loopexit.split.loop.exit36, label %178 - -178: ; preds = %174 - %179 = getelementptr inbounds i8, ptr %.sroa.032.051.i.i.i.i, i64 6 - %180 = load i16, ptr %179, align 2 - %181 = icmp eq i16 %180, %.0.i - br i1 %181, label %_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit.loopexit.split.loop.exit38, label %182 + %175 = getelementptr inbounds i8, ptr %.sroa.032.051.i.i.i.i, i64 8 + %176 = add nsw i64 %.052.i.i.i.i, -1 + %177 = icmp sgt i64 %.052.i.i.i.i, 1 + br i1 %177, label %159, label %._crit_edge.loopexit.i.i.i.i, !llvm.loop !4 -182: ; preds = %178 - %183 = getelementptr inbounds i8, ptr %.sroa.032.051.i.i.i.i, i64 8 - %184 = add nsw i64 %.052.i.i.i.i, -1 - %185 = icmp sgt i64 %.052.i.i.i.i, 1 - br i1 %185, label %167, label %._crit_edge.loopexit.i.i.i.i, !llvm.loop !4 - -._crit_edge.loopexit.i.i.i.i: ; preds = %182 +._crit_edge.loopexit.i.i.i.i: ; preds = %174 %.pre59.i.i.i.i = ptrtoint ptr %scevgep.i.i.i.i to i64 - %.pre60.i.i.i.i = sub i64 %161, %.pre59.i.i.i.i + %.pre60.i.i.i.i = sub i64 %153, %.pre59.i.i.i.i br label %._crit_edge.i.i.i.i ._crit_edge.i.i.i.i: ; preds = %._crit_edge.loopexit.i.i.i.i, %_ZNK4llvm8codeview8CVRecordINS0_10SymbolKindEE4kindEv.exit - %.pre-phi61.i.i.i.i = phi i64 [ %.pre60.i.i.i.i, %._crit_edge.loopexit.i.i.i.i ], [ %163, %_ZNK4llvm8codeview8CVRecordINS0_10SymbolKindEE4kindEv.exit ] - %.sroa.032.0.lcssa.i.i.i.i = phi ptr [ %scevgep.i.i.i.i, %._crit_edge.loopexit.i.i.i.i ], [ %159, %_ZNK4llvm8codeview8CVRecordINS0_10SymbolKindEE4kindEv.exit ] - %186 = ashr exact i64 %.pre-phi61.i.i.i.i, 1 - switch i64 %186, label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit [ - i64 3, label %187 + %.pre-phi61.i.i.i.i = phi i64 [ %.pre60.i.i.i.i, %._crit_edge.loopexit.i.i.i.i ], [ %155, %_ZNK4llvm8codeview8CVRecordINS0_10SymbolKindEE4kindEv.exit ] + %.sroa.032.0.lcssa.i.i.i.i = phi ptr [ %scevgep.i.i.i.i, %._crit_edge.loopexit.i.i.i.i ], [ %151, %_ZNK4llvm8codeview8CVRecordINS0_10SymbolKindEE4kindEv.exit ] + %178 = ashr exact i64 %.pre-phi61.i.i.i.i, 1 + switch i64 %178, label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit [ + i64 3, label %179 i64 2, label %._crit_edge._crit_edge.i.i.i.i i64 1, label %._crit_edge._crit_edge57.i.i.i.i ] -187: ; preds = %._crit_edge.i.i.i.i - %188 = load i16, ptr %.sroa.032.0.lcssa.i.i.i.i, align 2 - %189 = icmp eq i16 %188, %.0.i - br i1 %189, label %_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit, label %190 +179: ; preds = %._crit_edge.i.i.i.i + %180 = load i16, ptr %.sroa.032.0.lcssa.i.i.i.i, align 2 + %181 = icmp eq i16 %180, %.0.i + br i1 %181, label %_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit, label %182 -190: ; preds = %187 - %191 = getelementptr inbounds i8, ptr %.sroa.032.0.lcssa.i.i.i.i, i64 2 +182: ; preds = %179 + %183 = getelementptr inbounds i8, ptr %.sroa.032.0.lcssa.i.i.i.i, i64 2 br label %._crit_edge._crit_edge.i.i.i.i -._crit_edge._crit_edge.i.i.i.i: ; preds = %._crit_edge.i.i.i.i, %190 - %.sroa.032.1.i.i.i.i = phi ptr [ %191, %190 ], [ %.sroa.032.0.lcssa.i.i.i.i, %._crit_edge.i.i.i.i ] - %192 = load i16, ptr %.sroa.032.1.i.i.i.i, align 2 - %193 = icmp eq i16 %192, %.0.i - br i1 %193, label %_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit, label %194 +._crit_edge._crit_edge.i.i.i.i: ; preds = %._crit_edge.i.i.i.i, %182 + %.sroa.032.1.i.i.i.i = phi ptr [ %183, %182 ], [ %.sroa.032.0.lcssa.i.i.i.i, %._crit_edge.i.i.i.i ] + %184 = load i16, ptr %.sroa.032.1.i.i.i.i, align 2 + %185 = icmp eq i16 %184, %.0.i + br i1 %185, label %_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit, label %186 -194: ; preds = %._crit_edge._crit_edge.i.i.i.i - %195 = getelementptr inbounds i8, ptr %.sroa.032.1.i.i.i.i, i64 2 +186: ; preds = %._crit_edge._crit_edge.i.i.i.i + %187 = getelementptr inbounds i8, ptr %.sroa.032.1.i.i.i.i, i64 2 br label %._crit_edge._crit_edge57.i.i.i.i -._crit_edge._crit_edge57.i.i.i.i: ; preds = %._crit_edge.i.i.i.i, %194 - %.sroa.032.2.i.i.i.i = phi ptr [ %195, %194 ], [ %.sroa.032.0.lcssa.i.i.i.i, %._crit_edge.i.i.i.i ] - %196 = load i16, ptr %.sroa.032.2.i.i.i.i, align 2 - %197 = icmp eq i16 %196, %.0.i - %spec.select.i.i.i.i = select i1 %197, ptr %.sroa.032.2.i.i.i.i, ptr %160 +._crit_edge._crit_edge57.i.i.i.i: ; preds = %._crit_edge.i.i.i.i, %186 + %.sroa.032.2.i.i.i.i = phi ptr [ %187, %186 ], [ %.sroa.032.0.lcssa.i.i.i.i, %._crit_edge.i.i.i.i ] + %188 = load i16, ptr %.sroa.032.2.i.i.i.i, align 2 + %189 = icmp eq i16 %188, %.0.i + %spec.select.i.i.i.i = select i1 %189, ptr %.sroa.032.2.i.i.i.i, ptr %152 br label %_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit -_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit.loopexit.split.loop.exit: ; preds = %170 - %198 = getelementptr inbounds i8, ptr %.sroa.032.051.i.i.i.i, i64 2 +_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit.loopexit.split.loop.exit: ; preds = %162 + %190 = getelementptr inbounds i8, ptr %.sroa.032.051.i.i.i.i, i64 2 br label %_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit -_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit.loopexit.split.loop.exit36: ; preds = %174 - %199 = getelementptr inbounds i8, ptr %.sroa.032.051.i.i.i.i, i64 4 +_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit.loopexit.split.loop.exit36: ; preds = %166 + %191 = getelementptr inbounds i8, ptr %.sroa.032.051.i.i.i.i, i64 4 br label %_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit -_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit.loopexit.split.loop.exit38: ; preds = %178 - %200 = getelementptr inbounds i8, ptr %.sroa.032.051.i.i.i.i, i64 6 +_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit.loopexit.split.loop.exit38: ; preds = %170 + %192 = getelementptr inbounds i8, ptr %.sroa.032.051.i.i.i.i, i64 6 br label %_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit -_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit: ; preds = %167, %_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit.loopexit.split.loop.exit, %_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit.loopexit.split.loop.exit36, %_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit.loopexit.split.loop.exit38, %187, %._crit_edge._crit_edge.i.i.i.i, %._crit_edge._crit_edge57.i.i.i.i - %.sroa.08.0.in.sroa.speculated.i.i.i.i = phi ptr [ %.sroa.032.0.lcssa.i.i.i.i, %187 ], [ %.sroa.032.1.i.i.i.i, %._crit_edge._crit_edge.i.i.i.i ], [ %spec.select.i.i.i.i, %._crit_edge._crit_edge57.i.i.i.i ], [ %198, %_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit.loopexit.split.loop.exit ], [ %199, %_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit.loopexit.split.loop.exit36 ], [ %200, %_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit.loopexit.split.loop.exit38 ], [ %.sroa.032.051.i.i.i.i, %167 ] - %.not23 = icmp eq ptr %.sroa.08.0.in.sroa.speculated.i.i.i.i, %160 - br i1 %.not23, label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit, label %201 - -201: ; preds = %_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit - %202 = load ptr, ptr %40, align 8 - %203 = load ptr, ptr %41, align 8 - %.not.i = icmp eq ptr %202, %203 - br i1 %.not.i, label %207, label %204 - -204: ; preds = %201 - store i32 %152, ptr %202, align 4 - %205 = load ptr, ptr %40, align 8 - %206 = getelementptr inbounds i8, ptr %205, i64 4 - store ptr %206, ptr %40, align 8 +_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit: ; preds = %159, %_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit.loopexit.split.loop.exit, %_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit.loopexit.split.loop.exit36, %_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit.loopexit.split.loop.exit38, %179, %._crit_edge._crit_edge.i.i.i.i, %._crit_edge._crit_edge57.i.i.i.i + %.sroa.08.0.in.sroa.speculated.i.i.i.i = phi ptr [ %.sroa.032.0.lcssa.i.i.i.i, %179 ], [ %.sroa.032.1.i.i.i.i, %._crit_edge._crit_edge.i.i.i.i ], [ %spec.select.i.i.i.i, %._crit_edge._crit_edge57.i.i.i.i ], [ %190, %_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit.loopexit.split.loop.exit ], [ %191, %_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit.loopexit.split.loop.exit36 ], [ %192, %_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit.loopexit.split.loop.exit38 ], [ %.sroa.032.051.i.i.i.i, %159 ] + %.not23 = icmp eq ptr %.sroa.08.0.in.sroa.speculated.i.i.i.i, %152 + br i1 %.not23, label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit, label %193 + +193: ; preds = %_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit + %194 = load ptr, ptr %32, align 8 + %195 = load ptr, ptr %33, align 8 + %.not.i = icmp eq ptr %194, %195 + br i1 %.not.i, label %199, label %196 + +196: ; preds = %193 + store i32 %144, ptr %194, align 4 + %197 = load ptr, ptr %32, align 8 + %198 = getelementptr inbounds i8, ptr %197, i64 4 + store ptr %198, ptr %32, align 8 br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit -207: ; preds = %201 - %208 = load ptr, ptr %12, align 8 - %209 = ptrtoint ptr %202 to i64 - %210 = ptrtoint ptr %208 to i64 - %211 = sub i64 %209, %210 - %212 = icmp eq i64 %211, 9223372036854775804 - br i1 %212, label %213, label %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i +199: ; preds = %193 + %200 = load ptr, ptr %12, align 8 + %201 = ptrtoint ptr %194 to i64 + %202 = ptrtoint ptr %200 to i64 + %203 = sub i64 %201, %202 + %204 = icmp eq i64 %203, 9223372036854775804 + br i1 %204, label %205, label %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i -213: ; preds = %207 +205: ; preds = %199 call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.1) #14 unreachable -_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i: ; preds = %207 - %214 = ashr exact i64 %211, 2 - %.sroa.speculated.i.i.i = call i64 @llvm.umax.i64(i64 %214, i64 1) - %215 = add nsw i64 %.sroa.speculated.i.i.i, %214 - %216 = icmp ult i64 %215, %214 - %217 = call i64 @llvm.umin.i64(i64 %215, i64 2305843009213693951) - %218 = select i1 %216, i64 2305843009213693951, i64 %217 - %.not.i.i.i = icmp eq i64 %218, 0 - br i1 %.not.i.i.i, label %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i, label %219 - -219: ; preds = %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i - %220 = shl nuw nsw i64 %218, 2 - %221 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %220) #15 +_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i: ; preds = %199 + %206 = ashr exact i64 %203, 2 + %.sroa.speculated.i.i.i = call i64 @llvm.umax.i64(i64 %206, i64 1) + %207 = add nsw i64 %.sroa.speculated.i.i.i, %206 + %208 = icmp ult i64 %207, %206 + %209 = call i64 @llvm.umin.i64(i64 %207, i64 2305843009213693951) + %210 = select i1 %208, i64 2305843009213693951, i64 %209 + %.not.i.i.i = icmp eq i64 %210, 0 + br i1 %.not.i.i.i, label %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i, label %211 + +211: ; preds = %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i + %212 = shl nuw nsw i64 %210, 2 + %213 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %212) #15 br label %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i -_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i: ; preds = %219, %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i - %222 = phi ptr [ %221, %219 ], [ null, %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i ] - %223 = getelementptr inbounds i32, ptr %222, i64 %214 - store i32 %152, ptr %223, align 4 - %224 = icmp sgt i64 %211, 0 - br i1 %224, label %225, label %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit16.i.i +_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i: ; preds = %211, %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i + %214 = phi ptr [ %213, %211 ], [ null, %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i ] + %215 = getelementptr inbounds i32, ptr %214, i64 %206 + store i32 %144, ptr %215, align 4 + %216 = icmp sgt i64 %203, 0 + br i1 %216, label %217, label %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit16.i.i -225: ; preds = %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %222, ptr align 4 %208, i64 %211, i1 false) +217: ; preds = %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %214, ptr align 4 %200, i64 %203, i1 false) br label %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit16.i.i -_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit16.i.i: ; preds = %225, %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i - %226 = getelementptr inbounds i8, ptr %222, i64 %211 - %227 = getelementptr inbounds i8, ptr %226, i64 4 - %.not.i17.i.i = icmp eq ptr %208, null - br i1 %.not.i17.i.i, label %_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i, label %228 +_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit16.i.i: ; preds = %217, %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i + %218 = getelementptr inbounds i8, ptr %214, i64 %203 + %219 = getelementptr inbounds i8, ptr %218, i64 4 + %.not.i17.i.i = icmp eq ptr %200, null + br i1 %.not.i17.i.i, label %_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i, label %220 -228: ; preds = %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit16.i.i - call void @_ZdlPvm(ptr noundef nonnull %208, i64 noundef %211) #16 +220: ; preds = %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit16.i.i + call void @_ZdlPvm(ptr noundef nonnull %200, i64 noundef %203) #16 br label %_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i -_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i: ; preds = %228, %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit16.i.i - store ptr %222, ptr %12, align 8 - store ptr %227, ptr %40, align 8 - %229 = getelementptr inbounds i32, ptr %222, i64 %218 - store ptr %229, ptr %41, align 8 +_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i: ; preds = %220, %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit16.i.i + store ptr %214, ptr %12, align 8 + store ptr %219, ptr %32, align 8 + %221 = getelementptr inbounds i32, ptr %214, i64 %210 + store ptr %221, ptr %33, align 8 br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit -_ZNSt6vectorIjSaIjEE9push_backERKj.exit: ; preds = %._crit_edge.i.i.i.i, %_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i, %204, %_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit - %230 = load i32, ptr %29, align 8 - %231 = add i32 %230, 1 - store i32 %231, ptr %29, align 8 - br label %42 +_ZNSt6vectorIjSaIjEE9push_backERKj.exit: ; preds = %._crit_edge.i.i.i.i, %_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i, %196, %_ZN4llvm12is_containedIRSt6vectorINS_8codeview10SymbolKindESaIS3_EES3_EEbOT_RKT0_.exit + %222 = load i32, ptr %21, align 8 + %223 = add i32 %222, 1 + store i32 %223, ptr %21, align 8 + br label %34 } declare void @_ZN4llvm3pdb7PDBFile19getPDBGlobalsStreamEv(ptr dead_on_unwind writable sret(%"class.llvm::Expected") align 8, ptr noundef nonnull align 8 dereferenceable(280)) local_unnamed_addr #1 diff --git a/bench/llvm/optimized/NativeEnumInjectedSources.cpp.ll b/bench/llvm/optimized/NativeEnumInjectedSources.cpp.ll index 54347ba24fc..f6632ba16a0 100644 --- a/bench/llvm/optimized/NativeEnumInjectedSources.cpp.ll +++ b/bench/llvm/optimized/NativeEnumInjectedSources.cpp.ll @@ -540,24 +540,19 @@ _ZN4llvm8ExpectedINS_9StringRefEED2Ev.exit: call void @llvm.assume(i1 true) [ "align"(ptr %9, i64 1) ] %.0.copyload.i.i.i = load i32, ptr %9, align 1 call void @_ZNK4llvm3pdb14PDBStringTable14getStringForIDEj(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected") align 8 %3, ptr noundef nonnull align 8 dereferenceable(124) %6, i32 noundef %.0.copyload.i.i.i) #16 - %10 = getelementptr inbounds nuw i8, ptr %3, i64 16 - %11 = load i8, ptr %10, align 8 - %12 = trunc i8 %11 to i1 - %13 = xor i1 %12, true - call void @llvm.assume(i1 %13) + %.sroa.0.0.copyload.i = load ptr, ptr %3, align 8 %.sroa.2.0..sroa_idx.i = getelementptr inbounds i8, ptr %3, i64 8 %.sroa.2.0.copyload.i = load i64, ptr %.sroa.2.0..sroa_idx.i, align 8 - %.sroa.0.0.copyload.i = load ptr, ptr %3, align 8 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #16 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) - %14 = call { i64, ptr } @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17_S_to_string_viewESt17basic_string_viewIcS2_E(i64 %.sroa.2.0.copyload.i, ptr %.sroa.0.0.copyload.i) #16 - %15 = extractvalue { i64, ptr } %14, 0 - %16 = extractvalue { i64, ptr } %14, 1 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12__sv_wrapperC1ESt17basic_string_viewIcS2_E(ptr noundef nonnull align 8 dereferenceable(16) %2, i64 %15, ptr %16) #16 - %17 = load i64, ptr %2, align 8 - %18 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %19 = load ptr, ptr %18, align 8 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ENS4_12__sv_wrapperERKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 %17, ptr %19, ptr noundef nonnull align 1 dereferenceable(1) %4) #16 + %10 = call { i64, ptr } @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17_S_to_string_viewESt17basic_string_viewIcS2_E(i64 %.sroa.2.0.copyload.i, ptr %.sroa.0.0.copyload.i) #16 + %11 = extractvalue { i64, ptr } %10, 0 + %12 = extractvalue { i64, ptr } %10, 1 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12__sv_wrapperC1ESt17basic_string_viewIcS2_E(ptr noundef nonnull align 8 dereferenceable(16) %2, i64 %11, ptr %12) #16 + %13 = load i64, ptr %2, align 8 + %14 = getelementptr inbounds nuw i8, ptr %2, i64 8 + %15 = load ptr, ptr %14, align 8 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ENS4_12__sv_wrapperERKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 %13, ptr %15, ptr noundef nonnull align 1 dereferenceable(1) %4) #16 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #16 ret void @@ -577,24 +572,19 @@ _ZN4llvm8ExpectedINS_9StringRefEED2Ev.exit: call void @llvm.assume(i1 true) [ "align"(ptr %9, i64 1) ] %.0.copyload.i.i.i = load i32, ptr %9, align 1 call void @_ZNK4llvm3pdb14PDBStringTable14getStringForIDEj(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected") align 8 %3, ptr noundef nonnull align 8 dereferenceable(124) %6, i32 noundef %.0.copyload.i.i.i) #16 - %10 = getelementptr inbounds nuw i8, ptr %3, i64 16 - %11 = load i8, ptr %10, align 8 - %12 = trunc i8 %11 to i1 - %13 = xor i1 %12, true - call void @llvm.assume(i1 %13) + %.sroa.0.0.copyload.i = load ptr, ptr %3, align 8 %.sroa.2.0..sroa_idx.i = getelementptr inbounds i8, ptr %3, i64 8 %.sroa.2.0.copyload.i = load i64, ptr %.sroa.2.0..sroa_idx.i, align 8 - %.sroa.0.0.copyload.i = load ptr, ptr %3, align 8 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #16 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) - %14 = call { i64, ptr } @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17_S_to_string_viewESt17basic_string_viewIcS2_E(i64 %.sroa.2.0.copyload.i, ptr %.sroa.0.0.copyload.i) #16 - %15 = extractvalue { i64, ptr } %14, 0 - %16 = extractvalue { i64, ptr } %14, 1 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12__sv_wrapperC1ESt17basic_string_viewIcS2_E(ptr noundef nonnull align 8 dereferenceable(16) %2, i64 %15, ptr %16) #16 - %17 = load i64, ptr %2, align 8 - %18 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %19 = load ptr, ptr %18, align 8 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ENS4_12__sv_wrapperERKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 %17, ptr %19, ptr noundef nonnull align 1 dereferenceable(1) %4) #16 + %10 = call { i64, ptr } @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17_S_to_string_viewESt17basic_string_viewIcS2_E(i64 %.sroa.2.0.copyload.i, ptr %.sroa.0.0.copyload.i) #16 + %11 = extractvalue { i64, ptr } %10, 0 + %12 = extractvalue { i64, ptr } %10, 1 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12__sv_wrapperC1ESt17basic_string_viewIcS2_E(ptr noundef nonnull align 8 dereferenceable(16) %2, i64 %11, ptr %12) #16 + %13 = load i64, ptr %2, align 8 + %14 = getelementptr inbounds nuw i8, ptr %2, i64 8 + %15 = load ptr, ptr %14, align 8 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ENS4_12__sv_wrapperERKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 %13, ptr %15, ptr noundef nonnull align 1 dereferenceable(1) %4) #16 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #16 ret void @@ -614,24 +604,19 @@ _ZN4llvm8ExpectedINS_9StringRefEED2Ev.exit: call void @llvm.assume(i1 true) [ "align"(ptr %9, i64 1) ] %.0.copyload.i.i.i = load i32, ptr %9, align 1 call void @_ZNK4llvm3pdb14PDBStringTable14getStringForIDEj(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected") align 8 %3, ptr noundef nonnull align 8 dereferenceable(124) %6, i32 noundef %.0.copyload.i.i.i) #16 - %10 = getelementptr inbounds nuw i8, ptr %3, i64 16 - %11 = load i8, ptr %10, align 8 - %12 = trunc i8 %11 to i1 - %13 = xor i1 %12, true - call void @llvm.assume(i1 %13) + %.sroa.0.0.copyload.i = load ptr, ptr %3, align 8 %.sroa.2.0..sroa_idx.i = getelementptr inbounds i8, ptr %3, i64 8 %.sroa.2.0.copyload.i = load i64, ptr %.sroa.2.0..sroa_idx.i, align 8 - %.sroa.0.0.copyload.i = load ptr, ptr %3, align 8 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #16 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) - %14 = call { i64, ptr } @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17_S_to_string_viewESt17basic_string_viewIcS2_E(i64 %.sroa.2.0.copyload.i, ptr %.sroa.0.0.copyload.i) #16 - %15 = extractvalue { i64, ptr } %14, 0 - %16 = extractvalue { i64, ptr } %14, 1 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12__sv_wrapperC1ESt17basic_string_viewIcS2_E(ptr noundef nonnull align 8 dereferenceable(16) %2, i64 %15, ptr %16) #16 - %17 = load i64, ptr %2, align 8 - %18 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %19 = load ptr, ptr %18, align 8 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ENS4_12__sv_wrapperERKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 %17, ptr %19, ptr noundef nonnull align 1 dereferenceable(1) %4) #16 + %10 = call { i64, ptr } @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17_S_to_string_viewESt17basic_string_viewIcS2_E(i64 %.sroa.2.0.copyload.i, ptr %.sroa.0.0.copyload.i) #16 + %11 = extractvalue { i64, ptr } %10, 0 + %12 = extractvalue { i64, ptr } %10, 1 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12__sv_wrapperC1ESt17basic_string_viewIcS2_E(ptr noundef nonnull align 8 dereferenceable(16) %2, i64 %11, ptr %12) #16 + %13 = load i64, ptr %2, align 8 + %14 = getelementptr inbounds nuw i8, ptr %2, i64 8 + %15 = load ptr, ptr %14, align 8 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ENS4_12__sv_wrapperERKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 %13, ptr %15, ptr noundef nonnull align 1 dereferenceable(1) %4) #16 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #16 ret void @@ -674,126 +659,121 @@ _ZN4llvm8ExpectedINS_9StringRefEED2Ev.exit: call void @llvm.assume(i1 true) [ "align"(ptr %22, i64 1) ] %.0.copyload.i.i.i = load i32, ptr %22, align 1 call void @_ZNK4llvm3pdb14PDBStringTable14getStringForIDEj(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected") align 8 %11, ptr noundef nonnull align 8 dereferenceable(124) %19, i32 noundef %.0.copyload.i.i.i) #16 - %23 = getelementptr inbounds nuw i8, ptr %11, i64 16 - %24 = load i8, ptr %23, align 8 - %25 = trunc i8 %24 to i1 - %26 = xor i1 %25, true - call void @llvm.assume(i1 %26) + %.sroa.0.0.copyload.i = load ptr, ptr %11, align 8 %.sroa.2.0..sroa_idx.i = getelementptr inbounds i8, ptr %11, i64 8 %.sroa.2.0.copyload.i = load i64, ptr %.sroa.2.0..sroa_idx.i, align 8 - %.sroa.0.0.copyload.i = load ptr, ptr %11, align 8 - %27 = getelementptr inbounds nuw i8, ptr %13, i64 32 - store i8 3, ptr %27, align 8, !alias.scope !18 - %28 = getelementptr inbounds nuw i8, ptr %13, i64 33 - store i8 5, ptr %28, align 1, !alias.scope !18 + %23 = getelementptr inbounds nuw i8, ptr %13, i64 32 + store i8 3, ptr %23, align 8, !alias.scope !18 + %24 = getelementptr inbounds nuw i8, ptr %13, i64 33 + store i8 5, ptr %24, align 1, !alias.scope !18 store ptr @.str.2, ptr %13, align 8, !alias.scope !18 - %29 = getelementptr inbounds nuw i8, ptr %13, i64 16 - store ptr %.sroa.0.0.copyload.i, ptr %29, align 8, !alias.scope !18 - %30 = getelementptr inbounds nuw i8, ptr %13, i64 24 - store i64 %.sroa.2.0.copyload.i, ptr %30, align 8, !alias.scope !18 + %25 = getelementptr inbounds nuw i8, ptr %13, i64 16 + store ptr %.sroa.0.0.copyload.i, ptr %25, align 8, !alias.scope !18 + %26 = getelementptr inbounds nuw i8, ptr %13, i64 24 + store i64 %.sroa.2.0.copyload.i, ptr %26, align 8, !alias.scope !18 call void @_ZNK4llvm5Twine3strB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull align 8 dereferenceable(34) %13) #16 - %31 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %32 = load ptr, ptr %31, align 8 - %33 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %12) #16 - %34 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %12) #16 - call void @_ZN4llvm3pdb7PDBFile23safelyCreateNamedStreamENS_9StringRefE(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected.114") align 8 %14, ptr noundef nonnull align 8 dereferenceable(280) %32, ptr %33, i64 %34) #16 - %35 = getelementptr inbounds nuw i8, ptr %14, i64 8 - %36 = load i8, ptr %35, align 8 - %37 = trunc i8 %36 to i1 - br i1 %37, label %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i1, label %48 + %27 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %28 = load ptr, ptr %27, align 8 + %29 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %12) #16 + %30 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %12) #16 + call void @_ZN4llvm3pdb7PDBFile23safelyCreateNamedStreamENS_9StringRefE(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected.114") align 8 %14, ptr noundef nonnull align 8 dereferenceable(280) %28, ptr %29, i64 %30) #16 + %31 = getelementptr inbounds nuw i8, ptr %14, i64 8 + %32 = load i8, ptr %31, align 8 + %33 = trunc i8 %32 to i1 + br i1 %33, label %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i1, label %44 _ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i1: ; preds = %_ZN4llvm8ExpectedINS_9StringRefEED2Ev.exit - %38 = load i64, ptr %14, align 8, !noalias !21 - %39 = inttoptr i64 %38 to ptr + %34 = load i64, ptr %14, align 8, !noalias !21 + %35 = inttoptr i64 %34 to ptr store ptr null, ptr %14, align 8, !noalias !21 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) - store ptr %39, ptr %9, align 8 + store ptr %35, ptr %9, align 8 call void @_ZN4llvm12handleErrorsIJZNS_12consumeErrorENS_5ErrorEEUlRKNS_13ErrorInfoBaseEE_EEES1_S1_DpOT_(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Error") align 8 %8, ptr noundef nonnull %9, ptr noundef nonnull align 1 dereferenceable(1) %10) - %40 = load ptr, ptr %8, align 8 - %.not.i.i.i = icmp eq ptr %40, null + %36 = load ptr, ptr %8, align 8 + %.not.i.i.i = icmp eq ptr %36, null call void @llvm.assume(i1 %.not.i.i.i) - %41 = load ptr, ptr %9, align 8 - %42 = icmp eq ptr %41, null - br i1 %42, label %_ZN4llvm5ErrorD2Ev.exit, label %43 - -43: ; preds = %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i1 - %44 = load ptr, ptr %41, align 8 - %45 = getelementptr inbounds i8, ptr %44, i64 8 - %46 = load ptr, ptr %45, align 8 - call void %46(ptr noundef nonnull align 8 dereferenceable(8) %41) #16 + %37 = load ptr, ptr %9, align 8 + %38 = icmp eq ptr %37, null + br i1 %38, label %_ZN4llvm5ErrorD2Ev.exit, label %39 + +39: ; preds = %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i1 + %40 = load ptr, ptr %37, align 8 + %41 = getelementptr inbounds i8, ptr %40, i64 8 + %42 = load ptr, ptr %41, align 8 + call void %42(ptr noundef nonnull align 8 dereferenceable(8) %37) #16 br label %_ZN4llvm5ErrorD2Ev.exit -_ZN4llvm5ErrorD2Ev.exit: ; preds = %43, %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i1 +_ZN4llvm5ErrorD2Ev.exit: ; preds = %39, %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i1 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #16 - %47 = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %0) #16 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %47, ptr noundef nonnull align 1 dereferenceable(1) %15) #16 + %43 = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %0) #16 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %43, ptr noundef nonnull align 1 dereferenceable(1) %15) #16 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.3, ptr noundef nonnull getelementptr inbounds (i8, ptr @.str.3, i64 28)) call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #16 br label %_ZN4llvm8ExpectedINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit -48: ; preds = %_ZN4llvm8ExpectedINS_9StringRefEED2Ev.exit - %49 = load ptr, ptr %14, align 8 - %50 = load ptr, ptr %20, align 8 - %51 = getelementptr inbounds nuw i8, ptr %50, i64 12 - call void @llvm.assume(i1 true) [ "align"(ptr %51, i64 1) ] - %.0.copyload.i.i.i2 = load i32, ptr %51, align 1 - %52 = zext i32 %.0.copyload.i.i.i2 to i64 +44: ; preds = %_ZN4llvm8ExpectedINS_9StringRefEED2Ev.exit + %45 = load ptr, ptr %14, align 8 + %46 = load ptr, ptr %20, align 8 + %47 = getelementptr inbounds nuw i8, ptr %46, i64 12 + call void @llvm.assume(i1 true) [ "align"(ptr %47, i64 1) ] + %.0.copyload.i.i.i2 = load i32, ptr %47, align 1 + %48 = zext i32 %.0.copyload.i.i.i2 to i64 call void @llvm.experimental.noalias.scope.decl(metadata !24) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) - %53 = load ptr, ptr %49, align 8, !noalias !24 - %54 = getelementptr inbounds i8, ptr %53, i64 40 - %55 = load ptr, ptr %54, align 8, !noalias !24 - %56 = call noundef i64 %55(ptr noundef nonnull align 8 dereferenceable(8) %49) #16, !noalias !24 - %.sroa.speculated.i = call i64 @llvm.umin.i64(i64 %56, i64 range(i64 0, 4294967296) %52) + %49 = load ptr, ptr %45, align 8, !noalias !24 + %50 = getelementptr inbounds i8, ptr %49, i64 40 + %51 = load ptr, ptr %50, align 8, !noalias !24 + %52 = call noundef i64 %51(ptr noundef nonnull align 8 dereferenceable(8) %45) #16, !noalias !24 + %.sroa.speculated.i = call i64 @llvm.umin.i64(i64 %52, i64 range(i64 0, 4294967296) %48) call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #16, !noalias !24 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(32) %5, i64 noundef %.sroa.speculated.i) #16, !noalias !24 %.not21.i = icmp eq i64 %.sroa.speculated.i, 0 br i1 %.not21.i, label %._crit_edge.i, label %.lr.ph.i -.lr.ph.i: ; preds = %48 - %57 = getelementptr inbounds nuw i8, ptr %6, i64 8 - br label %58 +.lr.ph.i: ; preds = %44 + %53 = getelementptr inbounds nuw i8, ptr %6, i64 8 + br label %54 -58: ; preds = %_ZN4llvm5ErrorD2Ev.exit15.i, %.lr.ph.i - %.020.i = phi i64 [ 0, %.lr.ph.i ], [ %66, %_ZN4llvm5ErrorD2Ev.exit15.i ] +54: ; preds = %_ZN4llvm5ErrorD2Ev.exit15.i, %.lr.ph.i + %.020.i = phi i64 [ 0, %.lr.ph.i ], [ %62, %_ZN4llvm5ErrorD2Ev.exit15.i ] call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %6, i8 0, i64 16, i1 false), !noalias !24 - %59 = load ptr, ptr %49, align 8, !noalias !24 - %60 = getelementptr inbounds i8, ptr %59, i64 32 - %61 = load ptr, ptr %60, align 8, !noalias !24 - call void %61(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Error") align 8 %7, ptr noundef nonnull align 8 dereferenceable(8) %49, i64 noundef %.020.i, ptr noundef nonnull align 8 dereferenceable(16) %6) #16, !noalias !24 - %62 = load ptr, ptr %7, align 8, !noalias !24 - %.not.i = icmp eq ptr %62, null + %55 = load ptr, ptr %45, align 8, !noalias !24 + %56 = getelementptr inbounds i8, ptr %55, i64 32 + %57 = load ptr, ptr %56, align 8, !noalias !24 + call void %57(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Error") align 8 %7, ptr noundef nonnull align 8 dereferenceable(8) %45, i64 noundef %.020.i, ptr noundef nonnull align 8 dereferenceable(16) %6) #16, !noalias !24 + %58 = load ptr, ptr %7, align 8, !noalias !24 + %.not.i = icmp eq ptr %58, null br i1 %.not.i, label %_ZN4llvm5ErrorD2Ev.exit15.i, label %_ZN4llvm5ErrorD2Ev.exit.i -_ZN4llvm5ErrorD2Ev.exit.i: ; preds = %58 - %63 = getelementptr inbounds nuw i8, ptr %16, i64 32 - store i8 -1, ptr %63, align 8, !alias.scope !24 +_ZN4llvm5ErrorD2Ev.exit.i: ; preds = %54 + %59 = getelementptr inbounds nuw i8, ptr %16, i64 32 + store i8 -1, ptr %59, align 8, !alias.scope !24 call void @llvm.experimental.noalias.scope.decl(metadata !27) - store ptr %62, ptr %16, align 8, !alias.scope !30 + store ptr %58, ptr %16, align 8, !alias.scope !30 store ptr null, ptr %7, align 8, !noalias !30 br label %_ZN4llvm3pdb12_GLOBAL__N_114readStreamDataB5cxx11ERNS_12BinaryStreamEm.exit -_ZN4llvm5ErrorD2Ev.exit15.i: ; preds = %58 - %64 = sub i64 %.sroa.speculated.i, %.020.i - %65 = load i64, ptr %57, align 8, !noalias !24 - %..i16.i = call i64 @llvm.umin.i64(i64 %64, i64 %65) +_ZN4llvm5ErrorD2Ev.exit15.i: ; preds = %54 + %60 = sub i64 %.sroa.speculated.i, %.020.i + %61 = load i64, ptr %53, align 8, !noalias !24 + %..i16.i = call i64 @llvm.umin.i64(i64 %60, i64 %61) %.sroa.0.0.copyload.pn.i.i = load ptr, ptr %6, align 8, !noalias !24 - store i64 %..i16.i, ptr %57, align 8, !noalias !24 - %66 = add i64 %..i16.i, %.020.i - %67 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKcm(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %.sroa.0.0.copyload.pn.i.i, i64 noundef %..i16.i) #16, !noalias !24 - %68 = icmp ult i64 %66, %.sroa.speculated.i - br i1 %68, label %58, label %._crit_edge.i, !llvm.loop !31 - -._crit_edge.i: ; preds = %_ZN4llvm5ErrorD2Ev.exit15.i, %48 - %69 = getelementptr inbounds nuw i8, ptr %16, i64 32 - store i8 0, ptr %69, align 8, !alias.scope !24 + store i64 %..i16.i, ptr %53, align 8, !noalias !24 + %62 = add i64 %..i16.i, %.020.i + %63 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKcm(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %.sroa.0.0.copyload.pn.i.i, i64 noundef %..i16.i) #16, !noalias !24 + %64 = icmp ult i64 %62, %.sroa.speculated.i + br i1 %64, label %54, label %._crit_edge.i, !llvm.loop !31 + +._crit_edge.i: ; preds = %_ZN4llvm5ErrorD2Ev.exit15.i, %44 + %65 = getelementptr inbounds nuw i8, ptr %16, i64 32 + store i8 0, ptr %65, align 8, !alias.scope !24 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_(ptr noundef nonnull align 8 dereferenceable(33) %16, ptr noundef nonnull align 8 dereferenceable(32) %5) #16 br label %_ZN4llvm3pdb12_GLOBAL__N_114readStreamDataB5cxx11ERNS_12BinaryStreamEm.exit @@ -802,84 +782,84 @@ _ZN4llvm3pdb12_GLOBAL__N_114readStreamDataB5cxx11ERNS_12BinaryStreamEm.exit: ; p call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) - %70 = getelementptr inbounds nuw i8, ptr %16, i64 32 - %71 = load i8, ptr %70, align 8 - %72 = trunc i8 %71 to i1 - br i1 %72, label %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i4, label %83 + %66 = getelementptr inbounds nuw i8, ptr %16, i64 32 + %67 = load i8, ptr %66, align 8 + %68 = trunc i8 %67 to i1 + br i1 %68, label %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i4, label %79 _ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i4: ; preds = %_ZN4llvm3pdb12_GLOBAL__N_114readStreamDataB5cxx11ERNS_12BinaryStreamEm.exit - %73 = load i64, ptr %16, align 8, !noalias !32 - %74 = inttoptr i64 %73 to ptr + %69 = load i64, ptr %16, align 8, !noalias !32 + %70 = inttoptr i64 %69 to ptr store ptr null, ptr %16, align 8, !noalias !32 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) - store ptr %74, ptr %3, align 8 + store ptr %70, ptr %3, align 8 call void @_ZN4llvm12handleErrorsIJZNS_12consumeErrorENS_5ErrorEEUlRKNS_13ErrorInfoBaseEE_EEES1_S1_DpOT_(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Error") align 8 %2, ptr noundef nonnull %3, ptr noundef nonnull align 1 dereferenceable(1) %4) - %75 = load ptr, ptr %2, align 8 - %.not.i.i.i5 = icmp eq ptr %75, null + %71 = load ptr, ptr %2, align 8 + %.not.i.i.i5 = icmp eq ptr %71, null call void @llvm.assume(i1 %.not.i.i.i5) - %76 = load ptr, ptr %3, align 8 - %77 = icmp eq ptr %76, null - br i1 %77, label %_ZN4llvm5ErrorD2Ev.exit8, label %78 - -78: ; preds = %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i4 - %79 = load ptr, ptr %76, align 8 - %80 = getelementptr inbounds i8, ptr %79, i64 8 - %81 = load ptr, ptr %80, align 8 - call void %81(ptr noundef nonnull align 8 dereferenceable(8) %76) #16 + %72 = load ptr, ptr %3, align 8 + %73 = icmp eq ptr %72, null + br i1 %73, label %_ZN4llvm5ErrorD2Ev.exit8, label %74 + +74: ; preds = %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i4 + %75 = load ptr, ptr %72, align 8 + %76 = getelementptr inbounds i8, ptr %75, i64 8 + %77 = load ptr, ptr %76, align 8 + call void %77(ptr noundef nonnull align 8 dereferenceable(8) %72) #16 br label %_ZN4llvm5ErrorD2Ev.exit8 -_ZN4llvm5ErrorD2Ev.exit8: ; preds = %78, %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i4 +_ZN4llvm5ErrorD2Ev.exit8: ; preds = %74, %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i4 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #16 - %82 = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %0) #16 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %82, ptr noundef nonnull align 1 dereferenceable(1) %17) #16 + %78 = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %0) #16 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %78, ptr noundef nonnull align 1 dereferenceable(1) %17) #16 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.4, ptr noundef nonnull getelementptr inbounds (i8, ptr @.str.4, i64 21)) call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #16 - br label %84 + br label %80 -83: ; preds = %_ZN4llvm3pdb12_GLOBAL__N_114readStreamDataB5cxx11ERNS_12BinaryStreamEm.exit +79: ; preds = %_ZN4llvm3pdb12_GLOBAL__N_114readStreamDataB5cxx11ERNS_12BinaryStreamEm.exit call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %16) #16 - br label %84 + br label %80 -84: ; preds = %83, %_ZN4llvm5ErrorD2Ev.exit8 - %85 = load i8, ptr %70, align 8 - %86 = trunc i8 %85 to i1 - br i1 %86, label %88, label %87 +80: ; preds = %79, %_ZN4llvm5ErrorD2Ev.exit8 + %81 = load i8, ptr %66, align 8 + %82 = trunc i8 %81 to i1 + br i1 %82, label %84, label %83 -87: ; preds = %84 +83: ; preds = %80 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(33) %16) #16 br label %_ZN4llvm8ExpectedINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit -88: ; preds = %84 - %89 = load ptr, ptr %16, align 8 - %.not.i.i9 = icmp eq ptr %89, null +84: ; preds = %80 + %85 = load ptr, ptr %16, align 8 + %.not.i.i9 = icmp eq ptr %85, null br i1 %.not.i.i9, label %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i11, label %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i10 -_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i10: ; preds = %88 - %90 = load ptr, ptr %89, align 8 - %91 = getelementptr inbounds i8, ptr %90, i64 8 - %92 = load ptr, ptr %91, align 8 - call void %92(ptr noundef nonnull align 8 dereferenceable(8) %89) #16 +_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i10: ; preds = %84 + %86 = load ptr, ptr %85, align 8 + %87 = getelementptr inbounds i8, ptr %86, i64 8 + %88 = load ptr, ptr %87, align 8 + call void %88(ptr noundef nonnull align 8 dereferenceable(8) %85) #16 br label %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i11 -_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i11: ; preds = %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i10, %88 +_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i11: ; preds = %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i10, %84 store ptr null, ptr %16, align 8 br label %_ZN4llvm8ExpectedINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit -_ZN4llvm8ExpectedINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit: ; preds = %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i11, %87, %_ZN4llvm5ErrorD2Ev.exit - %93 = load ptr, ptr %14, align 8 - %.not.i1.i = icmp eq ptr %93, null +_ZN4llvm8ExpectedINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit: ; preds = %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i11, %83, %_ZN4llvm5ErrorD2Ev.exit + %89 = load ptr, ptr %14, align 8 + %.not.i1.i = icmp eq ptr %89, null br i1 %.not.i1.i, label %_ZN4llvm8ExpectedISt10unique_ptrINS_3msf17MappedBlockStreamESt14default_deleteIS3_EEED2Ev.exit, label %_ZNSt10unique_ptrIN4llvm3msf17MappedBlockStreamESt14default_deleteIS2_EED2Ev.exit.sink.split.i _ZNSt10unique_ptrIN4llvm3msf17MappedBlockStreamESt14default_deleteIS2_EED2Ev.exit.sink.split.i: ; preds = %_ZN4llvm8ExpectedINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit - %94 = load ptr, ptr %93, align 8 - %95 = getelementptr inbounds i8, ptr %94, i64 8 - %96 = load ptr, ptr %95, align 8 - call void %96(ptr noundef nonnull align 8 dereferenceable(8) %93) #16 + %90 = load ptr, ptr %89, align 8 + %91 = getelementptr inbounds i8, ptr %90, i64 8 + %92 = load ptr, ptr %91, align 8 + call void %92(ptr noundef nonnull align 8 dereferenceable(8) %89) #16 br label %_ZN4llvm8ExpectedISt10unique_ptrINS_3msf17MappedBlockStreamESt14default_deleteIS3_EEED2Ev.exit _ZN4llvm8ExpectedISt10unique_ptrINS_3msf17MappedBlockStreamESt14default_deleteIS3_EEED2Ev.exit: ; preds = %_ZN4llvm8ExpectedINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit, %_ZNSt10unique_ptrIN4llvm3msf17MappedBlockStreamESt14default_deleteIS2_EED2Ev.exit.sink.split.i diff --git a/bench/llvm/optimized/NativeFunctionSymbol.cpp.ll b/bench/llvm/optimized/NativeFunctionSymbol.cpp.ll index b1d0ff488f0..8919e87e33e 100644 --- a/bench/llvm/optimized/NativeFunctionSymbol.cpp.ll +++ b/bench/llvm/optimized/NativeFunctionSymbol.cpp.ll @@ -1025,8 +1025,8 @@ _ZNK4llvm8codeview8CVRecordINS0_10SymbolKindEE4kindEv.exit.i: ; preds = %_ZNK4ll call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(40) %82, i8 0, i64 40, i1 false), !noalias !7 call void @_ZN4llvm8codeview18SymbolDeserializer13deserializeAsINS0_13InlineSiteSymEEENS_5ErrorENS0_8CVRecordINS0_10SymbolKindEEERT_(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Error") align 8 %7, ptr nonnull %150, i64 %148, ptr noundef nonnull align 8 dereferenceable(44) %6), !noalias !7 %152 = load ptr, ptr %7, align 8, !noalias !7 - %.not.i.not = icmp eq ptr %152, null - br i1 %.not.i.not, label %.thread.i, label %161 + %.not.i = icmp eq ptr %152, null + br i1 %.not.i, label %.thread.i, label %161 .thread.i: ; preds = %_ZNK4llvm8codeview8CVRecordINS0_10SymbolKindEE4kindEv.exit.i %153 = load i16, ptr %6, align 8, !noalias !7 @@ -1045,13 +1045,13 @@ _ZNK4llvm8codeview8CVRecordINS0_10SymbolKindEE4kindEv.exit.i: ; preds = %_ZNK4ll %158 = load ptr, ptr %84, align 8, !noalias !7 %159 = load i32, ptr %86, align 8, !noalias !7 %160 = ptrtoint ptr %158 to i64 - br label %_ZN4llvm8ExpectedINS_8codeview13InlineSiteSymEED2Ev.exit + br label %_ZN4llvm8codeview18SymbolDeserializer13deserializeAsINS0_13InlineSiteSymEEENS_8ExpectedIT_EENS0_8CVRecordINS0_10SymbolKindEEE.exit 161: ; preds = %_ZNK4llvm8codeview8CVRecordINS0_10SymbolKindEE4kindEv.exit.i store ptr null, ptr %7, align 8, !noalias !10 %.pre.i = load ptr, ptr %.phi.trans.insert.i, align 8, !noalias !7 %.not.i.i.i.i.i = icmp eq ptr %.pre.i, null - br i1 %.not.i.i.i.i.i, label %_ZN4llvm8ExpectedINS_8codeview13InlineSiteSymEED2Ev.exit, label %162 + br i1 %.not.i.i.i.i.i, label %_ZN4llvm8codeview18SymbolDeserializer13deserializeAsINS0_13InlineSiteSymEEENS_8ExpectedIT_EENS0_8CVRecordINS0_10SymbolKindEEE.exit, label %162 162: ; preds = %161 %163 = load ptr, ptr %84, align 8, !noalias !7 @@ -1059,18 +1059,17 @@ _ZNK4llvm8codeview8CVRecordINS0_10SymbolKindEE4kindEv.exit.i: ; preds = %_ZNK4ll %165 = ptrtoint ptr %.pre.i to i64 %166 = sub i64 %164, %165 call void @_ZdlPvm(ptr noundef nonnull %.pre.i, i64 noundef %166) #15, !noalias !7 - br label %_ZN4llvm8ExpectedINS_8codeview13InlineSiteSymEED2Ev.exit + br label %_ZN4llvm8codeview18SymbolDeserializer13deserializeAsINS0_13InlineSiteSymEEENS_8ExpectedIT_EENS0_8CVRecordINS0_10SymbolKindEEE.exit -_ZN4llvm8ExpectedINS_8codeview13InlineSiteSymEED2Ev.exit: ; preds = %162, %161, %.thread.i +_ZN4llvm8codeview18SymbolDeserializer13deserializeAsINS0_13InlineSiteSymEEENS_8ExpectedIT_EENS0_8CVRecordINS0_10SymbolKindEEE.exit: ; preds = %.thread.i, %161, %162 %.sroa.796.4 = phi ptr [ %156, %.thread.i ], [ null, %161 ], [ null, %162 ] %.sroa.11.4 = phi ptr [ %157, %.thread.i ], [ null, %161 ], [ null, %162 ] %.sroa.16.4 = phi i32 [ %159, %.thread.i ], [ %.sroa.16.1, %161 ], [ %.sroa.16.1, %162 ] %.sroa.13.4 = phi i64 [ %160, %.thread.i ], [ 0, %161 ], [ 0, %162 ] %.sroa.7.4 = phi i64 [ %.sroa.7.4.copyload, %.thread.i ], [ %.sroa.7.1, %161 ], [ %.sroa.7.1, %162 ] - %.sroa.091.4 = phi ptr [ %155, %.thread.i ], [ null, %161 ], [ null, %162 ] + %.sroa.091.4 = phi ptr [ %155, %.thread.i ], [ %152, %161 ], [ %152, %162 ] call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %6) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) - call void @llvm.assume(i1 %.not.i.not) %167 = ptrtoint ptr %.sroa.091.4 to i64 %.sroa.091.0.extract.trunc = trunc i64 %167 to i16 %.sroa.091.4.extract.shift = lshr i64 %167, 32 @@ -1086,9 +1085,9 @@ _ZN4llvm8ExpectedINS_8codeview13InlineSiteSymEED2Ev.exit: ; preds = %162, %161, %.not.i.i.i.i9.not.i = icmp eq ptr %.sroa.11.4, %.sroa.796.4 br i1 %.not.i.i.i.i9.not.i, label %.loopexit, label %.lr.ph.i -.lr.ph.i: ; preds = %_ZN4llvm8ExpectedINS_8codeview13InlineSiteSymEED2Ev.exit, %_ZN4llvm8codeview24BinaryAnnotationIteratorppEv.exit.i - %.02011.i = phi i1 [ %.1.i, %_ZN4llvm8codeview24BinaryAnnotationIteratorppEv.exit.i ], [ false, %_ZN4llvm8ExpectedINS_8codeview13InlineSiteSymEED2Ev.exit ] - %.02110.i = phi i32 [ %.122.i, %_ZN4llvm8codeview24BinaryAnnotationIteratorppEv.exit.i ], [ 0, %_ZN4llvm8ExpectedINS_8codeview13InlineSiteSymEED2Ev.exit ] +.lr.ph.i: ; preds = %_ZN4llvm8codeview18SymbolDeserializer13deserializeAsINS0_13InlineSiteSymEEENS_8ExpectedIT_EENS0_8CVRecordINS0_10SymbolKindEEE.exit, %_ZN4llvm8codeview24BinaryAnnotationIteratorppEv.exit.i + %.02011.i = phi i1 [ %.1.i, %_ZN4llvm8codeview24BinaryAnnotationIteratorppEv.exit.i ], [ false, %_ZN4llvm8codeview18SymbolDeserializer13deserializeAsINS0_13InlineSiteSymEEENS_8ExpectedIT_EENS0_8CVRecordINS0_10SymbolKindEEE.exit ] + %.02110.i = phi i32 [ %.122.i, %_ZN4llvm8codeview24BinaryAnnotationIteratorppEv.exit.i ], [ 0, %_ZN4llvm8codeview18SymbolDeserializer13deserializeAsINS0_13InlineSiteSymEEENS_8ExpectedIT_EENS0_8CVRecordINS0_10SymbolKindEEE.exit ] %171 = call noundef zeroext i1 @_ZN4llvm8codeview24BinaryAnnotationIterator22ParseCurrentAnnotationEv(ptr noundef nonnull align 8 dereferenceable(88) %5) %172 = load i32, ptr %91, align 8 switch i32 %172, label %187 [ @@ -1389,7 +1388,7 @@ _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_cold call void %298(ptr noundef nonnull align 8 dereferenceable(16) %264) #14 br label %_ZN4llvm22VarStreamArrayIteratorINS_8codeview8CVRecordINS1_10SymbolKindEEENS_23VarStreamArrayExtractorIS4_EEED2Ev.exit -.loopexit: ; preds = %_ZN4llvm8codeview24BinaryAnnotationIteratorppEv.exit.i, %_ZN4llvm8ExpectedINS_8codeview13InlineSiteSymEED2Ev.exit +.loopexit: ; preds = %_ZN4llvm8codeview24BinaryAnnotationIteratorppEv.exit.i, %_ZN4llvm8codeview18SymbolDeserializer13deserializeAsINS0_13InlineSiteSymEEENS_8ExpectedIT_EENS0_8CVRecordINS0_10SymbolKindEEE.exit call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %5) %.sroa.4.8.extract.trunc = trunc i64 %.sroa.7.4 to i32 call void @_ZN4llvm22VarStreamArrayIteratorINS_8codeview8CVRecordINS1_10SymbolKindEEENS_23VarStreamArrayExtractorIS4_EEEC2ERKNS_14VarStreamArrayIS4_S6_EERKS6_jPb(ptr noundef nonnull align 8 dereferenceable(104) %20, ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 1 dereferenceable(1) %68, i32 noundef %.sroa.4.8.extract.trunc, ptr noundef null) diff --git a/bench/llvm/optimized/NativeTypeFunctionSig.cpp.ll b/bench/llvm/optimized/NativeTypeFunctionSig.cpp.ll index e6204bf30ef..2cb0170ceb5 100644 --- a/bench/llvm/optimized/NativeTypeFunctionSig.cpp.ll +++ b/bench/llvm/optimized/NativeTypeFunctionSig.cpp.ll @@ -204,7 +204,7 @@ define dso_local void @_ZN4llvm3pdb21NativeTypeFunctionSig10initializeEv(ptr nou %8 = getelementptr inbounds nuw i8, ptr %0, i64 96 %9 = load i8, ptr %8, align 8 %10 = trunc i8 %9 to i1 - br i1 %10, label %11, label %38 + br i1 %10, label %11, label %34 11: ; preds = %1 %12 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -224,72 +224,62 @@ define dso_local void @_ZN4llvm3pdb21NativeTypeFunctionSig10initializeEv(ptr nou %20 = getelementptr inbounds nuw i8, ptr %19, i64 8 %21 = load ptr, ptr %20, align 8 call void @_ZN4llvm3pdb7PDBFile15getPDBTpiStreamEv(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected") align 8 %5, ptr noundef nonnull align 8 dereferenceable(280) %21) #14 - %22 = getelementptr inbounds nuw i8, ptr %5, i64 8 - %23 = load i8, ptr %22, align 8 - %24 = trunc i8 %23 to i1 - %25 = xor i1 %24, true - call void @llvm.assume(i1 %25) - %26 = load ptr, ptr %5, align 8 - %27 = getelementptr inbounds nuw i8, ptr %26, i64 16 - %28 = load ptr, ptr %27, align 8 - %29 = load ptr, ptr %28, align 8 - %30 = getelementptr inbounds i8, ptr %29, i64 32 - %31 = load ptr, ptr %30, align 8 - %32 = call { ptr, i64 } %31(ptr noundef nonnull align 8 dereferenceable(248) %28, i32 %.sroa.01.0.copyload) #14 - %33 = extractvalue { ptr, i64 } %32, 0 - store ptr %33, ptr %6, align 8 - %34 = getelementptr inbounds nuw i8, ptr %6, i64 8 - %35 = extractvalue { ptr, i64 } %32, 1 - store i64 %35, ptr %34, align 8 - %36 = getelementptr inbounds nuw i8, ptr %0, i64 64 - call void @_ZN4llvm8codeview16TypeDeserializer13deserializeAsINS0_13ArgListRecordEEENS_5ErrorERNS0_8CVRecordINS0_12TypeLeafKindEEERT_(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Error") align 8 %7, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(32) %36) - %37 = load ptr, ptr %7, align 8 - %.not.i.i = icmp eq ptr %37, null + %22 = load ptr, ptr %5, align 8 + %23 = getelementptr inbounds nuw i8, ptr %22, i64 16 + %24 = load ptr, ptr %23, align 8 + %25 = load ptr, ptr %24, align 8 + %26 = getelementptr inbounds i8, ptr %25, i64 32 + %27 = load ptr, ptr %26, align 8 + %28 = call { ptr, i64 } %27(ptr noundef nonnull align 8 dereferenceable(248) %24, i32 %.sroa.01.0.copyload) #14 + %29 = extractvalue { ptr, i64 } %28, 0 + store ptr %29, ptr %6, align 8 + %30 = getelementptr inbounds nuw i8, ptr %6, i64 8 + %31 = extractvalue { ptr, i64 } %28, 1 + store i64 %31, ptr %30, align 8 + %32 = getelementptr inbounds nuw i8, ptr %0, i64 64 + call void @_ZN4llvm8codeview16TypeDeserializer13deserializeAsINS0_13ArgListRecordEEENS_5ErrorERNS0_8CVRecordINS0_12TypeLeafKindEEERT_(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Error") align 8 %7, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(32) %32) + %33 = load ptr, ptr %7, align 8 + %.not.i.i = icmp eq ptr %33, null call void @llvm.assume(i1 %.not.i.i) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) - br label %60 + br label %52 -38: ; preds = %1 - %39 = getelementptr inbounds nuw i8, ptr %0, i64 34 - %.sroa.0.0.copyload = load i32, ptr %39, align 2 +34: ; preds = %1 + %35 = getelementptr inbounds nuw i8, ptr %0, i64 34 + %.sroa.0.0.copyload = load i32, ptr %35, align 2 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) - %40 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %41 = load ptr, ptr %40, align 8 - %42 = getelementptr inbounds nuw i8, ptr %41, i64 8 + %36 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %37 = load ptr, ptr %36, align 8 + %38 = getelementptr inbounds nuw i8, ptr %37, i64 8 + %39 = load ptr, ptr %38, align 8 + call void @_ZN4llvm3pdb7PDBFile15getPDBTpiStreamEv(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected") align 8 %2, ptr noundef nonnull align 8 dereferenceable(280) %39) #14 + %40 = load ptr, ptr %2, align 8 + %41 = getelementptr inbounds nuw i8, ptr %40, i64 16 + %42 = load ptr, ptr %41, align 8 %43 = load ptr, ptr %42, align 8 - call void @_ZN4llvm3pdb7PDBFile15getPDBTpiStreamEv(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected") align 8 %2, ptr noundef nonnull align 8 dereferenceable(280) %43) #14 - %44 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %45 = load i8, ptr %44, align 8 - %46 = trunc i8 %45 to i1 - %47 = xor i1 %46, true - call void @llvm.assume(i1 %47) - %48 = load ptr, ptr %2, align 8 - %49 = getelementptr inbounds nuw i8, ptr %48, i64 16 - %50 = load ptr, ptr %49, align 8 - %51 = load ptr, ptr %50, align 8 - %52 = getelementptr inbounds i8, ptr %51, i64 32 - %53 = load ptr, ptr %52, align 8 - %54 = call { ptr, i64 } %53(ptr noundef nonnull align 8 dereferenceable(248) %50, i32 %.sroa.0.0.copyload) #14 - %55 = extractvalue { ptr, i64 } %54, 0 - store ptr %55, ptr %3, align 8 - %56 = getelementptr inbounds nuw i8, ptr %3, i64 8 - %57 = extractvalue { ptr, i64 } %54, 1 - store i64 %57, ptr %56, align 8 - %58 = getelementptr inbounds nuw i8, ptr %0, i64 64 - call void @_ZN4llvm8codeview16TypeDeserializer13deserializeAsINS0_13ArgListRecordEEENS_5ErrorERNS0_8CVRecordINS0_12TypeLeafKindEEERT_(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Error") align 8 %4, ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(32) %58) - %59 = load ptr, ptr %4, align 8 - %.not.i.i3 = icmp eq ptr %59, null + %44 = getelementptr inbounds i8, ptr %43, i64 32 + %45 = load ptr, ptr %44, align 8 + %46 = call { ptr, i64 } %45(ptr noundef nonnull align 8 dereferenceable(248) %42, i32 %.sroa.0.0.copyload) #14 + %47 = extractvalue { ptr, i64 } %46, 0 + store ptr %47, ptr %3, align 8 + %48 = getelementptr inbounds nuw i8, ptr %3, i64 8 + %49 = extractvalue { ptr, i64 } %46, 1 + store i64 %49, ptr %48, align 8 + %50 = getelementptr inbounds nuw i8, ptr %0, i64 64 + call void @_ZN4llvm8codeview16TypeDeserializer13deserializeAsINS0_13ArgListRecordEEENS_5ErrorERNS0_8CVRecordINS0_12TypeLeafKindEEERT_(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Error") align 8 %4, ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(32) %50) + %51 = load ptr, ptr %4, align 8 + %.not.i.i3 = icmp eq ptr %51, null call void @llvm.assume(i1 %.not.i.i3) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) - br label %60 + br label %52 -60: ; preds = %38, %11 +52: ; preds = %34, %11 ret void } @@ -306,27 +296,22 @@ _ZN4llvm5ErrorD2Ev.exit: %7 = getelementptr inbounds nuw i8, ptr %6, i64 8 %8 = load ptr, ptr %7, align 8 call void @_ZN4llvm3pdb7PDBFile15getPDBTpiStreamEv(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected") align 8 %2, ptr noundef nonnull align 8 dereferenceable(280) %8) #14 - %9 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %10 = load i8, ptr %9, align 8 - %11 = trunc i8 %10 to i1 - %12 = xor i1 %11, true - call void @llvm.assume(i1 %12) - %13 = load ptr, ptr %2, align 8 - %14 = getelementptr inbounds nuw i8, ptr %13, i64 16 - %15 = load ptr, ptr %14, align 8 - %16 = load ptr, ptr %15, align 8 - %17 = getelementptr inbounds i8, ptr %16, i64 32 - %18 = load ptr, ptr %17, align 8 - %19 = call { ptr, i64 } %18(ptr noundef nonnull align 8 dereferenceable(248) %15, i32 %1) #14 - %20 = extractvalue { ptr, i64 } %19, 0 - store ptr %20, ptr %3, align 8 - %21 = getelementptr inbounds nuw i8, ptr %3, i64 8 - %22 = extractvalue { ptr, i64 } %19, 1 - store i64 %22, ptr %21, align 8 - %23 = getelementptr inbounds nuw i8, ptr %0, i64 64 - call void @_ZN4llvm8codeview16TypeDeserializer13deserializeAsINS0_13ArgListRecordEEENS_5ErrorERNS0_8CVRecordINS0_12TypeLeafKindEEERT_(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Error") align 8 %4, ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(32) %23) - %24 = load ptr, ptr %4, align 8 - %.not.i = icmp eq ptr %24, null + %9 = load ptr, ptr %2, align 8 + %10 = getelementptr inbounds nuw i8, ptr %9, i64 16 + %11 = load ptr, ptr %10, align 8 + %12 = load ptr, ptr %11, align 8 + %13 = getelementptr inbounds i8, ptr %12, i64 32 + %14 = load ptr, ptr %13, align 8 + %15 = call { ptr, i64 } %14(ptr noundef nonnull align 8 dereferenceable(248) %11, i32 %1) #14 + %16 = extractvalue { ptr, i64 } %15, 0 + store ptr %16, ptr %3, align 8 + %17 = getelementptr inbounds nuw i8, ptr %3, i64 8 + %18 = extractvalue { ptr, i64 } %15, 1 + store i64 %18, ptr %17, align 8 + %19 = getelementptr inbounds nuw i8, ptr %0, i64 64 + call void @_ZN4llvm8codeview16TypeDeserializer13deserializeAsINS0_13ArgListRecordEEENS_5ErrorERNS0_8CVRecordINS0_12TypeLeafKindEEERT_(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Error") align 8 %4, ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(32) %19) + %20 = load ptr, ptr %4, align 8 + %.not.i = icmp eq ptr %20, null call void @llvm.assume(i1 %.not.i) ret void } diff --git a/bench/llvm/optimized/PDBFile.cpp.ll b/bench/llvm/optimized/PDBFile.cpp.ll index 6388278474d..5ff211da7a6 100644 --- a/bench/llvm/optimized/PDBFile.cpp.ll +++ b/bench/llvm/optimized/PDBFile.cpp.ll @@ -2519,114 +2519,109 @@ _ZNK4llvm3pdb7PDBFile15hasPDBIpiStreamEv.exit.thread: ; preds = %10, %16 _ZNK4llvm3pdb7PDBFile15hasPDBIpiStreamEv.exit: ; preds = %16 call void @_ZN4llvm3pdb7PDBFile16getPDBInfoStreamEv(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected.122") align 8 %6, ptr noundef nonnull align 8 dereferenceable(280) %1) - %22 = getelementptr inbounds nuw i8, ptr %6, i64 8 - %23 = load i8, ptr %22, align 8 - %24 = trunc i8 %23 to i1 - %25 = xor i1 %24, true - tail call void @llvm.assume(i1 %25) - %26 = load ptr, ptr %6, align 8 - %27 = tail call noundef zeroext i1 @_ZNK4llvm3pdb10InfoStream16containsIdStreamEv(ptr noundef nonnull align 8 dereferenceable(224) %26) #18 + %22 = load ptr, ptr %6, align 8 + %23 = tail call noundef zeroext i1 @_ZNK4llvm3pdb10InfoStream16containsIdStreamEv(ptr noundef nonnull align 8 dereferenceable(224) %22) #18 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) - br i1 %27, label %35, label %_ZN4llvm5ErrorD2Ev.exit + br i1 %23, label %31, label %_ZN4llvm5ErrorD2Ev.exit _ZN4llvm5ErrorD2Ev.exit: ; preds = %_ZNK4llvm3pdb7PDBFile15hasPDBIpiStreamEv.exit, %_ZNK4llvm3pdb7PDBFile15hasPDBIpiStreamEv.exit.thread call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %5), !noalias !162 - %28 = tail call noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #20, !noalias !165 - %29 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN4llvm3pdb14RawErrCategoryEv() #18, !noalias !165 - %30 = getelementptr inbounds nuw i8, ptr %5, i64 32 - store i8 1, ptr %30, align 8, !noalias !165 - %31 = getelementptr inbounds nuw i8, ptr %5, i64 33 - store i8 1, ptr %31, align 1, !noalias !165 - call void @_ZN4llvm11StringErrorC2ESt10error_codeRKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(57) %28, i32 6, ptr nonnull %29, ptr noundef nonnull align 8 dereferenceable(34) %5) #18, !noalias !165 - store ptr getelementptr inbounds inrange(-16, 64) (i8, ptr @_ZTVN4llvm3pdb8RawErrorE, i64 16), ptr %28, align 8, !noalias !165 + %24 = tail call noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #20, !noalias !165 + %25 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN4llvm3pdb14RawErrCategoryEv() #18, !noalias !165 + %26 = getelementptr inbounds nuw i8, ptr %5, i64 32 + store i8 1, ptr %26, align 8, !noalias !165 + %27 = getelementptr inbounds nuw i8, ptr %5, i64 33 + store i8 1, ptr %27, align 1, !noalias !165 + call void @_ZN4llvm11StringErrorC2ESt10error_codeRKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(57) %24, i32 6, ptr nonnull %25, ptr noundef nonnull align 8 dereferenceable(34) %5) #18, !noalias !165 + store ptr getelementptr inbounds inrange(-16, 64) (i8, ptr @_ZTVN4llvm3pdb8RawErrorE, i64 16), ptr %24, align 8, !noalias !165 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5), !noalias !162 - %32 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %33 = load i8, ptr %32, align 8 - %34 = or i8 %33, 1 - store i8 %34, ptr %32, align 8 - store ptr %28, ptr %0, align 8, !alias.scope !168 + %28 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %29 = load i8, ptr %28, align 8 + %30 = or i8 %29, 1 + store i8 %30, ptr %28, align 8 + store ptr %24, ptr %0, align 8, !alias.scope !168 br label %_ZN4llvm8ExpectedISt10unique_ptrINS_3msf17MappedBlockStreamESt14default_deleteIS3_EEED2Ev.exit.thread -35: ; preds = %_ZNK4llvm3pdb7PDBFile15hasPDBIpiStreamEv.exit - %36 = load ptr, ptr %1, align 8, !noalias !171 - %37 = getelementptr inbounds i8, ptr %36, i64 32 - %38 = load ptr, ptr %37, align 8, !noalias !171 - %39 = tail call noundef i32 %38(ptr noundef nonnull align 8 dereferenceable(280) %1) #18, !noalias !171 - %.not.i = icmp ugt i32 %39, 4 - br i1 %.not.i, label %47, label %_ZN4llvm5ErrorD2Ev.exit2 +31: ; preds = %_ZNK4llvm3pdb7PDBFile15hasPDBIpiStreamEv.exit + %32 = load ptr, ptr %1, align 8, !noalias !171 + %33 = getelementptr inbounds i8, ptr %32, i64 32 + %34 = load ptr, ptr %33, align 8, !noalias !171 + %35 = tail call noundef i32 %34(ptr noundef nonnull align 8 dereferenceable(280) %1) #18, !noalias !171 + %.not.i = icmp ugt i32 %35, 4 + br i1 %.not.i, label %43, label %_ZN4llvm5ErrorD2Ev.exit2 -_ZN4llvm5ErrorD2Ev.exit2: ; preds = %35 +_ZN4llvm5ErrorD2Ev.exit2: ; preds = %31 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %4), !noalias !174 - %40 = tail call noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #20, !noalias !177 - %41 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN4llvm3pdb14RawErrCategoryEv() #18, !noalias !177 - %42 = getelementptr inbounds nuw i8, ptr %4, i64 32 - store i8 1, ptr %42, align 8, !noalias !177 - %43 = getelementptr inbounds nuw i8, ptr %4, i64 33 - store i8 1, ptr %43, align 1, !noalias !177 - call void @_ZN4llvm11StringErrorC2ESt10error_codeRKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(57) %40, i32 6, ptr nonnull %41, ptr noundef nonnull align 8 dereferenceable(34) %4) #18, !noalias !177 - store ptr getelementptr inbounds inrange(-16, 64) (i8, ptr @_ZTVN4llvm3pdb8RawErrorE, i64 16), ptr %40, align 8, !noalias !177 + %36 = tail call noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #20, !noalias !177 + %37 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN4llvm3pdb14RawErrCategoryEv() #18, !noalias !177 + %38 = getelementptr inbounds nuw i8, ptr %4, i64 32 + store i8 1, ptr %38, align 8, !noalias !177 + %39 = getelementptr inbounds nuw i8, ptr %4, i64 33 + store i8 1, ptr %39, align 1, !noalias !177 + call void @_ZN4llvm11StringErrorC2ESt10error_codeRKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(57) %36, i32 6, ptr nonnull %37, ptr noundef nonnull align 8 dereferenceable(34) %4) #18, !noalias !177 + store ptr getelementptr inbounds inrange(-16, 64) (i8, ptr @_ZTVN4llvm3pdb8RawErrorE, i64 16), ptr %36, align 8, !noalias !177 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4), !noalias !174 - %44 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %45 = load i8, ptr %44, align 8 - %46 = or i8 %45, 1 - store i8 %46, ptr %44, align 8 - store ptr %40, ptr %0, align 8, !alias.scope !180 + %40 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %41 = load i8, ptr %40, align 8 + %42 = or i8 %41, 1 + store i8 %42, ptr %40, align 8 + store ptr %36, ptr %0, align 8, !alias.scope !180 br label %_ZN4llvm8ExpectedISt10unique_ptrINS_3msf17MappedBlockStreamESt14default_deleteIS3_EEED2Ev.exit.thread -47: ; preds = %35 +43: ; preds = %31 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) call void @_ZNK4llvm3pdb7PDBFile19createIndexedStreamEt(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.53") align 8 %3, ptr noundef nonnull align 8 dereferenceable(280) %1, i16 noundef zeroext 4), !noalias !89 - %48 = call noalias noundef nonnull dereferenceable(360) ptr @_Znwm(i64 noundef 360) #20, !noalias !183 - call void @_ZN4llvm3pdb9TpiStreamC1ERNS0_7PDBFileESt10unique_ptrINS_3msf17MappedBlockStreamESt14default_deleteIS6_EE(ptr noundef nonnull align 8 dereferenceable(360) %48, ptr noundef nonnull align 8 dereferenceable(280) %1, ptr noundef nonnull %3) #18, !noalias !183 - %49 = load ptr, ptr %3, align 8, !noalias !183 - %.not.i.i = icmp eq ptr %49, null + %44 = call noalias noundef nonnull dereferenceable(360) ptr @_Znwm(i64 noundef 360) #20, !noalias !183 + call void @_ZN4llvm3pdb9TpiStreamC1ERNS0_7PDBFileESt10unique_ptrINS_3msf17MappedBlockStreamESt14default_deleteIS6_EE(ptr noundef nonnull align 8 dereferenceable(360) %44, ptr noundef nonnull align 8 dereferenceable(280) %1, ptr noundef nonnull %3) #18, !noalias !183 + %45 = load ptr, ptr %3, align 8, !noalias !183 + %.not.i.i = icmp eq ptr %45, null br i1 %.not.i.i, label %_ZSt11make_uniqueIN4llvm3pdb9TpiStreamEJRNS1_7PDBFileESt10unique_ptrINS0_3msf17MappedBlockStreamESt14default_deleteIS7_EEEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_.exit, label %_ZNKSt14default_deleteIN4llvm3msf17MappedBlockStreamEEclEPS2_.exit.i.i -_ZNKSt14default_deleteIN4llvm3msf17MappedBlockStreamEEclEPS2_.exit.i.i: ; preds = %47 - %50 = load ptr, ptr %49, align 8, !noalias !183 - %51 = getelementptr inbounds i8, ptr %50, i64 8 - %52 = load ptr, ptr %51, align 8, !noalias !183 - call void %52(ptr noundef nonnull align 8 dereferenceable(128) %49) #18, !noalias !183 +_ZNKSt14default_deleteIN4llvm3msf17MappedBlockStreamEEclEPS2_.exit.i.i: ; preds = %43 + %46 = load ptr, ptr %45, align 8, !noalias !183 + %47 = getelementptr inbounds i8, ptr %46, i64 8 + %48 = load ptr, ptr %47, align 8, !noalias !183 + call void %48(ptr noundef nonnull align 8 dereferenceable(128) %45) #18, !noalias !183 br label %_ZSt11make_uniqueIN4llvm3pdb9TpiStreamEJRNS1_7PDBFileESt10unique_ptrINS0_3msf17MappedBlockStreamESt14default_deleteIS7_EEEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_.exit -_ZSt11make_uniqueIN4llvm3pdb9TpiStreamEJRNS1_7PDBFileESt10unique_ptrINS0_3msf17MappedBlockStreamESt14default_deleteIS7_EEEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_.exit: ; preds = %47, %_ZNKSt14default_deleteIN4llvm3msf17MappedBlockStreamEEclEPS2_.exit.i.i +_ZSt11make_uniqueIN4llvm3pdb9TpiStreamEJRNS1_7PDBFileESt10unique_ptrINS0_3msf17MappedBlockStreamESt14default_deleteIS7_EEEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_.exit: ; preds = %43, %_ZNKSt14default_deleteIN4llvm3msf17MappedBlockStreamEEclEPS2_.exit.i.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) - call void @_ZN4llvm3pdb9TpiStream6reloadEv(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Error") align 8 %7, ptr noundef nonnull align 8 dereferenceable(360) %48) #18 - %53 = load ptr, ptr %7, align 8 - %.not29 = icmp eq ptr %53, null + call void @_ZN4llvm3pdb9TpiStream6reloadEv(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Error") align 8 %7, ptr noundef nonnull align 8 dereferenceable(360) %44) #18 + %49 = load ptr, ptr %7, align 8 + %.not29 = icmp eq ptr %49, null br i1 %.not29, label %_ZN4llvm5ErrorD2Ev.exit5, label %_ZNKSt14default_deleteIN4llvm3pdb9TpiStreamEEclEPS2_.exit.i _ZN4llvm5ErrorD2Ev.exit5: ; preds = %_ZSt11make_uniqueIN4llvm3pdb9TpiStreamEJRNS1_7PDBFileESt10unique_ptrINS0_3msf17MappedBlockStreamESt14default_deleteIS7_EEEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_.exit - %54 = load ptr, ptr %8, align 8 - store ptr %48, ptr %8, align 8 - %.not.i.i.i.i = icmp eq ptr %54, null + %50 = load ptr, ptr %8, align 8 + store ptr %44, ptr %8, align 8 + %.not.i.i.i.i = icmp eq ptr %50, null br i1 %.not.i.i.i.i, label %_ZN4llvm8ExpectedISt10unique_ptrINS_3msf17MappedBlockStreamESt14default_deleteIS3_EEED2Ev.exit, label %_ZNKSt14default_deleteIN4llvm3pdb9TpiStreamEEclEPS2_.exit.i.i.i.i _ZNKSt14default_deleteIN4llvm3pdb9TpiStreamEEclEPS2_.exit.i.i.i.i: ; preds = %_ZN4llvm5ErrorD2Ev.exit5 - call void @_ZN4llvm3pdb9TpiStreamD1Ev(ptr noundef nonnull align 8 dereferenceable(360) %54) #18 - call void @_ZdlPvm(ptr noundef nonnull %54, i64 noundef 360) #19 + call void @_ZN4llvm3pdb9TpiStreamD1Ev(ptr noundef nonnull align 8 dereferenceable(360) %50) #18 + call void @_ZdlPvm(ptr noundef nonnull %50, i64 noundef 360) #19 %.pre = load ptr, ptr %8, align 8 br label %_ZN4llvm8ExpectedISt10unique_ptrINS_3msf17MappedBlockStreamESt14default_deleteIS3_EEED2Ev.exit _ZNKSt14default_deleteIN4llvm3pdb9TpiStreamEEclEPS2_.exit.i: ; preds = %_ZSt11make_uniqueIN4llvm3pdb9TpiStreamEJRNS1_7PDBFileESt10unique_ptrINS0_3msf17MappedBlockStreamESt14default_deleteIS7_EEEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_.exit - %55 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %56 = load i8, ptr %55, align 8 - %57 = or i8 %56, 1 - store i8 %57, ptr %55, align 8 + %51 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %52 = load i8, ptr %51, align 8 + %53 = or i8 %52, 1 + store i8 %53, ptr %51, align 8 call void @llvm.experimental.noalias.scope.decl(metadata !186) - store ptr %53, ptr %0, align 8, !alias.scope !186 + store ptr %49, ptr %0, align 8, !alias.scope !186 store ptr null, ptr %7, align 8, !noalias !186 - call void @_ZN4llvm3pdb9TpiStreamD1Ev(ptr noundef nonnull align 8 dereferenceable(360) %48) #18 - call void @_ZdlPvm(ptr noundef nonnull %48, i64 noundef 360) #19 + call void @_ZN4llvm3pdb9TpiStreamD1Ev(ptr noundef nonnull align 8 dereferenceable(360) %44) #18 + call void @_ZdlPvm(ptr noundef nonnull %44, i64 noundef 360) #19 br label %_ZN4llvm8ExpectedISt10unique_ptrINS_3msf17MappedBlockStreamESt14default_deleteIS3_EEED2Ev.exit.thread _ZN4llvm8ExpectedISt10unique_ptrINS_3msf17MappedBlockStreamESt14default_deleteIS3_EEED2Ev.exit: ; preds = %_ZNKSt14default_deleteIN4llvm3pdb9TpiStreamEEclEPS2_.exit.i.i.i.i, %_ZN4llvm5ErrorD2Ev.exit5, %2 - %58 = phi ptr [ %.pre, %_ZNKSt14default_deleteIN4llvm3pdb9TpiStreamEEclEPS2_.exit.i.i.i.i ], [ %48, %_ZN4llvm5ErrorD2Ev.exit5 ], [ %9, %2 ] - %59 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %60 = load i8, ptr %59, align 8 - %61 = and i8 %60, -2 - store i8 %61, ptr %59, align 8 - store ptr %58, ptr %0, align 8 + %54 = phi ptr [ %.pre, %_ZNKSt14default_deleteIN4llvm3pdb9TpiStreamEEclEPS2_.exit.i.i.i.i ], [ %44, %_ZN4llvm5ErrorD2Ev.exit5 ], [ %9, %2 ] + %55 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %56 = load i8, ptr %55, align 8 + %57 = and i8 %56, -2 + store i8 %57, ptr %55, align 8 + store ptr %54, ptr %0, align 8 br label %_ZN4llvm8ExpectedISt10unique_ptrINS_3msf17MappedBlockStreamESt14default_deleteIS3_EEED2Ev.exit.thread _ZN4llvm8ExpectedISt10unique_ptrINS_3msf17MappedBlockStreamESt14default_deleteIS3_EEED2Ev.exit.thread: ; preds = %_ZNKSt14default_deleteIN4llvm3pdb9TpiStreamEEclEPS2_.exit.i, %_ZN4llvm5ErrorD2Ev.exit2, %_ZN4llvm8ExpectedISt10unique_ptrINS_3msf17MappedBlockStreamESt14default_deleteIS3_EEED2Ev.exit, %_ZN4llvm5ErrorD2Ev.exit @@ -2641,7 +2636,7 @@ define dso_local noundef zeroext i1 @_ZNK4llvm3pdb7PDBFile15hasPDBIpiStreamEv(pt %5 = load ptr, ptr %4, align 8 %6 = tail call noundef i32 %5(ptr noundef nonnull align 8 dereferenceable(280) %0) #18 %7 = icmp ugt i32 %6, 1 - br i1 %7, label %8, label %20 + br i1 %7, label %8, label %16 8: ; preds = %1 %9 = load ptr, ptr %0, align 8 @@ -2649,21 +2644,16 @@ define dso_local noundef zeroext i1 @_ZNK4llvm3pdb7PDBFile15hasPDBIpiStreamEv(pt %11 = load ptr, ptr %10, align 8 %12 = tail call noundef i32 %11(ptr noundef nonnull align 8 dereferenceable(280) %0) #18 %13 = icmp ult i32 %12, 5 - br i1 %13, label %20, label %_ZN4llvm8ExpectedIRNS_3pdb10InfoStreamEED2Ev.exit + br i1 %13, label %16, label %_ZN4llvm8ExpectedIRNS_3pdb10InfoStreamEED2Ev.exit _ZN4llvm8ExpectedIRNS_3pdb10InfoStreamEED2Ev.exit: ; preds = %8 call void @_ZN4llvm3pdb7PDBFile16getPDBInfoStreamEv(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected.122") align 8 %2, ptr noundef nonnull align 8 dereferenceable(280) %0) - %14 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %15 = load i8, ptr %14, align 8 - %16 = trunc i8 %15 to i1 - %17 = xor i1 %16, true - tail call void @llvm.assume(i1 %17) - %18 = load ptr, ptr %2, align 8 - %19 = tail call noundef zeroext i1 @_ZNK4llvm3pdb10InfoStream16containsIdStreamEv(ptr noundef nonnull align 8 dereferenceable(224) %18) #18 - br label %20 + %14 = load ptr, ptr %2, align 8 + %15 = tail call noundef zeroext i1 @_ZNK4llvm3pdb10InfoStream16containsIdStreamEv(ptr noundef nonnull align 8 dereferenceable(224) %14) #18 + br label %16 -20: ; preds = %8, %1, %_ZN4llvm8ExpectedIRNS_3pdb10InfoStreamEED2Ev.exit - %.0 = phi i1 [ %19, %_ZN4llvm8ExpectedIRNS_3pdb10InfoStreamEED2Ev.exit ], [ false, %1 ], [ false, %8 ] +16: ; preds = %8, %1, %_ZN4llvm8ExpectedIRNS_3pdb10InfoStreamEED2Ev.exit + %.0 = phi i1 [ %15, %_ZN4llvm8ExpectedIRNS_3pdb10InfoStreamEED2Ev.exit ], [ false, %1 ], [ false, %8 ] ret i1 %.0 } diff --git a/bench/llvm/optimized/PDBFileBuilder.cpp.ll b/bench/llvm/optimized/PDBFileBuilder.cpp.ll index 762c02f514c..7addafa3afa 100644 --- a/bench/llvm/optimized/PDBFileBuilder.cpp.ll +++ b/bench/llvm/optimized/PDBFileBuilder.cpp.ll @@ -2621,10 +2621,10 @@ _ZN4llvm14TimeTraceScopeC2ENS_9StringRefE.exit: ; preds = %21, %23 br label %34 34: ; preds = %.lr.ph, %_ZNSt10unique_ptrIN4llvm3msf25WritableMappedBlockStreamESt14default_deleteIS2_EED2Ev.exit - %.032 = phi ptr [ %26, %.lr.ph ], [ %131, %_ZNSt10unique_ptrIN4llvm3msf25WritableMappedBlockStreamESt14default_deleteIS2_EED2Ev.exit ] + %.033 = phi ptr [ %26, %.lr.ph ], [ %131, %_ZNSt10unique_ptrIN4llvm3msf25WritableMappedBlockStreamESt14default_deleteIS2_EED2Ev.exit ] %.sroa.021.031 = phi ptr [ undef, %.lr.ph ], [ %.sroa.021.1, %_ZNSt10unique_ptrIN4llvm3msf25WritableMappedBlockStreamESt14default_deleteIS2_EED2Ev.exit ] - %35 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %.032) #16 - %36 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %.032) #16 + %35 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %.033) #16 + %36 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %.033) #16 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) store i32 0, ptr %5, align 4, !noalias !78 %37 = call noundef zeroext i1 @_ZNK4llvm3pdb14NamedStreamMap3getENS_9StringRefERj(ptr noundef nonnull align 8 dereferenceable(120) %29, ptr %35, i64 %36, ptr noundef nonnull align 4 dereferenceable(4) %5) #16, !noalias !78 @@ -2639,7 +2639,7 @@ _ZN4llvm5ErrorD2Ev.exit.i: ; preds = %34 call void @_ZN4llvm11StringErrorC2ESt10error_codeRKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(57) %38, i32 6, ptr nonnull %39, ptr noundef nonnull align 8 dereferenceable(34) %4) #16, !noalias !84 store ptr getelementptr inbounds inrange(-16, 64) (i8, ptr @_ZTVN4llvm3pdb8RawErrorE, i64 16), ptr %38, align 8, !noalias !84 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4), !noalias !81 - br label %_ZN4llvm8ExpectedIjED2Ev.exit + br label %_ZNK4llvm3pdb14PDBFileBuilder19getNamedStreamIndexENS_9StringRefE.exit 40: ; preds = %34 %41 = load i32, ptr %5, align 4, !noalias !78 @@ -2648,12 +2648,11 @@ _ZN4llvm5ErrorD2Ev.exit.i: ; preds = %34 %.sroa.021.0.insert.mask = and i64 %42, -4294967296 %.sroa.021.0.insert.insert = or disjoint i64 %.sroa.021.0.insert.mask, %.sroa.021.0.insert.ext %43 = inttoptr i64 %.sroa.021.0.insert.insert to ptr - br label %_ZN4llvm8ExpectedIjED2Ev.exit + br label %_ZNK4llvm3pdb14PDBFileBuilder19getNamedStreamIndexENS_9StringRefE.exit -_ZN4llvm8ExpectedIjED2Ev.exit: ; preds = %40, %_ZN4llvm5ErrorD2Ev.exit.i +_ZNK4llvm3pdb14PDBFileBuilder19getNamedStreamIndexENS_9StringRefE.exit: ; preds = %_ZN4llvm5ErrorD2Ev.exit.i, %40 %.sroa.021.1 = phi ptr [ %43, %40 ], [ %38, %_ZN4llvm5ErrorD2Ev.exit.i ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) - call void @llvm.assume(i1 %37) %44 = ptrtoint ptr %.sroa.021.1 to i64 %.sroa.021.0.extract.trunc = trunc i64 %44 to i32 call void @_ZN4llvm23WritableBinaryStreamRefC1ERNS_20WritableBinaryStreamE(ptr noundef nonnull align 8 dereferenceable(48) %7, ptr noundef nonnull align 8 dereferenceable(8) %1) #16 @@ -2663,7 +2662,7 @@ _ZN4llvm8ExpectedIjED2Ev.exit: ; preds = %40, %_ZN4llvm5Error %.not.i.i.i.i.i = icmp eq ptr %46, null br i1 %.not.i.i.i.i.i, label %_ZN4llvm5ErrorD2Ev.exit, label %47 -47: ; preds = %_ZN4llvm8ExpectedIjED2Ev.exit +47: ; preds = %_ZNK4llvm3pdb14PDBFileBuilder19getNamedStreamIndexENS_9StringRefE.exit %48 = getelementptr inbounds nuw i8, ptr %46, i64 8 %49 = load atomic i64, ptr %48 acquire, align 8 %50 = icmp eq i64 %49, 4294967297 @@ -2731,10 +2730,10 @@ _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_cold call void %80(ptr noundef nonnull align 8 dereferenceable(16) %46) #16 br label %_ZN4llvm5ErrorD2Ev.exit -_ZN4llvm5ErrorD2Ev.exit: ; preds = %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv.exit.sink.split.i.i.i.i.i.i, %76, %63, %_ZN4llvm8ExpectedIjED2Ev.exit +_ZN4llvm5ErrorD2Ev.exit: ; preds = %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv.exit.sink.split.i.i.i.i.i.i, %76, %63, %_ZNK4llvm3pdb14PDBFileBuilder19getNamedStreamIndexENS_9StringRefE.exit %81 = load ptr, ptr %6, align 8 call void @_ZN4llvm18BinaryStreamWriterC1ERNS_20WritableBinaryStreamE(ptr noundef nonnull align 8 dereferenceable(64) %8, ptr noundef nonnull align 8 dereferenceable(8) %81) #16 - %82 = getelementptr inbounds nuw i8, ptr %.032, i64 40 + %82 = getelementptr inbounds nuw i8, ptr %.033, i64 40 %83 = load ptr, ptr %82, align 8 %84 = getelementptr inbounds nuw i8, ptr %83, i64 8 %85 = load ptr, ptr %84, align 8 @@ -2834,7 +2833,7 @@ _ZNKSt14default_deleteIN4llvm3msf25WritableMappedBlockStreamEEclEPS2_.exit.i: ; _ZNSt10unique_ptrIN4llvm3msf25WritableMappedBlockStreamESt14default_deleteIS2_EED2Ev.exit: ; preds = %_ZN4llvm18BinaryStreamWriterD2Ev.exit, %_ZNKSt14default_deleteIN4llvm3msf25WritableMappedBlockStreamEEclEPS2_.exit.i store ptr null, ptr %6, align 8 - %131 = getelementptr inbounds i8, ptr %.032, i64 48 + %131 = getelementptr inbounds i8, ptr %.033, i64 48 %.not = icmp eq ptr %131, %28 br i1 %.not, label %._crit_edge, label %34 diff --git a/bench/llvm/optimized/SourceManager.cpp.ll b/bench/llvm/optimized/SourceManager.cpp.ll index 643e6be9734..68b4c68032b 100644 --- a/bench/llvm/optimized/SourceManager.cpp.ll +++ b/bench/llvm/optimized/SourceManager.cpp.ll @@ -13456,90 +13456,85 @@ _ZN4llvm18IntrusiveRefCntPtrIN5clang13DiagnosticIDsEED2Ev.exit: ; preds = %_ZNSt %69 = load ptr, ptr %16, align 8 store ptr %68, ptr %16, align 8 %.not.i.i.i.i15 = icmp eq ptr %69, null - br i1 %.not.i.i.i.i15, label %_ZN4llvm8ExpectedIN5clang12FileEntryRefEED2Ev.exit, label %_ZNKSt14default_deleteIN5clang13SourceManagerEEclEPS1_.exit.i.i.i.i + br i1 %.not.i.i.i.i15, label %_ZNSt10unique_ptrIN5clang13SourceManagerESt14default_deleteIS1_EED2Ev.exit, label %_ZNKSt14default_deleteIN5clang13SourceManagerEEclEPS1_.exit.i.i.i.i _ZNKSt14default_deleteIN5clang13SourceManagerEEclEPS1_.exit.i.i.i.i: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIN5clang13DiagnosticIDsEED2Ev.exit call void @_ZN5clang13SourceManagerD1Ev(ptr noundef nonnull align 8 dereferenceable(696) %69) #26 call void @_ZdlPvm(ptr noundef nonnull %69, i64 noundef 696) #28 - br label %_ZN4llvm8ExpectedIN5clang12FileEntryRefEED2Ev.exit + br label %_ZNSt10unique_ptrIN5clang13SourceManagerESt14default_deleteIS1_EED2Ev.exit -_ZN4llvm8ExpectedIN5clang12FileEntryRefEED2Ev.exit: ; preds = %_ZN4llvm18IntrusiveRefCntPtrIN5clang13DiagnosticIDsEED2Ev.exit, %_ZNKSt14default_deleteIN5clang13SourceManagerEEclEPS1_.exit.i.i.i.i +_ZNSt10unique_ptrIN5clang13SourceManagerESt14default_deleteIS1_EED2Ev.exit: ; preds = %_ZNKSt14default_deleteIN5clang13SourceManagerEEclEPS1_.exit.i.i.i.i, %_ZN4llvm18IntrusiveRefCntPtrIN5clang13DiagnosticIDsEED2Ev.exit %70 = load ptr, ptr %0, align 8 call void @_ZN5clang11FileManager10getFileRefEN4llvm9StringRefEbb(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected") align 8 %14, ptr noundef nonnull align 8 dereferenceable(808) %70, ptr %1, i64 %2, i1 noundef zeroext false, i1 noundef zeroext true) #26 - %71 = getelementptr inbounds nuw i8, ptr %14, i64 8 - %72 = load i8, ptr %71, align 8 - %73 = trunc i8 %72 to i1 - %74 = xor i1 %73, true - call void @llvm.assume(i1 %74) %.sroa.0.0.copyload.i = load ptr, ptr %14, align 8 - %75 = load ptr, ptr %16, align 8 + %71 = load ptr, ptr %16, align 8 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %6) - %76 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZN5clang13SourceManager23getOrCreateContentCacheENS_12FileEntryRefEb(ptr noundef nonnull align 8 dereferenceable(696) %75, ptr %.sroa.0.0.copyload.i, i1 noundef zeroext false) - %77 = getelementptr inbounds nuw i8, ptr %76, i64 16 - %78 = load ptr, ptr %77, align 8 - br label %79 + %72 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZN5clang13SourceManager23getOrCreateContentCacheENS_12FileEntryRefEb(ptr noundef nonnull align 8 dereferenceable(696) %71, ptr %.sroa.0.0.copyload.i, i1 noundef zeroext false) + %73 = getelementptr inbounds nuw i8, ptr %72, i64 16 + %74 = load ptr, ptr %73, align 8 + br label %75 -79: ; preds = %79, %_ZN4llvm8ExpectedIN5clang12FileEntryRefEED2Ev.exit - %.0.i.i.i.i = phi ptr [ %78, %_ZN4llvm8ExpectedIN5clang12FileEntryRefEED2Ev.exit ], [ %83, %79 ] - %80 = getelementptr inbounds nuw i8, ptr %.0.i.i.i.i, i64 8 - %.sroa.0.0.copyload.i.i.i.i.i.i.i.i = load i64, ptr %80, align 8 - %81 = and i64 %.sroa.0.0.copyload.i.i.i.i.i.i.i.i, 4 - %.not.i.i.i.i.i.i.i.i = icmp eq i64 %81, 0 - %82 = and i64 %.sroa.0.0.copyload.i.i.i.i.i.i.i.i, -8 - %83 = inttoptr i64 %82 to ptr - %.not6.i.i.i.i = icmp eq i64 %82, 0 +75: ; preds = %75, %_ZNSt10unique_ptrIN5clang13SourceManagerESt14default_deleteIS1_EED2Ev.exit + %.0.i.i.i.i = phi ptr [ %74, %_ZNSt10unique_ptrIN5clang13SourceManagerESt14default_deleteIS1_EED2Ev.exit ], [ %79, %75 ] + %76 = getelementptr inbounds nuw i8, ptr %.0.i.i.i.i, i64 8 + %.sroa.0.0.copyload.i.i.i.i.i.i.i.i = load i64, ptr %76, align 8 + %77 = and i64 %.sroa.0.0.copyload.i.i.i.i.i.i.i.i, 4 + %.not.i.i.i.i.i.i.i.i = icmp eq i64 %77, 0 + %78 = and i64 %.sroa.0.0.copyload.i.i.i.i.i.i.i.i, -8 + %79 = inttoptr i64 %78 to ptr + %.not6.i.i.i.i = icmp eq i64 %78, 0 %.not.i.i.i.i18 = or i1 %.not.i.i.i.i.i.i.i.i, %.not6.i.i.i.i - br i1 %.not.i.i.i.i18, label %_ZNK5clang12FileEntryRef11isNamedPipeEv.exit.i, label %79, !llvm.loop !4 + br i1 %.not.i.i.i.i18, label %_ZNK5clang12FileEntryRef11isNamedPipeEv.exit.i, label %75, !llvm.loop !4 -_ZNK5clang12FileEntryRef11isNamedPipeEv.exit.i: ; preds = %79 - %84 = getelementptr inbounds nuw i8, ptr %83, i64 76 - %85 = load i8, ptr %84, align 4 - %86 = trunc i8 %85 to i1 - br i1 %86, label %87, label %.preheader +_ZNK5clang12FileEntryRef11isNamedPipeEv.exit.i: ; preds = %75 + %80 = getelementptr inbounds nuw i8, ptr %79, i64 76 + %81 = load i8, ptr %80, align 4 + %82 = trunc i8 %81 to i1 + br i1 %82, label %83, label %.preheader -87: ; preds = %_ZNK5clang12FileEntryRef11isNamedPipeEv.exit.i - %88 = getelementptr inbounds nuw i8, ptr %75, i64 8 - %89 = load ptr, ptr %88, align 8 - %90 = getelementptr inbounds nuw i8, ptr %75, i64 16 - %91 = load ptr, ptr %90, align 8 - call void @_ZNK5clang6SrcMgr12ContentCache15getBufferOrNoneERNS_17DiagnosticsEngineERNS_11FileManagerENS_14SourceLocationE(ptr dead_on_unwind nonnull writable sret(%"class.std::optional.2") align 8 %6, ptr noundef nonnull align 8 dereferenceable(49) %76, ptr noundef nonnull align 8 dereferenceable(1304) %89, ptr noundef nonnull align 8 dereferenceable(808) %91, i32 0) +83: ; preds = %_ZNK5clang12FileEntryRef11isNamedPipeEv.exit.i + %84 = getelementptr inbounds nuw i8, ptr %71, i64 8 + %85 = load ptr, ptr %84, align 8 + %86 = getelementptr inbounds nuw i8, ptr %71, i64 16 + %87 = load ptr, ptr %86, align 8 + call void @_ZNK5clang6SrcMgr12ContentCache15getBufferOrNoneERNS_17DiagnosticsEngineERNS_11FileManagerENS_14SourceLocationE(ptr dead_on_unwind nonnull writable sret(%"class.std::optional.2") align 8 %6, ptr noundef nonnull align 8 dereferenceable(49) %72, ptr noundef nonnull align 8 dereferenceable(1304) %85, ptr noundef nonnull align 8 dereferenceable(808) %87, i32 0) br label %.preheader -.preheader: ; preds = %87, %_ZNK5clang12FileEntryRef11isNamedPipeEv.exit.i - br label %92 +.preheader: ; preds = %83, %_ZNK5clang12FileEntryRef11isNamedPipeEv.exit.i + br label %88 -92: ; preds = %.preheader, %92 - %.0.i.i.i = phi ptr [ %96, %92 ], [ %.sroa.0.0.copyload.i, %.preheader ] - %93 = getelementptr inbounds nuw i8, ptr %.0.i.i.i, i64 8 - %.sroa.0.0.copyload.i.i.i.i.i.i.i = load i64, ptr %93, align 8 - %94 = and i64 %.sroa.0.0.copyload.i.i.i.i.i.i.i, 4 - %.not.i.i.i.i.i.i.i = icmp eq i64 %94, 0 - %95 = and i64 %.sroa.0.0.copyload.i.i.i.i.i.i.i, -8 - %96 = inttoptr i64 %95 to ptr - %.not6.i.i.i = icmp eq i64 %95, 0 +88: ; preds = %.preheader, %88 + %.0.i.i.i = phi ptr [ %92, %88 ], [ %.sroa.0.0.copyload.i, %.preheader ] + %89 = getelementptr inbounds nuw i8, ptr %.0.i.i.i, i64 8 + %.sroa.0.0.copyload.i.i.i.i.i.i.i = load i64, ptr %89, align 8 + %90 = and i64 %.sroa.0.0.copyload.i.i.i.i.i.i.i, 4 + %.not.i.i.i.i.i.i.i = icmp eq i64 %90, 0 + %91 = and i64 %.sroa.0.0.copyload.i.i.i.i.i.i.i, -8 + %92 = inttoptr i64 %91 to ptr + %.not6.i.i.i = icmp eq i64 %91, 0 %.not.i.i.i19 = or i1 %.not.i.i.i.i.i.i.i, %.not6.i.i.i - br i1 %.not.i.i.i19, label %97, label %92, !llvm.loop !4 + br i1 %.not.i.i.i19, label %93, label %88, !llvm.loop !4 -97: ; preds = %92 - %98 = getelementptr inbounds i8, ptr %.0.i.i.i, i64 32 - %99 = load i64, ptr %.0.i.i.i, align 8 - %100 = call noundef i32 @_ZN5clang13SourceManager16createFileIDImplERNS_6SrcMgr12ContentCacheEN4llvm9StringRefENS_14SourceLocationENS1_18CharacteristicKindEij(ptr noundef nonnull align 8 dereferenceable(696) %75, ptr noundef nonnull align 8 dereferenceable(49) %76, ptr nonnull %98, i64 %99, i32 0, i32 noundef 0, i32 noundef 0, i32 noundef 0) +93: ; preds = %88 + %94 = getelementptr inbounds i8, ptr %.0.i.i.i, i64 32 + %95 = load i64, ptr %.0.i.i.i, align 8 + %96 = call noundef i32 @_ZN5clang13SourceManager16createFileIDImplERNS_6SrcMgr12ContentCacheEN4llvm9StringRefENS_14SourceLocationENS1_18CharacteristicKindEij(ptr noundef nonnull align 8 dereferenceable(696) %71, ptr noundef nonnull align 8 dereferenceable(49) %72, ptr nonnull %94, i64 %95, i32 0, i32 noundef 0, i32 noundef 0, i32 noundef 0) call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %6) - %101 = load ptr, ptr %16, align 8 - %102 = getelementptr inbounds nuw i8, ptr %101, i64 448 - store i32 %100, ptr %102, align 8 - %103 = atomicrmw sub ptr %18, i32 1 acq_rel, align 4 - %104 = icmp eq i32 %103, 1 - br i1 %104, label %105, label %_ZN4llvm18IntrusiveRefCntPtrINS_3vfs18InMemoryFileSystemEED2Ev.exit - -105: ; preds = %97 - %106 = load ptr, ptr %17, align 8 - %107 = getelementptr inbounds i8, ptr %106, i64 8 - %108 = load ptr, ptr %107, align 8 - call void %108(ptr noundef nonnull align 8 dereferenceable(12) %17) #26 + %97 = load ptr, ptr %16, align 8 + %98 = getelementptr inbounds nuw i8, ptr %97, i64 448 + store i32 %96, ptr %98, align 8 + %99 = atomicrmw sub ptr %18, i32 1 acq_rel, align 4 + %100 = icmp eq i32 %99, 1 + br i1 %100, label %101, label %_ZN4llvm18IntrusiveRefCntPtrINS_3vfs18InMemoryFileSystemEED2Ev.exit + +101: ; preds = %93 + %102 = load ptr, ptr %17, align 8 + %103 = getelementptr inbounds i8, ptr %102, i64 8 + %104 = load ptr, ptr %103, align 8 + call void %104(ptr noundef nonnull align 8 dereferenceable(12) %17) #26 br label %_ZN4llvm18IntrusiveRefCntPtrINS_3vfs18InMemoryFileSystemEED2Ev.exit -_ZN4llvm18IntrusiveRefCntPtrINS_3vfs18InMemoryFileSystemEED2Ev.exit: ; preds = %97, %105 +_ZN4llvm18IntrusiveRefCntPtrINS_3vfs18InMemoryFileSystemEED2Ev.exit: ; preds = %93, %101 ret void } diff --git a/bench/llvm/optimized/SymbolizableObjectFile.cpp.ll b/bench/llvm/optimized/SymbolizableObjectFile.cpp.ll index 6f4925a57e9..3c434a9788f 100644 --- a/bench/llvm/optimized/SymbolizableObjectFile.cpp.ll +++ b/bench/llvm/optimized/SymbolizableObjectFile.cpp.ll @@ -679,7 +679,7 @@ _ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i51: ; %99 = load i32, ptr %25, align 8 %100 = add i32 %99, -13 %spec.select.i52 = icmp ult i32 %100, 4 - br i1 %spec.select.i52, label %101, label %123 + br i1 %spec.select.i52, label %101, label %119 101: ; preds = %98 %.sroa.098.0.copyload = load i64, ptr %8, align 8 @@ -721,220 +721,215 @@ _ZN4llvm8ExpectedIjED2Ev.exit: ; preds = %108, %108, %108, %1 %115 = getelementptr inbounds i8, ptr %114, i64 40 %116 = load ptr, ptr %115, align 8, !noalias !50 call void %116(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected.52") align 8 %10, ptr noundef nonnull align 8 dereferenceable(48) %113, i64 %.sroa.0.0.copyload.i57) #21 - %117 = getelementptr inbounds nuw i8, ptr %10, i64 8 - %118 = load i8, ptr %117, align 8 - %119 = trunc i8 %118 to i1 - %120 = xor i1 %119, true - call void @llvm.assume(i1 %120) - %121 = load i32, ptr %10, align 8 - %122 = and i32 %121, 128 - %.not = icmp eq i32 %122, 0 - br i1 %.not, label %125, label %_ZN4llvm12ErrorSuccessD2Ev.exit59 + %117 = load i32, ptr %10, align 8 + %118 = and i32 %117, 128 + %.not = icmp eq i32 %118, 0 + br i1 %.not, label %121, label %_ZN4llvm12ErrorSuccessD2Ev.exit59 _ZN4llvm12ErrorSuccessD2Ev.exit59: ; preds = %_ZN4llvm8ExpectedIjED2Ev.exit store ptr null, ptr %0, align 8 br label %_ZN4llvm8ExpectedImED2Ev.exit -123: ; preds = %98 - %124 = load i32, ptr %9, align 8 - switch i32 %124, label %_ZN4llvm12ErrorSuccessD2Ev.exit60 [ - i32 5, label %125 - i32 2, label %125 +119: ; preds = %98 + %120 = load i32, ptr %9, align 8 + switch i32 %120, label %_ZN4llvm12ErrorSuccessD2Ev.exit60 [ + i32 5, label %121 + i32 2, label %121 ] -_ZN4llvm12ErrorSuccessD2Ev.exit60: ; preds = %123 +_ZN4llvm12ErrorSuccessD2Ev.exit60: ; preds = %119 store ptr null, ptr %0, align 8 br label %_ZN4llvm8ExpectedImED2Ev.exit -125: ; preds = %123, %123, %_ZN4llvm8ExpectedIjED2Ev.exit - %126 = load ptr, ptr %14, align 8, !noalias !53 +121: ; preds = %119, %119, %_ZN4llvm8ExpectedIjED2Ev.exit + %122 = load ptr, ptr %14, align 8, !noalias !53 %.sroa.0.0.copyload.i.i61 = load i64, ptr %2, align 8, !noalias !53 - %127 = load ptr, ptr %126, align 8, !noalias !53 - %128 = getelementptr inbounds i8, ptr %127, i64 88 - %129 = load ptr, ptr %128, align 8, !noalias !53 - call void %129(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected.56") align 8 %11, ptr noundef nonnull align 8 dereferenceable(48) %126, i64 %.sroa.0.0.copyload.i.i61) #21 - %130 = getelementptr inbounds nuw i8, ptr %11, i64 8 - %131 = load i8, ptr %130, align 8 - %132 = trunc i8 %131 to i1 - %133 = load i64, ptr %11, align 8 - br i1 %132, label %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i63, label %135 - -_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i63: ; preds = %125 - %134 = inttoptr i64 %133 to ptr + %123 = load ptr, ptr %122, align 8, !noalias !53 + %124 = getelementptr inbounds i8, ptr %123, i64 88 + %125 = load ptr, ptr %124, align 8, !noalias !53 + call void %125(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected.56") align 8 %11, ptr noundef nonnull align 8 dereferenceable(48) %122, i64 %.sroa.0.0.copyload.i.i61) #21 + %126 = getelementptr inbounds nuw i8, ptr %11, i64 8 + %127 = load i8, ptr %126, align 8 + %128 = trunc i8 %127 to i1 + %129 = load i64, ptr %11, align 8 + br i1 %128, label %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i63, label %131 + +_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i63: ; preds = %121 + %130 = inttoptr i64 %129 to ptr store ptr null, ptr %11, align 8, !noalias !56 - br label %175 - -135: ; preds = %125 - %136 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %137 = load i8, ptr %136, align 8 - %138 = trunc i8 %137 to i1 - %139 = shl i64 %133, 8 - %140 = ashr exact i64 %139, 8 - %.0 = select i1 %138, i64 %140, i64 %133 + br label %171 + +131: ; preds = %121 + %132 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %133 = load i8, ptr %132, align 8 + %134 = trunc i8 %133 to i1 + %135 = shl i64 %129, 8 + %136 = ashr exact i64 %135, 8 + %.0 = select i1 %134, i64 %136, i64 %129 %.not44 = icmp eq ptr %4, null - br i1 %.not44, label %155, label %141 - -141: ; preds = %135 - %142 = sub i64 %.0, %5 - store i64 %142, ptr %12, align 8 - %143 = getelementptr inbounds nuw i8, ptr %4, i64 17 - %144 = load i8, ptr %143, align 1 - %145 = zext i8 %144 to i64 - %146 = add i64 %142, %145 - %.not.i.i64 = icmp uge i64 %146, %142 - %147 = add i64 %146, -1 - %148 = getelementptr inbounds nuw i8, ptr %4, i64 8 - %149 = load i64, ptr %148, align 8 - %150 = icmp ugt i64 %149, %147 - %151 = select i1 %.not.i.i64, i1 %150, i1 false - br i1 %151, label %152, label %155 - -152: ; preds = %141 - %153 = zext i8 %144 to i32 - %154 = call noundef i64 @_ZNK4llvm13DataExtractor11getUnsignedEPmjPNS_5ErrorE(ptr noundef nonnull align 8 dereferenceable(18) %4, ptr noundef nonnull %12, i32 noundef %153, ptr noundef null) #21 - br label %155 - -155: ; preds = %141, %152, %135 - %.1 = phi i64 [ %154, %152 ], [ %.0, %141 ], [ %.0, %135 ] - %156 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %157 = load ptr, ptr %156, align 8 - %158 = getelementptr inbounds nuw i8, ptr %157, i64 8 - %159 = load i32, ptr %158, align 8 - %160 = add i32 %159, -21 - %spec.select.i65 = icmp ult i32 %160, -4 + br i1 %.not44, label %151, label %137 + +137: ; preds = %131 + %138 = sub i64 %.0, %5 + store i64 %138, ptr %12, align 8 + %139 = getelementptr inbounds nuw i8, ptr %4, i64 17 + %140 = load i8, ptr %139, align 1 + %141 = zext i8 %140 to i64 + %142 = add i64 %138, %141 + %.not.i.i64 = icmp uge i64 %142, %138 + %143 = add i64 %142, -1 + %144 = getelementptr inbounds nuw i8, ptr %4, i64 8 + %145 = load i64, ptr %144, align 8 + %146 = icmp ugt i64 %145, %143 + %147 = select i1 %.not.i.i64, i1 %146, i1 false + br i1 %147, label %148, label %151 + +148: ; preds = %137 + %149 = zext i8 %140 to i32 + %150 = call noundef i64 @_ZNK4llvm13DataExtractor11getUnsignedEPmjPNS_5ErrorE(ptr noundef nonnull align 8 dereferenceable(18) %4, ptr noundef nonnull %12, i32 noundef %149, ptr noundef null) #21 + br label %151 + +151: ; preds = %137, %148, %131 + %.1 = phi i64 [ %150, %148 ], [ %.0, %137 ], [ %.0, %131 ] + %152 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %153 = load ptr, ptr %152, align 8 + %154 = getelementptr inbounds nuw i8, ptr %153, i64 8 + %155 = load i32, ptr %154, align 8 + %156 = add i32 %155, -21 + %spec.select.i65 = icmp ult i32 %156, -4 %.not.i.i66 = icmp eq i64 %.sroa.6.0.copyload, 0 %or.cond = select i1 %spec.select.i65, i1 true, i1 %.not.i.i66 br i1 %or.cond, label %_ZN4llvm9StringRef13consume_frontES0_.exit, label %_ZNK4llvm9StringRef11starts_withES0_.exit.i -_ZNK4llvm9StringRef11starts_withES0_.exit.i: ; preds = %155 +_ZNK4llvm9StringRef11starts_withES0_.exit.i: ; preds = %151 %lhsc = load i8, ptr %.sroa.0110.0.copyload, align 1 - %161 = icmp eq i8 %lhsc, 95 - br i1 %161, label %_ZNK4llvm9StringRef11starts_withES0_.exit.thread.i, label %_ZN4llvm9StringRef13consume_frontES0_.exit + %157 = icmp eq i8 %lhsc, 95 + br i1 %157, label %_ZNK4llvm9StringRef11starts_withES0_.exit.thread.i, label %_ZN4llvm9StringRef13consume_frontES0_.exit _ZNK4llvm9StringRef11starts_withES0_.exit.thread.i: ; preds = %_ZNK4llvm9StringRef11starts_withES0_.exit.i - %162 = getelementptr inbounds i8, ptr %.sroa.0110.0.copyload, i64 1 - %163 = add i64 %.sroa.6.0.copyload, -1 + %158 = getelementptr inbounds i8, ptr %.sroa.0110.0.copyload, i64 1 + %159 = add i64 %.sroa.6.0.copyload, -1 br label %_ZN4llvm9StringRef13consume_frontES0_.exit -_ZN4llvm9StringRef13consume_frontES0_.exit: ; preds = %_ZNK4llvm9StringRef11starts_withES0_.exit.thread.i, %_ZNK4llvm9StringRef11starts_withES0_.exit.i, %155 - %.sroa.0110.0 = phi ptr [ %.sroa.0110.0.copyload, %155 ], [ %162, %_ZNK4llvm9StringRef11starts_withES0_.exit.thread.i ], [ %.sroa.0110.0.copyload, %_ZNK4llvm9StringRef11starts_withES0_.exit.i ] - %.sroa.6.0 = phi i64 [ %.sroa.6.0.copyload, %155 ], [ %163, %_ZNK4llvm9StringRef11starts_withES0_.exit.thread.i ], [ %.sroa.6.0.copyload, %_ZNK4llvm9StringRef11starts_withES0_.exit.i ] - %164 = load i32, ptr %25, align 8 - %165 = add i32 %164, -13 - %spec.select.i68 = icmp ult i32 %165, 4 - br i1 %spec.select.i68, label %166, label %_ZN4llvm12ErrorSuccessD2Ev.exit70 +_ZN4llvm9StringRef13consume_frontES0_.exit: ; preds = %_ZNK4llvm9StringRef11starts_withES0_.exit.thread.i, %_ZNK4llvm9StringRef11starts_withES0_.exit.i, %151 + %.sroa.0110.0 = phi ptr [ %.sroa.0110.0.copyload, %151 ], [ %158, %_ZNK4llvm9StringRef11starts_withES0_.exit.thread.i ], [ %.sroa.0110.0.copyload, %_ZNK4llvm9StringRef11starts_withES0_.exit.i ] + %.sroa.6.0 = phi i64 [ %.sroa.6.0.copyload, %151 ], [ %159, %_ZNK4llvm9StringRef11starts_withES0_.exit.thread.i ], [ %.sroa.6.0.copyload, %_ZNK4llvm9StringRef11starts_withES0_.exit.i ] + %160 = load i32, ptr %25, align 8 + %161 = add i32 %160, -13 + %spec.select.i68 = icmp ult i32 %161, 4 + br i1 %spec.select.i68, label %162, label %_ZN4llvm12ErrorSuccessD2Ev.exit70 -166: ; preds = %_ZN4llvm9StringRef13consume_frontES0_.exit +162: ; preds = %_ZN4llvm9StringRef13consume_frontES0_.exit %.sroa.085.0.copyload = load i64, ptr %2, align 8 %.sroa.2.0.copyload = load ptr, ptr %14, align 8 - %167 = load ptr, ptr %.sroa.2.0.copyload, align 8 - %168 = getelementptr inbounds i8, ptr %167, i64 464 - %169 = load ptr, ptr %168, align 8 - %170 = call noundef zeroext i8 %169(ptr noundef nonnull align 8 dereferenceable(48) %.sroa.2.0.copyload, i64 %.sroa.085.0.copyload) #21 - %.not45 = icmp eq i8 %170, 0 + %163 = load ptr, ptr %.sroa.2.0.copyload, align 8 + %164 = getelementptr inbounds i8, ptr %163, i64 464 + %165 = load ptr, ptr %164, align 8 + %166 = call noundef zeroext i8 %165(ptr noundef nonnull align 8 dereferenceable(48) %.sroa.2.0.copyload, i64 %.sroa.085.0.copyload) #21 + %.not45 = icmp eq i8 %166, 0 %spec.select = select i1 %.not45, i32 %28, i32 0 br label %_ZN4llvm12ErrorSuccessD2Ev.exit70 -_ZN4llvm12ErrorSuccessD2Ev.exit70: ; preds = %166, %_ZN4llvm9StringRef13consume_frontES0_.exit - %.0120 = phi i32 [ %28, %_ZN4llvm9StringRef13consume_frontES0_.exit ], [ %spec.select, %166 ] - %171 = getelementptr inbounds nuw i8, ptr %1, i64 32 +_ZN4llvm12ErrorSuccessD2Ev.exit70: ; preds = %162, %_ZN4llvm9StringRef13consume_frontES0_.exit + %.0120 = phi i32 [ %28, %_ZN4llvm9StringRef13consume_frontES0_.exit ], [ %spec.select, %162 ] + %167 = getelementptr inbounds nuw i8, ptr %1, i64 32 store i64 %.1, ptr %13, align 8 - %172 = getelementptr inbounds nuw i8, ptr %13, i64 8 - store i64 %3, ptr %172, align 8 - %173 = getelementptr inbounds nuw i8, ptr %13, i64 16 - store ptr %.sroa.0110.0, ptr %173, align 8 + %168 = getelementptr inbounds nuw i8, ptr %13, i64 8 + store i64 %3, ptr %168, align 8 + %169 = getelementptr inbounds nuw i8, ptr %13, i64 16 + store ptr %.sroa.0110.0, ptr %169, align 8 %.sroa.6.0..sroa_idx114 = getelementptr inbounds i8, ptr %13, i64 24 store i64 %.sroa.6.0, ptr %.sroa.6.0..sroa_idx114, align 8 - %174 = getelementptr inbounds nuw i8, ptr %13, i64 32 - store i32 %.0120, ptr %174, align 8 - call void @_ZNSt6vectorIN4llvm9symbolize22SymbolizableObjectFile10SymbolDescESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %171, ptr noundef nonnull align 8 dereferenceable(36) %13) - %.pre = load i8, ptr %130, align 8 - br label %175 - -175: ; preds = %_ZN4llvm12ErrorSuccessD2Ev.exit70, %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i63 - %176 = phi i8 [ %131, %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i63 ], [ %.pre, %_ZN4llvm12ErrorSuccessD2Ev.exit70 ] - %storemerge = phi ptr [ %134, %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i63 ], [ null, %_ZN4llvm12ErrorSuccessD2Ev.exit70 ] + %170 = getelementptr inbounds nuw i8, ptr %13, i64 32 + store i32 %.0120, ptr %170, align 8 + call void @_ZNSt6vectorIN4llvm9symbolize22SymbolizableObjectFile10SymbolDescESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %167, ptr noundef nonnull align 8 dereferenceable(36) %13) + %.pre = load i8, ptr %126, align 8 + br label %171 + +171: ; preds = %_ZN4llvm12ErrorSuccessD2Ev.exit70, %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i63 + %172 = phi i8 [ %127, %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i63 ], [ %.pre, %_ZN4llvm12ErrorSuccessD2Ev.exit70 ] + %storemerge = phi ptr [ %130, %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i63 ], [ null, %_ZN4llvm12ErrorSuccessD2Ev.exit70 ] store ptr %storemerge, ptr %0, align 8 - %177 = trunc i8 %176 to i1 - br i1 %177, label %178, label %_ZN4llvm8ExpectedImED2Ev.exit + %173 = trunc i8 %172 to i1 + br i1 %173, label %174, label %_ZN4llvm8ExpectedImED2Ev.exit -178: ; preds = %175 - %179 = load ptr, ptr %11, align 8 - %.not.i.i71 = icmp eq ptr %179, null +174: ; preds = %171 + %175 = load ptr, ptr %11, align 8 + %.not.i.i71 = icmp eq ptr %175, null br i1 %.not.i.i71, label %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i73, label %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i72 -_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i72: ; preds = %178 - %180 = load ptr, ptr %179, align 8 - %181 = getelementptr inbounds i8, ptr %180, i64 8 - %182 = load ptr, ptr %181, align 8 - call void %182(ptr noundef nonnull align 8 dereferenceable(8) %179) #21 +_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i72: ; preds = %174 + %176 = load ptr, ptr %175, align 8 + %177 = getelementptr inbounds i8, ptr %176, i64 8 + %178 = load ptr, ptr %177, align 8 + call void %178(ptr noundef nonnull align 8 dereferenceable(8) %175) #21 br label %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i73 -_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i73: ; preds = %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i72, %178 +_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i73: ; preds = %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i72, %174 store ptr null, ptr %11, align 8 br label %_ZN4llvm8ExpectedImED2Ev.exit -_ZN4llvm8ExpectedImED2Ev.exit: ; preds = %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i73, %175, %_ZN4llvm12ErrorSuccessD2Ev.exit60, %_ZN4llvm12ErrorSuccessD2Ev.exit59, %_ZN4llvm12ErrorSuccessD2Ev.exit56, %_ZN4llvm12ErrorSuccessD2Ev.exit54, %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i51 - %183 = load i8, ptr %93, align 8 - %184 = trunc i8 %183 to i1 - br i1 %184, label %185, label %_ZN4llvm8ExpectedINS_6object9SymbolRef4TypeEED2Ev.exit +_ZN4llvm8ExpectedImED2Ev.exit: ; preds = %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i73, %171, %_ZN4llvm12ErrorSuccessD2Ev.exit60, %_ZN4llvm12ErrorSuccessD2Ev.exit59, %_ZN4llvm12ErrorSuccessD2Ev.exit56, %_ZN4llvm12ErrorSuccessD2Ev.exit54, %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i51 + %179 = load i8, ptr %93, align 8 + %180 = trunc i8 %179 to i1 + br i1 %180, label %181, label %_ZN4llvm8ExpectedINS_6object9SymbolRef4TypeEED2Ev.exit -185: ; preds = %_ZN4llvm8ExpectedImED2Ev.exit - %186 = load ptr, ptr %9, align 8 - %.not.i.i74 = icmp eq ptr %186, null +181: ; preds = %_ZN4llvm8ExpectedImED2Ev.exit + %182 = load ptr, ptr %9, align 8 + %.not.i.i74 = icmp eq ptr %182, null br i1 %.not.i.i74, label %_ZN4llvm8ExpectedINS_6object9SymbolRef4TypeEED2Ev.exit.sink.split, label %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i75 -_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i75: ; preds = %185 - %187 = load ptr, ptr %186, align 8 - %188 = getelementptr inbounds i8, ptr %187, i64 8 - %189 = load ptr, ptr %188, align 8 - call void %189(ptr noundef nonnull align 8 dereferenceable(8) %186) #21 +_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i75: ; preds = %181 + %183 = load ptr, ptr %182, align 8 + %184 = getelementptr inbounds i8, ptr %183, i64 8 + %185 = load ptr, ptr %184, align 8 + call void %185(ptr noundef nonnull align 8 dereferenceable(8) %182) #21 br label %_ZN4llvm8ExpectedINS_6object9SymbolRef4TypeEED2Ev.exit.sink.split -_ZN4llvm8ExpectedINS_6object9SymbolRef4TypeEED2Ev.exit.sink.split: ; preds = %185, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i75, %_ZNSt6vectorISt4pairIjN4llvm9StringRefEESaIS3_EE17_M_realloc_insertIJRjRS2_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit, %61, %49, %.critedge - %.sink = phi ptr [ %0, %.critedge ], [ %0, %49 ], [ %0, %61 ], [ %0, %_ZNSt6vectorISt4pairIjN4llvm9StringRefEESaIS3_EE17_M_realloc_insertIJRjRS2_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit ], [ %9, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i75 ], [ %9, %185 ] +_ZN4llvm8ExpectedINS_6object9SymbolRef4TypeEED2Ev.exit.sink.split: ; preds = %181, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i75, %_ZNSt6vectorISt4pairIjN4llvm9StringRefEESaIS3_EE17_M_realloc_insertIJRjRS2_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit, %61, %49, %.critedge + %.sink = phi ptr [ %0, %.critedge ], [ %0, %49 ], [ %0, %61 ], [ %0, %_ZNSt6vectorISt4pairIjN4llvm9StringRefEESaIS3_EE17_M_realloc_insertIJRjRS2_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit ], [ %9, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i75 ], [ %9, %181 ] store ptr null, ptr %.sink, align 8 br label %_ZN4llvm8ExpectedINS_6object9SymbolRef4TypeEED2Ev.exit _ZN4llvm8ExpectedINS_6object9SymbolRef4TypeEED2Ev.exit: ; preds = %_ZN4llvm8ExpectedINS_6object9SymbolRef4TypeEED2Ev.exit.sink.split, %_ZN4llvm8ExpectedImED2Ev.exit - %190 = load i8, ptr %33, align 8 - %191 = trunc i8 %190 to i1 - br i1 %191, label %192, label %_ZN4llvm8ExpectedINS_6object16content_iteratorINS1_10SectionRefEEEED2Ev.exit + %186 = load i8, ptr %33, align 8 + %187 = trunc i8 %186 to i1 + br i1 %187, label %188, label %_ZN4llvm8ExpectedINS_6object16content_iteratorINS1_10SectionRefEEEED2Ev.exit -192: ; preds = %_ZN4llvm8ExpectedINS_6object9SymbolRef4TypeEED2Ev.exit - %193 = load ptr, ptr %8, align 8 - %.not.i.i77 = icmp eq ptr %193, null +188: ; preds = %_ZN4llvm8ExpectedINS_6object9SymbolRef4TypeEED2Ev.exit + %189 = load ptr, ptr %8, align 8 + %.not.i.i77 = icmp eq ptr %189, null br i1 %.not.i.i77, label %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i79, label %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i78 -_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i78: ; preds = %192 - %194 = load ptr, ptr %193, align 8 - %195 = getelementptr inbounds i8, ptr %194, i64 8 - %196 = load ptr, ptr %195, align 8 - call void %196(ptr noundef nonnull align 8 dereferenceable(8) %193) #21 +_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i78: ; preds = %188 + %190 = load ptr, ptr %189, align 8 + %191 = getelementptr inbounds i8, ptr %190, i64 8 + %192 = load ptr, ptr %191, align 8 + call void %192(ptr noundef nonnull align 8 dereferenceable(8) %189) #21 br label %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i79 -_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i79: ; preds = %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i78, %192 +_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i79: ; preds = %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i78, %188 store ptr null, ptr %8, align 8 br label %_ZN4llvm8ExpectedINS_6object16content_iteratorINS1_10SectionRefEEEED2Ev.exit _ZN4llvm8ExpectedINS_6object16content_iteratorINS1_10SectionRefEEEED2Ev.exit: ; preds = %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i79, %_ZN4llvm8ExpectedINS_6object9SymbolRef4TypeEED2Ev.exit, %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i - %197 = load i8, ptr %19, align 8 - %198 = trunc i8 %197 to i1 - br i1 %198, label %199, label %_ZN4llvm8ExpectedINS_9StringRefEED2Ev.exit + %193 = load i8, ptr %19, align 8 + %194 = trunc i8 %193 to i1 + br i1 %194, label %195, label %_ZN4llvm8ExpectedINS_9StringRefEED2Ev.exit -199: ; preds = %_ZN4llvm8ExpectedINS_6object16content_iteratorINS1_10SectionRefEEEED2Ev.exit - %200 = load ptr, ptr %7, align 8 - %.not.i.i80 = icmp eq ptr %200, null +195: ; preds = %_ZN4llvm8ExpectedINS_6object16content_iteratorINS1_10SectionRefEEEED2Ev.exit + %196 = load ptr, ptr %7, align 8 + %.not.i.i80 = icmp eq ptr %196, null br i1 %.not.i.i80, label %_ZN4llvm8ExpectedINS_9StringRefEED2Ev.exit, label %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i81 -_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i81: ; preds = %199 - %201 = load ptr, ptr %200, align 8 - %202 = getelementptr inbounds i8, ptr %201, i64 8 - %203 = load ptr, ptr %202, align 8 - call void %203(ptr noundef nonnull align 8 dereferenceable(8) %200) #21 +_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i81: ; preds = %195 + %197 = load ptr, ptr %196, align 8 + %198 = getelementptr inbounds i8, ptr %197, i64 8 + %199 = load ptr, ptr %198, align 8 + call void %199(ptr noundef nonnull align 8 dereferenceable(8) %196) #21 br label %_ZN4llvm8ExpectedINS_9StringRefEED2Ev.exit -_ZN4llvm8ExpectedINS_9StringRefEED2Ev.exit: ; preds = %199, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i81, %_ZN4llvm8ExpectedINS_6object16content_iteratorINS1_10SectionRefEEEED2Ev.exit +_ZN4llvm8ExpectedINS_9StringRefEED2Ev.exit: ; preds = %195, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i81, %_ZN4llvm8ExpectedINS_6object16content_iteratorINS1_10SectionRefEEEED2Ev.exit ret void } diff --git a/bench/llvm/optimized/X86AsmBackend.cpp.ll b/bench/llvm/optimized/X86AsmBackend.cpp.ll index df02a865942..a2c2432b367 100644 --- a/bench/llvm/optimized/X86AsmBackend.cpp.ll +++ b/bench/llvm/optimized/X86AsmBackend.cpp.ll @@ -2491,28 +2491,18 @@ define linkonce_odr hidden void @_ZN4llvm12MCAsmBackend5resetEv(ptr noundef nonn ; Function Attrs: mustprogress nounwind uwtable define internal void @_ZNK12_GLOBAL__N_119DarwinX86AsmBackend24createObjectTargetWriterEv(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.249") align 8 %0, ptr noundef nonnull align 8 dereferenceable(312) %1) unnamed_addr #0 align 2 { -_ZN4llvm8ExpectedIjED2Ev.exit5: +_ZN4llvm8ExpectedIjED2Ev.exit: %2 = alloca %"class.llvm::Expected", align 8 %3 = alloca %"class.llvm::Expected", align 8 %4 = getelementptr inbounds nuw i8, ptr %1, i64 240 call void @_ZN4llvm5MachO10getCPUTypeERKNS_6TripleE(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected") align 8 %2, ptr noundef nonnull align 8 dereferenceable(56) %4) #23 - %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %6 = load i8, ptr %5, align 8 - %7 = trunc i8 %6 to i1 - %8 = xor i1 %7, true - call void @llvm.assume(i1 %8) - %9 = load i32, ptr %2, align 8 + %5 = load i32, ptr %2, align 8 call void @_ZN4llvm5MachO13getCPUSubTypeERKNS_6TripleE(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected") align 8 %3, ptr noundef nonnull align 8 dereferenceable(56) %4) #23 - %10 = getelementptr inbounds nuw i8, ptr %3, i64 8 - %11 = load i8, ptr %10, align 8 - %12 = trunc i8 %11 to i1 - %13 = xor i1 %12, true - call void @llvm.assume(i1 %13) - %14 = load i32, ptr %3, align 8 - %15 = getelementptr inbounds nuw i8, ptr %1, i64 296 - %16 = load i8, ptr %15, align 8 - %17 = trunc i8 %16 to i1 - call void @_ZN4llvm25createX86MachObjectWriterEbjj(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.249") align 8 %0, i1 noundef zeroext %17, i32 noundef %9, i32 noundef %14) #23 + %6 = load i32, ptr %3, align 8 + %7 = getelementptr inbounds nuw i8, ptr %1, i64 296 + %8 = load i8, ptr %7, align 8 + %9 = trunc i8 %8 to i1 + call void @_ZN4llvm25createX86MachObjectWriterEbjj(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.249") align 8 %0, i1 noundef zeroext %9, i32 noundef %5, i32 noundef %6) #23 ret void } diff --git a/bench/llvm/optimized/XCOFFObjectFile.cpp.ll b/bench/llvm/optimized/XCOFFObjectFile.cpp.ll index 048aa951f04..c0d3fd41b6e 100644 --- a/bench/llvm/optimized/XCOFFObjectFile.cpp.ll +++ b/bench/llvm/optimized/XCOFFObjectFile.cpp.ll @@ -3189,7 +3189,7 @@ _ZNK4llvm6object14XCOFFSymbolRef13isCsectSymbolEv.exit: ; preds = %2 i8 3, label %52 i8 0, label %52 i8 1, label %56 - i8 2, label %128 + i8 2, label %124 ] 52: ; preds = %49, %49 @@ -3262,152 +3262,147 @@ _ZN4llvm8ExpectedImED2Ev.exit: ; preds = %64 %89 = getelementptr inbounds i8, ptr %88, i64 88 %90 = load ptr, ptr %89, align 8, !noalias !352 call void %90(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected.6") align 8 %6, ptr noundef nonnull align 8 dereferenceable(48) %87, i64 %.sroa.0.0.copyload.i.i18) #23 - %91 = getelementptr inbounds nuw i8, ptr %6, i64 8 - %92 = load i8, ptr %91, align 8 + %91 = load i64, ptr %6, align 8 + %.not3 = icmp eq i64 %86, %91 + %92 = load i8, ptr %82, align 8 %93 = trunc i8 %92 to i1 - %94 = xor i1 %93, true - call void @llvm.assume(i1 %94) - %95 = load i64, ptr %6, align 8 - %.not3 = icmp eq i64 %86, %95 - %96 = load i8, ptr %82, align 8 - %97 = trunc i8 %96 to i1 - br i1 %97, label %98, label %_ZN4llvm8ExpectedImED2Ev.exit24 - -98: ; preds = %_ZN4llvm8ExpectedImED2Ev.exit - %99 = load ptr, ptr %5, align 8 - %.not.i.i21 = icmp eq ptr %99, null + br i1 %93, label %94, label %_ZN4llvm8ExpectedImED2Ev.exit24 + +94: ; preds = %_ZN4llvm8ExpectedImED2Ev.exit + %95 = load ptr, ptr %5, align 8 + %.not.i.i21 = icmp eq ptr %95, null br i1 %.not.i.i21, label %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i23, label %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i22 -_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i22: ; preds = %98 - %100 = load ptr, ptr %99, align 8 - %101 = getelementptr inbounds i8, ptr %100, i64 8 - %102 = load ptr, ptr %101, align 8 - call void %102(ptr noundef nonnull align 8 dereferenceable(8) %99) #23 +_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i22: ; preds = %94 + %96 = load ptr, ptr %95, align 8 + %97 = getelementptr inbounds i8, ptr %96, i64 8 + %98 = load ptr, ptr %97, align 8 + call void %98(ptr noundef nonnull align 8 dereferenceable(8) %95) #23 br label %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i23 -_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i23: ; preds = %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i22, %98 +_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i23: ; preds = %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i22, %94 store ptr null, ptr %5, align 8 br label %_ZN4llvm8ExpectedImED2Ev.exit24 _ZN4llvm8ExpectedImED2Ev.exit24: ; preds = %_ZN4llvm8ExpectedImED2Ev.exit, %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i23 - br i1 %.not3, label %107, label %103 + br i1 %.not3, label %103, label %99 -103: ; preds = %_ZN4llvm8ExpectedImED2Ev.exit24 - %104 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %105 = load i8, ptr %104, align 8 - %106 = and i8 %105, -2 - store i8 %106, ptr %104, align 8 +99: ; preds = %_ZN4llvm8ExpectedImED2Ev.exit24 + %100 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %101 = load i8, ptr %100, align 8 + %102 = and i8 %101, -2 + store i8 %102, ptr %100, align 8 store i8 1, ptr %0, align 8 br label %_ZN4llvm8ExpectedINS_6object16XCOFFCsectAuxRefEED2Ev.exit49 -107: ; preds = %_ZN4llvm8ExpectedImED2Ev.exit24 +103: ; preds = %_ZN4llvm8ExpectedImED2Ev.exit24 call void @_ZNK4llvm6object14XCOFFSymbolRef19getXCOFFCsectAuxRefEv(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected.55") align 8 %7, ptr noundef nonnull align 8 dereferenceable(16) %4) - %108 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %109 = load i8, ptr %108, align 8 - %110 = trunc i8 %109 to i1 - br i1 %110, label %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i34, label %111 - -111: ; preds = %107 - %112 = load ptr, ptr %7, align 8 - %.not.i.i29 = icmp eq ptr %112, null - %113 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %114 = load ptr, ptr %113, align 8 - %.pn.i.i30 = select i1 %.not.i.i29, ptr %114, ptr %112 + %104 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %105 = load i8, ptr %104, align 8 + %106 = trunc i8 %105 to i1 + br i1 %106, label %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i34, label %107 + +107: ; preds = %103 + %108 = load ptr, ptr %7, align 8 + %.not.i.i29 = icmp eq ptr %108, null + %109 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %110 = load ptr, ptr %109, align 8 + %.pn.i.i30 = select i1 %.not.i.i29, ptr %110, ptr %108 %.in.i.i31 = getelementptr inbounds nuw i8, ptr %.pn.i.i30, i64 10 - %115 = load i8, ptr %.in.i.i31, align 1 - %116 = and i8 %115, 7 - %117 = icmp eq i8 %116, 2 - %118 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %119 = load i8, ptr %118, align 8 - %120 = and i8 %119, -2 - store i8 %120, ptr %118, align 8 - br i1 %117, label %121, label %122 - -121: ; preds = %111 + %111 = load i8, ptr %.in.i.i31, align 1 + %112 = and i8 %111, 7 + %113 = icmp eq i8 %112, 2 + %114 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %115 = load i8, ptr %114, align 8 + %116 = and i8 %115, -2 + store i8 %116, ptr %114, align 8 + br i1 %113, label %117, label %118 + +117: ; preds = %107 store i8 0, ptr %0, align 8 br label %_ZN4llvm8ExpectedINS_6object16XCOFFCsectAuxRefEED2Ev.exit49 -122: ; preds = %111 +118: ; preds = %107 store i8 1, ptr %0, align 8 br label %_ZN4llvm8ExpectedINS_6object16XCOFFCsectAuxRefEED2Ev.exit49 -_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i34: ; preds = %107 - %123 = load i64, ptr %7, align 8, !noalias !355 - %124 = inttoptr i64 %123 to ptr +_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i34: ; preds = %103 + %119 = load i64, ptr %7, align 8, !noalias !355 + %120 = inttoptr i64 %119 to ptr + %121 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %122 = load i8, ptr %121, align 8 + %123 = or i8 %122, 1 + store i8 %123, ptr %121, align 8 + store ptr %120, ptr %0, align 8, !alias.scope !358 + br label %_ZN4llvm8ExpectedINS_6object16XCOFFCsectAuxRefEED2Ev.exit49 + +124: ; preds = %49 %125 = getelementptr inbounds nuw i8, ptr %0, i64 8 %126 = load i8, ptr %125, align 8 - %127 = or i8 %126, 1 + %127 = and i8 %126, -2 store i8 %127, ptr %125, align 8 - store ptr %124, ptr %0, align 8, !alias.scope !358 - br label %_ZN4llvm8ExpectedINS_6object16XCOFFCsectAuxRefEED2Ev.exit49 - -128: ; preds = %49 - %129 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %130 = load i8, ptr %129, align 8 - %131 = and i8 %130, -2 - store i8 %131, ptr %129, align 8 store i8 1, ptr %0, align 8 br label %_ZN4llvm8ExpectedINS_6object16XCOFFCsectAuxRefEED2Ev.exit49 _ZN4llvm5ErrorD2Ev.exit45: ; preds = %49 - %132 = getelementptr inbounds nuw i8, ptr %12, i64 32 - %133 = getelementptr inbounds nuw i8, ptr %12, i64 33 - store i8 1, ptr %133, align 1 + %128 = getelementptr inbounds nuw i8, ptr %12, i64 32 + %129 = getelementptr inbounds nuw i8, ptr %12, i64 33 + store i8 1, ptr %129, align 1 store ptr @.str.70, ptr %12, align 8 - store i8 3, ptr %132, align 8 - %134 = load ptr, ptr %17, align 8 - %135 = ptrtoint ptr %.pn.i4 to i64 - %136 = getelementptr inbounds nuw i8, ptr %134, i64 72 - %137 = load ptr, ptr %136, align 8 - %138 = ptrtoint ptr %137 to i64 - %139 = sub i64 %135, %138 - %140 = udiv i64 %139, 18 - %141 = trunc i64 %140 to i32 - %142 = getelementptr inbounds nuw i8, ptr %13, i64 32 - store i8 9, ptr %142, align 8 - %143 = getelementptr inbounds nuw i8, ptr %13, i64 33 - store i8 1, ptr %143, align 1 - store i32 %141, ptr %13, align 8 + store i8 3, ptr %128, align 8 + %130 = load ptr, ptr %17, align 8 + %131 = ptrtoint ptr %.pn.i4 to i64 + %132 = getelementptr inbounds nuw i8, ptr %130, i64 72 + %133 = load ptr, ptr %132, align 8 + %134 = ptrtoint ptr %133 to i64 + %135 = sub i64 %131, %134 + %136 = udiv i64 %135, 18 + %137 = trunc i64 %136 to i32 + %138 = getelementptr inbounds nuw i8, ptr %13, i64 32 + store i8 9, ptr %138, align 8 + %139 = getelementptr inbounds nuw i8, ptr %13, i64 33 + store i8 1, ptr %139, align 1 + store i32 %137, ptr %13, align 8 call void @_ZN4llvmplERKNS_5TwineES2_(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Twine") align 8 %11, ptr noundef nonnull align 8 dereferenceable(34) %12, ptr noundef nonnull align 8 dereferenceable(34) %13) - %144 = getelementptr inbounds nuw i8, ptr %14, i64 32 - %145 = getelementptr inbounds nuw i8, ptr %14, i64 33 - store i8 1, ptr %145, align 1 + %140 = getelementptr inbounds nuw i8, ptr %14, i64 32 + %141 = getelementptr inbounds nuw i8, ptr %14, i64 33 + store i8 1, ptr %141, align 1 store ptr @.str.71, ptr %14, align 8 - store i8 3, ptr %144, align 8 + store i8 3, ptr %140, align 8 call void @_ZN4llvmplERKNS_5TwineES2_(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Twine") align 8 %10, ptr noundef nonnull align 8 dereferenceable(34) %11, ptr noundef nonnull align 8 dereferenceable(34) %14) - %146 = load i8, ptr %.in.i.i9, align 1 - %147 = and i8 %146, 7 - %148 = zext nneg i8 %147 to i64 - store i64 %148, ptr %16, align 8 + %142 = load i8, ptr %.in.i.i9, align 1 + %143 = and i8 %142, 7 + %144 = zext nneg i8 %143 to i64 + store i64 %144, ptr %16, align 8 store ptr %16, ptr %15, align 8, !alias.scope !361 - %149 = getelementptr inbounds nuw i8, ptr %15, i64 16 - store ptr null, ptr %149, align 8, !alias.scope !361 - %150 = getelementptr inbounds nuw i8, ptr %15, i64 32 - store i8 15, ptr %150, align 8, !alias.scope !361 - %151 = getelementptr inbounds nuw i8, ptr %15, i64 33 - store i8 1, ptr %151, align 1, !alias.scope !361 + %145 = getelementptr inbounds nuw i8, ptr %15, i64 16 + store ptr null, ptr %145, align 8, !alias.scope !361 + %146 = getelementptr inbounds nuw i8, ptr %15, i64 32 + store i8 15, ptr %146, align 8, !alias.scope !361 + %147 = getelementptr inbounds nuw i8, ptr %15, i64 33 + store i8 1, ptr %147, align 1, !alias.scope !361 call void @_ZN4llvmplERKNS_5TwineES2_(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Twine") align 8 %9, ptr noundef nonnull align 8 dereferenceable(34) %10, ptr noundef nonnull align 8 dereferenceable(34) %15) call void @_ZN4llvm6object11createErrorERKNS_5TwineE(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Error") align 8 %8, ptr noundef nonnull align 8 dereferenceable(34) %9) - %152 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %153 = load i8, ptr %152, align 8 - %154 = or i8 %153, 1 - store i8 %154, ptr %152, align 8 + %148 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %149 = load i8, ptr %148, align 8 + %150 = or i8 %149, 1 + store i8 %150, ptr %148, align 8 call void @llvm.experimental.noalias.scope.decl(metadata !364) - %155 = load ptr, ptr %8, align 8, !noalias !364 - store ptr %155, ptr %0, align 8, !alias.scope !364 + %151 = load ptr, ptr %8, align 8, !noalias !364 + store ptr %151, ptr %0, align 8, !alias.scope !364 br label %_ZN4llvm8ExpectedINS_6object16XCOFFCsectAuxRefEED2Ev.exit49 _ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i48: ; preds = %39 - %156 = load i64, ptr %3, align 8, !noalias !367 - %157 = inttoptr i64 %156 to ptr - %158 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %159 = load i8, ptr %158, align 8 - %160 = or i8 %159, 1 - store i8 %160, ptr %158, align 8 - store ptr %157, ptr %0, align 8, !alias.scope !370 + %152 = load i64, ptr %3, align 8, !noalias !367 + %153 = inttoptr i64 %152 to ptr + %154 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %155 = load i8, ptr %154, align 8 + %156 = or i8 %155, 1 + store i8 %156, ptr %154, align 8 + store ptr %153, ptr %0, align 8, !alias.scope !370 br label %_ZN4llvm8ExpectedINS_6object16XCOFFCsectAuxRefEED2Ev.exit49 -_ZN4llvm8ExpectedINS_6object16XCOFFCsectAuxRefEED2Ev.exit49: ; preds = %121, %122, %45, %52, %60, %74, %103, %128, %_ZN4llvm5ErrorD2Ev.exit45, %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i34, %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i48, %35, %_ZNK4llvm6object14XCOFFSymbolRef13isCsectSymbolEv.exit +_ZN4llvm8ExpectedINS_6object16XCOFFCsectAuxRefEED2Ev.exit49: ; preds = %117, %118, %45, %52, %60, %74, %99, %124, %_ZN4llvm5ErrorD2Ev.exit45, %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i34, %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i48, %35, %_ZNK4llvm6object14XCOFFSymbolRef13isCsectSymbolEv.exit ret void } diff --git a/bench/postgres/optimized/wparser_def.ll b/bench/postgres/optimized/wparser_def.ll index 37a761dc7f7..93f986e909c 100644 --- a/bench/postgres/optimized/wparser_def.ll +++ b/bench/postgres/optimized/wparser_def.ll @@ -275,7 +275,7 @@ p_isnotalpha.exit: ; preds = %p_isalpha.exit.thre p_isdigit.exit.thread: ; preds = %50 %51 = trunc i8 %48 to i1 tail call void @llvm.assume(i1 %51) - br label %p_isnotdigit.exit.thread + br label %p_isprint.exit.thread 52: ; preds = %50 %53 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 @@ -296,307 +296,258 @@ p_isdigit.exit: ; preds = %p_isnotalpha.exit, %63 = trunc i8 %62 to i1 tail call void @llvm.assume(i1 %63) %.not.i.i9 = icmp eq ptr %61, null - br i1 %.not.i.i9, label %p_isnotdigit.exit, label %p_isnotdigit.exit.thread - -p_isnotdigit.exit.thread: ; preds = %p_isdigit.exit, %p_isdigit.exit.thread - %.ph = phi ptr [ %.pre49, %p_isdigit.exit.thread ], [ %61, %p_isdigit.exit ] - %.ph83 = phi i8 [ %48, %p_isdigit.exit.thread ], [ %62, %p_isdigit.exit ] - %64 = trunc i8 %.ph83 to i1 - tail call void @llvm.assume(i1 %64) - br label %p_islower.exit.thread + br i1 %.not.i.i9, label %p_isnotdigit.exit, label %p_isprint.exit.thread p_isnotdigit.exit: ; preds = %p_isdigit.exit - %65 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 - %66 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 - %67 = getelementptr inbounds i8, ptr %66, i64 4 - %68 = load i32, ptr %67, align 4 - %69 = sext i32 %68 to i64 - %70 = getelementptr i32, ptr %65, i64 %69 - %71 = load i32, ptr %70, align 4 - %72 = tail call i32 @iswdigit(i32 noundef %71) #16 + %64 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 + %65 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 + %66 = getelementptr inbounds i8, ptr %65, i64 4 + %67 = load i32, ptr %66, align 4 + %68 = sext i32 %67 to i64 + %69 = getelementptr i32, ptr %64, i64 %68 + %70 = load i32, ptr %69, align 4 + %71 = tail call i32 @iswdigit(i32 noundef %70) #16 %.pre50 = load i8, ptr inttoptr (i64 32 to ptr), align 32 %.pre51 = load ptr, ptr inttoptr (i64 24 to ptr), align 8 - %73 = trunc i8 %.pre50 to i1 - tail call void @llvm.assume(i1 %73) + %72 = trunc i8 %.pre50 to i1 + tail call void @llvm.assume(i1 %72) %.not.i12 = icmp eq ptr %.pre51, null - br i1 %.not.i12, label %p_islower.exit, label %p_islower.exit.thread - -p_islower.exit.thread: ; preds = %p_isnotdigit.exit, %p_isnotdigit.exit.thread - %.ph85 = phi ptr [ %.ph, %p_isnotdigit.exit.thread ], [ %.pre51, %p_isnotdigit.exit ] - %.ph86 = phi i8 [ %.ph83, %p_isnotdigit.exit.thread ], [ %.pre50, %p_isnotdigit.exit ] - %74 = trunc i8 %.ph86 to i1 - tail call void @llvm.assume(i1 %74) - br label %p_isnotlower.exit.thread + br i1 %.not.i12, label %p_islower.exit, label %p_isprint.exit.thread p_islower.exit: ; preds = %p_isnotdigit.exit - %75 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 - %76 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 - %77 = getelementptr inbounds i8, ptr %76, i64 4 - %78 = load i32, ptr %77, align 4 - %79 = sext i32 %78 to i64 - %80 = getelementptr i32, ptr %75, i64 %79 - %81 = load i32, ptr %80, align 4 - %82 = tail call i32 @iswlower(i32 noundef %81) #16 + %73 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 + %74 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 + %75 = getelementptr inbounds i8, ptr %74, i64 4 + %76 = load i32, ptr %75, align 4 + %77 = sext i32 %76 to i64 + %78 = getelementptr i32, ptr %73, i64 %77 + %79 = load i32, ptr %78, align 4 + %80 = tail call i32 @iswlower(i32 noundef %79) #16 %.pre52 = load i8, ptr inttoptr (i64 32 to ptr), align 32 %.pre53 = load ptr, ptr inttoptr (i64 24 to ptr), align 8 - %83 = trunc i8 %.pre52 to i1 - tail call void @llvm.assume(i1 %83) + %81 = trunc i8 %.pre52 to i1 + tail call void @llvm.assume(i1 %81) %.not.i.i14 = icmp eq ptr %.pre53, null - br i1 %.not.i.i14, label %p_isnotlower.exit, label %p_isnotlower.exit.thread - -p_isnotlower.exit.thread: ; preds = %p_islower.exit, %p_islower.exit.thread - %.ph88 = phi ptr [ %.ph85, %p_islower.exit.thread ], [ %.pre53, %p_islower.exit ] - %.ph89 = phi i8 [ %.ph86, %p_islower.exit.thread ], [ %.pre52, %p_islower.exit ] - %84 = trunc i8 %.ph89 to i1 - tail call void @llvm.assume(i1 %84) - br label %p_isprint.exit.thread + br i1 %.not.i.i14, label %p_isnotlower.exit, label %p_isprint.exit.thread p_isnotlower.exit: ; preds = %p_islower.exit - %85 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 - %86 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 - %87 = getelementptr inbounds i8, ptr %86, i64 4 + %82 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 + %83 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 + %84 = getelementptr inbounds i8, ptr %83, i64 4 + %85 = load i32, ptr %84, align 4 + %86 = sext i32 %85 to i64 + %87 = getelementptr i32, ptr %82, i64 %86 %88 = load i32, ptr %87, align 4 - %89 = sext i32 %88 to i64 - %90 = getelementptr i32, ptr %85, i64 %89 - %91 = load i32, ptr %90, align 4 - %92 = tail call i32 @iswlower(i32 noundef %91) #16 + %89 = tail call i32 @iswlower(i32 noundef %88) #16 %.pre54 = load i8, ptr inttoptr (i64 32 to ptr), align 32 %.pre55 = load ptr, ptr inttoptr (i64 24 to ptr), align 8 - %93 = trunc i8 %.pre54 to i1 - tail call void @llvm.assume(i1 %93) + %90 = trunc i8 %.pre54 to i1 + tail call void @llvm.assume(i1 %90) %.not.i17 = icmp eq ptr %.pre55, null br i1 %.not.i17, label %p_isprint.exit, label %p_isprint.exit.thread -p_isprint.exit.thread: ; preds = %p_isnotlower.exit, %p_isnotlower.exit.thread - %.ph91 = phi ptr [ %.ph88, %p_isnotlower.exit.thread ], [ %.pre55, %p_isnotlower.exit ] - %.ph92 = phi i8 [ %.ph89, %p_isnotlower.exit.thread ], [ %.pre54, %p_isnotlower.exit ] - %94 = trunc i8 %.ph92 to i1 - tail call void @llvm.assume(i1 %94) - br label %p_isnotprint.exit.thread +p_isprint.exit.thread: ; preds = %p_isnotdigit.exit, %p_isdigit.exit, %p_isdigit.exit.thread, %p_islower.exit, %p_isnotlower.exit + %.ph91 = phi ptr [ %.pre55, %p_isnotlower.exit ], [ %.pre53, %p_islower.exit ], [ %.pre51, %p_isnotdigit.exit ], [ %.pre49, %p_isdigit.exit.thread ], [ %61, %p_isdigit.exit ] + %.ph92 = phi i8 [ %.pre54, %p_isnotlower.exit ], [ %.pre52, %p_islower.exit ], [ %.pre50, %p_isnotdigit.exit ], [ %48, %p_isdigit.exit.thread ], [ %62, %p_isdigit.exit ] + %91 = trunc i8 %.ph92 to i1 + tail call void @llvm.assume(i1 %91) + br label %p_isnotpunct.exit p_isprint.exit: ; preds = %p_isnotlower.exit - %95 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 - %96 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 - %97 = getelementptr inbounds i8, ptr %96, i64 4 + %92 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 + %93 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 + %94 = getelementptr inbounds i8, ptr %93, i64 4 + %95 = load i32, ptr %94, align 4 + %96 = sext i32 %95 to i64 + %97 = getelementptr i32, ptr %92, i64 %96 %98 = load i32, ptr %97, align 4 - %99 = sext i32 %98 to i64 - %100 = getelementptr i32, ptr %95, i64 %99 - %101 = load i32, ptr %100, align 4 - %102 = tail call i32 @iswprint(i32 noundef %101) #16 + %99 = tail call i32 @iswprint(i32 noundef %98) #16 %.pre56 = load i8, ptr inttoptr (i64 32 to ptr), align 32 %.pre57 = load ptr, ptr inttoptr (i64 24 to ptr), align 8 - %103 = trunc i8 %.pre56 to i1 - tail call void @llvm.assume(i1 %103) + %100 = trunc i8 %.pre56 to i1 + tail call void @llvm.assume(i1 %100) %.not.i.i19 = icmp eq ptr %.pre57, null - br i1 %.not.i.i19, label %p_isnotprint.exit, label %p_isnotprint.exit.thread - -p_isnotprint.exit.thread: ; preds = %p_isprint.exit, %p_isprint.exit.thread - %.ph94 = phi ptr [ %.ph91, %p_isprint.exit.thread ], [ %.pre57, %p_isprint.exit ] - %.ph95 = phi i8 [ %.ph92, %p_isprint.exit.thread ], [ %.pre56, %p_isprint.exit ] - %104 = trunc i8 %.ph95 to i1 - tail call void @llvm.assume(i1 %104) - br label %p_ispunct.exit.thread + br i1 %.not.i.i19, label %p_isnotprint.exit, label %p_isnotpunct.exit p_isnotprint.exit: ; preds = %p_isprint.exit - %105 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 - %106 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 - %107 = getelementptr inbounds i8, ptr %106, i64 4 - %108 = load i32, ptr %107, align 4 - %109 = sext i32 %108 to i64 - %110 = getelementptr i32, ptr %105, i64 %109 - %111 = load i32, ptr %110, align 4 - %112 = tail call i32 @iswprint(i32 noundef %111) #16 + %101 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 + %102 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 + %103 = getelementptr inbounds i8, ptr %102, i64 4 + %104 = load i32, ptr %103, align 4 + %105 = sext i32 %104 to i64 + %106 = getelementptr i32, ptr %101, i64 %105 + %107 = load i32, ptr %106, align 4 + %108 = tail call i32 @iswprint(i32 noundef %107) #16 %.pre58 = load i8, ptr inttoptr (i64 32 to ptr), align 32 %.pre59 = load ptr, ptr inttoptr (i64 24 to ptr), align 8 - %113 = trunc i8 %.pre58 to i1 - tail call void @llvm.assume(i1 %113) + %109 = trunc i8 %.pre58 to i1 + tail call void @llvm.assume(i1 %109) %.not.i22 = icmp eq ptr %.pre59, null - br i1 %.not.i22, label %p_ispunct.exit, label %p_ispunct.exit.thread - -p_ispunct.exit.thread: ; preds = %p_isnotprint.exit, %p_isnotprint.exit.thread - %.ph97 = phi ptr [ %.ph94, %p_isnotprint.exit.thread ], [ %.pre59, %p_isnotprint.exit ] - %.ph98 = phi i8 [ %.ph95, %p_isnotprint.exit.thread ], [ %.pre58, %p_isnotprint.exit ] - %114 = trunc i8 %.ph98 to i1 - tail call void @llvm.assume(i1 %114) - br label %p_isnotpunct.exit + br i1 %.not.i22, label %p_ispunct.exit, label %p_isnotpunct.exit p_ispunct.exit: ; preds = %p_isnotprint.exit - %115 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 - %116 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 - %117 = getelementptr inbounds i8, ptr %116, i64 4 - %118 = load i32, ptr %117, align 4 - %119 = sext i32 %118 to i64 - %120 = getelementptr i32, ptr %115, i64 %119 - %121 = load i32, ptr %120, align 4 - %122 = tail call i32 @iswpunct(i32 noundef %121) #16 + %110 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 + %111 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 + %112 = getelementptr inbounds i8, ptr %111, i64 4 + %113 = load i32, ptr %112, align 4 + %114 = sext i32 %113 to i64 + %115 = getelementptr i32, ptr %110, i64 %114 + %116 = load i32, ptr %115, align 4 + %117 = tail call i32 @iswpunct(i32 noundef %116) #16 %.pre60 = load i8, ptr inttoptr (i64 32 to ptr), align 32 %.pre61 = load ptr, ptr inttoptr (i64 24 to ptr), align 8 - %123 = trunc i8 %.pre60 to i1 - tail call void @llvm.assume(i1 %123) + %118 = trunc i8 %.pre60 to i1 + tail call void @llvm.assume(i1 %118) %.not.i.i24 = icmp eq ptr %.pre61, null - br i1 %.not.i.i24, label %124, label %p_isnotpunct.exit - -124: ; preds = %p_ispunct.exit - %125 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 - %126 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 - %127 = getelementptr inbounds i8, ptr %126, i64 4 - %128 = load i32, ptr %127, align 4 - %129 = sext i32 %128 to i64 - %130 = getelementptr i32, ptr %125, i64 %129 - %131 = load i32, ptr %130, align 4 - %132 = tail call i32 @iswpunct(i32 noundef %131) #16 + br i1 %.not.i.i24, label %119, label %p_isnotpunct.exit + +119: ; preds = %p_ispunct.exit + %120 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 + %121 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 + %122 = getelementptr inbounds i8, ptr %121, i64 4 + %123 = load i32, ptr %122, align 4 + %124 = sext i32 %123 to i64 + %125 = getelementptr i32, ptr %120, i64 %124 + %126 = load i32, ptr %125, align 4 + %127 = tail call i32 @iswpunct(i32 noundef %126) #16 %.pre62 = load i8, ptr inttoptr (i64 32 to ptr), align 32 %.pre65.pre = load ptr, ptr inttoptr (i64 24 to ptr), align 8 br label %p_isnotpunct.exit -p_isnotpunct.exit: ; preds = %p_ispunct.exit.thread, %p_ispunct.exit, %124 - %.pre65 = phi ptr [ %.pre61, %p_ispunct.exit ], [ %.pre65.pre, %124 ], [ %.ph97, %p_ispunct.exit.thread ] - %133 = phi i8 [ %.pre60, %p_ispunct.exit ], [ %.pre62, %124 ], [ %.ph98, %p_ispunct.exit.thread ] - %134 = trunc i8 %133 to i1 - br i1 %134, label %135, label %p_isspace.exit +p_isnotpunct.exit: ; preds = %p_isnotprint.exit, %p_isprint.exit, %p_isprint.exit.thread, %p_ispunct.exit, %119 + %.pre65 = phi ptr [ %.pre61, %p_ispunct.exit ], [ %.pre65.pre, %119 ], [ %.pre59, %p_isnotprint.exit ], [ %.ph91, %p_isprint.exit.thread ], [ %.pre57, %p_isprint.exit ] + %128 = phi i8 [ %.pre60, %p_ispunct.exit ], [ %.pre62, %119 ], [ %.pre58, %p_isnotprint.exit ], [ %.ph92, %p_isprint.exit.thread ], [ %.pre56, %p_isprint.exit ] + %129 = trunc i8 %128 to i1 + br i1 %129, label %130, label %p_isspace.exit -135: ; preds = %p_isnotpunct.exit +130: ; preds = %p_isnotpunct.exit %.not.i28 = icmp eq ptr %.pre65, null - br i1 %.not.i28, label %137, label %p_isspace.exit.thread + br i1 %.not.i28, label %132, label %p_isspace.exit.thread -p_isspace.exit.thread: ; preds = %135 - %136 = trunc i8 %133 to i1 - tail call void @llvm.assume(i1 %136) - br label %p_isnotspace.exit.thread +p_isspace.exit.thread: ; preds = %130 + %131 = trunc i8 %128 to i1 + tail call void @llvm.assume(i1 %131) + br label %p_isnotupper.exit -137: ; preds = %135 - %138 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 - %139 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 - %140 = getelementptr inbounds i8, ptr %139, i64 4 - %141 = load i32, ptr %140, align 4 - %142 = sext i32 %141 to i64 - %143 = getelementptr i32, ptr %138, i64 %142 - %144 = load i32, ptr %143, align 4 - %145 = tail call i32 @iswspace(i32 noundef %144) #16 +132: ; preds = %130 + %133 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 + %134 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 + %135 = getelementptr inbounds i8, ptr %134, i64 4 + %136 = load i32, ptr %135, align 4 + %137 = sext i32 %136 to i64 + %138 = getelementptr i32, ptr %133, i64 %137 + %139 = load i32, ptr %138, align 4 + %140 = tail call i32 @iswspace(i32 noundef %139) #16 %.pre63 = load i8, ptr inttoptr (i64 32 to ptr), align 32 %.pre64 = load ptr, ptr inttoptr (i64 24 to ptr), align 8 br label %p_isspace.exit -p_isspace.exit: ; preds = %p_isnotpunct.exit, %137 - %146 = phi ptr [ %.pre65, %p_isnotpunct.exit ], [ %.pre64, %137 ] - %147 = phi i8 [ %133, %p_isnotpunct.exit ], [ %.pre63, %137 ] - %148 = trunc i8 %147 to i1 - tail call void @llvm.assume(i1 %148) - %.not.i.i29 = icmp eq ptr %146, null - br i1 %.not.i.i29, label %p_isnotspace.exit, label %p_isnotspace.exit.thread - -p_isnotspace.exit.thread: ; preds = %p_isspace.exit, %p_isspace.exit.thread - %.ph101 = phi ptr [ %.pre65, %p_isspace.exit.thread ], [ %146, %p_isspace.exit ] - %.ph102 = phi i8 [ %133, %p_isspace.exit.thread ], [ %147, %p_isspace.exit ] - %149 = trunc i8 %.ph102 to i1 - tail call void @llvm.assume(i1 %149) - br label %p_isupper.exit.thread +p_isspace.exit: ; preds = %p_isnotpunct.exit, %132 + %141 = phi ptr [ %.pre65, %p_isnotpunct.exit ], [ %.pre64, %132 ] + %142 = phi i8 [ %128, %p_isnotpunct.exit ], [ %.pre63, %132 ] + %143 = trunc i8 %142 to i1 + tail call void @llvm.assume(i1 %143) + %.not.i.i29 = icmp eq ptr %141, null + br i1 %.not.i.i29, label %p_isnotspace.exit, label %p_isnotupper.exit p_isnotspace.exit: ; preds = %p_isspace.exit - %150 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 - %151 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 - %152 = getelementptr inbounds i8, ptr %151, i64 4 - %153 = load i32, ptr %152, align 4 - %154 = sext i32 %153 to i64 - %155 = getelementptr i32, ptr %150, i64 %154 - %156 = load i32, ptr %155, align 4 - %157 = tail call i32 @iswspace(i32 noundef %156) #16 + %144 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 + %145 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 + %146 = getelementptr inbounds i8, ptr %145, i64 4 + %147 = load i32, ptr %146, align 4 + %148 = sext i32 %147 to i64 + %149 = getelementptr i32, ptr %144, i64 %148 + %150 = load i32, ptr %149, align 4 + %151 = tail call i32 @iswspace(i32 noundef %150) #16 %.pre66 = load i8, ptr inttoptr (i64 32 to ptr), align 32 %.pre67 = load ptr, ptr inttoptr (i64 24 to ptr), align 8 - %158 = trunc i8 %.pre66 to i1 - tail call void @llvm.assume(i1 %158) + %152 = trunc i8 %.pre66 to i1 + tail call void @llvm.assume(i1 %152) %.not.i32 = icmp eq ptr %.pre67, null - br i1 %.not.i32, label %p_isupper.exit, label %p_isupper.exit.thread - -p_isupper.exit.thread: ; preds = %p_isnotspace.exit, %p_isnotspace.exit.thread - %.ph104 = phi ptr [ %.ph101, %p_isnotspace.exit.thread ], [ %.pre67, %p_isnotspace.exit ] - %.ph105 = phi i8 [ %.ph102, %p_isnotspace.exit.thread ], [ %.pre66, %p_isnotspace.exit ] - %159 = trunc i8 %.ph105 to i1 - tail call void @llvm.assume(i1 %159) - br label %p_isnotupper.exit + br i1 %.not.i32, label %p_isupper.exit, label %p_isnotupper.exit p_isupper.exit: ; preds = %p_isnotspace.exit - %160 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 - %161 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 - %162 = getelementptr inbounds i8, ptr %161, i64 4 - %163 = load i32, ptr %162, align 4 - %164 = sext i32 %163 to i64 - %165 = getelementptr i32, ptr %160, i64 %164 - %166 = load i32, ptr %165, align 4 - %167 = tail call i32 @iswupper(i32 noundef %166) #16 + %153 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 + %154 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 + %155 = getelementptr inbounds i8, ptr %154, i64 4 + %156 = load i32, ptr %155, align 4 + %157 = sext i32 %156 to i64 + %158 = getelementptr i32, ptr %153, i64 %157 + %159 = load i32, ptr %158, align 4 + %160 = tail call i32 @iswupper(i32 noundef %159) #16 %.pre68 = load i8, ptr inttoptr (i64 32 to ptr), align 32 %.pre69 = load ptr, ptr inttoptr (i64 24 to ptr), align 8 - %168 = trunc i8 %.pre68 to i1 - tail call void @llvm.assume(i1 %168) + %161 = trunc i8 %.pre68 to i1 + tail call void @llvm.assume(i1 %161) %.not.i.i34 = icmp eq ptr %.pre69, null - br i1 %.not.i.i34, label %169, label %p_isnotupper.exit - -169: ; preds = %p_isupper.exit - %170 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 - %171 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 - %172 = getelementptr inbounds i8, ptr %171, i64 4 - %173 = load i32, ptr %172, align 4 - %174 = sext i32 %173 to i64 - %175 = getelementptr i32, ptr %170, i64 %174 - %176 = load i32, ptr %175, align 4 - %177 = tail call i32 @iswupper(i32 noundef %176) #16 + br i1 %.not.i.i34, label %162, label %p_isnotupper.exit + +162: ; preds = %p_isupper.exit + %163 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 + %164 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 + %165 = getelementptr inbounds i8, ptr %164, i64 4 + %166 = load i32, ptr %165, align 4 + %167 = sext i32 %166 to i64 + %168 = getelementptr i32, ptr %163, i64 %167 + %169 = load i32, ptr %168, align 4 + %170 = tail call i32 @iswupper(i32 noundef %169) #16 %.pre70 = load i8, ptr inttoptr (i64 32 to ptr), align 32 %.pre73.pre = load ptr, ptr inttoptr (i64 24 to ptr), align 8 br label %p_isnotupper.exit -p_isnotupper.exit: ; preds = %p_isupper.exit.thread, %p_isupper.exit, %169 - %.pre73 = phi ptr [ %.pre69, %p_isupper.exit ], [ %.pre73.pre, %169 ], [ %.ph104, %p_isupper.exit.thread ] - %178 = phi i8 [ %.pre68, %p_isupper.exit ], [ %.pre70, %169 ], [ %.ph105, %p_isupper.exit.thread ] - %179 = trunc i8 %178 to i1 - br i1 %179, label %180, label %p_isxdigit.exit +p_isnotupper.exit: ; preds = %p_isnotspace.exit, %p_isspace.exit, %p_isspace.exit.thread, %p_isupper.exit, %162 + %.pre73 = phi ptr [ %.pre69, %p_isupper.exit ], [ %.pre73.pre, %162 ], [ %.pre67, %p_isnotspace.exit ], [ %.pre65, %p_isspace.exit.thread ], [ %141, %p_isspace.exit ] + %171 = phi i8 [ %.pre68, %p_isupper.exit ], [ %.pre70, %162 ], [ %.pre66, %p_isnotspace.exit ], [ %128, %p_isspace.exit.thread ], [ %142, %p_isspace.exit ] + %172 = trunc i8 %171 to i1 + br i1 %172, label %173, label %p_isxdigit.exit -180: ; preds = %p_isnotupper.exit +173: ; preds = %p_isnotupper.exit %.not.i38 = icmp eq ptr %.pre73, null - br i1 %.not.i38, label %182, label %p_isxdigit.exit.thread + br i1 %.not.i38, label %175, label %p_isxdigit.exit.thread -p_isxdigit.exit.thread: ; preds = %180 - %181 = trunc i8 %178 to i1 - tail call void @llvm.assume(i1 %181) +p_isxdigit.exit.thread: ; preds = %173 + %174 = trunc i8 %171 to i1 + tail call void @llvm.assume(i1 %174) br label %p_isnotxdigit.exit -182: ; preds = %180 - %183 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 - %184 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 - %185 = getelementptr inbounds i8, ptr %184, i64 4 - %186 = load i32, ptr %185, align 4 - %187 = sext i32 %186 to i64 - %188 = getelementptr i32, ptr %183, i64 %187 - %189 = load i32, ptr %188, align 4 - %190 = tail call i32 @iswxdigit(i32 noundef %189) #16 +175: ; preds = %173 + %176 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 + %177 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 + %178 = getelementptr inbounds i8, ptr %177, i64 4 + %179 = load i32, ptr %178, align 4 + %180 = sext i32 %179 to i64 + %181 = getelementptr i32, ptr %176, i64 %180 + %182 = load i32, ptr %181, align 4 + %183 = tail call i32 @iswxdigit(i32 noundef %182) #16 %.pre71 = load i8, ptr inttoptr (i64 32 to ptr), align 32 %.pre72 = load ptr, ptr inttoptr (i64 24 to ptr), align 8 br label %p_isxdigit.exit -p_isxdigit.exit: ; preds = %p_isnotupper.exit, %182 - %191 = phi ptr [ %.pre73, %p_isnotupper.exit ], [ %.pre72, %182 ] - %192 = phi i8 [ %178, %p_isnotupper.exit ], [ %.pre71, %182 ] - %193 = trunc i8 %192 to i1 - tail call void @llvm.assume(i1 %193) - %.not.i.i39 = icmp eq ptr %191, null - br i1 %.not.i.i39, label %194, label %p_isnotxdigit.exit - -194: ; preds = %p_isxdigit.exit - %195 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 - %196 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 - %197 = getelementptr inbounds i8, ptr %196, i64 4 - %198 = load i32, ptr %197, align 4 - %199 = sext i32 %198 to i64 - %200 = getelementptr i32, ptr %195, i64 %199 - %201 = load i32, ptr %200, align 4 - %202 = tail call i32 @iswxdigit(i32 noundef %201) #16 +p_isxdigit.exit: ; preds = %p_isnotupper.exit, %175 + %184 = phi ptr [ %.pre73, %p_isnotupper.exit ], [ %.pre72, %175 ] + %185 = phi i8 [ %171, %p_isnotupper.exit ], [ %.pre71, %175 ] + %186 = trunc i8 %185 to i1 + tail call void @llvm.assume(i1 %186) + %.not.i.i39 = icmp eq ptr %184, null + br i1 %.not.i.i39, label %187, label %p_isnotxdigit.exit + +187: ; preds = %p_isxdigit.exit + %188 = load ptr, ptr inttoptr (i64 16 to ptr), align 16 + %189 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 + %190 = getelementptr inbounds i8, ptr %189, i64 4 + %191 = load i32, ptr %190, align 4 + %192 = sext i32 %191 to i64 + %193 = getelementptr i32, ptr %188, i64 %192 + %194 = load i32, ptr %193, align 4 + %195 = tail call i32 @iswxdigit(i32 noundef %194) #16 br label %p_isnotxdigit.exit -p_isnotxdigit.exit: ; preds = %p_isxdigit.exit.thread, %p_isxdigit.exit, %194 - %203 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 - %204 = getelementptr inbounds i8, ptr %203, i64 8 - %205 = load i32, ptr %204, align 8 - %206 = icmp ne i32 %205, 1 - tail call void @llvm.assume(i1 %206) +p_isnotxdigit.exit: ; preds = %p_isxdigit.exit.thread, %p_isxdigit.exit, %187 + %196 = load ptr, ptr inttoptr (i64 40 to ptr), align 8 + %197 = getelementptr inbounds i8, ptr %196, i64 8 + %198 = load i32, ptr %197, align 8 + %199 = icmp ne i32 %198, 1 + tail call void @llvm.assume(i1 %199) ret void } diff --git a/bench/proj/optimized/io.cpp.ll b/bench/proj/optimized/io.cpp.ll index 0a1836030e4..cd29fb8082f 100644 --- a/bench/proj/optimized/io.cpp.ll +++ b/bench/proj/optimized/io.cpp.ll @@ -45771,7 +45771,7 @@ _ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5osgeo4proj6commo br label %.loopexit547 .loopexit547: ; preds = %292, %298 - %.merged297 = phi { ptr, i32 } [ %299, %298 ], [ %.pn258.pn.pn.pn, %292 ] + %.merged291 = phi { ptr, i32 } [ %299, %298 ], [ %.pn258.pn.pn.pn, %292 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #39 br label %446 @@ -46230,7 +46230,7 @@ _ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5osgeo4proj6commo br label %446 446: ; preds = %445, %353, %.loopexit547, %280 - %.merged296 = phi { ptr, i32 } [ %.merged297, %.loopexit547 ], [ %281, %280 ], [ %.pn247.pn.pn.pn.pn.pn.pn.pn.pn.pn, %445 ], [ %.pn231, %353 ] + %.merged290 = phi { ptr, i32 } [ %.merged291, %.loopexit547 ], [ %281, %280 ], [ %.pn247.pn.pn.pn.pn.pn.pn.pn.pn.pn, %445 ], [ %.pn231, %353 ] call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5osgeo4proj6common7MeasureESt4lessIS5_ESaISt4pairIKS5_S9_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %17) #39 br label %1445 @@ -47581,17 +47581,17 @@ _ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation14ParameterValueEEED2 br label %1020 1017: ; preds = %1015, %1002, %990, %851 - %.merged295 = phi { ptr, i32 } [ %.pn287519, %1015 ], [ %.pn283.pn.pn, %1002 ], [ %991, %990 ], [ %852, %851 ] + %.merged297 = phi { ptr, i32 } [ %.pn287519, %1015 ], [ %.pn283.pn.pn, %1002 ], [ %991, %990 ], [ %852, %851 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #39 br label %1018 1018: ; preds = %1017, %849 - %.merged294 = phi { ptr, i32 } [ %.merged295, %1017 ], [ %850, %849 ] + %.merged296 = phi { ptr, i32 } [ %.merged297, %1017 ], [ %850, %849 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #39 br label %1019 1019: ; preds = %1018, %847 - %.merged293 = phi { ptr, i32 } [ %.merged294, %1018 ], [ %848, %847 ] + %.merged295 = phi { ptr, i32 } [ %.merged296, %1018 ], [ %848, %847 ] call void @_ZN5osgeo4proj4util11PropertyMapD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #39 br label %.loopexit.split-lp @@ -48351,7 +48351,7 @@ _ZNSt6vectorIbSaIbEED2Ev.exit: ; preds = %_ZN7dropbox6oxygen2 br label %.loopexit.split-lp .loopexit.split-lp: ; preds = %.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %1349, %1284, %1162, %1152, %1019 - %.merged292 = phi { ptr, i32 } [ %.merged293, %1019 ], [ %.pn278.pn, %1162 ], [ %.pn276, %1152 ], [ %.pn274, %1349 ], [ %.pn272, %1284 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit534, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit539, %.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ] + %.merged294 = phi { ptr, i32 } [ %.merged295, %1019 ], [ %.pn278.pn, %1162 ], [ %.pn276, %1152 ], [ %.pn274, %1349 ], [ %.pn272, %1284 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit534, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit539, %.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ] %1350 = load ptr, ptr %63, align 8 %.not.i.i.i450 = icmp eq ptr %1350, null br i1 %.not.i.i.i450, label %_ZNSt6vectorIbSaIbEED2Ev.exit454, label %1351 @@ -48373,12 +48373,12 @@ _ZNSt6vectorIbSaIbEED2Ev.exit: ; preds = %_ZN7dropbox6oxygen2 br label %_ZNSt6vectorIbSaIbEED2Ev.exit454 _ZNSt6vectorIbSaIbEED2Ev.exit454: ; preds = %1351, %.loopexit.split-lp, %787 - %.merged291 = phi { ptr, i32 } [ %788, %787 ], [ %.merged292, %.loopexit.split-lp ], [ %.merged292, %1351 ] + %.merged293 = phi { ptr, i32 } [ %788, %787 ], [ %.merged294, %.loopexit.split-lp ], [ %.merged294, %1351 ] call void @_ZN5osgeo4proj4util11PropertyMapD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #39 br label %1359 1359: ; preds = %.loopexit542, %.loopexit.split-lp543, %774, %_ZNSt6vectorIbSaIbEED2Ev.exit454, %592 - %.merged290 = phi { ptr, i32 } [ %.merged291, %_ZNSt6vectorIbSaIbEED2Ev.exit454 ], [ %775, %774 ], [ %593, %592 ], [ %lpad.loopexit544, %.loopexit542 ], [ %lpad.loopexit.split-lp545, %.loopexit.split-lp543 ] + %.merged292 = phi { ptr, i32 } [ %.merged293, %_ZNSt6vectorIbSaIbEED2Ev.exit454 ], [ %775, %774 ], [ %593, %592 ], [ %lpad.loopexit544, %.loopexit542 ], [ %lpad.loopexit.split-lp545, %.loopexit.split-lp543 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #39 br label %1445 @@ -48592,7 +48592,7 @@ _ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation18Operatio ret void 1445: ; preds = %1359, %580, %446, %237, %116 - %.merged = phi { ptr, i32 } [ %.merged290, %1359 ], [ %.pn263.pn.pn, %237 ], [ %117, %116 ], [ %.merged296, %446 ], [ %.merged289, %580 ] + %.merged = phi { ptr, i32 } [ %.merged292, %1359 ], [ %.pn263.pn.pn, %237 ], [ %117, %116 ], [ %.merged290, %446 ], [ %.merged289, %580 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation14ParameterValueEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #39 call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation18OperationParameterEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #39 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #39 @@ -110351,7 +110351,7 @@ _ZN5osgeo4proj2io10JSONParserD2Ev.exit: ; preds = %386, %404, %417, %_ br label %428 428: ; preds = %385, %426, %_ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEED2Ev.exit574 - %.merged529 = phi { ptr, i32 } [ %427, %426 ], [ %.pn410, %385 ], [ %361, %_ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEED2Ev.exit574 ] + %.merged531 = phi { ptr, i32 } [ %427, %426 ], [ %.pn410, %385 ], [ %361, %_ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEED2Ev.exit574 ] call void @_ZN8nlohmann10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #39 br label %2041 @@ -114521,7 +114521,7 @@ _ZN5osgeo4proj4util15BaseObjectNNPtrC2INS0_3crs11CompoundCRSEEEON7dropbox6oxygen br label %2039 _ZNSt6vectorIN5osgeo4proj2io16AuthorityFactory10ObjectTypeESaIS4_EED2Ev.exit721: ; preds = %2000, %1997, %.thread805, %.thread809, %1993, %1942 - %.merged531 = phi { ptr, i32 } [ %1994, %1993 ], [ %.pn432.pn.pn.pn.pn.pn.pn.pn, %1942 ], [ %1996, %.thread809 ], [ %1995, %.thread805 ], [ %1998, %1997 ], [ %1998, %2000 ] + %.merged530 = phi { ptr, i32 } [ %1994, %1993 ], [ %.pn432.pn.pn.pn.pn.pn.pn.pn, %1942 ], [ %1996, %.thread809 ], [ %1995, %.thread805 ], [ %1998, %1997 ], [ %1998, %2000 ] call void @_ZNSt10shared_ptrIN5osgeo4proj3crs11CompoundCRSEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %159) #39 call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj2io16AuthorityFactoryEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %155) #39 br label %2040 @@ -114556,7 +114556,7 @@ _ZNSt6vectorIN5osgeo4proj2io16AuthorityFactory10ObjectTypeESaIS4_EED2Ev.exit721: br label %_ZN8nlohmann10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev.exit582 2040: ; preds = %1737, %1777, %1739, %2037, %_ZNSt6vectorIN5osgeo4proj2io16AuthorityFactory10ObjectTypeESaIS4_EED2Ev.exit721, %1906, %1826, %1792, %1741, %1709, %1616, %1609, %983, %976, %847, %610, %608 - %.merged530 = phi { ptr, i32 } [ %.pn502.pn.pn, %1609 ], [ %611, %610 ], [ %984, %983 ], [ %.pn455.pn, %1709 ], [ %1617, %1616 ], [ %1742, %1741 ], [ %1740, %1739 ], [ %1738, %1737 ], [ %.pn445.pn.pn.pn, %1792 ], [ %1827, %1826 ], [ %2038, %2037 ], [ %.merged531, %_ZNSt6vectorIN5osgeo4proj2io16AuthorityFactory10ObjectTypeESaIS4_EED2Ev.exit721 ], [ %1907, %1906 ], [ %1778, %1777 ], [ %.pn523.pn, %847 ], [ %609, %608 ], [ %.pn418.pn.pn.pn.pn.pn.pn.pn.pn.pn, %976 ] + %.merged529 = phi { ptr, i32 } [ %.pn502.pn.pn, %1609 ], [ %611, %610 ], [ %984, %983 ], [ %.pn455.pn, %1709 ], [ %1617, %1616 ], [ %1742, %1741 ], [ %1740, %1739 ], [ %1738, %1737 ], [ %.pn445.pn.pn.pn, %1792 ], [ %1827, %1826 ], [ %2038, %2037 ], [ %.merged530, %_ZNSt6vectorIN5osgeo4proj2io16AuthorityFactory10ObjectTypeESaIS4_EED2Ev.exit721 ], [ %1907, %1906 ], [ %1778, %1777 ], [ %.pn523.pn, %847 ], [ %609, %608 ], [ %.pn418.pn.pn.pn.pn.pn.pn.pn.pn.pn, %976 ] call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #39 br label %2041 @@ -114564,7 +114564,7 @@ _ZN8nlohmann10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_trai ret void 2041: ; preds = %2040, %594, %576, %545, %460, %453, %428, %286, %186 - %.merged = phi { ptr, i32 } [ %187, %186 ], [ %461, %460 ], [ %546, %545 ], [ %577, %576 ], [ %.merged530, %2040 ], [ %595, %594 ], [ %.pn412, %453 ], [ %.merged529, %428 ], [ %.merged532, %286 ] + %.merged = phi { ptr, i32 } [ %187, %186 ], [ %461, %460 ], [ %546, %545 ], [ %577, %576 ], [ %.merged529, %2040 ], [ %595, %594 ], [ %.pn412, %453 ], [ %.merged531, %428 ], [ %.merged532, %286 ] resume { ptr, i32 } %.merged 2042: ; preds = %844, %834, %385, %281, %244 diff --git a/bench/yosys/optimized/logger.ll b/bench/yosys/optimized/logger.ll index 459adcf2b9a..c1d873bf4db 100644 --- a/bench/yosys/optimized/logger.ll +++ b/bench/yosys/optimized/logger.ll @@ -1356,7 +1356,7 @@ _ZNSt7__cxx1111basic_regexIcNS_12regex_traitsIcEEED2Ev.exit: ; preds = %_ZNSt6ve to label %161 unwind label %520 161: ; preds = %159, %.body, %91 - %.merged69 = phi { ptr, i32 } [ %160, %159 ], [ %.pn67, %.body ], [ %92, %91 ] + %.merged70 = phi { ptr, i32 } [ %160, %159 ], [ %.pn67, %.body ], [ %92, %91 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #24 br label %519 @@ -1574,7 +1574,7 @@ _ZNSt7__cxx1111basic_regexIcNS_12regex_traitsIcEEED2Ev.exit86: ; preds = %_ZNSt6 to label %258 unwind label %520 258: ; preds = %256, %.body74, %188 - %.merged72 = phi { ptr, i32 } [ %257, %256 ], [ %.pn65, %.body74 ], [ %189, %188 ] + %.merged71 = phi { ptr, i32 } [ %257, %256 ], [ %.pn65, %.body74 ], [ %189, %188 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #24 br label %519 @@ -1792,7 +1792,7 @@ _ZNSt7__cxx1111basic_regexIcNS_12regex_traitsIcEEED2Ev.exit99: ; preds = %_ZNSt6 to label %355 unwind label %520 355: ; preds = %353, %.body87, %285 - %.merged73 = phi { ptr, i32 } [ %354, %353 ], [ %.pn63, %.body87 ], [ %286, %285 ] + %.merged69 = phi { ptr, i32 } [ %354, %353 ], [ %.pn63, %.body87 ], [ %286, %285 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #24 br label %519 @@ -2121,12 +2121,12 @@ _ZNSt7__cxx1111basic_regexIcNS_12regex_traitsIcEEED2Ev.exit99: ; preds = %_ZNSt6 br label %501 488: ; preds = %.loopexit105, %.loopexit.split-lp106, %485, %476 - %.merged71 = phi { ptr, i32 } [ %486, %485 ], [ %.pn, %476 ], [ %lpad.loopexit107, %.loopexit105 ], [ %lpad.loopexit.split-lp108, %.loopexit.split-lp106 ] + %.merged73 = phi { ptr, i32 } [ %486, %485 ], [ %.pn, %476 ], [ %lpad.loopexit107, %.loopexit105 ], [ %lpad.loopexit.split-lp108, %.loopexit.split-lp106 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #24 br label %489 489: ; preds = %.loopexit, %.loopexit.split-lp, %488 - %.merged70 = phi { ptr, i32 } [ %.merged71, %488 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] + %.merged72 = phi { ptr, i32 } [ %.merged73, %488 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #24 br label %519 @@ -2206,7 +2206,7 @@ _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.ex br label %519 519: ; preds = %517, %489, %386, %355, %258, %161 - %.merged = phi { ptr, i32 } [ %.merged69, %161 ], [ %.merged72, %258 ], [ %.merged73, %355 ], [ %387, %386 ], [ %.merged70, %489 ], [ %518, %517 ] + %.merged = phi { ptr, i32 } [ %.merged70, %161 ], [ %.merged71, %258 ], [ %.merged69, %355 ], [ %387, %386 ], [ %.merged72, %489 ], [ %518, %517 ] resume { ptr, i32 } %.merged 520: ; preds = %485, %353, %256, %159 diff --git a/bench/zed-rs/optimized/0b032pjjfhzfqpvy5k7rem7aa.ll b/bench/zed-rs/optimized/0b032pjjfhzfqpvy5k7rem7aa.ll index 94c05d1d844..58462184aa6 100644 --- a/bench/zed-rs/optimized/0b032pjjfhzfqpvy5k7rem7aa.ll +++ b/bench/zed-rs/optimized/0b032pjjfhzfqpvy5k7rem7aa.ll @@ -10351,7 +10351,7 @@ define hidden void @"_ZN4text5patch14Patch$LT$T$GT$7compose17h8f0d4e2d5f30d75bE" %.sroa.21.0 = phi i64 [ undef, %3 ], [ %.sroa.21.0.be, %.backedge.backedge ] %.sroa.24.0 = phi ptr [ %6, %3 ], [ %.sroa.24.1, %.backedge.backedge ] %15 = phi i64 [ 2, %3 ], [ %.be, %.backedge.backedge ] - %16 = phi i64 [ 2, %3 ], [ %.be450, %.backedge.backedge ] + %16 = phi i64 [ 2, %3 ], [ %.be449, %.backedge.backedge ] %.sroa.0153.0 = phi i64 [ 0, %3 ], [ %.sroa.0153.0.be, %.backedge.backedge ] %.sroa.0.0 = phi i64 [ 0, %3 ], [ %.sroa.0.0.be, %.backedge.backedge ] %17 = icmp eq i64 %16, 2 @@ -10430,9 +10430,9 @@ define hidden void @"_ZN4text5patch14Patch$LT$T$GT$7compose17h8f0d4e2d5f30d75bE" .cont316.cont: ; preds = %47 %48 = icmp ult i64 %.sroa.17.1, %.sroa.6372.1 - br i1 %48, label %.cont330, label %.cont387 + br i1 %48, label %.cont330, label %.cont386 -.cont387: ; preds = %.cont316.cont +.cont386: ; preds = %.cont316.cont %49 = sub i64 %.sroa.16.1, %.sroa.0153.0 %50 = add i64 %49, %.sroa.0.0 %51 = sub nuw i64 %.sroa.17.1, %.sroa.6372.1 @@ -10445,7 +10445,7 @@ define hidden void @"_ZN4text5patch14Patch$LT$T$GT$7compose17h8f0d4e2d5f30d75bE" %.sroa.0.0.i.i = and i1 %54, %55 br i1 %.sroa.0.0.i.i, label %.cont.cont, label %56 -56: ; preds = %.cont387 +56: ; preds = %.cont386 %57 = load i64, ptr %.sroa.5.0..sroa_idx, align 8, !alias.scope !2943, !noalias !2946, !noundef !7 %.not.i = icmp eq i64 %57, 0 br i1 %.not.i, label %58, label %63 @@ -10588,12 +10588,12 @@ define hidden void @"_ZN4text5patch14Patch$LT$T$GT$7compose17h8f0d4e2d5f30d75bE" store i64 %82, ptr %103, align 8, !noalias !2984 br label %.cont.cont -.cont.cont: ; preds = %102, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i61", %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i63", %.cont387, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i", %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i", %76 - %.sroa.6372.2 = phi i64 [ %.sroa.17.1, %76 ], [ %.sroa.17.1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i" ], [ %.sroa.17.1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i" ], [ %.sroa.17.1, %.cont387 ], [ %.sroa.6372.1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i63" ], [ %.sroa.6372.1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i61" ], [ %.sroa.6372.1, %102 ] - %.sroa.16.2 = phi i64 [ %.sroa.0.0.sroa.speculated.i.i, %76 ], [ %.sroa.0.0.sroa.speculated.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i" ], [ %.sroa.0.0.sroa.speculated.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i" ], [ %.sroa.0.0.sroa.speculated.i.i, %.cont387 ], [ %.sroa.16.1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i63" ], [ %.sroa.16.1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i61" ], [ %.sroa.16.1, %102 ] - %.sroa.6.2 = phi i64 [ %.sroa.6.1, %76 ], [ %.sroa.6.1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i" ], [ %.sroa.6.1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i" ], [ %.sroa.6.1, %.cont387 ], [ %.sroa.0.0.sroa.speculated.i.i53, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i63" ], [ %.sroa.0.0.sroa.speculated.i.i53, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i61" ], [ %.sroa.0.0.sroa.speculated.i.i53, %102 ] - %storemerge32 = phi i64 [ %52, %76 ], [ %52, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i" ], [ %52, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i" ], [ %52, %.cont387 ], [ %.sroa.0.0.sroa.speculated.i.i53, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i63" ], [ %.sroa.0.0.sroa.speculated.i.i53, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i61" ], [ %.sroa.0.0.sroa.speculated.i.i53, %102 ] - %storemerge31 = phi i64 [ %.sroa.0.0.sroa.speculated.i.i, %76 ], [ %.sroa.0.0.sroa.speculated.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i" ], [ %.sroa.0.0.sroa.speculated.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i" ], [ %.sroa.0.0.sroa.speculated.i.i, %.cont387 ], [ %82, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i63" ], [ %82, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i61" ], [ %82, %102 ] +.cont.cont: ; preds = %102, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i61", %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i63", %.cont386, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i", %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i", %76 + %.sroa.6372.2 = phi i64 [ %.sroa.17.1, %76 ], [ %.sroa.17.1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i" ], [ %.sroa.17.1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i" ], [ %.sroa.17.1, %.cont386 ], [ %.sroa.6372.1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i63" ], [ %.sroa.6372.1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i61" ], [ %.sroa.6372.1, %102 ] + %.sroa.16.2 = phi i64 [ %.sroa.0.0.sroa.speculated.i.i, %76 ], [ %.sroa.0.0.sroa.speculated.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i" ], [ %.sroa.0.0.sroa.speculated.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i" ], [ %.sroa.0.0.sroa.speculated.i.i, %.cont386 ], [ %.sroa.16.1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i63" ], [ %.sroa.16.1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i61" ], [ %.sroa.16.1, %102 ] + %.sroa.6.2 = phi i64 [ %.sroa.6.1, %76 ], [ %.sroa.6.1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i" ], [ %.sroa.6.1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i" ], [ %.sroa.6.1, %.cont386 ], [ %.sroa.0.0.sroa.speculated.i.i53, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i63" ], [ %.sroa.0.0.sroa.speculated.i.i53, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i61" ], [ %.sroa.0.0.sroa.speculated.i.i53, %102 ] + %storemerge32 = phi i64 [ %52, %76 ], [ %52, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i" ], [ %52, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i" ], [ %52, %.cont386 ], [ %.sroa.0.0.sroa.speculated.i.i53, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i63" ], [ %.sroa.0.0.sroa.speculated.i.i53, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i61" ], [ %.sroa.0.0.sroa.speculated.i.i53, %102 ] + %storemerge31 = phi i64 [ %.sroa.0.0.sroa.speculated.i.i, %76 ], [ %.sroa.0.0.sroa.speculated.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i" ], [ %.sroa.0.0.sroa.speculated.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i" ], [ %.sroa.0.0.sroa.speculated.i.i, %.cont386 ], [ %82, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i63" ], [ %82, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i61" ], [ %82, %102 ] %104 = icmp ugt i64 %.sroa.21.1, %.sroa.12375.1 %105 = sub i64 %.sroa.12.1, %.sroa.6.2 br i1 %104, label %.cont326.cont.cont.cont, label %.cont312.cont.cont @@ -10858,7 +10858,7 @@ define hidden void @"_ZN4text5patch14Patch$LT$T$GT$7compose17h8f0d4e2d5f30d75bE" %.sroa.17.0.be = phi i64 [ undef, %.cont312.cont.cont ], [ undef, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i77" ], [ undef, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i75" ], [ undef, %132 ], [ %.sroa.12375.1, %.cont326.cont.cont.cont ], [ %.sroa.12375.1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i91" ], [ %.sroa.12375.1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i89" ], [ %.sroa.12375.1, %160 ], [ %.sroa.17.1, %188 ], [ %.sroa.17.1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i107" ], [ %.sroa.17.1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i109" ], [ %.sroa.17.1, %"_ZN4core6option15Option$LT$T$GT$6map_or17h353b34965b096d4dE.exit.thread" ], [ undef, %216 ], [ undef, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i125" ], [ undef, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i127" ], [ undef, %"_ZN4core6option15Option$LT$T$GT$6map_or17h5a634268534f8813E.exit.thread" ] %.sroa.21.0.be = phi i64 [ undef, %.cont312.cont.cont ], [ undef, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i77" ], [ undef, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i75" ], [ undef, %132 ], [ %.sroa.21.1, %.cont326.cont.cont.cont ], [ %.sroa.21.1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i91" ], [ %.sroa.21.1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i89" ], [ %.sroa.21.1, %160 ], [ %.sroa.21.1, %188 ], [ %.sroa.21.1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i107" ], [ %.sroa.21.1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i109" ], [ %.sroa.21.1, %"_ZN4core6option15Option$LT$T$GT$6map_or17h353b34965b096d4dE.exit.thread" ], [ undef, %216 ], [ undef, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i125" ], [ undef, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i127" ], [ undef, %"_ZN4core6option15Option$LT$T$GT$6map_or17h5a634268534f8813E.exit.thread" ] %.be = phi i64 [ %42, %.cont312.cont.cont ], [ %42, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i77" ], [ %42, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i75" ], [ %42, %132 ], [ 2, %.cont326.cont.cont.cont ], [ 2, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i91" ], [ 2, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i89" ], [ 2, %160 ], [ 2, %188 ], [ 2, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i107" ], [ 2, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i109" ], [ 2, %"_ZN4core6option15Option$LT$T$GT$6map_or17h353b34965b096d4dE.exit.thread" ], [ %42, %216 ], [ %42, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i125" ], [ %42, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i127" ], [ %42, %"_ZN4core6option15Option$LT$T$GT$6map_or17h5a634268534f8813E.exit.thread" ] - %.be450 = phi i64 [ 2, %.cont312.cont.cont ], [ 2, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i77" ], [ 2, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i75" ], [ 2, %132 ], [ %29, %.cont326.cont.cont.cont ], [ %29, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i91" ], [ %29, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i89" ], [ %29, %160 ], [ %29, %188 ], [ %29, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i107" ], [ %29, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i109" ], [ %29, %"_ZN4core6option15Option$LT$T$GT$6map_or17h353b34965b096d4dE.exit.thread" ], [ 2, %216 ], [ 2, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i125" ], [ 2, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i127" ], [ 2, %"_ZN4core6option15Option$LT$T$GT$6map_or17h5a634268534f8813E.exit.thread" ] + %.be449 = phi i64 [ 2, %.cont312.cont.cont ], [ 2, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i77" ], [ 2, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i75" ], [ 2, %132 ], [ %29, %.cont326.cont.cont.cont ], [ %29, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i91" ], [ %29, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i89" ], [ %29, %160 ], [ %29, %188 ], [ %29, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i107" ], [ %29, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i109" ], [ %29, %"_ZN4core6option15Option$LT$T$GT$6map_or17h353b34965b096d4dE.exit.thread" ], [ 2, %216 ], [ 2, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i125" ], [ 2, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i127" ], [ 2, %"_ZN4core6option15Option$LT$T$GT$6map_or17h5a634268534f8813E.exit.thread" ] %.sroa.0153.0.be = phi i64 [ %109, %.cont312.cont.cont ], [ %109, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i77" ], [ %109, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i75" ], [ %109, %132 ], [ %137, %.cont326.cont.cont.cont ], [ %137, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i91" ], [ %137, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i89" ], [ %137, %160 ], [ %.sroa.21380.1, %188 ], [ %.sroa.21380.1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i107" ], [ %.sroa.21380.1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i109" ], [ %.sroa.21380.1, %"_ZN4core6option15Option$LT$T$GT$6map_or17h353b34965b096d4dE.exit.thread" ], [ %193, %216 ], [ %193, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i125" ], [ %193, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i127" ], [ %193, %"_ZN4core6option15Option$LT$T$GT$6map_or17h5a634268534f8813E.exit.thread" ] %.sroa.0.0.be = phi i64 [ %106, %.cont312.cont.cont ], [ %106, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i77" ], [ %106, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i75" ], [ %106, %132 ], [ %135, %.cont326.cont.cont.cont ], [ %135, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i91" ], [ %135, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i89" ], [ %135, %160 ], [ %165, %188 ], [ %165, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i107" ], [ %165, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i109" ], [ %165, %"_ZN4core6option15Option$LT$T$GT$6map_or17h353b34965b096d4dE.exit.thread" ], [ %.sroa.12.1, %216 ], [ %.sroa.12.1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit1.i125" ], [ %.sroa.12.1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h56dbf6c81f707fefE.exit.i127" ], [ %.sroa.12.1, %"_ZN4core6option15Option$LT$T$GT$6map_or17h5a634268534f8813E.exit.thread" ] br label %.backedge diff --git a/bench/zed-rs/optimized/1mcybofnqlkuygv3uh10isuki.ll b/bench/zed-rs/optimized/1mcybofnqlkuygv3uh10isuki.ll index 42ebaf535e6..440d0d1ad63 100644 --- a/bench/zed-rs/optimized/1mcybofnqlkuygv3uh10isuki.ll +++ b/bench/zed-rs/optimized/1mcybofnqlkuygv3uh10isuki.ll @@ -5905,9 +5905,9 @@ define internal fastcc noundef zeroext i1 @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6reta .cont196.cont.i.i: ; preds = %"_ZN4core6option15Option$LT$T$GT$6map_or17h323e8047ab608419E.exit.i.i" %70 = icmp ult i64 %.sroa.17.1.i.i, %.sroa.6250.1.i.i - br i1 %70, label %"_ZN4text13Edit$LT$D$GT$8is_empty17he2aa6ead7cba9ab5E.exit.thread.i54.cont.i.i", label %.cont265.i.i + br i1 %70, label %"_ZN4text13Edit$LT$D$GT$8is_empty17he2aa6ead7cba9ab5E.exit.thread.i54.cont.i.i", label %.cont264.i.i -.cont265.i.i: ; preds = %.cont196.cont.i.i +.cont264.i.i: ; preds = %.cont196.cont.i.i %71 = sub i64 %.sroa.16.1.i.i, %.sroa.022.0.i.i %72 = add i64 %71, %.sroa.0.0.i13.i %73 = sub nuw i64 %.sroa.17.1.i.i, %.sroa.6250.1.i.i @@ -5920,7 +5920,7 @@ define internal fastcc noundef zeroext i1 @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6reta %or.cond.i.i = and i1 %76, %77 br i1 %or.cond.i.i, label %.cont.cont.i.i, label %"_ZN4text13Edit$LT$D$GT$8is_empty17he2aa6ead7cba9ab5E.exit.thread.i.i.i" -"_ZN4text13Edit$LT$D$GT$8is_empty17he2aa6ead7cba9ab5E.exit.thread.i.i.i": ; preds = %.cont265.i.i +"_ZN4text13Edit$LT$D$GT$8is_empty17he2aa6ead7cba9ab5E.exit.thread.i.i.i": ; preds = %.cont264.i.i %78 = load i64, ptr %.sroa.5.0..sroa_idx.i.i, align 8, !alias.scope !1784, !noalias !1787, !noundef !12 %.not.i.i.i = icmp eq i64 %78, 0 br i1 %.not.i.i.i, label %79, label %84 @@ -6063,12 +6063,12 @@ define internal fastcc noundef zeroext i1 @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6reta store i64 %103, ptr %124, align 8, !noalias !1825 br label %.cont.cont.i.i -.cont.cont.i.i: ; preds = %123, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit1.i57.i.i", %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit.i59.i.i", %97, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit1.i.i.i", %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit.i.i.i", %.cont265.i.i - %.sroa.6250.2.i.i = phi i64 [ %.sroa.17.1.i.i, %97 ], [ %.sroa.17.1.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit1.i.i.i" ], [ %.sroa.17.1.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit.i.i.i" ], [ %.sroa.17.1.i.i, %.cont265.i.i ], [ %.sroa.6250.1.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit.i59.i.i" ], [ %.sroa.6250.1.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit1.i57.i.i" ], [ %.sroa.6250.1.i.i, %123 ] - %.sroa.16.2.i.i = phi i64 [ %.sroa.0.0.sroa.speculated.i.i.i.i, %97 ], [ %.sroa.0.0.sroa.speculated.i.i.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit1.i.i.i" ], [ %.sroa.0.0.sroa.speculated.i.i.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit.i.i.i" ], [ %.sroa.16.1.i.i, %.cont265.i.i ], [ %.sroa.16.1.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit.i59.i.i" ], [ %.sroa.16.1.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit1.i57.i.i" ], [ %.sroa.16.1.i.i, %123 ] - %.sroa.6.2.i.i = phi i64 [ %.sroa.6.1.i.i, %97 ], [ %.sroa.6.1.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit1.i.i.i" ], [ %.sroa.6.1.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit.i.i.i" ], [ %.sroa.6.1.i.i, %.cont265.i.i ], [ %.sroa.0.0.sroa.speculated.i.i53.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit.i59.i.i" ], [ %.sroa.0.0.sroa.speculated.i.i53.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit1.i57.i.i" ], [ %.sroa.0.0.sroa.speculated.i.i53.i.i, %123 ] - %storemerge32.i.i = phi i64 [ %74, %97 ], [ %74, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit1.i.i.i" ], [ %74, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit.i.i.i" ], [ %74, %.cont265.i.i ], [ %.sroa.0.0.sroa.speculated.i.i53.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit.i59.i.i" ], [ %.sroa.0.0.sroa.speculated.i.i53.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit1.i57.i.i" ], [ %.sroa.0.0.sroa.speculated.i.i53.i.i, %123 ] - %storemerge31.i.i = phi i64 [ %.sroa.0.0.sroa.speculated.i.i.i.i, %97 ], [ %.sroa.0.0.sroa.speculated.i.i.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit1.i.i.i" ], [ %.sroa.0.0.sroa.speculated.i.i.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit.i.i.i" ], [ %.sroa.16.1.i.i, %.cont265.i.i ], [ %103, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit.i59.i.i" ], [ %103, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit1.i57.i.i" ], [ %103, %123 ] +.cont.cont.i.i: ; preds = %123, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit1.i57.i.i", %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit.i59.i.i", %97, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit1.i.i.i", %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit.i.i.i", %.cont264.i.i + %.sroa.6250.2.i.i = phi i64 [ %.sroa.17.1.i.i, %97 ], [ %.sroa.17.1.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit1.i.i.i" ], [ %.sroa.17.1.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit.i.i.i" ], [ %.sroa.17.1.i.i, %.cont264.i.i ], [ %.sroa.6250.1.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit.i59.i.i" ], [ %.sroa.6250.1.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit1.i57.i.i" ], [ %.sroa.6250.1.i.i, %123 ] + %.sroa.16.2.i.i = phi i64 [ %.sroa.0.0.sroa.speculated.i.i.i.i, %97 ], [ %.sroa.0.0.sroa.speculated.i.i.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit1.i.i.i" ], [ %.sroa.0.0.sroa.speculated.i.i.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit.i.i.i" ], [ %.sroa.16.1.i.i, %.cont264.i.i ], [ %.sroa.16.1.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit.i59.i.i" ], [ %.sroa.16.1.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit1.i57.i.i" ], [ %.sroa.16.1.i.i, %123 ] + %.sroa.6.2.i.i = phi i64 [ %.sroa.6.1.i.i, %97 ], [ %.sroa.6.1.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit1.i.i.i" ], [ %.sroa.6.1.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit.i.i.i" ], [ %.sroa.6.1.i.i, %.cont264.i.i ], [ %.sroa.0.0.sroa.speculated.i.i53.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit.i59.i.i" ], [ %.sroa.0.0.sroa.speculated.i.i53.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit1.i57.i.i" ], [ %.sroa.0.0.sroa.speculated.i.i53.i.i, %123 ] + %storemerge32.i.i = phi i64 [ %74, %97 ], [ %74, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit1.i.i.i" ], [ %74, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit.i.i.i" ], [ %74, %.cont264.i.i ], [ %.sroa.0.0.sroa.speculated.i.i53.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit.i59.i.i" ], [ %.sroa.0.0.sroa.speculated.i.i53.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit1.i57.i.i" ], [ %.sroa.0.0.sroa.speculated.i.i53.i.i, %123 ] + %storemerge31.i.i = phi i64 [ %.sroa.0.0.sroa.speculated.i.i.i.i, %97 ], [ %.sroa.0.0.sroa.speculated.i.i.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit1.i.i.i" ], [ %.sroa.0.0.sroa.speculated.i.i.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit.i.i.i" ], [ %.sroa.16.1.i.i, %.cont264.i.i ], [ %103, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit.i59.i.i" ], [ %103, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h724d00e68b8e2209E.llvm.3952200702345462076.exit1.i57.i.i" ], [ %103, %123 ] %125 = icmp ugt i64 %.sroa.21.1.i.i, %.sroa.12253.1.i.i %126 = sub i64 %.sroa.12.1.i.i, %.sroa.6.2.i.i br i1 %125, label %.cont206.cont.cont.cont.i.i, label %.cont192.cont.cont.i.i diff --git a/bench/zed-rs/optimized/5xfke1jw0ac7pab611oym1u20.ll b/bench/zed-rs/optimized/5xfke1jw0ac7pab611oym1u20.ll index f7dee6dd6f3..fcb6421c608 100644 --- a/bench/zed-rs/optimized/5xfke1jw0ac7pab611oym1u20.ll +++ b/bench/zed-rs/optimized/5xfke1jw0ac7pab611oym1u20.ll @@ -1935,7 +1935,7 @@ define hidden void @"_ZN4text5patch14Patch$LT$T$GT$7compose17hcff8888b5d001183E" %36 = getelementptr inbounds i8, ptr %8, i64 24 br label %.backedge -37: ; preds = %"_ZN4core6option15Option$LT$T$GT$6map_or17h9eba9ae18b8c3063E.exit.thread", %"_ZN4core6option15Option$LT$T$GT$6map_or17h1ef95e177b92fbafE.exit.thread", %.cont202.cont.cont.cont, %.cont186.cont.cont, %.cont206, %.cont264 +37: ; preds = %"_ZN4core6option15Option$LT$T$GT$6map_or17h9eba9ae18b8c3063E.exit.thread", %"_ZN4core6option15Option$LT$T$GT$6map_or17h1ef95e177b92fbafE.exit.thread", %.cont202.cont.cont.cont, %.cont186.cont.cont, %.cont206, %.cont263 %38 = landingpad { ptr, i32 } cleanup tail call void @llvm.experimental.noalias.scope.decl(metadata !602) @@ -1964,7 +1964,7 @@ define hidden void @"_ZN4text5patch14Patch$LT$T$GT$7compose17hcff8888b5d001183E" %.sroa.21.0 = phi i64 [ undef, %3 ], [ %.sroa.21.0.be, %.backedge.backedge ] %.sroa.24.0 = phi ptr [ %12, %3 ], [ %.sroa.24.1, %.backedge.backedge ] %44 = phi i64 [ 2, %3 ], [ %.be, %.backedge.backedge ] - %45 = phi i64 [ 2, %3 ], [ %.be328, %.backedge.backedge ] + %45 = phi i64 [ 2, %3 ], [ %.be327, %.backedge.backedge ] %.sroa.087.0 = phi i64 [ 0, %3 ], [ %.sroa.087.0.be, %.backedge.backedge ] %.sroa.0.0 = phi i64 [ 0, %3 ], [ %.sroa.0.0.be, %.backedge.backedge ] %46 = icmp eq i64 %45, 2 @@ -2043,9 +2043,9 @@ define hidden void @"_ZN4text5patch14Patch$LT$T$GT$7compose17hcff8888b5d001183E" .cont190.cont: ; preds = %76 %77 = icmp ult i64 %.sroa.17.1, %.sroa.6249.1 - br i1 %77, label %.cont206, label %.cont264 + br i1 %77, label %.cont206, label %.cont263 -.cont264: ; preds = %.cont190.cont +.cont263: ; preds = %.cont190.cont %78 = sub i64 %.sroa.16.1, %.sroa.087.0 %79 = add i64 %78, %.sroa.0.0 %80 = sub nuw i64 %.sroa.17.1, %.sroa.6249.1 @@ -2058,9 +2058,9 @@ define hidden void @"_ZN4text5patch14Patch$LT$T$GT$7compose17hcff8888b5d001183E" store i64 %.sroa.16.1, ptr %23, align 8 store i64 %.sroa.0.0.sroa.speculated.i.i, ptr %24, align 8 invoke void @"_ZN4text5patch14Patch$LT$T$GT$4push17hfba5af42c5cf74abE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %10, ptr noalias nocapture noundef nonnull align 8 dereferenceable(32) %6) - to label %.cont275 unwind label %37 + to label %.cont274 unwind label %37 -.cont275: ; preds = %.cont264 +.cont274: ; preds = %.cont263 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) br label %.cont180.cont @@ -2083,12 +2083,12 @@ define hidden void @"_ZN4text5patch14Patch$LT$T$GT$7compose17hcff8888b5d001183E" call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) br label %.cont180.cont -.cont180.cont: ; preds = %.cont275, %.cont194.cont - %.sroa.6249.2 = phi i64 [ %.sroa.6249.1, %.cont194.cont ], [ %.sroa.17.1, %.cont275 ] - %.sroa.16.2 = phi i64 [ %.sroa.16.1, %.cont194.cont ], [ %.sroa.0.0.sroa.speculated.i.i, %.cont275 ] - %.sroa.6.2 = phi i64 [ %.sroa.0.0.sroa.speculated.i.i52, %.cont194.cont ], [ %.sroa.6.1, %.cont275 ] - %storemerge32 = phi i64 [ %.sroa.0.0.sroa.speculated.i.i52, %.cont194.cont ], [ %81, %.cont275 ] - %storemerge31 = phi i64 [ %87, %.cont194.cont ], [ %.sroa.0.0.sroa.speculated.i.i, %.cont275 ] +.cont180.cont: ; preds = %.cont274, %.cont194.cont + %.sroa.6249.2 = phi i64 [ %.sroa.6249.1, %.cont194.cont ], [ %.sroa.17.1, %.cont274 ] + %.sroa.16.2 = phi i64 [ %.sroa.16.1, %.cont194.cont ], [ %.sroa.0.0.sroa.speculated.i.i, %.cont274 ] + %.sroa.6.2 = phi i64 [ %.sroa.0.0.sroa.speculated.i.i52, %.cont194.cont ], [ %.sroa.6.1, %.cont274 ] + %storemerge32 = phi i64 [ %.sroa.0.0.sroa.speculated.i.i52, %.cont194.cont ], [ %81, %.cont274 ] + %storemerge31 = phi i64 [ %87, %.cont194.cont ], [ %.sroa.0.0.sroa.speculated.i.i, %.cont274 ] %88 = icmp ugt i64 %.sroa.21.1, %.sroa.12252.1 %89 = sub i64 %.sroa.12.1, %.sroa.6.2 br i1 %88, label %.cont202.cont.cont.cont, label %.cont186.cont.cont @@ -2163,7 +2163,7 @@ define hidden void @"_ZN4text5patch14Patch$LT$T$GT$7compose17hcff8888b5d001183E" call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) br label %.backedge.backedge -.backedge.backedge: ; preds = %107, %102, %.cont184, %.cont.cont +.backedge.backedge: ; preds = %107, %102, %.cont.cont, %.cont184 %.sroa.6249.0.be = phi i64 [ undef, %102 ], [ undef, %.cont184 ], [ %.sroa.21.1, %.cont.cont ], [ %.sroa.6249.1, %107 ] %.sroa.12252.0.be = phi i64 [ undef, %102 ], [ undef, %.cont184 ], [ %.sroa.12252.1, %.cont.cont ], [ %.sroa.12252.1, %107 ] %.sroa.16.0.be = phi i64 [ undef, %102 ], [ undef, %.cont184 ], [ %93, %.cont.cont ], [ %.sroa.16.1, %107 ] @@ -2173,7 +2173,7 @@ define hidden void @"_ZN4text5patch14Patch$LT$T$GT$7compose17hcff8888b5d001183E" %.sroa.17.0.be = phi i64 [ %.sroa.17.1, %102 ], [ %.sroa.12252.1, %.cont184 ], [ undef, %.cont.cont ], [ undef, %107 ] %.sroa.21.0.be = phi i64 [ %.sroa.21.1, %102 ], [ %.sroa.21.1, %.cont184 ], [ undef, %.cont.cont ], [ undef, %107 ] %.be = phi i64 [ 2, %102 ], [ 2, %.cont184 ], [ %71, %.cont.cont ], [ %71, %107 ] - %.be328 = phi i64 [ %58, %102 ], [ %58, %.cont184 ], [ 2, %.cont.cont ], [ 2, %107 ] + %.be327 = phi i64 [ %58, %102 ], [ %58, %.cont184 ], [ 2, %.cont.cont ], [ 2, %107 ] %.sroa.087.0.be = phi i64 [ %.sroa.21257.1, %102 ], [ %97, %.cont184 ], [ %93, %.cont.cont ], [ %106, %107 ] %.sroa.0.0.be = phi i64 [ %101, %102 ], [ %95, %.cont184 ], [ %90, %.cont.cont ], [ %.sroa.12.1, %107 ] br label %.backedge diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index 820278fb20a..8e26bc4a3d4 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/118406 # Please rebase manually # git fetch origin