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

    <tr>
        <th>Summary</th>
        <td>
            LLVM fails to reduce zext(op(zext)) in some cases
        </td>
    </tr>

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

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

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

<pre>
    In the benchmark, I noticed 

%30 = zext i16 %.promoted47 to i32
%31 = mul nuw nsw i32 %30, 20
%32 = zext nneg i32 %31 to i64

%31 is not used at all elsewhere.

It should be 

  %30 = zext i16 %.promoted47 to i64
  %31 = mul nuw nsw i64 %30, 20

https://alive2.llvm.org/ce/z/XpJe59

I noticed that LLVM did in fact do this properly when I did an unrelated change: https://github.com/llvm/llvm-project/pull/140178

But that is because the DAG was different, meaning there is an edge case where this is not happening when it should be.

<img width="1067" alt="Image" src="https://github.com/user-attachments/assets/cfe835ae-12e3-4a36-883e-0feea28c6da8" />
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyUk0Gv6yYQhX8N3owSmcE4zsKLvJemSvW6raruJjCxaTG2AN_0vV9fmUT3tpVatZIlIzgMH5wzlJIbAnMv9CehzxWteZxjf_qF4yxVdZvt1_4aII8MNw5mnCj-JvAzXCHM2Rm2IOrT9qFWNQh1hm_8ewYnWxCo90ucpzmzbQ6QZ3AKX1JZpNPqIawPCOmxrUEpslXH-qXDj5Ih8PCukqVc23wcLsGljQnWxBYoA3kP7BM_Ro68fwqvGdI4r97CjV_gAP8NvZwF8A_wbfN3-Po05rwkoU4CLwIv5N0b4977t2k_x0HgxbDAyzeBl5-XH1gfX4Tv75pHyvDly08_gnUWXIA7mQx2hjy6BEucF47-KzxGDnAtGgqwhsieMlswI4WBhTrBXzkGl8f1tjfzJPCy0bx-uyXOv7LJAi_L6r3Ai2xqeeieWJ_W_ARyCW5saE1cMnE-fQ8PSmDd_c6RQ94eYGIKLgybIPK2gwKwHRgMJYbix_MSL8dGWhYuO8pl3J9Mevkm1Gc3DfBwNo9CnQWirNuDQATy-TlxnWjgbSZF85z5l3uvieOOciYzThxy2vxJicvA3LlTmngnkdWuIdXuuk7xrr4zE3amtdRt52xl1XeV7ZU9qiNV3MtD08laNwddjX1tmOnQsSI6GJQ3fdcka304YktWm65yPdaoa42NbLWUem8bJKVqvEutTUNH0dQ8kfPvmalcSiv3spGqrStPN_ap9C1i4AeUVYG4tXHsi6e3dUiiqb1LOX2UyS577ku07uR82vId2a6GSwcI7OZFYPccHwUet_SleXoamKo1-v5_h6rQpRKrgv_W4x8BAAD__1eYX40">