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

    <tr>
        <th>Summary</th>
        <td>
            [BUG][Clang][AArch64] LLVM backend error: Invalid size request on a scalable vector.
        </td>
    </tr>

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

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

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

<pre>
    The Clang compiler,  LLVM reports error "fatal error: error in backend: Invalid size request on a scalable vector." starting from version 17.0.1 with the following compiler options:

 `-march=armv9-a` and higher (armv9.1-a, armv9.2-a, armv9.3-a and so on) and `-mstrict-align` and optimization flags like `-Os`, `-O2`

### Notes when it works successfully:
* When Optimization flag: `-O0`, `-O1`, `-O3`, example https://gcc.godbolt.org/z/4ojzoz9jP
* Without `-mstrict-align` flag, example https://gcc.godbolt.org/z/7MbqGfoe8
* Without any optimization flags and specified `-mstrict-align` with `-march=armv9-a`, example https://gcc.godbolt.org/z/e7q1bv498
* When target architecture from `armv8-a` to `armv8.9-a`, example https://gcc.godbolt.org/z/q6eobPPPx
* When loop iteration count not power of 2, for example, `array_size` is `127` - https://gcc.godbolt.org/z/d7rKvdboG

### armv8-a clang (trunk) - Failed
* https://gcc.godbolt.org/z/9r5Mva8oe

### armv8-a clang 18.1.0 - Failed
* https://gcc.godbolt.org/z/747e3hd7h

### armv8-a clang 17.0.1 - Failed
* https://gcc.godbolt.org/z/zMW4hWGhW

### armv8-a clang 16.0.0 - No problem
* https://gcc.godbolt.org/z/nr9a9EhM5

## Steps to reproduce the issue.
```c
#include <stdint.h>
#include <stdlib.h>

uint64_t *InvalidSizeRequestOnScalableVector()
{
    uint64_t value = 30;
 uint64_t array_size = 128;
    uint64_t *array = (uint64_t *) malloc(sizeof(uint64_t) * array_size);

    for (unsigned long i = 0; i < array_size; i++)
    {
        array[i] = value;
    }

 return array;
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJycVl9v2zgM_zTKCxHDlv8_5CFtluJw61bc7tbHQbZpW6siuZKcrvn0Bylu4nUdkDUwHFOi-PuRokQyY3gnEVckvSLpZsFG2yu9skrpiCbpolLN8-rfHuFaMNlBrXYDF6gJvQb4-PHrLWgclLYGUGulgVDaMsvEUSTxehrnEipWP6Bs3Nhfcs8Eb8DwA4LGxxGNBSWBgamZYJVA2GNtlQ4IpWAs05bLDlqtdrBHbbiSEOVBGETwxG0PtkdolRDqic84ghosV9KQeE3CDQmnN5AsXO6YrnsSb5je7cslI1kITDbQ865H50XhJ4JoyZynR4HOhXjJ_AqjQElCSy94y8ZqXtslE7yTL3Ydkx0_MMcHWsE6A4I_oF_w2ZAsdIa9QJ0wY0tofHzgk7Jo4KlHCdzCk9IPBsxY12hMOwrxfHaTruHeqX1-jepi71HCOWQ0F-JJwB9sNwiE3trBR5BuCd12dR10qqmUsIHSHaHbA6HbRH0_qEP5_W6Gz22vRvt2RDyVP8TIb6vHm1Zh8SsGk89vBdjvzoA1bzn-Zmt88rydDn_KD_PHqNonZfFqDyzTHVpw9rnF2o4aj3lMstChFcfks-o0ELyPwGOGqrq7u_vxioBQagBuUR9jU6tRWpDKwqCe3BlpgTqoVukXuCkXmNbs-Zs7oo4gN24sorkTlhcxanL9976p1M3b-Tx5D7W_WAgtrB7lgztKS9gyLrA5e3IJXKnT2z0rFF4CFxVBFITvRMqTHOO-yfuLkI731PuQDrf3SX9_099fhJQFoffpk4JBq0rg7s_QpC5Z-aG_TX9Fgy8WB-PSVOOgVTPW6G9dbsyIwaSZhcenPq3kshZjg0Dia2MbLm3Qk_jDb6YFr-bT_j1yabPkmwVC11PV-MIP-M-xZnyWX6Z68dWXC0ILQstpfX413fcAcDKzZ2J0eBuIQxK_aJymzznvdSJanJXmZghde1WvRWgxn3AZvGNCqJrQwplS7UzDzbr9mJ0uWp5AzlCtL6bFKH15bkAo2QH3eI64_7yeW3FjhF75pzzb-SkM7ueXkPSKk3TjzfmQ_OQmyTc_0dFoRy2nlSeqJ6WXbV80q7gp45ItcBXlUVHkRZQWi36VxEURhixJGdYRaxKaF5hlSRrlbVOFWbbgKxrSJMxoGIVhGRUB5i1GWZuEKaOUZiVJQtwxLgIh9juXsQufeKsyi9JsIViFwvgOhlJ_FgilrpnRK6e_rMbOkCQU3FhztmC5Fb7tufrvhqQbkl75Fuf4uV7rus8SFyPf5UzNy7mtubyFWYxarF4dP277sQpqtSN06whNf8tBq-9YW0K33j_jrjXv4n5F_w8AAP__jo_mRA">