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

    <tr>
        <th>Summary</th>
        <td>
            __builtin_setjmp miscompiles on x64-pc-windows-msvc
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang:codegen,
            miscompilation
      </td>
    </tr>

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

    <tr>
      <th>Reporter</th>
      <td>
          duk-37
      </td>
    </tr>
</table>

<pre>
    Clang relies on `llvm.frameaddress(0)` returning RBP, which isn't the case on X64 Windows (see `X86IselLowering::LowerFRAMEADDR`).

Repro:
```cpp
void *buf[5];

void foo() {
    __builtin_longjmp(buf, 1);
}

int main() {
 if (!__builtin_setjmp(buf)) {
        foo();
   }
}
```

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJxcks-OmzwUxZ_msrESmcu_eMGCJF-kT2qlKpvObmTgAp4aG9lm0r59ZZjOdIoQiAP-HY7vkd6r0RDVUJyhuCZyDZN1db_-OGRV0tr-V33R0ozMkVbkmTUMSq7163wcnJxJ9r0j7wFPHFBAyZmjsDqjzMju52-AF_aYVDcx5Q1gFViYiHXSUyQ9lTn7rkxvH54BnjxRhD-dyv896S_2QU6ZEbIGsmZ7ut2br_811-sdyuh2BN4Ab-60OBu_4k3Ut7NbFuDNq1U9A2zadYDiXEBxhey8L9peDdYCngAFgyrqjDH2_NyuSgdlnrU148u8AJ7ierywNCbcAdV1xygT2CyV-YxRA9uE9APmKfzFEp894_H-L7sDY-zNZL_-CQa8Sfo660UmZEJ1WnFecCGqKpnqdujLtM1kWoiyFDLnvahEyanIs1y2QiaqRo5ZmiJPRYFFdeRcyBKHUqR5WhV9BTmnWSp93AZs3Zgo71eqKxT8lGjZkvZbUxC72ArIms72NJIBRMALIM7Kd3ZelJZB2U0uromrI_DQrqOHnGvlg_-wCCpoqv_dKvYO2lv3s8wPS3d47HU5zP61S1an6ymExcfp4w3wNqowre2xszPgLTq83Q6Lsy_UBcDblsgD3rZQvwMAAP__PA7k1w">