From dca528cb0b1d4c2f70e22e174e06325a61ea64a8 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 25 Jun 2018 19:35:29 +0200 Subject: [PATCH] backport: re PR c/84953 (misleading warning from strpbrk(x,"")) Backported from mainline 2018-03-20 Jakub Jelinek PR c/84953 * builtins.c (fold_builtin_strpbrk): For strpbrk(x, "") use type instead of TREE_TYPE (s1) for the return value. * gcc.dg/pr84953.c: New test. From-SVN: r262080 --- gcc/ChangeLog | 6 ++++++ gcc/builtins.c | 2 +- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/pr84953.c | 11 +++++++++++ 4 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/pr84953.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7f3b127258d3..321c20592f1e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,6 +1,12 @@ 2018-06-25 Jakub Jelinek Backported from mainline + 2018-03-20 Jakub Jelinek + + PR c/84953 + * builtins.c (fold_builtin_strpbrk): For strpbrk(x, "") use type + instead of TREE_TYPE (s1) for the return value. + 2018-03-16 Jakub Jelinek PR target/84899 diff --git a/gcc/builtins.c b/gcc/builtins.c index c70c0f5004c4..3c94a58c3d82 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -8794,7 +8794,7 @@ fold_builtin_strpbrk (location_t loc, tree s1, tree s2, tree type) if (p2[0] == '\0') /* strpbrk(x, "") == NULL. Evaluate and ignore s1 in case it had side-effects. */ - return omit_one_operand_loc (loc, TREE_TYPE (s1), integer_zero_node, s1); + return omit_one_operand_loc (loc, type, integer_zero_node, s1); if (p2[1] != '\0') return NULL_TREE; /* Really call strpbrk. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 79f69dfc9276..658c662ff16c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,11 @@ 2018-06-25 Jakub Jelinek Backported from mainline + 2018-03-20 Jakub Jelinek + + PR c/84953 + * gcc.dg/pr84953.c: New test. + 2018-03-16 Jakub Jelinek PR target/84899 diff --git a/gcc/testsuite/gcc.dg/pr84953.c b/gcc/testsuite/gcc.dg/pr84953.c new file mode 100644 index 000000000000..723a8a67dda7 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr84953.c @@ -0,0 +1,11 @@ +/* PR c/84953 */ +/* { dg-do compile } */ + +char *strpbrk (const char *, const char *); + +char * +test (char *p) +{ + p = strpbrk (p, ""); /* { dg-bogus "assignment discards 'const' qualifier from pointer target type" } */ + return p; +} -- 2.47.2