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]

Re: [PATCH] Remove oldish __GNUC_PREREQ


On Sat, Mar 3, 2012 at 3:01 PM, Marek Polacek <polacek@redhat.com> wrote:
> On Thu, Mar 01, 2012 at 09:10:19PM +0000, Joseph S. Myers wrote:
>> misc/sys/cdefs.h is installed so should not have these conditionals
>> removed. ?bits/atomic.h is not installed so should have such conditionals
>> removed.
>
> Ok, updated patch below. ?Given that this is quite obvious, I think
> I'm going to commit this tomorrow or so. ?Thanks,
>
> 2012-03-03 ?Marek Polacek ?<polacek@redhat.com>
>
> ? ? ? ?* include/sys/cdefs.h: Remove __GNUC_PREREQ macro.
> ? ? ? ?* math/math_private.h: Likewise.
> ? ? ? ?* stdlib/tst-strtod.c: Likewise.
> ? ? ? ?* sysdeps/i386/i486/bits/atomic.h: Likewise.
> ? ? ? ?* sysdeps/x86_64/bits/atomic.h: Likewise.
>
> --- libc/include/sys/cdefs.h.mp 2012-03-03 20:50:05.725864596 +0100
> +++ libc/include/sys/cdefs.h ? ?2012-03-03 20:51:58.771131624 +0100
> @@ -14,11 +14,7 @@ libc_hidden_proto (__chk_fail)
> ?rtld_hidden_proto (__chk_fail)
>
>
> -# if __GNUC_PREREQ (4,3)
> -# ?define __attribute_alloc_size(...) __attribute__ ((alloc_size (__VA_ARGS__)))
> -# else
> -# ?define __attribute_alloc_size(...)
> -# endif
> +# define __attribute_alloc_size(...) __attribute__ ((alloc_size (__VA_ARGS__)))
> ?#endif
>
> ?#endif

OK.

> --- libc/stdlib/tst-strtod.c.mp 2012-03-03 20:50:11.257877664 +0100
> +++ libc/stdlib/tst-strtod.c ? ?2012-03-03 20:51:58.773131630 +0100
> @@ -1,4 +1,5 @@
> -/* Copyright (C) 1991,1996-2001,2003,2009,2011 Free Software Foundation, Inc.
> +/* Copyright (C) 1991,1996-2001,2003,2009,2011,2012

Merge years.

> + ? Free Software Foundation, Inc.
> ? ?This file is part of the GNU C Library.
>
> ? ?The GNU C Library is free software; you can redistribute it and/or
> @@ -64,12 +65,9 @@ static const struct ltest tests[] =
> ? ? { "0x0.8p-1022",
> ? ? ? 1.11253692925360069154511635866620203210960799023116591527666e-308,
> ? ? ? '\0', ERANGE },
> -#if __GNUC_PREREQ(2,96)
> - ? ?/* For older GCC release HUGE_VAL is not a constant. ?*/
> ? ? { "Inf", HUGE_VAL, '\0', 0 },
> ? ? { "-Inf", -HUGE_VAL, '\0', 0 },
> ? ? { "+InFiNiTy", HUGE_VAL, '\0', 0 },
> -#endif
> ? ? { "0x80000Ap-23", 0x80000Ap-23, '\0', 0 },
> ? ? { "1e-324", 0, '\0', ERANGE },
> ? ? { NULL, 0, '\0', 0 }

OK.

> --- libc/math/math_private.h.mp 2012-03-03 20:50:15.777888340 +0100
> +++ libc/math/math_private.h ? ?2012-03-03 20:51:58.774131633 +0100
> @@ -211,10 +211,8 @@ extern int ? ?__kernel_rem_pio2 (double*
> ?/* internal functions. ?*/
> ?extern double __copysign (double x, double __y);
>
> -#if __GNUC_PREREQ (4, 0)
> ?extern inline double __copysign (double x, double y)
> ?{ return __builtin_copysign (x, y); }
> -#endif
>
> ?/* ieee style elementary float functions */
> ?extern float __ieee754_sqrtf (float);
> @@ -258,10 +256,8 @@ extern int ? __kernel_rem_pio2f (float*,
> ?/* internal functions. ?*/
> ?extern float __copysignf (float x, float __y);
>
> -#if __GNUC_PREREQ (4, 0)
> ?extern inline float __copysignf (float x, float y)
> ?{ return __builtin_copysignf (x, y); }
> -#endif
>
> ?/* ieee style elementary long double functions */
> ?extern long double __ieee754_sqrtl (long double);
> @@ -326,10 +322,8 @@ extern void __sincosl (long double, long
> ?extern long double __logbl (long double x);
> ?extern long double __significandl (long double x);
>
> -#if __GNUC_PREREQ (4, 0)
> ?extern inline long double __copysignl (long double x, long double y)
> ?{ return __builtin_copysignl (x, y); }
> -#endif
>
> ?#endif

OK.

> --- libc/sysdeps/i386/i486/bits/atomic.h.mp ? ? 2012-03-03 20:47:18.923470587 +0100
> +++ libc/sysdeps/i386/i486/bits/atomic.h ? ? ? ?2012-03-03 20:52:09.906157929 +0100
> @@ -1,4 +1,5 @@
> -/* Copyright (C) 2002-2004,2006,2007,2009,2011 Free Software Foundation, Inc.
> +/* Copyright (C) 2002-2004,2006,2007,2009,2011,2012

Merge years.

> + ? Free Software Foundation, Inc.
> ? ?This file is part of the GNU C Library.
> ? ?Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
>
> @@ -55,33 +56,10 @@ typedef uintmax_t uatomic_max_t;
> ?#endif
>
>
> -#if __GNUC_PREREQ (4, 1)
> -# define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \
> +#define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \
> ? __sync_val_compare_and_swap (mem, oldval, newval)
> -# ?define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \
> +#define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \
> ? (! __sync_bool_compare_and_swap (mem, oldval, newval))
> -#else
> -# define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
> - ?({ __typeof (*mem) ret; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?\
> - ? ? __asm __volatile (LOCK_PREFIX "cmpxchgb %b2, %1" ? ? ? ? ? ? ? ? ? ? ? ?\
> - ? ? ? ? ? ? ? ? ? ? ?: "=a" (ret), "=m" (*mem) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?\
> - ? ? ? ? ? ? ? ? ? ? ?: "q" (newval), "m" (*mem), "0" (oldval)); ? ? ? ? ? ? \
> - ? ? ret; })
> -
> -# define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \
> - ?({ __typeof (*mem) ret; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?\
> - ? ? __asm __volatile (LOCK_PREFIX "cmpxchgw %w2, %1" ? ? ? ? ? ? ? ? ? ? ? ?\
> - ? ? ? ? ? ? ? ? ? ? ?: "=a" (ret), "=m" (*mem) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?\
> - ? ? ? ? ? ? ? ? ? ? ?: "r" (newval), "m" (*mem), "0" (oldval)); ? ? ? ? ? ? \
> - ? ? ret; })
> -
> -# define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
> - ?({ __typeof (*mem) ret; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?\
> - ? ? __asm __volatile (LOCK_PREFIX "cmpxchgl %2, %1" ? ? ? ? ? ? ? ? ? ? ? ? \
> - ? ? ? ? ? ? ? ? ? ? ?: "=a" (ret), "=m" (*mem) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?\
> - ? ? ? ? ? ? ? ? ? ? ?: "r" (newval), "m" (*mem), "0" (oldval)); ? ? ? ? ? ? \
> - ? ? ret; })
> -#endif
>
>
> ?#define __arch_c_compare_and_exchange_val_8_acq(mem, newval, oldval) \
> @@ -254,13 +232,8 @@ typedef uintmax_t uatomic_max_t;
> ? ? ? ?} ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \
> ? ? ?__result; })
>
> -#if __GNUC_PREREQ (4, 1)
> -# define atomic_exchange_and_add(mem, value) \
> +#define atomic_exchange_and_add(mem, value) \
> ? __sync_fetch_and_add (mem, value)
> -#else
> -# define atomic_exchange_and_add(mem, value) \
> - ?__arch_exchange_and_add_body (LOCK_PREFIX, __arch, mem, value)
> -#endif
>
> ?#define __arch_exchange_and_add_cprefix \
> ? "cmpl $0, %%gs:%P4\n\tje 0f\n\tlock\n0:\t"

OK.

Off-topic: Looks like we could cleanup and remove
__arch_exchange_and_add_body with a builtin.

> --- libc/sysdeps/x86_64/bits/atomic.h.mp ? ? ? ?2012-03-03 20:43:35.708943322 +0100
> +++ libc/sysdeps/x86_64/bits/atomic.h ? 2012-03-03 20:52:09.907157931 +0100
> @@ -1,4 +1,5 @@
> -/* Copyright (C) 2002-2004, 2006, 2007, 2009 Free Software Foundation, Inc.
> +/* Copyright (C) 2002-2004, 2006, 2007, 2009, 2012

Merge years.

> + ? Free Software Foundation, Inc.
> ? ?This file is part of the GNU C Library.
> ? ?Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
>
> @@ -55,41 +56,10 @@ typedef uintmax_t uatomic_max_t;
> ?#endif
>
>
> -#if __GNUC_PREREQ (4, 1)
> -# define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \
> +#define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \
> ? __sync_val_compare_and_swap (mem, oldval, newval)
> -# ?define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \
> +#define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \
> ? (! __sync_bool_compare_and_swap (mem, oldval, newval))
> -#else
> -# define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
> - ?({ __typeof (*mem) ret; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?\
> - ? ? __asm __volatile (LOCK_PREFIX "cmpxchgb %b2, %1" ? ? ? ? ? ? ? ? ? ? ? ?\
> - ? ? ? ? ? ? ? ? ? ? ?: "=a" (ret), "=m" (*mem) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?\
> - ? ? ? ? ? ? ? ? ? ? ?: "q" (newval), "m" (*mem), "0" (oldval)); ? ? ? ? ? ? \
> - ? ? ret; })
> -
> -# define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \
> - ?({ __typeof (*mem) ret; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?\
> - ? ? __asm __volatile (LOCK_PREFIX "cmpxchgw %w2, %1" ? ? ? ? ? ? ? ? ? ? ? ?\
> - ? ? ? ? ? ? ? ? ? ? ?: "=a" (ret), "=m" (*mem) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?\
> - ? ? ? ? ? ? ? ? ? ? ?: "r" (newval), "m" (*mem), "0" (oldval)); ? ? ? ? ? ? \
> - ? ? ret; })
> -
> -# define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
> - ?({ __typeof (*mem) ret; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?\
> - ? ? __asm __volatile (LOCK_PREFIX "cmpxchgl %2, %1" ? ? ? ? ? ? ? ? ? ? ? ? \
> - ? ? ? ? ? ? ? ? ? ? ?: "=a" (ret), "=m" (*mem) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?\
> - ? ? ? ? ? ? ? ? ? ? ?: "r" (newval), "m" (*mem), "0" (oldval)); ? ? ? ? ? ? \
> - ? ? ret; })
> -
> -# define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
> - ?({ __typeof (*mem) ret; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?\
> - ? ? __asm __volatile (LOCK_PREFIX "cmpxchgq %q2, %1" ? ? ? ? ? ? ? ? ? ? ? ?\
> - ? ? ? ? ? ? ? ? ? ? ?: "=a" (ret), "=m" (*mem) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?\
> - ? ? ? ? ? ? ? ? ? ? ?: "r" ((long int) (newval)), "m" (*mem), ? ? ? ? ? ? ? \
> - ? ? ? ? ? ? ? ? ? ? ? ?"0" ((long int) (oldval))); ? ? ? ? ? ? ? ? ? ? ? ? ?\
> - ? ? ret; })
> -#endif
>
>
> ?#define __arch_c_compare_and_exchange_val_8_acq(mem, newval, oldval) \
> @@ -184,13 +154,8 @@ typedef uintmax_t uatomic_max_t;
> ? ? ? ? ? ? ? ? ? ? ? ? ? "i" (offsetof (tcbhead_t, multiple_threads))); ? ? \
> ? ? ?result; })
>
> -#if __GNUC_PREREQ (4, 1)
> -# define atomic_exchange_and_add(mem, value) \
> +#define atomic_exchange_and_add(mem, value) \
> ? __sync_fetch_and_add (mem, value)
> -#else
> -# define atomic_exchange_and_add(mem, value) \
> - ?__arch_exchange_and_add_body (LOCK_PREFIX, mem, value)
> -#endif
>
> ?#define __arch_exchange_and_add_cprefix \
> ? "cmpl $0, %%fs:%P4\n\tje 0f\n\tlock\n0:\t"

OK.

Overall OK to checkin with copyright year merge cleanup.

Cheers,
Carlos.


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