summaryrefslogtreecommitdiffstats
path: root/compiler-rt/lib/builtins
diff options
context:
space:
mode:
authorEd Schouten <ed@80386.nl>2015-02-23 09:27:49 +0000
committerEd Schouten <ed@80386.nl>2015-02-23 09:27:49 +0000
commitf6d492e6835b23495ae24c0f0473b81d5eca8104 (patch)
tree6630ae89a11c98aa764fd6ad588247f2a17c1ce9 /compiler-rt/lib/builtins
parent4992099b42e9bb6faceb61ed093155bf2ebe7157 (diff)
downloadbcm5719-llvm-f6d492e6835b23495ae24c0f0473b81d5eca8104.tar.gz
bcm5719-llvm-f6d492e6835b23495ae24c0f0473b81d5eca8104.zip
Use compiler provided endianness definitions if available.
This makes int_endianness.h work on operating systems for which we haven't written explicit constructs, as long as GCC or Clang are being used. llvm-svn: 230208
Diffstat (limited to 'compiler-rt/lib/builtins')
-rw-r--r--compiler-rt/lib/builtins/int_endianness.h28
1 files changed, 16 insertions, 12 deletions
diff --git a/compiler-rt/lib/builtins/int_endianness.h b/compiler-rt/lib/builtins/int_endianness.h
index 4b35bde079e..7995ddbb953 100644
--- a/compiler-rt/lib/builtins/int_endianness.h
+++ b/compiler-rt/lib/builtins/int_endianness.h
@@ -16,6 +16,20 @@
#ifndef INT_ENDIANNESS_H
#define INT_ENDIANNESS_H
+#if defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && \
+ defined(__ORDER_LITTLE_ENDIAN__)
+
+/* Clang and GCC provide built-in endianness definitions. */
+#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
+#define _YUGA_LITTLE_ENDIAN 0
+#define _YUGA_BIG_ENDIAN 1
+#elif __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
+#define _YUGA_LITTLE_ENDIAN 1
+#define _YUGA_BIG_ENDIAN 0
+#endif /* __BYTE_ORDER__ */
+
+#else /* Compilers other than Clang or GCC. */
+
#if defined(__SVR4) && defined(__sun)
#include <sys/byteorder.h>
@@ -84,18 +98,6 @@
/* .. */
-#if defined(__linux__)
-
-#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
-#define _YUGA_LITTLE_ENDIAN 0
-#define _YUGA_BIG_ENDIAN 1
-#elif __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
-#define _YUGA_LITTLE_ENDIAN 1
-#define _YUGA_BIG_ENDIAN 0
-#endif /* __BYTE_ORDER__ */
-
-#endif /* GNU/Linux */
-
#if defined(_WIN32)
#define _YUGA_LITTLE_ENDIAN 1
@@ -103,6 +105,8 @@
#endif /* Windows */
+#endif /* Clang or GCC. */
+
/* . */
#if !defined(_YUGA_LITTLE_ENDIAN) || !defined(_YUGA_BIG_ENDIAN)
OpenPOWER on IntegriCloud