Вот код:
#include <cstring>
#include <cstdint>
#include <cstddef>
uint64_t uint5korr(const std::byte *p)
{
uint64_t result= 0;
std::memcpy(&result, p, 5);
return result;
}
https://godbolt.org/z/vULPAZ
clang здесь оптимизирует result
для регистрации, а gcc - нет.
Я подозреваю, что это может быть как-то связано с тем, что я беру адрес переменной, поскольку нельзя взять адрес регистра.
Это просто отсутствующая оптимизация в gcc или, может быть, clang как-то нарушает стандарт?