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;

}

Reply via email to