public inbox for glibc-cvs@sourceware.org
help / color / mirror / Atom feed
From: Andreas Schwab <schwab@sourceware.org>
To: glibc-cvs@sourceware.org
Subject: [glibc] Avoid maybe-uninitialized warning in __kernel_rem_pio2
Date: Mon, 16 Oct 2023 08:01:09 +0000 (GMT)	[thread overview]
Message-ID: <20231016080109.E10503857715@sourceware.org> (raw)

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=5aa1ddfcb3374425b7fe9a1389b98a45a47e4a77

commit 5aa1ddfcb3374425b7fe9a1389b98a45a47e4a77
Author: Andreas Schwab <schwab@suse.de>
Date:   Sun Oct 8 18:23:30 2023 +0200

    Avoid maybe-uninitialized warning in __kernel_rem_pio2
    
    With GCC 14 on 32-bit x86 the compiler emits a maybe-uninitialized
    warning:
    
    ../sysdeps/ieee754/dbl-64/k_rem_pio2.c: In function '__kernel_rem_pio2':
    ../sysdeps/ieee754/dbl-64/k_rem_pio2.c:364:20: error: 'fq' may be used uninitialized [-Werror=maybe-uninitialized]
      364 |           y[0] = fq[0]; y[1] = fq[1]; y[2] = fw;
          |                  ~~^~~
    
    This is similar to the warning that is suppressed in the other branch of
    the switch.  Help the compiler knowing that the variable is always
    initialized, which also makes the suppression obsolete.

Diff:
---
 sysdeps/ieee754/dbl-64/k_rem_pio2.c | 14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/sysdeps/ieee754/dbl-64/k_rem_pio2.c b/sysdeps/ieee754/dbl-64/k_rem_pio2.c
index 6e2ef5d07b..f75392525c 100644
--- a/sysdeps/ieee754/dbl-64/k_rem_pio2.c
+++ b/sysdeps/ieee754/dbl-64/k_rem_pio2.c
@@ -300,6 +300,11 @@ recompute:
 	iq[jz] = (int32_t) z;
     }
 
+  /* jz is always nonnegative here, because the result is never zero to
+     full precision (this function is not called for zero arguments).
+     Help the compiler to know it.  */
+  if (jz < 0) __builtin_unreachable ();
+
   /* convert integer "bit" chunk to floating-point value */
   fw = __scalbn (one, q0);
   for (i = jz; i >= 0; i--)
@@ -330,16 +335,7 @@ recompute:
       for (i = jz; i >= 0; i--)
 	fv = math_narrow_eval (fv + fq[i]);
       y[0] = (ih == 0) ? fv : -fv;
-      /* GCC mainline (to be GCC 9), as of 2018-05-22 on i686, warns
-	 that fq[0] may be used uninitialized.  This is not possible
-	 because jz is always nonnegative when the above loop
-	 initializing fq is executed, because the result is never zero
-	 to full precision (this function is not called for zero
-	 arguments).  */
-      DIAG_PUSH_NEEDS_COMMENT;
-      DIAG_IGNORE_NEEDS_COMMENT (9, "-Wmaybe-uninitialized");
       fv = math_narrow_eval (fq[0] - fv);
-      DIAG_POP_NEEDS_COMMENT;
       for (i = 1; i <= jz; i++)
 	fv = math_narrow_eval (fv + fq[i]);
       y[1] = (ih == 0) ? fv : -fv;

                 reply	other threads:[~2023-10-16  8:01 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20231016080109.E10503857715@sourceware.org \
    --to=schwab@sourceware.org \
    --cc=glibc-cvs@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).