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

    <tr>
        <th>Summary</th>
        <td>
            [IndVarSimplify] Incorrect samesign handling
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            miscompilation,
            loopoptim,
            llvm:transforms
      </td>
    </tr>

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

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

<pre>
    Reproducer: https://alive2.llvm.org/ce/z/jHhApt
```
; bin/opt -passes=indvars test.ll -S
define i16 @src() {
entry:
  %xor = xor i32 1, 0
  %cmp4 = icmp samesign ult i32 %xor, 155
  br i1 %cmp4, label %for.body10, label %if.end

for.body10:                                       ; preds = %for.body10, %entry
  %f.addr.0 = phi i8 [ 1, %for.body10 ], [ 0, %entry ]
 %cmp8.old = icmp slt i8 %f.addr.0, 1
  br i1 %cmp8.old, label %for.body10, label %if.end

if.end:                                           ; preds = %for.body10, %entry
  ret i16 0
}
```
```
define i16 @src() {
entry:
 %xor = xor i32 1, 0
  %cmp4 = icmp samesign ult i32 %xor, 155
  br i1 %cmp4, label %for.body10.preheader, label %if.end

for.body10.preheader: ; preds = %entry
  br label %for.body10

for.body10:                                       ; preds = %for.body10.preheader, %for.body10
  br i1 true, label %for.body10, label %if.end.loopexit

if.end.loopexit:                                  ; preds = %for.body10
  br label %if.end

if.end: ; preds = %if.end.loopexit, %entry
  ret i16 0
}
```
After indvars, the program runs into an infinite loop (`for.body10 -> for.body10`).
This is a recent bug.
LLVM version: 59cbe2ff591d91e8375cfb4f4ba59dff49a82f4f

cc @artagnon 
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzEVU2P4ygQ_TXlS6ktDMaJDz44k412pNnLzmru2EDMyAYLcLZ7fv0KJ71Juker9GE1USSj-qDqPR6UCMEcrVIN8B3wfSaWODjfyNg__3j5O-ucfGn-VLN3cumVB9biEOMcgLVAD0APYjQnRfNxPE2580egh14BPfwAevj--9DOEUgLFbn8SQtsh52xQA9ujvg0ixBUALY3Vp6EDxhViPk44tNXIK1U2liFpqgQShJ8D3QLtEbY7IC0ykb_khohLSJQ_uw8Attj-hpGsQD6Ccmrt5_mcnWbfpoxiEkl4LiMcQ0-56eMgvM1p_NoitfM5BhFp8Zk0M7niZiC3JmNzpWVCSNpb0JYi4_9EjWzVzKsbb6rA5SfEV8A6VxI6XOyRs-DQbNF4Lsz7LtsBL5fjXyHd1utDtJeQG5zN8obihIz29tKKzvvuFnTPsrPZf0wNx_lx6u4ymaV3Gb_VoQ368c19mskls9eDUpI5R8Q200wa98TduWn8z89rv9Du_cA3tZ7JSH6RT0uonx0blbPJt6q6Wp8pO3_UtNbhn6u3Hc7vG3jY6JsdVQeL-9gyo2Dwtm7oxcT-sUGNDY6FBaN1caaqDBVwqTXitzc9idgv-ENmooArXMg7V-DCWgCCvSqVzZitxyT_cuXb3_gSflgnE3AeN13imrN60LWhdqyDe91V-qyE7yWWpe12FJd6jMhfZ8ujvBRHK2zmMmGyZrVIlNNsWE12dY14dnQCFZKQjtadZWuK1ZtNC_LqtCSFKyqiiozDSWUE0pqsmVFyXOtCeObqiw3vGR8s4GSqEmY8d9pk5kQFtUUtCpJna3HFdZBRulkQu-m2YwiJlSUAv0ElCbG3BzNdLWMpwlYG72wQTs_heTh-8w3yfPULccAJRlNiOFaN5o4riPzs5XfhP9qpnk0-gX4Hj_b3nmv-nh9AAZh5WjsMVv82NyPz6OJw9LlvZuAHtZWzp-n2bvvqo9ADyvGAPRwgXlq6D8BAAD__2KPMkQ">