diff mbox

Disable -Wdiv-by-zero for some tests in stdio-common/tst-unlockedio.c

Message ID alpine.DEB.2.10.1411260125530.17237@digraph.polyomino.org.uk
State New
Headers show

Commit Message

Joseph Myers Nov. 26, 2014, 1:26 a.m. UTC
This patch, relative to a tree with
<https://sourceware.org/ml/libc-alpha/2014-11/msg00736.html> (pending
review) applied, uses diagnostic control pragmas to disable some
division-by-zero warnings in stdio-common/tst-unlockedio.c.  This is
another test where disabling warnings using diagnostic pragmas seems
appropriate (the warnings are not wildly inappropriate for what the
test deliberately does; the deliberate use of unusual arguments to the
macros being tested means that changing the arguments in a way that
avoids the warning would also unduly perturb what is being tested).

Tested for x86_64.

2014-11-26  Joseph Myers  <joseph@codesourcery.com>

	* stdio-common/tst-unlockedio.c: Include <libc-internal.h>.
	(do_test): Disable -Wdiv-by-zero around some calls to
	fwrite_unlocked and fread_unlocked.

Comments

Roland McGrath Dec. 2, 2014, 7:23 p.m. UTC | #1
OK
Joseph Myers Dec. 5, 2014, 4:20 p.m. UTC | #2
On Tue, 2 Dec 2014, Roland McGrath wrote:

> OK

Note that this can't go in without the macro definitions in 
<https://sourceware.org/ml/libc-alpha/2014-11/msg00736.html> - if the 
macros are OK but the use for scanf tests needs further consideration, I'd 
welcome review of the macro definitions on their own to unblock other 
changes using them (including warning avoidance using the macros in 
architecture-specific files).
diff mbox

Patch

diff --git a/stdio-common/tst-unlockedio.c b/stdio-common/tst-unlockedio.c
index 4d17a4c..e557b59 100644
--- a/stdio-common/tst-unlockedio.c
+++ b/stdio-common/tst-unlockedio.c
@@ -20,6 +20,7 @@ 
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
+#include <libc-internal.h>
 
 int fd;
 static void do_prepare (void);
@@ -44,6 +45,13 @@  do_test (void)
 
   f = fp;
   cp = blah;
+  /* These tests deliberately use fwrite_unlocked with the size
+     argument specified as 0, which results in "division by zero"
+     warnings from the expansion of that macro (in code that is not
+     evaluated for a size of 0).  This applies to the tests of
+     fread_unlocked below as well.  */
+  DIAG_PUSH_NEEDS_COMMENT;
+  DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wdiv-by-zero");
   if (ftello (fp) != 0
       || fwrite_unlocked (blah, blah - blah, strlen (blah), f++) != 0
       || f != fp + 1
@@ -59,6 +67,7 @@  do_test (void)
       puts ("One of fwrite_unlocked tests failed");
       exit (1);
     }
+  DIAG_POP_NEEDS_COMMENT;
 
   if (fwrite_unlocked (blah, 1, strlen (blah) - 2, fp) != strlen (blah) - 2)
     {
@@ -93,6 +102,9 @@  do_test (void)
   f = fp;
   wp = buf;
   memset (buf, ' ', sizeof (buf));
+  /* See explanation above.  */
+  DIAG_PUSH_NEEDS_COMMENT;
+  DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wdiv-by-zero");
   if (ftello (fp) != 0
       || fread_unlocked (buf, buf - buf, strlen (blah), f++) != 0
       || f != fp + 1
@@ -109,6 +121,7 @@  do_test (void)
       puts ("One of fread_unlocked tests failed");
       exit (1);
     }
+  DIAG_POP_NEEDS_COMMENT;
 
   if (fread_unlocked (buf, 1, strlen (blah) - 2, fp) != strlen (blah) - 2)
     {