https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110946
--- Comment #11 from Alexander Monakov <amonakov at gcc dot gnu.org> ---
(In reply to Alexander Monakov from comment #8)
> inline void mbedtls_put_unaligned_uint64(void *p, uint64_t x)
> {
> memcpy(p, &x, sizeof(x));
> }
>
>
> We deciding to not inline this, while inlining its get_unaligned
> counterpart? Seems bizarre.
I can reproduce this part, and on my side it's caused by _FORTIFY_SOURCE: with
fortification, put_unaligned indeed looks bigger during inlining:
mbedtls_put_unaligned_uint32 (void * p, uint32_t x)
{
long unsigned int _3;
<bb 2> [local count: 1073741824]:
_3 = __builtin_object_size (p_2(D), 0);
__builtin___memcpy_chk (p_2(D), &x, 4, _3);
return;
}
mbedtls_get_unaligned_uint64 (const void * p)
{
long unsigned int _3;
<bb 2> [local count: 1073741824]:
_3 = MEM <long unsigned int> [(char * {ref-all})p_2(D)];
return _3;
}