This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Remove __GLIBC_HAVE_LONG_LONG


Since we concluded that "long long" could be part of the baseline
required for compilers building code using glibc headers, this patch
removes __GLIBC_HAVE_LONG_LONG conditionals (and the fallback __quad_t
/ __u_quad_t definitions with them).

Tested x86_64.

2013-01-11  Joseph Myers  <joseph@codesourcery.com>

	* include/features.h (__GLIBC_HAVE_LONG_LONG): Remove.
	* bits/byteswap.h [__GLIBC_HAVE_LONG_LONG]: Change #elif condition
	to just #else.
	* bits/types.h [__GLIBC_HAVE_LONG_LONG]: Likewise.  Remove
	[!__GLIBC_HAVE_LONG_LONG] case.
	* posix/sys/types.h [__GLIBC_HAVE_LONG_LONG]: Change #elif
	condition to just #else.
	* stdlib/stdlib.h [__USE_ISOC99 || (__GLIBC_HAVE_LONG_LONG &&
	__USE_MISC)]: Change all uses to [__USE_ISOC99 || __USE_MISC].
	[__GLIBC_HAVE_LONG_LONG && __USE_BSD]: Change to [__USE_BSD].
	* string/byteswap.h [__GLIBC_HAVE_LONG_LONG]: Make code
	unconditional.
	* string/endian.h [__GLIBC_HAVE_LONG_LONG]: Likewise.
	* sysdeps/s390/bits/byteswap.h [__GLIBC_HAVE_LONG_LONG]: Change
	#elif condition to just #else.
	* sysdeps/unix/sysv/linux/sys/sysmacros.h
	[__GLIBC_HAVE_LONG_LONG]: Make code unconditional.
	* sysdeps/x86/bits/byteswap.h [__GLIBC_HAVE_LONG_LONG]: Change
	#elif condition to just #else.

diff --git a/bits/byteswap.h b/bits/byteswap.h
index 35d4cb3..57d34b4 100644
--- a/bits/byteswap.h
+++ b/bits/byteswap.h
@@ -91,7 +91,7 @@ __bswap_64 (__uint64_t __bsx)
 	   }								      \
 	 __r.__ll; }))
 # endif
-#elif __GLIBC_HAVE_LONG_LONG
+#else
 # define __bswap_constant_64(x) \
      ((((x) & 0xff00000000000000ull) >> 56)				      \
       | (((x) & 0x00ff000000000000ull) >> 40)				      \
diff --git a/bits/types.h b/bits/types.h
index c45d6e4..dc7b784 100644
--- a/bits/types.h
+++ b/bits/types.h
@@ -42,7 +42,7 @@ typedef unsigned int __uint32_t;
 #if __WORDSIZE == 64
 typedef signed long int __int64_t;
 typedef unsigned long int __uint64_t;
-#elif defined __GLIBC_HAVE_LONG_LONG
+#else
 __extension__ typedef signed long long int __int64_t;
 __extension__ typedef unsigned long long int __uint64_t;
 #endif
@@ -51,18 +51,9 @@ __extension__ typedef unsigned long long int __uint64_t;
 #if __WORDSIZE == 64
 typedef long int __quad_t;
 typedef unsigned long int __u_quad_t;
-#elif defined __GLIBC_HAVE_LONG_LONG
+#else
 __extension__ typedef long long int __quad_t;
 __extension__ typedef unsigned long long int __u_quad_t;
-#else
-typedef struct
-{
-  long __val[2];
-} __quad_t;
-typedef struct
-{
-  __u_long __val[2];
-} __u_quad_t;
 #endif
 
 
diff --git a/include/features.h b/include/features.h
index d6c32cb..ca83da0 100644
--- a/include/features.h
+++ b/include/features.h
@@ -358,14 +358,6 @@
 #define __GLIBC_PREREQ(maj, min) \
 	((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min))
 
-/* Decide whether a compiler supports the long long datatypes.  */
-#if defined __GNUC__ \
-    || (defined __PGI && defined __i386__ ) \
-    || (defined __INTEL_COMPILER && (defined __i386__ || defined __ia64__)) \
-    || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L)
-# define __GLIBC_HAVE_LONG_LONG	1
-#endif
-
 /* This is here only because every header file already includes this one.  */
 #ifndef __ASSEMBLER__
 # ifndef _SYS_CDEFS_H
diff --git a/posix/sys/types.h b/posix/sys/types.h
index b36b561..33c2176 100644
--- a/posix/sys/types.h
+++ b/posix/sys/types.h
@@ -164,7 +164,7 @@ typedef	short int int16_t;
 typedef	int int32_t;
 #  if __WORDSIZE == 64
 typedef long int int64_t;
-#  elif __GLIBC_HAVE_LONG_LONG
+#  else
 __extension__ typedef long long int int64_t;
 #  endif
 # endif
@@ -175,7 +175,7 @@ typedef	unsigned short int u_int16_t;
 typedef	unsigned int u_int32_t;
 # if __WORDSIZE == 64
 typedef unsigned long int u_int64_t;
-# elif __GLIBC_HAVE_LONG_LONG
+# else
 __extension__ typedef unsigned long long int u_int64_t;
 # endif
 
diff --git a/stdlib/stdlib.h b/stdlib/stdlib.h
index 41fb7e7..b49a41c 100644
--- a/stdlib/stdlib.h
+++ b/stdlib/stdlib.h
@@ -151,7 +151,7 @@ extern long int atol (const char *__nptr)
      __THROW __attribute_pure__ __nonnull ((1)) __wur;
 __END_NAMESPACE_STD
 
-#if defined __USE_ISOC99 || (defined __GLIBC_HAVE_LONG_LONG && defined __USE_MISC)
+#if defined __USE_ISOC99 || defined __USE_MISC
 __BEGIN_NAMESPACE_C99
 /* Convert a string to a long long integer.  */
 __extension__ extern long long int atoll (const char *__nptr)
@@ -189,7 +189,7 @@ extern unsigned long int strtoul (const char *__restrict __nptr,
      __THROW __nonnull ((1));
 __END_NAMESPACE_STD
 
-#if defined __GLIBC_HAVE_LONG_LONG && defined __USE_BSD
+#ifdef __USE_BSD
 /* Convert a string to a quadword integer.  */
 __extension__
 extern long long int strtoq (const char *__restrict __nptr,
@@ -200,9 +200,9 @@ __extension__
 extern unsigned long long int strtouq (const char *__restrict __nptr,
 				       char **__restrict __endptr, int __base)
      __THROW __nonnull ((1));
-#endif /* GCC and use BSD.  */
+#endif /* Use BSD.  */
 
-#if defined __USE_ISOC99 || (defined __GLIBC_HAVE_LONG_LONG && defined __USE_MISC)
+#if defined __USE_ISOC99 || defined __USE_MISC
 __BEGIN_NAMESPACE_C99
 /* Convert a string to a quadword integer.  */
 __extension__
@@ -215,7 +215,7 @@ extern unsigned long long int strtoull (const char *__restrict __nptr,
 					char **__restrict __endptr, int __base)
      __THROW __nonnull ((1));
 __END_NAMESPACE_C99
-#endif /* ISO C99 or GCC and use MISC.  */
+#endif /* ISO C99 or use MISC.  */
 
 
 #ifdef __USE_GNU
diff --git a/string/byteswap.h b/string/byteswap.h
index a31e902..705015f 100644
--- a/string/byteswap.h
+++ b/string/byteswap.h
@@ -33,9 +33,7 @@
 /* Return a value with all bytes in the 32 bit argument swapped.  */
 #define bswap_32(x) __bswap_32 (x)
 
-#if __GLIBC_HAVE_LONG_LONG
 /* Return a value with all bytes in the 64 bit argument swapped.  */
-# define bswap_64(x) __bswap_64 (x)
-#endif
+#define bswap_64(x) __bswap_64 (x)
 
 #endif /* byteswap.h */
diff --git a/string/endian.h b/string/endian.h
index 9ae5f2d..f414cb1 100644
--- a/string/endian.h
+++ b/string/endian.h
@@ -70,12 +70,10 @@
 #  define be32toh(x) __bswap_32 (x)
 #  define le32toh(x) (x)
 
-#  if __GLIBC_HAVE_LONG_LONG
-#   define htobe64(x) __bswap_64 (x)
-#   define htole64(x) (x)
-#   define be64toh(x) __bswap_64 (x)
-#   define le64toh(x) (x)
-#  endif
+#  define htobe64(x) __bswap_64 (x)
+#  define htole64(x) (x)
+#  define be64toh(x) __bswap_64 (x)
+#  define le64toh(x) (x)
 
 # else
 #  define htobe16(x) (x)
@@ -88,12 +86,10 @@
 #  define be32toh(x) (x)
 #  define le32toh(x) __bswap_32 (x)
 
-#  if __GLIBC_HAVE_LONG_LONG
-#   define htobe64(x) (x)
-#   define htole64(x) __bswap_64 (x)
-#   define be64toh(x) (x)
-#   define le64toh(x) __bswap_64 (x)
-#  endif
+#  define htobe64(x) (x)
+#  define htole64(x) __bswap_64 (x)
+#  define be64toh(x) (x)
+#  define le64toh(x) __bswap_64 (x)
 # endif
 #endif
 
diff --git a/sysdeps/s390/bits/byteswap.h b/sysdeps/s390/bits/byteswap.h
index 9221ea2..5d28912 100644
--- a/sysdeps/s390/bits/byteswap.h
+++ b/sysdeps/s390/bits/byteswap.h
@@ -112,7 +112,7 @@ __bswap_32 (unsigned int __bsx)
 	  __r.__l[1] = __bswap_32 (__w.__l[0]);		\
 	  __r.__ll; })
 # endif
-#elif __GLIBC_HAVE_LONG_LONG
+#else
 # define __bswap_constant_64(x) \
      ((((x) & 0xff00000000000000ull) >> 56)				      \
       | (((x) & 0x00ff000000000000ull) >> 40)				      \
diff --git a/sysdeps/unix/sysv/linux/sys/sysmacros.h b/sysdeps/unix/sysv/linux/sys/sysmacros.h
index 76eaf9f..a1f1b26 100644
--- a/sysdeps/unix/sysv/linux/sys/sysmacros.h
+++ b/sysdeps/unix/sysv/linux/sys/sysmacros.h
@@ -21,10 +21,6 @@
 
 #include <features.h>
 
-/* If the compiler does not know long long it is out of luck.  We are
-   not going to hack weird hacks to support the dev_t representation
-   they need.  */
-#ifdef __GLIBC_HAVE_LONG_LONG
 __BEGIN_DECLS
 
 __extension__
@@ -38,7 +34,7 @@ extern unsigned long long int gnu_dev_makedev (unsigned int __major,
 					       unsigned int __minor)
      __THROW __attribute_const__;
 
-# ifdef __USE_EXTERN_INLINES
+#ifdef __USE_EXTERN_INLINES
 __extension__ __extern_inline __attribute_const__ unsigned int
 __NTH (gnu_dev_major (unsigned long long int __dev))
 {
@@ -58,13 +54,12 @@ __NTH (gnu_dev_makedev (unsigned int __major, unsigned int __minor))
 	  | (((unsigned long long int) (__minor & ~0xff)) << 12)
 	  | (((unsigned long long int) (__major & ~0xfff)) << 32));
 }
-# endif
+#endif
 __END_DECLS
 
 /* Access the functions with their traditional names.  */
-# define major(dev) gnu_dev_major (dev)
-# define minor(dev) gnu_dev_minor (dev)
-# define makedev(maj, min) gnu_dev_makedev (maj, min)
-#endif
+#define major(dev) gnu_dev_major (dev)
+#define minor(dev) gnu_dev_minor (dev)
+#define makedev(maj, min) gnu_dev_makedev (maj, min)
 
 #endif /* sys/sysmacros.h */
diff --git a/sysdeps/x86/bits/byteswap.h b/sysdeps/x86/bits/byteswap.h
index 0f96ba3..9e2effc 100644
--- a/sysdeps/x86/bits/byteswap.h
+++ b/sysdeps/x86/bits/byteswap.h
@@ -134,7 +134,7 @@ __bswap_64 (__uint64_t __bsx)
 	   }                                                                  \
 	 __r.__ll; }))
 # endif
-#elif __GLIBC_HAVE_LONG_LONG
+#else
 # define __bswap_constant_64(x) \
      ((((x) & 0xff00000000000000ull) >> 56)				      \
       | (((x) & 0x00ff000000000000ull) >> 40)				      \

-- 
Joseph S. Myers
joseph@codesourcery.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]