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; }