###### `lshr exact` issue ```llvm ; *** IR Dump After SROAPass on _ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9as_chunks17h9af37f4407b2f595E *** ; Function Attrs: inlinehint nonlazybind uwtable define internal void @"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9as_chunks17h9af37f4407b2f595E"(ptr noalias nocapture noundef sret({ { ptr, i64 }, { ptr, i64 } }) align 8 dereferenceable(32) %0, ptr noalias noundef nonnull readonly align 8 %1, i64 noundef %2, ptr noalias noundef readonly align 8 dereferenceable(24) %3) unnamed_addr #0 { %5 = udiv i64 %2, 4 %6 = mul i64 %5, 4 %7 = icmp ule i64 %6, %2 br i1 %7, label %9, label %8 8: ; preds = %4 call void @_ZN4core9panicking5panic17h386e8a29ef04861fE(ptr noalias noundef nonnull readonly align 1 @26, i64 noundef 35, ptr noalias noundef readonly align 8 dereferenceable(24) %3) #12 unreachable 9: ; preds = %4 %10 = getelementptr inbounds i64, ptr %1, i64 %6 %11 = sub i64 %2, %6 %12 = udiv exact i64 %6, 4 %13 = getelementptr inbounds { ptr, i64 }, ptr %0, i32 0, i32 0 store ptr %1, ptr %13, align 8 %14 = getelementptr inbounds { ptr, i64 }, ptr %0, i32 0, i32 1 store i64 %12, ptr %14, align 8 %15 = getelementptr inbounds { { ptr, i64 }, { ptr, i64 } }, ptr %0, i32 0, i32 1 %16 = getelementptr inbounds { ptr, i64 }, ptr %15, i32 0, i32 0 store ptr %10, ptr %16, align 8 %17 = getelementptr inbounds { ptr, i64 }, ptr %15, i32 0, i32 1 store i64 %11, ptr %17, align 8 ret void } ; *** IR Dump After EarlyCSEPass on _ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9as_chunks17h9af37f4407b2f595E *** ; Function Attrs: inlinehint nonlazybind uwtable define internal void @"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9as_chunks17h9af37f4407b2f595E"(ptr noalias nocapture noundef sret({ { ptr, i64 }, { ptr, i64 } }) align 8 dereferenceable(32) %0, ptr noalias noundef nonnull readonly align 8 %1, i64 noundef %2, ptr noalias noundef readonly align 8 dereferenceable(24) %3) unnamed_addr #0 { %5 = udiv i64 %2, 4 %6 = mul i64 %5, 4 %7 = icmp ule i64 %6, %2 br i1 %7, label %9, label %8 8: ; preds = %4 call void @_ZN4core9panicking5panic17h386e8a29ef04861fE(ptr noalias noundef nonnull readonly align 1 @26, i64 noundef 35, ptr noalias noundef readonly align 8 dereferenceable(24) %3) #12 unreachable 9: ; preds = %4 %10 = getelementptr inbounds i64, ptr %1, i64 %6 %11 = sub i64 %2, %6 store ptr %1, ptr %0, align 8 %12 = getelementptr inbounds { ptr, i64 }, ptr %0, i32 0, i32 1 store i64 %5, ptr %12, align 8 %13 = getelementptr inbounds { { ptr, i64 }, { ptr, i64 } }, ptr %0, i32 0, i32 1 store ptr %10, ptr %13, align 8 %14 = getelementptr inbounds { ptr, i64 }, ptr %13, i32 0, i32 1 store i64 %11, ptr %14, align 8 ret void } ; *** IR Dump After InstCombinePass on _ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9as_chunks17h9af37f4407b2f595E *** ; Function Attrs: inlinehint nonlazybind uwtable define internal fastcc void @"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9as_chunks17h9af37f4407b2f595E"(ptr noalias nocapture noundef sret({ { ptr, i64 }, { ptr, i64 } }) align 8 dereferenceable(32) %0, ptr noalias noundef nonnull read only align 8 %1, i64 noundef %2, ptr noalias noundef readonly align 8 dereferenceable(24) %3) unnamed_addr #0 { br i1 true, label %6, label %5 5: ; preds = %4 unreachable 6: ; preds = %4 %7 = and i64 %2, -4 %8 = lshr i64 %2, 2 %9 = getelementptr inbounds i64, ptr %1, i64 %7 %10 = and i64 %2, 3 store ptr %1, ptr %0, align 8 %11 = getelementptr inbounds { ptr, i64 }, ptr %0, i64 0, i32 1 store i64 %8, ptr %11, align 8 %12 = getelementptr inbounds { { ptr, i64 }, { ptr, i64 } }, ptr %0, i64 0, i32 1 store ptr %9, ptr %12, align 8 %13 = getelementptr inbounds { { ptr, i64 }, { ptr, i64 } }, ptr %0, i64 0, i32 1, i32 1 store i64 %10, ptr %13, align 8 ret void } ``` `./x clean --stage 1 && MAGIC_EXTRA_RUSTFLAGS='-C llvm-args=-print-after-all -Cllvm-args=-filter-print-funcs=_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9as_chunks17h9af37f4407b2f595E' ./x build --stage 1 2>&1 | less`