From 295e904fe6cc5b2d0535ff6016a08b6162d7e22c Mon Sep 17 00:00:00 2001 From: Marek Polacek Date: Wed, 20 Jul 2011 12:35:29 -0400 Subject: [PATCH] Add const attr to gnu_dev_{major,minor,makedev} --- ChangeLog | 6 ++++++ misc/sys/cdefs.h | 9 ++++++++- sysdeps/unix/sysv/linux/sys/sysmacros.h | 12 ++++++------ 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 13def71..2d05c82 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2011-07-12 Marek Polacek + + * misc/sys/cdefs.h: Add support for const attribute. + * sysdeps/unix/sysv/linux/sys/sysmacros.h: Add __attribute_const__ + to gnu_dev_{major,minor,makedev} functions. + 2011-07-20 Marek Polacek * intl/dcigettext.c (get_output_charset): Add missing bracket. diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h index c9495a4..165a94a 100644 --- a/misc/sys/cdefs.h +++ b/misc/sys/cdefs.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1992-2001, 2002, 2004, 2005, 2006, 2007, 2009 +/* Copyright (C) 1992-2001, 2002, 2004, 2005, 2006, 2007, 2009, 2011 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -218,6 +218,13 @@ # define __attribute_pure__ /* Ignore */ #endif +/* This declaration tells the compiler that the value is constant. */ +#if __GNUC_PREREQ (2,5) +# define __attribute_const__ __attribute__ ((__const__)) +#else +# define __attribute_const__ /* Ignore */ +#endif + /* At some point during the gcc 3.1 development the `used' attribute for functions was introduced. We don't want to use it unconditionally (although this would be possible) since it generates warnings. */ diff --git a/sysdeps/unix/sysv/linux/sys/sysmacros.h b/sysdeps/unix/sysv/linux/sys/sysmacros.h index 3fc01df..4600c93 100644 --- a/sysdeps/unix/sysv/linux/sys/sysmacros.h +++ b/sysdeps/unix/sysv/linux/sys/sysmacros.h @@ -31,29 +31,29 @@ __BEGIN_DECLS __extension__ extern unsigned int gnu_dev_major (unsigned long long int __dev) - __THROW; + __THROW __attribute_const__; __extension__ extern unsigned int gnu_dev_minor (unsigned long long int __dev) - __THROW; + __THROW __attribute_const__; __extension__ extern unsigned long long int gnu_dev_makedev (unsigned int __major, unsigned int __minor) - __THROW; + __THROW __attribute_const__; # if defined __GNUC__ && __GNUC__ >= 2 && defined __USE_EXTERN_INLINES -__extension__ __extern_inline unsigned int +__extension__ __extern_inline __attribute_const__ unsigned int __NTH (gnu_dev_major (unsigned long long int __dev)) { return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff); } -__extension__ __extern_inline unsigned int +__extension__ __extern_inline __attribute_const__ unsigned int __NTH (gnu_dev_minor (unsigned long long int __dev)) { return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff); } -__extension__ __extern_inline unsigned long long int +__extension__ __extern_inline __attribute_const__ unsigned long long int __NTH (gnu_dev_makedev (unsigned int __major, unsigned int __minor)) { return ((__minor & 0xff) | ((__major & 0xfff) << 8) -- 2.7.4