From patchwork Fri Jan 22 12:28:53 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Stefan Liebler X-Patchwork-Id: 10519 Received: (qmail 68056 invoked by alias); 22 Jan 2016 12:29: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 68032 invoked by uid 89); 22 Jan 2016 12:29:21 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.5 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_LOW, RP_MATCHES_RCVD, SPF_HELO_PASS, SPF_PASS autolearn=ham version=3.3.2 spammy=patchv3, PATCHv3, 958 X-HELO: plane.gmane.org To: libc-alpha@sourceware.org From: Stefan Liebler Subject: [PATCHv3] S390: Fix build failure in test string/tst-endian.c with gcc 6. Date: Fri, 22 Jan 2016 13:28:53 +0100 Lines: 127 Message-ID: References: <20160121164415.GI14840@vapier.lan> Mime-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.0 In-Reply-To: <20160121164415.GI14840@vapier.lan> On 01/21/2016 05:44 PM, Mike Frysinger wrote: > On 21 Jan 2016 17:38, Stefan Liebler wrote: >> This patch suppresses these warnings with DIAG_* macros. >> The conditional #if __GNUC_PREREQ (6, 0) is needed, because an older gcc >> would warn about: >> tst-endian.c: In function ‘do_test’: >> tst-endian.c:18:4: warning: unknown option after ‘#pragma GCC >> diagnostic’ kind [-Wpragmas] >> DIAG_IGNORE_NEEDS_COMMENT (6, "-Wtautological-compare"); >> ^ > > you can at least do it once at the top via a local define: > /* big comment block */ > #if __GNUC_PREREQ (6, 0) > # define DIAG_IGNORE_NEEDS_COMMENT_AUTOLOGICAL_COMPARE() \ > DIAG_IGNORE_NEEDS_COMMENT (6, "-Wtautological-compare"); > #else > # define DIAG_IGNORE_NEEDS_COMMENT_AUTOLOGICAL_COMPARE() > #endif > > then the inline usage is simple > -mike > That's a good point. Here is the updated patch. Ok to commit? Bye Stefan ChangeLog: * string/tst-endian.c: Include (do_test): Ignore tautological-compare warnings around "htobeXX (beXXtoh (i)) != i" and "htoleXX (leXXtoh (i)) != i" if-statements. diff --git a/string/tst-endian.c b/string/tst-endian.c index 8684bb2..7d39131 100644 --- a/string/tst-endian.c +++ b/string/tst-endian.c @@ -3,6 +3,20 @@ #include #include #include +#include + +#if __GNUC_PREREQ (6, 0) +/* GCC 6.0 warns on big endian systems about: + htobeXX (beXXtoh (i)) != i + warning: self-comparison always evaluates to false [-Wtautological-compare] + because htobeXX(x) and beXXtoh(x) is defined to (x) + in string/endian.h on big endian systems. + The same applies to htoleXX/leXXtoh on little endian systems. */ +# define DIAG_IGNORE_NEEDS_COMMENT_TAUTOLOGICAL_COMPARE() \ + DIAG_IGNORE_NEEDS_COMMENT (6, "-Wtautological-compare") +#else +# define DIAG_IGNORE_NEEDS_COMMENT_TAUTOLOGICAL_COMPARE() +#endif static int do_test (void) @@ -13,6 +27,8 @@ do_test (void) { if (i < UINT64_C (65536)) { + DIAG_PUSH_NEEDS_COMMENT; + DIAG_IGNORE_NEEDS_COMMENT_TAUTOLOGICAL_COMPARE (); if (htobe16 (be16toh (i)) != i) { printf ("htobe16 (be16toh (%" PRIx64 ")) == %" PRIx16 "\n", @@ -25,6 +41,7 @@ do_test (void) i, (uint16_t) htole16 (le16toh (i))); result = 1; } + DIAG_POP_NEEDS_COMMENT; uint16_t n[2]; n[__BYTE_ORDER == __LITTLE_ENDIAN] = bswap_16 (i); @@ -45,6 +62,8 @@ do_test (void) if (i < UINT64_C (4294967296)) { + DIAG_PUSH_NEEDS_COMMENT; + DIAG_IGNORE_NEEDS_COMMENT_TAUTOLOGICAL_COMPARE (); if (htobe32 (be32toh (i)) != i) { printf ("htobe32 (be32toh (%" PRIx64 ")) == %" PRIx32 "\n", @@ -57,6 +76,7 @@ do_test (void) i, (uint32_t) htole32 (le32toh (i))); result = 1; } + DIAG_POP_NEEDS_COMMENT; uint32_t n[2]; n[__BYTE_ORDER == __LITTLE_ENDIAN] = bswap_32 (i); @@ -75,6 +95,8 @@ do_test (void) } } + DIAG_PUSH_NEEDS_COMMENT; + DIAG_IGNORE_NEEDS_COMMENT_TAUTOLOGICAL_COMPARE (); if (htobe64 (be64toh (i)) != i) { printf ("htobe64 (be64toh (%" PRIx64 ")) == %" PRIx64 "\n", @@ -87,6 +109,7 @@ do_test (void) i, htole64 (le64toh (i))); result = 1; } + DIAG_POP_NEEDS_COMMENT; uint64_t n[2]; n[__BYTE_ORDER == __LITTLE_ENDIAN] = bswap_64 (i);