---
# System prepended metadata

title: '*** IR Dump After InstCombineP'

---

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