<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">