@@ -3,6 +3,7 @@
#include <inttypes.h>
#include <stdio.h>
#include <stdint.h>
+#include <libc-internal.h>
static int
do_test (void)
@@ -13,6 +14,17 @@ do_test (void)
{
if (i < UINT64_C (65536))
{
+ DIAG_PUSH_NEEDS_COMMENT;
+#if __GNUC_PREREQ (6, 0)
+ /* GCC 6.0 warns on big endian systems about:
+ htobe16 (be16toh (i)) != i
+ warning: self-comparison always evaluates to false
+ [-Wtautological-compare]
+ because htobe16(x) and be16toh(x) is defined to (x)
+ in string/endian.h on big endian systems.
+ The same applies to htole16/le16toh on little endian systems. */
+ DIAG_IGNORE_NEEDS_COMMENT (6, "-Wtautological-compare");
+#endif
if (htobe16 (be16toh (i)) != i)
{
printf ("htobe16 (be16toh (%" PRIx64 ")) == %" PRIx16 "\n",
@@ -25,6 +37,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 +58,17 @@ do_test (void)
if (i < UINT64_C (4294967296))
{
+ DIAG_PUSH_NEEDS_COMMENT;
+#if __GNUC_PREREQ (6, 0)
+ /* GCC 6.0 warns on big endian systems about:
+ htobe32 (be32toh (i)) != i
+ warning: self-comparison always evaluates to false
+ [-Wtautological-compare]
+ because htobe32(x) and be32toh(x) is defined to (x)
+ in string/endian.h on big endian systems.
+ The same applies to htole32/le32toh on little endian systems. */
+ DIAG_IGNORE_NEEDS_COMMENT (6, "-Wtautological-compare");
+#endif
if (htobe32 (be32toh (i)) != i)
{
printf ("htobe32 (be32toh (%" PRIx64 ")) == %" PRIx32 "\n",
@@ -57,6 +81,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 +100,17 @@ do_test (void)
}
}
+ DIAG_PUSH_NEEDS_COMMENT;
+#if __GNUC_PREREQ (6, 0)
+ /* GCC 6.0 warns on big endian systems about:
+ htobe64 (be64toh (i)) != i
+ warning: self-comparison always evaluates to false
+ [-Wtautological-compare]
+ because htobe64(x) and be64toh(x) is defined to (x)
+ in string/endian.h on big endian systems.
+ The same applies to htole64/le64toh on little endian systems. */
+ DIAG_IGNORE_NEEDS_COMMENT (6, "-Wtautological-compare");
+#endif
if (htobe64 (be64toh (i)) != i)
{
printf ("htobe64 (be64toh (%" PRIx64 ")) == %" PRIx64 "\n",
@@ -87,6 +123,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);