Issue 143368
Summary Missed deadcode elimination when using `phi`
Labels new issue
Assignees
Reporter GINN-Imp
    The following reduced IR is derived from https://github.com/clap-rs/clap/blob/1036060f1319412d3d50d821a7b39a0a0122f0f7/clap_builder/src/parser/parser.rs#L49

Godbolt: https://godbolt.org/z/aedE1YjfK
alive2 proof: https://alive2.llvm.org/ce/z/Df2FFT

opt-O3 works as expected when `phi` is replaced with simpler instructions.

```llvm
define void @_ZN12clap_builder6parser6parser6Parser16get_matches_with17h7b0a6fdc0204a479E(i64 %0, ptr %p) personality ptr null {
  %2 = xor i64 %0, 1
  switch i64 %2, label %3 [
    i64 0, label %common.ret
    i64 3, label %4
 ]

common.ret:
  ret void

3:
  br label %4

4:
  %.0 = phi i8 [ 0, %3 ], [ 1, %1 ]
  %cond2 = icmp eq i64 %0, 1
  br i1 %cond2, label %5, label %common.ret

5:
  store i8 %.0, ptr %p, align 1
  br label %common.ret
}
```

expected:
```llvm
define void @tgt(i64 %0, ptr %p) personality ptr null {
  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