<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/98441>98441</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Wrong constant fold for ICmp by InstCombine
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          bonjune
      </td>
    </tr>
</table>

<pre>
    https://github.com/llvm/llvm-project/blob/ce92b2f594809c39c37bf3ef3d881f2b33bd6730/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp#L7345-L7346

https://github.com/llvm/llvm-project/blob/ce92b2f594809c39c37bf3ef3d881f2b33bd6730/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp#L1310-L1325

`NewPhi->addIncoming(V, Pred);` in the loop `for (auto [V, Pred] : zip(Ops, Phi->blocks())) ` is executed.


Alive2 report: https://alive2.llvm.org/ce/z/5IfYQ9


```ll
----------------------------------------
define <2 x i1> @fun0(i1 %val0) {
entry:
  br i1 %val0, label %if.true, label %if.false

if.false:
  br label %merge

if.true:
  br label %merge

merge:
  %val1 = phi <2 x i32> [ { 4294967295, poison }, %if.true ], [ { poison, 0 }, %if.false ]
  br label %exit

exit:
 %val2 = icmp eq <2 x i32> %val1, { undef, 4294967295 }
  ret <2 x i1> %val2
}
=>
define <2 x i1> @fun0(i1 %val0) {
entry:
  br i1 %val0, label %if.true, label %if.false

if.false:
  br label %merge

if.true:
  br label %merge

merge:
  br label %exit

exit:
  ret <2 x i1> { poison, 0 }
}
Transformation doesn't verify!

ERROR: Target is more poisonous than source

Example:
i1 %val0 = #x1 (1)

Source:
  >> Jump to %if.true
  >> Jump to %merge
<2 x i32> %val1 = < #xffffffff (4294967295, -1), poison >
  >> Jump to %exit
<2 x i1> %val2 = < #x0 (0)     [based on undef value], poison >

Target:
  >> Jump to %if.true
  >> Jump to %merge
  >> Jump to %exit
Source value: < #x0 (0), poison >
Target value: < poison, #x0 (0) >

Summary:
  0 correct transformations
  1 incorrect transformations
  0 failed-to-prove transformations
  0 Alive2 errors
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkVs2O2zYQfhr6MrBBkfo9-LD22sAWQZMmQYseKWlkM5VIlaSc3Tx9QcprS67TboFeihqCDI7m5_tmhuQIa-VBIa5JsiHJ40IM7qjNutTqy6BwUer6ZX10rreEPxC2J2x_kO44lKtKd4Tt2_b0-rfsjf6ClSNsX7a6JGxfYcFK1iRFnNOi4kXFs7Lh2PA6z6OGlZyXdZpxOvEjvd1nI5RttOksYfsnZd1Wd6VUOF9tddcLg3ZV9T1h_F3G42Tp3ymhj4Q-jO__BvaIR3T5LuIsmWInKf0Rv344yiXhO1HXT6rSnVQHwvKfCdvCB4M1YQXhG5JSkArcEaHVugeS0kYbICwXg9NAks3VIHkEwh_gm-wJy9_3NnwYY5Strn6zhOXea3ggeLaAz1gNDuvVDF94P7TyhAwM9to473mechE-r3ySVtocQmoJ238jbJ88Nb_-VPzZI0np-LTtKFi-8Tdq19hIhUD4lsEzyIjwHZCYNoOihOUyAsKSk2hpoJdtRiNUzrx40GEFUBqYam6hFSW2XiCblTMD3soa0VqcsrjIZk4vJh2aw61-8PtG9VFwVR6hRkD4I_RHeaHPWeCfbDxXiFkRF2nGisTj77W0WgHJHv3qyg1IMkrOVqOel9C5ciAYtO9AxmfppojD-gJ4xMsCXll1PeDvt5hHRiFatoFB1dj4xZVDAHOObNDdlHwMcEbwqkj4I-G7_3OjvL1Ed3J6pxnm-b2cf8JJraDWaBVhmYMTGtm8EBZN4-0-fnz_0Z8Zn4U5oPMnTacNnmPowYI7CgVWD6aakdo9i65vr7SuJQgNRRh_9pI88sfYxO7T6GmybfjOE_th6HrwJ-W1bN9VmGb4XsOOCPg2oGjOPw9mvvmWAdtkF7625b2Yk0Ld6fFZROpD0cC7IMmmFBZr0GrcP3AS7YDn7X0b-FzBUIp_LUV_zWasxxkVf7hD4g7Oc7PMjK5dOTO_Jfdp6Dox278UKm0MVg7crHXtq0IEUv2NCoVGyBbrpdN-kjjh9xXPtyUao429ue4W9ZrXBS_EAtdRxmiax3FaLI7rokqR15QmWCaUYR3TqoloXbOqqmIsqoVcM8pimkURzZKYFSuasrLhtBF5muUoKhJT7IRsL_fwQlo74LrI4zhahPPAhhGQMYVfIXwkjPmJ0KzDhFQOB0ti2krr7NWLk67F9S9GqwNUWlknlINGtzX4-eNp2_VQvsBk8lkMpv3nA2XA4yeqEe9pzf4IAAD__1ciBhc">