Issue 138636
Summary Missed optimization: conditional store of zext(i1) not folded to constant zero when i1 is known false
Labels new issue
Assignees
Reporter GINN-Imp
    The following reduced IR is derived from https://github.com/c3lang/c3c/blob/125436d23ef9b7f69837a00ffec168c52839a1dc/src/compiler/bigint.c#L777

Godbolt: https://godbolt.org/z/jTWv4o5n8
Missed optimization: `store i8 %4, ptr %2, align 1` --> `store i8 0, ptr %2, align 1`
alive2 proof: https://alive2.llvm.org/ce/z/ZQ5aad

```llvm
define void @src(ptr writeonly captures(none) initializes((0, 1)) %0, i1 %1, ptr writeonly captures(none) %2) local_unnamed_addr #0 {
  %4 = zext i1 %1 to i8
  store i8 %4, ptr %0, align 1
  br i1 %1, label %6, label %5

5: ; preds = %3
  store i8 %4, ptr %2, align 1
 br label %6

6:                                                ; preds = %5, %3
  ret void
}
```

opt-trunk -O3 generates:
```llvm
define void @src(ptr writeonly captures(none) initializes((0, 1)) %0, i1 %1, ptr writeonly captures(none) %2) local_unnamed_addr #0 {
  %4 = zext i1 %1 to i8
  store i8 %4, ptr %0, align 1
  br i1 %1, label %6, label %5

5: ; preds = %3
  store i8 %4, ptr %2, align 1
  br label %6

6: ; preds = %5, %3
  ret void
}
```
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to