changeset 14612:6ef4f1f39105

Revert "use _GL_ATTRIBUTE_CONST and _GL_ATTRIBUTE_PURE" This reverts commit 349d7fe0e307d59d508b3579317ee8d4eacfeb9c. Revert accidentally-pushed patch. Not yet ready.
author Jim Meyering <meyering@redhat.com>
date Mon, 25 Apr 2011 10:38:33 +0200
parents 268395c9bfdf
children 2683cd2b0569
files lib/argmatch.c lib/argv-iter.c lib/base64.c lib/basename-lgpl.c lib/c-ctype.c lib/c-strncasecmp.c lib/chdir-long.c lib/exclude.c lib/file-type.c lib/filenamecat-lgpl.c lib/filevercmp.c lib/freadahead.c lib/fts.c lib/hash-pjw.c lib/hash-triple.c lib/hash.c lib/i-ring.c lib/isnan.c lib/memcasecmp.c lib/memchr2.c lib/memcmp2.c lib/parse-datetime.y lib/propername.c lib/quotearg.c lib/sockets.c lib/strnlen1.c lib/uniwidth/width.c
diffstat 27 files changed, 36 insertions(+), 252 deletions(-) [+]
line wrap: on
line diff
--- a/lib/argmatch.c
+++ b/lib/argmatch.c
@@ -57,14 +57,6 @@
 ARGMATCH_DIE_DECL;
 #endif
 
-/* The attribute __pure__ was added in gcc 2.96.  */
-#undef _GL_ATTRIBUTE_PURE
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
-# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
-#else
-# define _GL_ATTRIBUTE_PURE /* empty */
-#endif
-
 static void
 __argmatch_die (void)
 {
@@ -87,7 +79,7 @@
      "no", "nope" -> 1
    "y" is a valid argument, for `0', and "n" for `1'.  */
 
-ptrdiff_t _GL_ATTRIBUTE_PURE
+ptrdiff_t
 argmatch (const char *arg, const char *const *arglist,
           const char *vallist, size_t valsize)
 {
--- a/lib/argv-iter.c
+++ b/lib/argv-iter.c
@@ -22,14 +22,6 @@
 #include <stdlib.h>
 #include <string.h>
 
-/* The attribute __pure__ was added in gcc 2.96.  */
-#undef _GL_ATTRIBUTE_PURE
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
-# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
-#else
-# define _GL_ATTRIBUTE_PURE /* empty */
-#endif
-
 struct argv_iterator
 {
   /* Test FP to determine whether in read-mode or argv-mode. */
@@ -104,7 +96,7 @@
     }
 }
 
-size_t _GL_ATTRIBUTE_PURE
+size_t
 argv_iter_n_args (struct argv_iterator const *ai)
 {
   return ai->fp ? ai->item_idx : ai->p - ai->arg_list;
--- a/lib/base64.c
+++ b/lib/base64.c
@@ -53,14 +53,6 @@
 
 #include <string.h>
 
-/* The attribute __const__ was added in gcc 2.95.  */
-#undef _GL_ATTRIBUTE_CONST
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
-# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__))
-#else
-# define _GL_ATTRIBUTE_CONST /* empty */
-#endif
-
 /* C89 compliant way to cast 'char' to 'unsigned char'. */
 static inline unsigned char
 to_uchar (char ch)
@@ -303,7 +295,7 @@
 /* Return true if CH is a character from the Base64 alphabet, and
    false otherwise.  Note that '=' is padding and not considered to be
    part of the alphabet.  */
-bool _GL_ATTRIBUTE_CONST
+bool
 isbase64 (char ch)
 {
   return uchar_in_range (to_uchar (ch)) && 0 <= b64[to_uchar (ch)];
--- a/lib/basename-lgpl.c
+++ b/lib/basename-lgpl.c
@@ -22,19 +22,11 @@
 
 #include <string.h>
 
-/* The attribute __pure__ was added in gcc 2.96.  */
-#undef _GL_ATTRIBUTE_PURE
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
-# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
-#else
-# define _GL_ATTRIBUTE_PURE /* empty */
-#endif
-
 /* Return the address of the last file name component of NAME.  If
    NAME has no relative file name components because it is a file
    system root, return the empty string.  */
 
-char * _GL_ATTRIBUTE_PURE
+char *
 last_component (char const *name)
 {
   char const *base = name + FILE_SYSTEM_PREFIX_LEN (name);
--- a/lib/c-ctype.c
+++ b/lib/c-ctype.c
@@ -22,17 +22,9 @@
 #define NO_C_CTYPE_MACROS
 #include "c-ctype.h"
 
-/* The attribute __const__ was added in gcc 2.95.  */
-#undef _GL_ATTRIBUTE_CONST
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
-# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__))
-#else
-# define _GL_ATTRIBUTE_CONST /* empty */
-#endif
-
 /* The function isascii is not locale dependent. Its use in EBCDIC is
    questionable. */
-bool _GL_ATTRIBUTE_CONST
+bool
 c_isascii (int c)
 {
   return (c >= 0x00 && c <= 0x7f);
--- a/lib/c-strncasecmp.c
+++ b/lib/c-strncasecmp.c
@@ -24,15 +24,7 @@
 
 #include "c-ctype.h"
 
-/* The attribute __pure__ was added in gcc 2.96.  */
-#undef _GL_ATTRIBUTE_PURE
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
-# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
-#else
-# define _GL_ATTRIBUTE_PURE /* empty */
-#endif
-
-int _GL_ATTRIBUTE_PURE
+int
 c_strncasecmp (const char *s1, const char *s2, size_t n)
 {
   register const unsigned char *p1 = (const unsigned char *) s1;
--- a/lib/chdir-long.c
+++ b/lib/chdir-long.c
@@ -32,14 +32,6 @@
 # error "compile this file only if your system defines PATH_MAX"
 #endif
 
-/* The attribute __pure__ was added in gcc 2.96.  */
-#undef _GL_ATTRIBUTE_PURE
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
-# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
-#else
-# define _GL_ATTRIBUTE_PURE /* empty */
-#endif
-
 /* The results of openat() in this file are not leaked to any
    single-threaded code that could use stdio.
    FIXME - if the kernel ever adds support for multi-thread safety for
@@ -91,7 +83,7 @@
 }
 
 /* Return a pointer to the first non-slash in S.  */
-static inline char * _GL_ATTRIBUTE_PURE
+static inline char *
 find_non_slash (char const *s)
 {
   size_t n_slash = strspn (s, "/");
--- a/lib/exclude.c
+++ b/lib/exclude.c
@@ -60,14 +60,6 @@
             | FNM_CASEFOLD | FNM_EXTMATCH))
         == 0);
 
-/* The attribute __pure__ was added in gcc 2.96.  */
-#undef _GL_ATTRIBUTE_PURE
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
-# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
-#else
-# define _GL_ATTRIBUTE_PURE /* empty */
-#endif
-
 
 /* Exclusion patterns are grouped into a singly-linked list of
    "exclusion segments".  Each segment represents a set of patterns
@@ -119,7 +111,7 @@
   };
 
 /* Return true if str has wildcard characters */
-bool _GL_ATTRIBUTE_PURE
+bool
 fnmatch_pattern_has_wildcards (const char *str, int options)
 {
   const char *cset = "\\?*[]";
--- a/lib/file-type.c
+++ b/lib/file-type.c
@@ -25,15 +25,7 @@
 #include <gettext.h>
 #define _(text) gettext (text)
 
-/* The attribute __pure__ was added in gcc 2.96.  */
-#undef _GL_ATTRIBUTE_PURE
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
-# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
-#else
-# define _GL_ATTRIBUTE_PURE /* empty */
-#endif
-
-char const * _GL_ATTRIBUTE_PURE
+char const *
 file_type (struct stat const *st)
 {
   /* See POSIX 1003.1-2001 XCU Table 4-8 lines 17093-17107 for some of
--- a/lib/filenamecat-lgpl.c
+++ b/lib/filenamecat-lgpl.c
@@ -31,18 +31,10 @@
 # define mempcpy(D, S, N) ((void *) ((char *) memcpy (D, S, N) + (N)))
 #endif
 
-/* The attribute __pure__ was added in gcc 2.96.  */
-#undef _GL_ATTRIBUTE_PURE
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
-# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
-#else
-# define _GL_ATTRIBUTE_PURE /* empty */
-#endif
-
 /* Return the longest suffix of F that is a relative file name.
    If it has no such suffix, return the empty string.  */
 
-static char const * _GL_ATTRIBUTE_PURE
+static char const *
 longest_relative_suffix (char const *f)
 {
   for (f += FILE_SYSTEM_PREFIX_LEN (f); ISSLASH (*f); f++)
--- a/lib/filevercmp.c
+++ b/lib/filevercmp.c
@@ -26,14 +26,6 @@
 #include <c-ctype.h>
 #include <limits.h>
 
-/* The attribute __pure__ was added in gcc 2.96.  */
-#undef _GL_ATTRIBUTE_PURE
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
-# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
-#else
-# define _GL_ATTRIBUTE_PURE /* empty */
-#endif
-
 /* Match a file suffix defined by this regular expression:
    /(\.[A-Za-z~][A-Za-z0-9~]*)*$/
    Scan the string *STR and return a pointer to the matching suffix, or
@@ -88,7 +80,7 @@
    section on the `Version' control field.  This version of the code
    implements that from s5.6.12 of Debian Policy v3.8.0.1
    http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Version */
-static int _GL_ATTRIBUTE_PURE
+static int
 verrevcmp (const char *s1, size_t s1_len, const char *s2, size_t s2_len)
 {
   size_t s1_pos = 0;
--- a/lib/freadahead.c
+++ b/lib/freadahead.c
@@ -22,15 +22,7 @@
 #include <stdlib.h>
 #include "stdio-impl.h"
 
-/* The attribute __pure__ was added in gcc 2.96.  */
-#undef _GL_ATTRIBUTE_PURE
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
-# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
-#else
-# define _GL_ATTRIBUTE_PURE /* empty */
-#endif
-
-size_t _GL_ATTRIBUTE_PURE
+size_t
 freadahead (FILE *fp)
 {
 #if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
--- a/lib/fts.c
+++ b/lib/fts.c
@@ -261,14 +261,6 @@
     }                                                           \
   while (false)
 
-/* The attribute __pure__ was added in gcc 2.96.  */
-#undef _GL_ATTRIBUTE_PURE
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
-# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
-#else
-# define _GL_ATTRIBUTE_PURE /* empty */
-#endif
-
 static void
 fd_ring_clear (I_ring *fd_ring)
 {
@@ -1914,7 +1906,7 @@
 }
 
 static size_t
-internal_function _GL_ATTRIBUTE_PURE
+internal_function
 fts_maxarglen (char * const *argv)
 {
         size_t len, max;
--- a/lib/hash-pjw.c
+++ b/lib/hash-pjw.c
@@ -23,19 +23,11 @@
 
 #define SIZE_BITS (sizeof (size_t) * CHAR_BIT)
 
-/* The attribute __pure__ was added in gcc 2.96.  */
-#undef _GL_ATTRIBUTE_PURE
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
-# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
-#else
-# define _GL_ATTRIBUTE_PURE /* empty */
-#endif
-
 /* A hash function for NUL-terminated char* strings using
    the method described by Bruno Haible.
    See http://www.haible.de/bruno/hashfunc.html.  */
 
-size_t _GL_ATTRIBUTE_PURE
+size_t
 hash_pjw (const void *x, size_t tablesize)
 {
   const char *s;
--- a/lib/hash-triple.c
+++ b/lib/hash-triple.c
@@ -29,14 +29,6 @@
 
 #define STREQ(a, b) (strcmp (a, b) == 0)
 
-/* The attribute __pure__ was added in gcc 2.96.  */
-#undef _GL_ATTRIBUTE_PURE
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
-# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
-#else
-# define _GL_ATTRIBUTE_PURE /* empty */
-#endif
-
 /* Hash an F_triple, and *do* consider the file name.  */
 size_t
 triple_hash (void const *x, size_t table_size)
@@ -49,7 +41,7 @@
 }
 
 /* Hash an F_triple, without considering the file name.  */
-size_t _GL_ATTRIBUTE_PURE
+size_t
 triple_hash_no_name (void const *x, size_t table_size)
 {
   struct F_triple const *p = x;
--- a/lib/hash.c
+++ b/lib/hash.c
@@ -43,14 +43,6 @@
 # endif
 #endif
 
-/* The attribute __const__ was added in gcc 2.95.  */
-#undef _GL_ATTRIBUTE_CONST
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
-# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__))
-#else
-# define _GL_ATTRIBUTE_CONST /* empty */
-#endif
-
 struct hash_entry
   {
     void *data;
@@ -154,7 +146,7 @@
    number of buckets (used plus unused), or the maximum number of slots, are
    the same quantity.  */
 
-size_t _GL_ATTRIBUTE_PURE
+size_t
 hash_get_n_buckets (const Hash_table *table)
 {
   return table->n_buckets;
@@ -162,7 +154,7 @@
 
 /* Return the number of slots in use (non-empty buckets).  */
 
-size_t _GL_ATTRIBUTE_PURE
+size_t
 hash_get_n_buckets_used (const Hash_table *table)
 {
   return table->n_buckets_used;
@@ -170,7 +162,7 @@
 
 /* Return the number of active entries.  */
 
-size_t _GL_ATTRIBUTE_PURE
+size_t
 hash_get_n_entries (const Hash_table *table)
 {
   return table->n_entries;
@@ -178,7 +170,7 @@
 
 /* Return the length of the longest chain (bucket).  */
 
-size_t _GL_ATTRIBUTE_PURE
+size_t
 hash_get_max_bucket_length (const Hash_table *table)
 {
   struct hash_entry const *bucket;
@@ -205,7 +197,7 @@
 /* Do a mild validation of a hash table, by traversing it and checking two
    statistics.  */
 
-bool _GL_ATTRIBUTE_PURE
+bool
 hash_table_ok (const Hash_table *table)
 {
   struct hash_entry const *bucket;
@@ -292,7 +284,7 @@
 
 /* Return the first data in the table, or NULL if the table is empty.  */
 
-void * _GL_ATTRIBUTE_PURE
+void *
 hash_get_first (const Hash_table *table)
 {
   struct hash_entry const *bucket;
@@ -409,7 +401,7 @@
    algorithms tend to be domain-specific, so what's good for [diffutils'] io.c
    may not be good for your application."  */
 
-size_t _GL_ATTRIBUTE_PURE
+size_t
 hash_string (const char *string, size_t n_buckets)
 {
 # define HASH_ONE_CHAR(Value, Byte) \
@@ -448,7 +440,7 @@
 /* Return true if CANDIDATE is a prime number.  CANDIDATE should be an odd
    number at least equal to 11.  */
 
-static bool _GL_ATTRIBUTE_CONST
+static bool
 is_prime (size_t candidate)
 {
   size_t divisor = 3;
@@ -467,7 +459,7 @@
 /* Round a given CANDIDATE number up to the nearest prime, and return that
    prime.  Primes lower than 10 are merely skipped.  */
 
-static size_t _GL_ATTRIBUTE_CONST
+static size_t
 next_prime (size_t candidate)
 {
   /* Skip small primes.  */
@@ -548,7 +540,7 @@
    TUNING, or return 0 if there is no possible way to allocate that
    many entries.  */
 
-static size_t _GL_ATTRIBUTE_PURE
+static size_t
 compute_bucket_size (size_t candidate, const Hash_tuning *tuning)
 {
   if (!tuning->is_n_buckets)
--- a/lib/i-ring.c
+++ b/lib/i-ring.c
@@ -21,14 +21,6 @@
 
 #include <stdlib.h>
 
-/* The attribute __pure__ was added in gcc 2.96.  */
-#undef _GL_ATTRIBUTE_PURE
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
-# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
-#else
-# define _GL_ATTRIBUTE_PURE /* empty */
-#endif
-
 void
 i_ring_init (I_ring *ir, int default_val)
 {
@@ -41,7 +33,7 @@
   ir->ir_default_val = default_val;
 }
 
-bool _GL_ATTRIBUTE_PURE
+bool
 i_ring_empty (I_ring const *ir)
 {
   return ir->ir_empty;
--- a/lib/isnan.c
+++ b/lib/isnan.c
@@ -79,15 +79,7 @@
   ((sizeof (DOUBLE) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
 typedef union { DOUBLE value; unsigned int word[NWORDS]; } memory_double;
 
-/* The attribute __const__ was added in gcc 2.95.  */
-#undef _GL_ATTRIBUTE_CONST
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
-# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__))
-#else
-# define _GL_ATTRIBUTE_CONST /* empty */
-#endif
-
-int _GL_ATTRIBUTE_CONST
+int
 FUNC (DOUBLE x)
 {
 #ifdef KNOWN_EXPBIT0_LOCATION
--- a/lib/memcasecmp.c
+++ b/lib/memcasecmp.c
@@ -24,19 +24,11 @@
 #include <ctype.h>
 #include <limits.h>
 
-/* The attribute __pure__ was added in gcc 2.96.  */
-#undef _GL_ATTRIBUTE_PURE
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
-# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
-#else
-# define _GL_ATTRIBUTE_PURE /* empty */
-#endif
-
 /* Like memcmp, but ignore differences in case.
    Convert to upper case (not lower) before comparing so that
    join -i works with sort -f.  */
 
-int _GL_ATTRIBUTE_PURE
+int
 memcasecmp (const void *vs1, const void *vs2, size_t n)
 {
   size_t i;
--- a/lib/memchr2.c
+++ b/lib/memchr2.c
@@ -29,18 +29,10 @@
 #include <stdint.h>
 #include <string.h>
 
-/* The attribute __pure__ was added in gcc 2.96.  */
-#undef _GL_ATTRIBUTE_PURE
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
-# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
-#else
-# define _GL_ATTRIBUTE_PURE /* empty */
-#endif
-
 /* Return the first address of either C1 or C2 (treated as unsigned
    char) that occurs within N bytes of the memory region S.  If
    neither byte appears, return NULL.  */
-void * _GL_ATTRIBUTE_PURE
+void *
 memchr2 (void const *s, int c1_in, int c2_in, size_t n)
 {
   /* On 32-bit hardware, choosing longword to be a 32-bit unsigned
--- a/lib/memcmp2.c
+++ b/lib/memcmp2.c
@@ -21,15 +21,7 @@
 
 #include <string.h>
 
-/* The attribute __pure__ was added in gcc 2.96.  */
-#undef _GL_ATTRIBUTE_PURE
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
-# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
-#else
-# define _GL_ATTRIBUTE_PURE /* empty */
-#endif
-
-int _GL_ATTRIBUTE_PURE
+int
 memcmp2 (const char *s1, size_t n1, const char *s2, size_t n2)
 {
   int cmp = memcmp (s1, s2, n1 <= n2 ? n1 : n2);
--- a/lib/parse-datetime.y
+++ b/lib/parse-datetime.y
@@ -113,14 +113,6 @@
 typedef time_t long_time_t;
 #endif
 
-/* The attribute __pure__ was added in gcc 2.96.  */
-#undef _GL_ATTRIBUTE_PURE
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
-# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
-#else
-# define _GL_ATTRIBUTE_PURE /* empty */
-#endif
-
 /* Lots of this code assumes time_t and time_t-like values fit into
    long_time_t.  */
 verify (TYPE_MINIMUM (long_time_t) <= TYPE_MINIMUM (time_t)
@@ -876,7 +868,7 @@
   return year;
 }
 
-static table const * _GL_ATTRIBUTE_PURE
+static table const *
 lookup_zone (parser_control const *pc, char const *name)
 {
   table const *tp;
--- a/lib/propername.c
+++ b/lib/propername.c
@@ -38,14 +38,6 @@
 #include "xalloc.h"
 #include "gettext.h"
 
-/* The attribute __const__ was added in gcc 2.95.  */
-#undef _GL_ATTRIBUTE_CONST
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
-# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__))
-#else
-# define _GL_ATTRIBUTE_CONST /* empty */
-#endif
-
 
 /* Tests whether STRING contains trim (SUB), starting and ending at word
    boundaries.
@@ -156,7 +148,7 @@
 
 /* Return the localization of NAME.  NAME is written in ASCII.  */
 
-const char * _GL_ATTRIBUTE_CONST
+const char *
 proper_name (const char *name)
 {
   /* See whether there is a translation.   */
--- a/lib/quotearg.c
+++ b/lib/quotearg.c
@@ -42,14 +42,6 @@
 
 #define INT_BITS (sizeof (int) * CHAR_BIT)
 
-/* The attribute __pure__ was added in gcc 2.96.  */
-#undef _GL_ATTRIBUTE_PURE
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
-# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
-#else
-# define _GL_ATTRIBUTE_PURE /* empty */
-#endif
-
 struct quoting_options
 {
   /* Basic quoting style.  */
@@ -113,7 +105,7 @@
 }
 
 /* Get the value of O's quoting style.  If O is null, use the default.  */
-enum quoting_style _GL_ATTRIBUTE_PURE
+enum quoting_style
 get_quoting_style (struct quoting_options *o)
 {
   return (o ? o : &default_quoting_options)->style;
--- a/lib/sockets.c
+++ b/lib/sockets.c
@@ -22,14 +22,6 @@
 /* Specification.  */
 #include "sockets.h"
 
-/* The attribute __const__ was added in gcc 2.95.  */
-#undef _GL_ATTRIBUTE_CONST
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
-# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__))
-#else
-# define _GL_ATTRIBUTE_CONST /* empty */
-#endif
-
 #if WINDOWS_SOCKETS
 
 /* This includes winsock2.h on MinGW. */
@@ -111,7 +103,7 @@
 
 #endif /* WINDOWS_SOCKETS */
 
-int _GL_ATTRIBUTE_CONST
+int
 gl_sockets_startup (int version _GL_UNUSED)
 {
 #if WINDOWS_SOCKETS
--- a/lib/strnlen1.c
+++ b/lib/strnlen1.c
@@ -21,18 +21,10 @@
 
 #include <string.h>
 
-/* The attribute __pure__ was added in gcc 2.96.  */
-#undef _GL_ATTRIBUTE_PURE
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
-# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
-#else
-# define _GL_ATTRIBUTE_PURE /* empty */
-#endif
-
 /* Find the length of STRING + 1, but scan at most MAXLEN bytes.
    If no '\0' terminator is found in that many characters, return MAXLEN.  */
 /* This is the same as strnlen (string, maxlen - 1) + 1.  */
-size_t _GL_ATTRIBUTE_PURE
+size_t
 strnlen1 (const char *string, size_t maxlen)
 {
   const char *end = (const char *) memchr (string, '\0', maxlen);
--- a/lib/uniwidth/width.c
+++ b/lib/uniwidth/width.c
@@ -22,14 +22,6 @@
 
 #include "cjk.h"
 
-/* The attribute __pure__ was added in gcc 2.96.  */
-#undef _GL_ATTRIBUTE_PURE
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
-# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
-#else
-# define _GL_ATTRIBUTE_PURE /* empty */
-#endif
-
 /*
  * Non-spacing attribute table.
  * Consists of:
@@ -319,7 +311,7 @@
 };
 
 /* Determine number of column positions required for UC.  */
-int _GL_ATTRIBUTE_PURE
+int
 uc_width (ucs4_t uc, const char *encoding)
 {
   /* Test for non-spacing or control character.  */