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

    <tr>
        <th>Summary</th>
        <td>
            [Clang] Return statement cause ubsan failure with __builtin_assume_alignment
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

    <tr>
      <th>Reporter</th>
      <td>
          yronglin
      </td>
    </tr>
</table>

<pre>
    https://godbolt.org/z/91qxq73Mb

```
struct A { int n; };
struct B { int n; };
struct C : A, B {};

void *f(C *c) {
  // Incorrectly returns `c` rather than the address of the B base class.
  return __builtin_assume_aligned((B*)c, 8);
}

extern "C" int printf(const char *, ...);

int main() {
    C c;
 printf("%p\n", f(&c));
#ifdef FOO
    return 0;
#endif
}
```

if lose `return 0` in main, ubsan will emit an error, but it will pass when there has a return statement.
```
Program returned: 0
/app/example.cpp:7:35: runtime error: assumption of 8 byte alignment for pointer of type 'B *' failed
0x7fff7a635cdc: note: address is 4 aligned, misalignment offset is 4 bytes
  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  83 70 3e ea 8a 7f 00 00  08 00 00 00 00 00 00 00
              ^ 
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /app/example.cpp:7:35 in 
0x7fff7a635cdc
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyEVE2PozgQ_TWVS2kiMOHrkAMhG2kPrVnNaA57ahlcBK-MzdimP-bXr-yQTqfVsxshB6hXVa-qHsWdk2dNtIf8APlxwxc_Grt_tUafldSbzojX_ej97CBrgJ2Anc5GdEb5rbFnYKdfwE51-vPlZ5k9dJAcIWnWs0jWKz46b5feY4NQHlBqjxqyA0J5hOxwhzj8L6JFyBpsgLUX8HvI5XwyUiCwZgBWteGmB1ZHaDQjXirBP3VvrKXeq1e05BerHUKR9FAkaLkfyaIfuUY_EnIhLDmHZoiPB-y4I-wVd257DXuJgY-P3SKVl_qRO7dM9MhVaLIAVgGrDsAaYHUf-FfA6hv38vi-CHrxZDUCYy0wFjsyW6l9KKo32nnsR24xRmtxu93exYpn8Jm41DHxXQMQW-zf0LfAwBiwfIa81fG2xcvbInTwLgHL5CBowNPXr7egawOS9zDSQg4fK7wXx8p2QGUchQm8xSkSlHqtocWlc1zjs1QKaZIeuUay1thg6xaP0l-MM3cOn0eKk7OEI3fIr-Sc554m0n77KZe_rDlbPq1oEkFrV5rsxOcZ2Ile-DQr2vbzDFlTQtZkecDZRXs50UoqazDOf_bS6KCbCrtXTxjVEAjgYCzORmpPNurqdSYEVh4uQy1x4FKRuCRPXsphGEpeZHkv-hBcG08xyapM6XCHb1JrcZLulsoMgyN_wQQW7jq0JPn8-r2hyrBMMCMkjhXHcnjzqD71uMnj9oP8D7y8__7j4aH59nco5IcWNEhN4kAjf5LGfudaevmLYi-Xq_VLt5rxPwcShPNp6-6nvhH7TNRZzTe0T4uK1XmSVvVm3A-iT4dU5AUVqUiHXdlnxIu6qEXd70S328g9S1iW5Ema7pJ6V2zTLB_6Ik0Yo3xX8QR2CU1cqq1ST1PYlxvp3EL7gu3KaqN4R8rFxcuYpmeMxvDV5ceN3QefL91ydrBLlHTe3aJ46VXc2K3i-gz5Eb99kDb2fHG0fi9BRYslfJZ-_M1uCj6bxaqPq176cem2vZmAnUL69e_LbM0_1Htgp0jaATvFov4NAAD__ysf1YQ">