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

    <tr>
        <th>Summary</th>
        <td>
            Miscompile with __arm_locally_streaming with -march=armv8-a+sme
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          efriedma-quic
      </td>
    </tr>
</table>

<pre>
    Consider:

```
__arm_locally_streaming void f(int *p, int n) {
  #pragma clang loop vectorize_width(4, scalable)
  for (int i = 0; i < n; ++i) {
    p[i]++;
  }
}
```

Compile with `-march=armv8-a+sme`.  The resulting assembly starts with:

```
 sub     sp, sp, #96
        rdsvl   x9, #1
        lsr     x9, x9, #3
 str     x9, [sp, #16]
        mov     x9, x0
        bl __arm_get_current_vg
[...]
```

The bl corrupts x30.

Demo at https://godbolt.org/z/Ga9zaWEen

Workarounds:

- Use `-march=armv8-a+sve+sme` or similar
- Use -mno-omit-leaf-frame-pointer

CC @sdesmalen-arm @MacDue 
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJx0U02PozgQ_TXFpQRyzEfgwCEkmz3NbVdzjAqoEO_amLUNPd2_fgWJMlGrO7LsUh71XPWei7xXw8hcQ95AfopoDjfrar46xb2h-L9ZdVFr-_f6aEevenaQHkBsqxCPJQ6XCzlz0bYjrd8vPjgmo8YBF6t6vIIs1RgQ5GECecQ1HkFWCPsGxAERZDo5Ggxhp2kcUFs74cJdsE598OVN9eEGsszWZN-RplYzyGrLvVqHD36FkJ5QQNps4RHHNQTZgGzU632IE-SNgvx0ByF91LE_rX3d95fuQByO1kxKM76pcEMoRGzIdTdIT-TMUsYEsvGGoRAJ4l83Rsd-1mGVgLxn0-p39IFc8BvDlxqin9u1NvSbSvcdZFoVj6LXn-v9ohHxV_VAdy-g9m477-Dzk3QjD68Y5M2Tf1esQvxmMXZ5ZREvUKvx7vTA4dLNzvEYLsuwNpI3SZLciT5Jt8rRauysc_MUPP5KRXJHTmwsUsBbCJNfNZFnkOfB9q3VIbFuAHn-AHn-k6oP-vkHj_e0n9b9S87OY--fQsb4t-fvjFn4aQ9ah14Zpck9s2Iz2tgaFWLNdI2vjgzHk1VjYPdw_4iQCd-zN6R5jMmZ9Y8f1J1mxqiv075KK4q43u1zUcp9WeTRrS64o1RUMrtmMm2rLCsFEXWcUV9eO8oiVUshc1HIXOQik3ki-x0J3ueUlVTmXQGZYENKJ1ovZlUkUt7PXO-yvEjzSFPL2m-zK-XIb7ihIOU6yq5ek-J2HjxkQisf_G-aoILm-ofy3evD_m6MN_DrJx_NTtefDFThNrdJZw3I83rj44gnZ__hLoA8b3V6kOdHI0st_w8AAP__8JJWWQ">