GNU C Library master sources branch master updated. glibc-2.28.9000-171-g4a06cee

jsm28@sourceware.org jsm28@sourceware.org
Tue Oct 2 15:41:00 GMT 2018


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  4a06ceea33ecc220bbfe264d8f1e74de2f04e90d (commit)
      from  a06fc4a53385709f80a866075f794646810b831e (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=4a06ceea33ecc220bbfe264d8f1e74de2f04e90d

commit 4a06ceea33ecc220bbfe264d8f1e74de2f04e90d
Author: Martin Jansa <Martin.Jansa@gmail.com>
Date:   Tue Oct 2 15:38:43 2018 +0000

    sysdeps/ieee754/soft-fp: ignore maybe-uninitialized with -O [BZ #19444]
    
    * with -O, -O1, -Os it fails with:
    
    In file included from ../soft-fp/soft-fp.h:318,
                     from ../sysdeps/ieee754/soft-fp/s_fdiv.c:28:
    ../sysdeps/ieee754/soft-fp/s_fdiv.c: In function '__fdiv':
    ../soft-fp/op-2.h:98:25: error: 'R_f1' may be used uninitialized in this function [-Werror=maybe-uninitialized]
            X##_f0 = (X##_f1 << (_FP_W_TYPE_SIZE - (N)) | X##_f0 >> (N) \
                             ^~
    ../sysdeps/ieee754/soft-fp/s_fdiv.c:38:14: note: 'R_f1' was declared here
       FP_DECL_D (R);
                  ^
    ../soft-fp/op-2.h:37:36: note: in definition of macro '_FP_FRAC_DECL_2'
       _FP_W_TYPE X##_f0 _FP_ZERO_INIT, X##_f1 _FP_ZERO_INIT
                                        ^
    ../soft-fp/double.h:95:24: note: in expansion of macro '_FP_DECL'
     # define FP_DECL_D(X)  _FP_DECL (2, X)
                            ^~~~~~~~
    ../sysdeps/ieee754/soft-fp/s_fdiv.c:38:3: note: in expansion of macro 'FP_DECL_D'
       FP_DECL_D (R);
       ^~~~~~~~~
    ../soft-fp/op-2.h:101:17: error: 'R_f0' may be used uninitialized in this function [-Werror=maybe-uninitialized]
           : (X##_f0 << (_FP_W_TYPE_SIZE - (N))) != 0)); \
                     ^~
    ../sysdeps/ieee754/soft-fp/s_fdiv.c:38:14: note: 'R_f0' was declared here
       FP_DECL_D (R);
                  ^
    ../soft-fp/op-2.h:37:14: note: in definition of macro '_FP_FRAC_DECL_2'
       _FP_W_TYPE X##_f0 _FP_ZERO_INIT, X##_f1 _FP_ZERO_INIT
                  ^
    ../soft-fp/double.h:95:24: note: in expansion of macro '_FP_DECL'
     # define FP_DECL_D(X)  _FP_DECL (2, X)
                            ^~~~~~~~
    ../sysdeps/ieee754/soft-fp/s_fdiv.c:38:3: note: in expansion of macro 'FP_DECL_D'
       FP_DECL_D (R);
       ^~~~~~~~~
    
    Build tested with Yocto for ARM, AARCH64, X86, X86_64, PPC, MIPS, MIPS64
    with -O, -O1, -Os.
    For AARCH64 it needs one more fix in locale for -Os.
    
    	[BZ #19444]
    	* sysdeps/ieee754/soft-fp/s_fdiv.c: Include <libc-diag.h> and use
    	DIAG_PUSH_NEEDS_COMMENT, DIAG_IGNORE_NEEDS_COMMENT and
    	DIAG_POP_NEEDS_COMMENT to disable -Wmaybe-uninitialized.

diff --git a/ChangeLog b/ChangeLog
index 8128582..12c7fcc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2018-10-02  Martin Jansa  <Martin.Jansa@gmail.com>
+
+	[BZ #19444]
+	* sysdeps/ieee754/soft-fp/s_fdiv.c: Include <libc-diag.h> and use
+	DIAG_PUSH_NEEDS_COMMENT, DIAG_IGNORE_NEEDS_COMMENT and
+	DIAG_POP_NEEDS_COMMENT to disable -Wmaybe-uninitialized.
+
 2018-10-02  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
 
 	* sysdeps/unix/sysv/linux/fd_to_filename.h: Add missing includes.
diff --git a/sysdeps/ieee754/soft-fp/s_fdiv.c b/sysdeps/ieee754/soft-fp/s_fdiv.c
index 341339f..7a15cbe 100644
--- a/sysdeps/ieee754/soft-fp/s_fdiv.c
+++ b/sysdeps/ieee754/soft-fp/s_fdiv.c
@@ -25,6 +25,16 @@
 #undef fdivl
 
 #include <math-narrow.h>
+#include <libc-diag.h>
+
+/* R_f[01] are not set in cases where they are not used in packing,
+   but the compiler does not see that they are set in all cases where
+   they are used, resulting in warnings that they may be used
+   uninitialized.  The location of the warning differs in different
+   versions of GCC, it may be where R is defined using a macro or it
+   may be where the macro is defined.  This happens only with -O1.  */
+DIAG_PUSH_NEEDS_COMMENT;
+DIAG_IGNORE_NEEDS_COMMENT (8, "-Wmaybe-uninitialized");
 #include <soft-fp.h>
 #include <single.h>
 #include <double.h>
@@ -53,4 +63,6 @@ __fdiv (double x, double y)
   CHECK_NARROW_DIV (ret, x, y);
   return ret;
 }
+DIAG_POP_NEEDS_COMMENT;
+
 libm_alias_float_double (div)

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                        |    7 +++++++
 sysdeps/ieee754/soft-fp/s_fdiv.c |   12 ++++++++++++
 2 files changed, 19 insertions(+), 0 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources



More information about the Glibc-cvs mailing list