aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2018-03-20 08:55:41 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2018-03-20 08:55:41 +0100
commita8ed1cbd67ebb44c14f65432524892b384ba11e9 (patch)
tree7b0cddb9d6b428718734ecc904b047f3c7e35013
parentd2a1b11e65ed693af10ecae1b0c48b23e6e097fa (diff)
downloadgcc-a8ed1cbd67ebb44c14f65432524892b384ba11e9.zip
gcc-a8ed1cbd67ebb44c14f65432524892b384ba11e9.tar.gz
gcc-a8ed1cbd67ebb44c14f65432524892b384ba11e9.tar.bz2
re PR c/84953 (misleading warning from strpbrk(x,""))
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: r258671
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/builtins.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr84953.c11
4 files changed, 23 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6742c0b..6716270 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2018-03-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/84953
+ * builtins.c (fold_builtin_strpbrk): For strpbrk(x, "") use type
+ instead of TREE_TYPE (s1) for the return value.
+
2018-03-19 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/84946
diff --git a/gcc/builtins.c b/gcc/builtins.c
index 85affa7..487d9d5 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -9573,7 +9573,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 7638ca1..d1c359b 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2018-03-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/84953
+ * gcc.dg/pr84953.c: New test.
+
2018-03-19 Marek Polacek <polacek@redhat.com>
PR c++/84925
diff --git a/gcc/testsuite/gcc.dg/pr84953.c b/gcc/testsuite/gcc.dg/pr84953.c
new file mode 100644
index 0000000..723a8a6
--- /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;
+}