From patchwork Mon Oct 1 16:26:22 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Jansa X-Patchwork-Id: 29601 Received: (qmail 107333 invoked by alias); 1 Oct 2018 16:26:22 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 107323 invoked by uid 89); 1 Oct 2018 16:26:22 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.1 required=5.0 tests=AWL, BAYES_00, FREEMAIL_FROM, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.2 spammy=Hx-spam-relays-external:209.85.128.66, H*RU:209.85.128.66 X-HELO: mail-wm1-f66.google.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=8lrvfHHUPXOlhnzlBRQS6R4dLmI/U5/NnTYJWiGcDTA=; b=eRQSLGGo9gLQiqGPcopa2Y2opIPeEEJEB2eGWdO5G3h4JnogIuRFybcsjg+5rmH1w5 g4FA61W+NqmcyLdTVf3iIDfIIUzDED+4fpFqv/Qmx/i6yGxv0ss627nmiRNi14LwfDwq grK5DEfa66CBJ7jIx+4gcwzGa3KYrkdwhJYQN3lHYpXDtltaMuz1gAvBACxyvSJCIVmA Q2uQeMWitWTsvBU+Vy2ranU/PYJOTSTRr8qiqXiP058iug+gvIrBVs2TInpsGN4YJOkk 7AZnjQN5jQFW/LmrAOLEAPzzCUNE1BajscUsM1YT4sHEyI/yBsFazN3Exa2jG9Q0I/Bf kjGQ== Return-Path: From: Martin Jansa To: libc-alpha@sourceware.org Cc: Martin Jansa Subject: [PATCHv4] sysdeps/ieee754/soft-fp: ignore maybe-uninitialized with -O [BZ #19444] Date: Mon, 1 Oct 2018 16:26:22 +0000 Message-Id: <20181001162622.31039-1-Martin.Jansa@gmail.com> In-Reply-To: References: * 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. Partial fix for [BZ #23716] * sysdeps/ieee754/soft-fp/s_fdiv.c: Fix build with -O Signed-off-by: Martin Jansa --- ChangeLog | 4 ++++ sysdeps/ieee754/soft-fp/s_fdiv.c | 12 ++++++++++++ 2 files changed, 16 insertions(+) diff --git a/ChangeLog b/ChangeLog index 4bafeefda5..9cdf59c9ab 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2018-09-30 Martin Jansa + Partial fix for [BZ #23716] + * sysdeps/ieee754/soft-fp/s_fdiv.c: Fix build with -O. + 2018-09-29 Martin Jansa Partial fix for [BZ #23716] * sysdeps/ieee754/dbl-96/e_jnl.c: Fix build with -O diff --git a/sysdeps/ieee754/soft-fp/s_fdiv.c b/sysdeps/ieee754/soft-fp/s_fdiv.c index 341339f5ed..f124edd760 100644 --- a/sysdeps/ieee754/soft-fp/s_fdiv.c +++ b/sysdeps/ieee754/soft-fp/s_fdiv.c @@ -25,6 +25,16 @@ #undef fdivl #include + +#include +/* R_f[01] are not set in cases where it is not used in packing, but the + compiler does not see that it is set in all cases where it is + used, resulting in warnings that it 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 #include #include @@ -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)