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

    <tr>
        <th>Summary</th>
        <td>
            [Loop]  Eliminate the loop branch when the loop iteration is small
        </td>
    </tr>

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

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

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

<pre>
    * I don't exactly know why gcc can eliminate loops, but it may is related to the length of array.
  > when I enlarge the Length, such as 100, them it doesn't eliminate the loop branch.

test: https://gcc.godbolt.org/z/8qbdvqx9n
```
#include <string.h>
#define N 100
#define Length 4

void foo_restrict (float *__restrict dest,
                  float *__restrict src, int n)
{
    float buf[Length];
    memcpy(buf, src, sizeof(buf));
 // #pragma clang loop vectorize(assume_safety)
    for (int j = 0; j < n; j++) {
        dest[j] += buf[j];
    }
}
```

* gcc's assemble: It doesn't have  loop branch
```
foo_restrict(float*, float*, int):
        sub     sp, sp, #16
        ldp     x4, x5, [x1]
 stp     x4, x5, [sp]
        cmp     w2, 0
        ble     .L1
 whilelo p7.s, wzr, w2
        ld1w    z31.s, p7/z, [x0]
 ld1w    z30.s, p7/z, [sp]
        fadd    z31.s, p7/m, z31.s, z30.s
 st1w    z31.s, p7, [x0]
.L1:
        add     sp, sp, 16
 ret
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx0VduOszoPfZr0xvoqSEqBCy7a6VQaafS_wiiAgcwfEr4k9PT0Wwn0uLsRwiFZsZeXg-HWilYhFiTZkmS34KPrtCkOTd00i1LX54LQDXxBrRWhqQM88crJM_xf6SMcuzO0VQUVV4BS9EJxhyC1HiyhH1CODoSDnp9BWDAoucManAbXIUhUretAN8CN4ecliXYk2gAQ9gnHDhV8ASrJTYsB_h3g3qsdqw64hTiK_KvrsPdRao12pnhjEuJoPUBpuKq6Ocb0dGgdYRvonBssYRtC94Tu26patroutXRLbVpC9xdC99nfsj78PeVqdrCO5nt6pUyoSo41AmEf1hmh2mVH2OdtucZGKIT_Bc4vk1NisHrkdtCihkbrH4PeXeWA0KyRmvvB5uc-Xfsk6MdVu9fr3RZrKi-bUA4UofkcNt3efUy7yrEhyXaWPdkR9oDosa-GM6GZB_mSTD6tuKBurtO5v2-7JnmBUDYY3vYcKslVO1XngJXTRlyQ0IxbO_b4Y3mD7nzjF2hp42XwxH-BsB1EhG3D8ANUGBK6DXcOT_n4KwiVbH9JsgOPYbs5wd_X3Ei6u2qye1_uuYAbf_QJTS1wa7EvJfrj9PV4Ejt-QHg8gW8dPhb6WmdCN17Rx7FQLii6ec7MjuVkh1CC8CSUxetnmKyHYE8rDzglAZZsT7HPf0Ja9xZihztkvqp-Qh6px0TPi6XEYJff8bxw7IREqWFIl6EvHC8mGPpKMT56e2HxhBvS6fubmEZ3Gndk9Ab5hnDD6_rfrns_uk1Nzq5SvKHySsMn-FqNOc5TNW6lMOheDsCiLlids5wvsIhTStcZjZN40RUxj-iqplGaV-sEs5yt8oyxJsvWeZbEPF2IgkZ0FWURi6NVHsdLivWK8bzKk4YxxlKyirDnQi6lPPS-ly2EtSMWcRRnUbaQvERpQ9enVOERwiqh1P8ETOE3_SnH1pJVJIV19u7GCSfD7-Jba680wOd_Ndypkd8mhUPDndDK_w5sz6VcjEYWLx1YuG4sl5XuCd37oLP5Mxj9i_4L2QeqltD9nMuhoP8EAAD__xol5uU">