Index: configure.ac ================================================================== --- configure.ac +++ configure.ac @@ -788,13 +788,10 @@ [AC_DEFINE(OF_HAVE_INTTYPES_H, 1, [Whether we have inttypes.h])]) AC_CHECK_HEADER(sys/types.h, [AC_DEFINE(OF_HAVE_SYS_TYPES_H, 1, [Whether we have sys/types.h])]) -AC_CHECK_TYPE(max_align_t, - [AC_DEFINE(OF_HAVE_MAX_ALIGN_T, 1, [Whether we have max_align_t])]) - AC_CHECK_HEADER(stdnoreturn.h, [AC_DEFINE(OF_HAVE_STDNORETURN_H, 1, [Whether we have stdnoreturn.h])]) AC_CHECK_TYPE(wchar_t) AC_CHECK_HEADER(wchar.h) Index: src/macros.h ================================================================== --- src/macros.h +++ src/macros.h @@ -112,19 +112,23 @@ #else # define OF_ALIGNOF(type) __alignof__(type) # define OF_ALIGNAS(type) OF_ALIGN(OF_ALIGNOF(type)) #endif -#if __STDC_VERSION__ >= 201112L && defined(OF_HAVE_MAX_ALIGN_T) -# define OF_BIGGEST_ALIGNMENT _Alignof(max_align_t) +#ifdef __BIGGEST_ALIGNMENT__ +# define OF_BIGGEST_ALIGNMENT __BIGGEST_ALIGNMENT__ #else -# ifdef __BIGGEST_ALIGNMENT__ -# define OF_BIGGEST_ALIGNMENT __BIGGEST_ALIGNMENT__ -# else -# /* Hopefully no arch needs more than 16 byte alignment */ -# define OF_BIGGEST_ALIGNMENT 16 -# endif +/* Hopefully no arch needs more than 16 byte alignment */ +# define OF_BIGGEST_ALIGNMENT 16 +#endif +/* + * We use SSE inline assembly on AMD64 and x86, so it must never be smaller + * than 16. + */ +#if (defined(OF_AMD64) || defined(OF_X86)) && OF_BIGGEST_ALIGNMENT < 16 +# undef OF_BIGGEST_ALIGNMENT +# define OF_BIGGEST_ALIGNMENT 16 #endif #define OF_PREPROCESSOR_CONCAT2(a, b) a##b #define OF_PREPROCESSOR_CONCAT(a, b) OF_PREPROCESSOR_CONCAT2(a, b) Index: src/objfw-defs.h.in ================================================================== --- src/objfw-defs.h.in +++ src/objfw-defs.h.in @@ -15,11 +15,10 @@ #undef OF_HAVE_FORWARDING_TARGET_FOR_SELECTOR #undef OF_HAVE_IPV6 #undef OF_HAVE_IPX #undef OF_HAVE_LIMITS_H #undef OF_HAVE_LINK -#undef OF_HAVE_MAX_ALIGN_T #undef OF_HAVE_NETATALK_AT_H #undef OF_HAVE_NETAT_APPLETALK_H #undef OF_HAVE_NETINET_IN_H #undef OF_HAVE_NETINET_TCP_H #undef OF_HAVE_NETIPX_IPX_H