changeset 17408:c4e1bb6e391b

stdio: port --enable-gcc-warnings to clang * lib/stdio.in.h (fwrite) [__clang__]: Ignore -Wunused-value entirely, since the GCC workaround for fwrite does not pacify clang.
author Paul Eggert <eggert@cs.ucla.edu>
date Wed, 15 May 2013 00:30:43 -0700
parents b5c1d4b2677e
children 26a04e61f560
files ChangeLog lib/stdio.in.h
diffstat 2 files changed, 11 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2013-05-15  Paul Eggert  <eggert@cs.ucla.edu>
 
+	stdio: port --enable-gcc-warnings to clang
+	* lib/stdio.in.h (fwrite) [__clang__]: Ignore -Wunused-value entirely,
+	since the GCC workaround for fwrite does not pacify clang.
+
 	sig2str: port --enable-gcc-warnings to clang
 	* lib/sig2str.c (sig2str): Avoid warning about unused printf argument.
 
--- a/lib/stdio.in.h
+++ b/lib/stdio.in.h
@@ -579,13 +579,16 @@
    <http://sources.redhat.com/bugzilla/show_bug.cgi?id=11959>,
    which sometimes causes an unwanted diagnostic for fwrite calls.
    This affects only function declaration attributes under certain
-   versions of gcc, and is not needed for C++.  */
+   versions of gcc and clang, and is not needed for C++.  */
 #  if (0 < __USE_FORTIFY_LEVEL                                          \
        && __GLIBC__ == 2 && 4 <= __GLIBC_MINOR__ && __GLIBC_MINOR__ <= 15 \
-       && 3 < __GNUC__ + (4 <= __GNUC_MINOR__)                          \
        && !defined __cplusplus)
-#   undef fwrite
-#   define fwrite(a, b, c, d) ({size_t __r = fwrite (a, b, c, d); __r; })
+#   ifdef __clang__
+#    pragma clang diagnostic ignored "-Wunused-value"
+#   elif 3 < __GNUC__ + (4 <= __GNUC_MINOR__)
+#    undef fwrite
+#    define fwrite(a, b, c, d) ({size_t __r = fwrite (a, b, c, d); __r; })
+#   endif
 #  endif
 # endif
 _GL_CXXALIASWARN (fwrite);