<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/150737>150737</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[RegAlloc][AArch64] Missed optimizate for register spill
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
hstk30-hw
</td>
</tr>
</table>
<pre>
https://godbolt.org/z/z4MrMcW4j
```
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int uint32_t;
typedef unsigned long int uint64_t;
typedef struct param_s {
void *a;
uint32_t b;
uint32_t c;
uint8_t d : 1;
} param_t;
typedef _Bool (*IsEnabled)();
typedef struct {
IsEnabled Enabled;
} FuncCb;
extern FuncCb g_hookFunc;
uint64_t bar(void *flow, uint16_t type);
uint64_t fuzz(void *flow, uint32_t syncType);
uint64_t bob(void *flow);
void foo(param_t *param)
{
if (param->a == ((void*)0)) {
return;
}
if (__builtin_expect(!!(param->b != 0), 0)) {
(void)fuzz(param->a, param->b);
}
if (__builtin_expect(!!(param->c != 0), 0)) {
if (g_hookFunc.Enabled()) {
(void)bar(param->a, (uint16_t)param->c);
}
}
if (__builtin_expect(!!(param->d != 0), 0)) {
(void)bob(param->a);
}
return;
}
```
For this case, LLVM spill X19 to stack, GCC 15 has optimizated it.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJykVU-P4jYU_zQvl6dBiZ2E5JBDBpaq0s6lqtrekO04xDsmRrYzuzOfvnIICXRAbbXICHj-Pf_-2DjMOXXopawge4ZsG7HBd8ZWnfOvNH7qvkfcNO9V5_3JAa2B7IDsDqbhRvuVsQcgu4_wTl_si_gz_QZxHUYeTyOu_ftJNrLFoR-JGhQdszio3hd7D_T5HsR1xvoRk-QPQao_Qyh5CNGmP8y4PL3grqDO20F4PDHLjnuHsA7ziIhvRjUIpGbnllC6kCG_UxO3tWLvsUGgNSYT53o7sXwWsX82RiOQAkj9q_vSM65lA6QcK-UjzYvWuQcvvTPlbujFhs9LyB9e2n6q4mHfGfMafsyAS1DImQVSXFJotfkOZDNvCQYts7a5qR0-Ph50jSG59178freTG_6pcXE-1ltjgBRThgE1fg2wYPWShWrxgnoC-oUh0C3Q7TndkQBIDaSMx3zLqxTDy0o_2H7ZSlhvzwqWpfd7PijtVb-XP05S-HHhZBwLLcdQoFs802zwPt2sqJySW3SHpmW5OYyfESX-m6jzisvZWM0HsriLvzVyPje3PoAU83-ZlIueG1eLs1uP_8Ng8y8Gr1SOx-1a5aN8r0_ENHF1uUFc74xF3ymHgjkZSL9-_eMF3UlpjX8lJXqDzjPxGqZ-2WwwybBjDs3Jq6P6YD7cZH4VNRVtSlqySFbJOqNpWZbrIuqqpiAplyQXPMlJmoi2jVkq45aRnLR5ISJVkZhk8ZrkMU1KWqxInCZU5iwpecpZlkIayyNTeqX12zHc2ZFybpBVksVruo4041K7y_Vvq4B64sPBQRpr5bxb-rzyenxQ_CYPtdZGQLaF7LmurejyFLItvijnZHNlDltj0cqDcl7acyrRYPU_HyjKdwNfCXMEsgt008fTyZpv427vRs0OyG6S_VaRvwMAAP__Z9LxMA">