<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/66370>66370</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[Bug][AArch64] Ensure SVE operand passed via memory are initialised.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
paulwalker-arm
</td>
</tr>
</table>
<pre>
Taking the example below it can be seen that `j` is not initialised by `main` when calling `F9`, which means `F9` reads uninitialised stack space.
```
#include <arm_sve.h>
#include <assert.h>
__attribute((noinline)) void F9(double a, double b, double c, double d,
double e, double f, double g, double h,
double i, svfloat32_t j) {
assert(!svptest_any(svptrue_b32(),
svcmpne_f32(svptrue_b32(), j, svdup_f32(2.0f))));
}
int main() {
svfloat32_t j = svdup_f32(2.0f);
F9(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, j);
return 0;
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJycVN2OqzgMfhpzYw1KEwjlgot2On2BXe1tFcCUdEJA-Wm3b7-ConMYqdJqF0WJw2d_thPHynt9tUQV5EfIT4mKoR9dNaloHsp8k_tQbkjqsX1Wf6pvba8YekL6Ww2TIazJjA_UARtlsSb0RBZDrwKCZDeQDLVHOwbUVgetjPbUYv2c0UFpOys8erLYKGNmbpDsXIJkwD_x0eumx4GU9b_-oyPVeox2y-eDar7RT6qhFNgJ2GGdJVvHa8uFto2JLSGIT-WGi79T2oP4eot7Ty5s4WW-XFQITtcxEPA98L0dtTXaEvASeIn3Ubd4LoHv2zHWhlDNqaxyvZGbjdwC_3zR4798qwFtjLuNfN3I_X8l1bOxv3dmVEHwS8DbnBAUx5XldSJL1jt_nwL5cFH2CXw_71ykSy34Ape_Xft7M0yWLt0CvVOc3cx-2zitWjxl3es41yHWEKA4be9C24BLFS1Um0h_ZoEgTm_5xS_95cJYupTd_11uPykdhegssjfB_yzLpK1EW4pSJVTtZJnJUspCJH1V7LjcUZNz6qhrpcwyyhrKi64tMyYlT3TFGRes3GU7wTIh0oJLLlqpmn3OiqzsIGM0KG1SY-5DOrpror2PVEkpCpYYVZPxy7vn3NIDFxA4n9uAq2abjzpePWTMaB_8b5agg1kaxjFeIT9BfjwcXNPLDPITflkfHeEff33hOJFTtsVpLp0W71rhQMPonqgcbVtCmkRnqj6EyYM4AD8DP1916GOdNuMA_Dy7XpePyY03agLw8xKwB35eEvonAAD___iiXtc">