###### `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`