<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/71158>71158</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[AArch64_32][bug] -O1 will let the 32bit register to 64bit register of Pointer
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
ls-Mou
</td>
</tr>
</table>
<pre>
demo:
```
typedef struct {
int a;
int b;
} context_t;
static inline void InitSysContextFields(context_t * tmp) {
tmp->a = 1;
tmp->b = 0;
}
int CommonPreparePrologue(context_t * tmp) {
if (!tmp) return 0;
InitSysContextFields(tmp);
return (tmp->a + tmp->b);
}
```
-O0 CommonPreparePrologue through w register to pass attribute
![image](https://github.com/llvm/llvm-project/assets/149390011/ad40105b-c56d-43a7-948b-3b0213371a7f)
-O1 CommonPreparePrologue through x register to pass attribute
![image](https://github.com/llvm/llvm-project/assets/149390011/fe3cd661-ce16-4688-8ec4-42e395f66e49)
https://godbolt.org/z/fn5EjWxE6
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzElEuPmzoUxz-N2VhEfgFmwSKZTKS7uLoj3UWXIxsO4JGDI_swj376CpJJM6NWbVeVIoXz_v846JiU3DABNKTYkWKfmRnHEBuf8n_DnNnQvTUdHAORW8L2hG1JyS6_1cS3E3TQ04RxbpGSanf2U-ompIbID7a92qTa0zZMCK_4iFdvQoOupW7ybgL6HFxH_5kc_v-W7s65Bwe-S0Toay0lYkvxeCKivp2-uHIi7w0lck_5jY73iF0j7FbR-WEReheOxzA9RDiZCA8x-DDM8BtjXU-J0ETwSygCznG6mUJ_BnQuuMm7lJ5DFxSxu6q_Tb5K_7Sc_D_2YxKKYwzzMNIXGmFwCSFSDPRkUqIGMTo7I1xaCk6KnTuaAUixJ0KPiKe0fA7iQMRhcDjOdtOGIxEH75_f__JTDE_QIhEHkxJgIuLAVS1rxjhfnJ1inBU2b4uyy5U0VV4rbXNpmeBSVtxU_YJ41nCh4b-gef1bND3ItitLnrfAy1yVWucaWpUrAbIu-rIEVV9pPo0MnQ0eNyEORBy-Ls2m4v7py-t9mXWN7GpZmwwaXtY1Y0LrKhubujPGctWrXnGtFesLKAXrdKsrbbTpM9cIJiTnTLKaK1Vt2r60YGVX2Fa1qudEMTga5zcL3TI7cynN0FScFzrzxoJP60UQYoIXugaJEMuBiM36Ruw8JKKYdwnT9y7o0K-nZLuN7ViqR7nUkGJn54EUe7rs8MV5Tz0gxRGoFNbhh7WV6oMn9PQhuAkhZnP0zR_va5W-7GtF-xYAAP__f2d8Mg">