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

    <tr>
        <th>Summary</th>
        <td>
            [Loop Vectorizer] __builtin_assume_separate_storage is not propagated to LV AA
        </td>
    </tr>

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

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

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

<pre>
    See reproducer in https://godbolt.org/z/c7ea3b85Y
Adding `restrict` to the function parameters makes vectorization safe.
Using `__builtin_assume_separate_storage(a1, a2);` should provide the same information as the `restrict` in this case, yet the loop is not vectorized.


</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyEkk9vnDAQxT-NuVhZwfBn8YHDphGn3KpG6mk14AHcGIw8Q6rk01ewm1bKpReQPPab35s3yOzGhahR5aMqnxLcZAqxeQ0z-rBkSRfse_OdSEdaY7BbT1G7RU8iK6v8oqBV0I7BdsHLKcRRQfuhoO3PhHlXlz9V-qTSy8Vat4xaVWkkluh6UVWqJWiZSA_b0osLi14x4kxCkfWMr8T6jXoJ0X3gUWYc6HTT-8F3ueu125wXt1yReZvpyrSrCF1ZQsSRFNSYKfimERQYlT_ujXkKm7d6jeHNWTogGGfSbhlCnG_dkI_zL8hu0TI51j0y7arvJMc1H8KqHeslyF9qsnfa2zexTW5NbjChJqtMZkxRGJNMTWdNatKyGDLo8vNgenuGwdY09HldmzMkroEU8rTOirSCOjOnAUpIK5sXZZFjjaSKlGZ0_uT927ynkDjmjZqqqKoq8diR5yNggIV-66OoAPa8Y7O_eei2kVWResfC_1TEiT8243m39_LpK6rySf938p_jWGNYcUQhuwf-_KIvl2SLvvmyQk6mrTv1YVbQ7gD338Mawy_qRUF7YLOC9rD1JwAA__94r-ZC">