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

    <tr>
        <th>Summary</th>
        <td>
            [VectorCombine] scalarizeLoadExtract - infinite loop if we scalarize a dead extract waiting to be erased
        </td>
    </tr>

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

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

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

<pre>
    Reduced test case:

```ll
define void @infinite_loop(ptr %p0) {
  %load = load <4 x float>, ptr %p0, align 8
  %shuffle0 = shufflevector <4 x float> zeroinitializer, <4 x float> %load, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
  %shuffle1 = shufflevector <4 x float> %shuffle0, <4 x float> zeroinitializer, <4 x i32> <i32 0, i32 4, i32 poison, i32 poison>
  %extract = extractelement <4 x float> %load, i64 1
 ret void
}
```

scalarizeLoadExtract iterates across all users of a load, and doesn't account for possible orders in the worklist that prevent unused instructions that use the load from being erased afterward.

Fix incoming
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyMlM-PqzYQx_8acxltZAwscOCwL3m5tKdXqdfK4CGZ1tjIHpLt_vWVCdFmV9v2SZYY_5jxZ8bfQcdIJ4fYieqbUOrHL7_R5J1QSlSHTC989qHbFrPem7-7H2iWAQ0wRoZBRxTFi5DreJa3Ya2QLwZHcggXTwZEKcmN5IjxD-v9LFQzcwChqlkK1YKovwn5AmnBem1AFAfYjH0JrzBar1kU34Xaw4PjHrSlk4Pm7hzPyzhalGuAbXLBgX34HAneMPgERNrSG4YU7PORjeZhiwq1bhR7KhSsBMko70Z-N6oE-xEq_wmohxS-Avp35v8Dmz3F9KofZu-I-MpBD7wSbjZanNDxfxWFnkvIU4iAvL5z0kB9eFTCTRhx0FYHesNfvTbft7uIMWjGCHoIPkbQ1sISMUTwI2i4X6KdAeMxOqFqBj0MfnEMow8w-xiptwg-mORGDviMcPXhL0uRgc-aYQ54SWksbologFzksAxM3sXbgSXi6rbKbQx-gh7JnQCDTg56ZAxXHczulsqRXoHc4Cdyp8x0hWmLVmfY5XUpG5W3TZWdu_a5zJVqilHXjdRDmZsWmxJ7NdblYFBm1CmpKlnIXLZFW1Y7lEbnEqWqaqywaUUpcdJkd9Zepp0Pp4xiXLDLVVvURWZ1jzZuLevwCuvu1rShS05P_XKKopSpFPE9DBPbtdd_XxW491NPDkV1gC8f6QnufQupb4FGuOL7UdBgUJu7ZuCqiVPx2EOPWwmzJdjuzDzH9KNQR6GOJ-Lz0u8GPwl1TGjb52kO_k8cWKjjmlAU6rhlfOnUPwEAAP__Nvx22g">