[llvm] [InstCombine] Implemented missed optimization in muldivrem (PR #140916)

Kshitij Paranjape via llvm-commits llvm-commits at lists.llvm.org
Tue May 27 10:08:54 PDT 2025


kshitijvp wrote:

Example:
`; Function Attrs: noinline nounwind uwtable
define dso_local i64 @func1b(i64 noundef %0) {
  %2 = alloca i64, align 8
  store i64 %0, ptr %2, align 8
  %3 = load i64, ptr %2, align 8
  %4 = urem i64 %3, 84
  %5 = udiv i64 %4, 7
  ret i64 %5
}`

The optimization is not working properly on the above code.
It is optimizing it to:

`; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
define dso_local i64 @func1b(i64 noundef %0) local_unnamed_addr #0 {
  %2 = urem i64 %0, 84
  %.lhs.trunc = trunc i64 %2 to i8
  %3 = udiv i8 %.lhs.trunc, 7
  %.zext = zext nneg i8 %3 to i64
  ret i64 %.zext
}`

https://github.com/llvm/llvm-project/pull/140916


More information about the llvm-commits mailing list