diff --git a/include/Support/DataTypes.h b/include/Support/DataTypes.h index 473b5b9f38c..3d377bebe69 100644 --- a/include/Support/DataTypes.h +++ b/include/Support/DataTypes.h @@ -23,20 +23,29 @@ #include #ifdef __linux__ -# include +# include +# if BYTE_ORDER == LITTLE_ENDIAN +# undef BIG_ENDIAN +# else +# undef LITTLE_ENDIAN +# endif #else -#if (BSD >= 199103) -# include -#endif +# if (BSD >= 199103) +# include +# endif #endif #ifdef __sparc__ -#include -#ifdef _LITTLE_ENDIAN -#define LITTLE_ENDIAN 1 -#else -#define BIG_ENDIAN 1 +# include +# ifdef _LITTLE_ENDIAN +# define LITTLE_ENDIAN 1 +# else +# define BIG_ENDIAN 1 +# endif #endif + +#if (defined(LITTLE_ENDIAN) && defined(BIG_ENDIAN)) +#error "Cannot define both LITTLE_ENDIAN and BIG_ENDIAN!" #endif #if (!defined(LITTLE_ENDIAN) && !defined(BIG_ENDIAN)) || !defined(INT64_MAX)