https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122267

--- Comment #10 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Indeed,
        if constexpr ((sizeof(_Vt) & (sizeof(_Vt) - 1)) || sizeof(_Vt) > 16)
          {
            if constexpr (is_floating_point_v<_Vt> || is_pointer_v<_Vt>)
              return __alignof__(_Vt);
            else
              return alignof(_Vt);
          }
        else
          // 1/2/4/8/16-byte types, including integral types,
          // must be aligned to at least their size.
          return (sizeof(_Vt) > alignof(_Vt)) ? sizeof(_Vt) : alignof(_Vt);
would make more sense to me.

Reply via email to