Skip to content

Commit

Permalink
Fix bug-strspn1.c, bug-strpbrk1.c build with GCC mainline.
Browse files Browse the repository at this point in the history
Building the testsuite with GCC mainline fails with:

bug-strspn1.c: In function 'main':
bug-strspn1.c:14:3: error: right-hand operand of comma expression has no effect [-Werror=unused-value]
   strspn (b++, "");
   ^~~~~~~~~~~~~~~~

and a similar error for bug-strpbrk1.c.  I'm not sure what GCC change
introduced this, and the wording of the message is a bit off (in the
source it's not a comma expression, that must reflect GCC's IR).  But
the warning is correct (strspn is a pure function, the call is
useless, and if there wasn't an argument with a side effect much older
GCC would have warned); the point of the test is to verify that the
side effect in an argument still occurs for this useless call that can
otherwise be optimized to an (unused) constant (testing for a bug
there once was in an old strspn macro).  This patch duly arranges for
the warning to be disabled for this code.

Tested with build-many-glibcs.py for aarch64-linux-gnu.

	* string/bug-strpbrk1.c: Include <libc-diag.h>.
	(main): Disable -Wunused-value around call to strpbrk.
	* string/bug-strspn1.c: Include <libc-diag.h>.
	(main): Disable -Wunused-value around call to strspn.
  • Loading branch information
jsm28 committed Jun 20, 2018
1 parent 209ae17 commit 1760daa
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 0 deletions.
7 changes: 7 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
2018-06-20 Joseph Myers <[email protected]>

* string/bug-strpbrk1.c: Include <libc-diag.h>.
(main): Disable -Wunused-value around call to strpbrk.
* string/bug-strspn1.c: Include <libc-diag.h>.
(main): Disable -Wunused-value around call to strspn.

2018-06-20 Tulio Magno Quites Machado Filho <[email protected]>
Gabriel F. T. Gomes <[email protected]>

Expand Down
8 changes: 8 additions & 0 deletions string/bug-strpbrk1.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,22 @@
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <libc-diag.h>

int
main (void)
{
const char *a = "abc";
const char *b = a;

DIAG_PUSH_NEEDS_COMMENT;
/* GCC 9 correctly warns that this call to strpbrk is useless. That
is deliberate; this test is verifying that a side effect in an
argument still occurs when the call itself is useless and could
be optimized to return a constant. */
DIAG_IGNORE_NEEDS_COMMENT (9, "-Wunused-value");
strpbrk (b++, "");
DIAG_POP_NEEDS_COMMENT;
if (b != a + 1)
return 1;

Expand Down
8 changes: 8 additions & 0 deletions string/bug-strspn1.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,22 @@
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <libc-diag.h>

int
main (void)
{
const char *a = "abc";
const char *b = a;

DIAG_PUSH_NEEDS_COMMENT;
/* GCC 9 correctly warns that this call to strspn is useless. That
is deliberate; this test is verifying that a side effect in an
argument still occurs when the call itself is useless and could
be optimized to return a constant. */
DIAG_IGNORE_NEEDS_COMMENT (9, "-Wunused-value");
strspn (b++, "");
DIAG_POP_NEEDS_COMMENT;
if (b != a + 1)
return 1;

Expand Down

0 comments on commit 1760daa

Please sign in to comment.