From: Ulrich Drepper Date: Sat, 12 Nov 2011 06:31:29 +0000 (-0500) Subject: Avoid warning from shifting X-Git-Tag: glibc-2.15~98 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=294ce12680bfa52aa7f9f1cb93b2bb5b2d22eaae;p=thirdparty%2Fglibc.git Avoid warning from shifting --- diff --git a/ChangeLog b/ChangeLog index 897174e887b..aa29e14e132 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2011-11-12 Ulrich Drepper + * sysdeps/unix/sysv/linux/internal_statvfs.c (INTERNAL_STATVFS): Use + unsigned long long int to avoid warnings in shift. + * posix/regex_internal.c (re_string_reconstruct): Actually use result of use of trans. * posix/regex_internal.h (re_string_wchar_at): Remove temporary diff --git a/sysdeps/unix/sysv/linux/internal_statvfs.c b/sysdeps/unix/sysv/linux/internal_statvfs.c index 2ddec1edbae..a0bad02d797 100644 --- a/sysdeps/unix/sysv/linux/internal_statvfs.c +++ b/sysdeps/unix/sysv/linux/internal_statvfs.c @@ -237,9 +237,13 @@ INTERNAL_STATVFS (const char *name, struct STATVFS *buf, buf->f_files = fsbuf->f_files; buf->f_ffree = fsbuf->f_ffree; if (sizeof (buf->f_fsid) == sizeof (fsbuf->f_fsid)) + /* The shifting uses 'unsigned long long int' even though the target + field might only have 32 bits. This is OK since the 'if' branch + is not used in this case but the compiler would still generate + warnings. */ buf->f_fsid = ((fsbuf->f_fsid.__val[0] - & ((1UL << (8 * sizeof (fsbuf->f_fsid.__val[0]))) - 1)) - | ((unsigned long int) fsbuf->f_fsid.__val[1] + & ((1ULL << (8 * sizeof (fsbuf->f_fsid.__val[0]))) - 1)) + | ((unsigned long long int) fsbuf->f_fsid.__val[1] << (8 * (sizeof (buf->f_fsid) - sizeof (fsbuf->f_fsid.__val[0]))))); else