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

    <tr>
        <th>Summary</th>
        <td>
            [vectorization] gcc generate better code for a loop body with control flow
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

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

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

<pre>
    test: https://godbolt.org/z/YWE89hKvn
```
void test(int** aa, int* a, int LEN_2D)
{
        for (int j = 0; j < LEN_2D; j++) {
            for (int i = j+1; i < LEN_2D; i++) {
                a[i] -= aa[j][i] * a[j];
            }
        }
    return;
}
```

- gcc: generate a sve loop
![image](https://github.com/llvm/llvm-project/assets/12108571/2c650d06-e868-4859-88b4-69678fde0e09)

- llvm: failed with vectorization
![image](https://github.com/llvm/llvm-project/assets/12108571/b088b7fa-a86c-41b3-972f-26badb02da69)

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0k8GOmzwQx59muFhEZoyNfeCQLMvl-9Rr1VNl8JB4y-ItOFl1n74ySTbatFLVQy0LPAPz039mPHZZ_H4iqkHuQDaZPcZDmGuaff_te9YF96OOtEQQW3aI8WUBsQVsAdt9cF0Y4ybMe8D2DbD98vlRm8N_pwl4A3wLil_2ap6Cd2xFofZTBNwCbpm1gA_sbLPrmf3_-OkrNoDmQqp25wO7rCHM7IxhTwxEwziI3Xp8uMYmG3C3bsN-IdxR_EpJAUWK9Hck_wdSWhbkzoNsWJ5QNplPIJur95zfxSd-w4Cq-ej84JgpHufpPfD9212Rz8-c7fs-dWxPE802ErNsOREbQ3i5_IdFEvZs95T0oL7rrY-HY7fpwzNgO46n6yt_mcMT9RGwtctCcQFsCyy4llUB2GKvJHdc5aSVzkstTa51V-bKqEoPjjhxc2vqReqKF1s2WD-SY68-HtiJ-hhm_2ajD9O_VNxxrbtqsLnVqs_LohO5qXDIUXXWdRydVTfFmauFM8LYjOpCmbJE5EJmh1r0OJROJ5SUJRnjykKQrhwKybEbMl8jR8FNUXBdVoXcFK5z_aBISMWN6glKTs_Wj5ukOY1U5pflSLWSRqhstB2Ny3VC53pNrDvuFyj56Je43MKij-M6yx9LKJt0JW73oaMYaWZ9cLSOgV3vBkvjfu5AH6Y4h5ENY3jNjvNY_3W51wRSudccfgYAAP__7UE7oQ">